Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.

Bug 183438

Summary: [Viewers] AIOOBE in AbstractTableViewer
Product: [Eclipse Project] Platform Reporter: Boris Bokowski <bokowski>
Component: UIAssignee: Boris Bokowski <bokowski>
Status: VERIFIED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: tom.schindl
Version: 3.3   
Target Milestone: 3.3 M7   
Hardware: PC   
OS: Windows XP   
Whiteboard:

Description Boris Bokowski CLA 2007-04-20 15:10:21 EDT
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 1
	at org.eclipse.jface.viewers.AbstractTableViewer.setSelectionToWidget(AbstractTableViewer.java:862)
	at org.eclipse.jface.viewers.StructuredViewer.setSelectionToWidget(StructuredViewer.java:1701)
	at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1657)
	at org.eclipse.jface.viewers.TableViewer.setSelection(TableViewer.java:152)
	at org.eclipse.jface.viewers.Viewer.setSelection(Viewer.java:388)
	at org.eclipse.update.internal.ui.wizards.TargetPage.setVisible(TargetPage.java:454)
	at org.eclipse.jface.wizard.WizardDialog.updateForPage(WizardDialog.java:1089)
	at org.eclipse.jface.wizard.WizardDialog.access$2(WizardDialog.java:1070)
	at org.eclipse.jface.wizard.WizardDialog$4.run(WizardDialog.java:1060)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.jface.wizard.WizardDialog.showPage(WizardDialog.java:1058)
	at org.eclipse.jface.wizard.WizardDialog.nextPressed(WizardDialog.java:768)
	at org.eclipse.jface.wizard.WizardDialog.buttonPressed(WizardDialog.java:358)
	at org.eclipse.jface.dialogs.Dialog$2.widgetSelected(Dialog.java:616)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:227)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:66)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:938)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3673)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3284)
	at org.eclipse.jface.window.Window.runEventLoop(Window.java:820)
	at org.eclipse.jface.window.Window.open(Window.java:796)
	at org.eclipse.update.internal.ui.wizards.ResizableInstallWizardDialog.open(ResizableInstallWizardDialog.java:59)
	at org.eclipse.update.internal.ui.wizards.InstallWizardOperation$UpdateJobChangeListener.openInstallWizard2(InstallWizardOperation.java:100)
	at org.eclipse.update.internal.ui.wizards.InstallWizardOperation$UpdateJobChangeListener.access$0(InstallWizardOperation.java:85)
	at org.eclipse.update.internal.ui.wizards.InstallWizardOperation$3.run(InstallWizardOperation.java:77)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:67)
	at org.eclipse.update.internal.ui.wizards.InstallWizardOperation$2.run(InstallWizardOperation.java:75)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:123)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3650)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3287)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2337)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2301)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2176)
	at org.eclipse.ui.internal.Workbench$4.run(Workbench.java:463)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:289)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:458)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:101)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:146)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:106)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:76)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:356)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:171)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:64)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:615)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:476)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:416)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1141)
Comment 1 Boris Bokowski CLA 2007-04-20 15:18:34 EDT
Fixed. Tom, this was in the code that selects items without causing scrolling. 
Did we put similar code into TreeViewer, or AbstractListViewer?
Comment 2 Boris Bokowski CLA 2007-04-20 15:23:13 EDT
Tom pointed out that we need to use equals(Object, Object) instead of ==.  Released this fix as well.
Comment 3 Thomas Schindl CLA 2007-04-20 15:27:54 EDT
No. ListViewer works differently and AbstractTreeViewer is not changed because we can't provide an implementation that is not revealing :-(
Comment 4 Boris Bokowski CLA 2007-05-04 10:21:13 EDT
Verified on Windows XP using I20070503-0842.