Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
Bug 311692 - [TabbedProperties] Properties View crashes when reopening with NPE if using Tabbed Properties
Summary: [TabbedProperties] Properties View crashes when reopening with NPE if using T...
Status: VERIFIED FIXED
Alias: None
Product: Platform
Classification: Eclipse Project
Component: UI (show other bugs)
Version: 3.6   Edit
Hardware: PC Windows XP
: P3 normal (vote)
Target Milestone: 4.3 M6   Edit
Assignee: Paul Webster CLA
QA Contact: Anthony Hunter CLA
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2010-05-05 06:03 EDT by Heinrich Wendel CLA
Modified: 2013-03-15 06:21 EDT (History)
3 users (show)

See Also:


Attachments
Patch fixing the NPE problem (1.55 KB, patch)
2013-03-07 05:21 EST, Fredrik Attebrant CLA
no flags Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Heinrich Wendel CLA 2010-05-05 06:03:59 EDT
Build Identifier: Build id: 20100218-1602 

java.lang.NullPointerException
at org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage.handlePartActivated(TabbedPropertySheetPage.java:320)
at org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage$1.partActivated(TabbedPropertySheetPage.java:118)
at org.eclipse.ui.internal.PartListenerList$1.run(PartListenerList.java:72)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.runtime.Platform.run(Platform.java:888)
at org.eclipse.ui.internal.PartListenerList.fireEvent(PartListenerList.java:57)
at org.eclipse.ui.internal.PartListenerList.firePartActivated(PartListenerList.java:70)
at org.eclipse.ui.internal.PartService.firePartActivated(PartService.java:187)
at org.eclipse.ui.internal.PartService.setActivePart(PartService.java:306)
at org.eclipse.ui.internal.WWinPartService.updateActivePart(WWinPartService.java:131)
at org.eclipse.ui.internal.WWinPartService.access$0(WWinPartService.java:122)
at org.eclipse.ui.internal.WWinPartService$WWinListener.partDeactivated(WWinPartService.java:50)
at org.eclipse.ui.internal.PartListenerList2$4.run(PartListenerList2.java:115)
at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
at org.eclipse.core.runtime.Platform.run(Platform.java:888)
at org.eclipse.ui.internal.PartListenerList2.fireEvent(PartListenerList2.java:55)
at org.eclipse.ui.internal.PartListenerList2.firePartDeactivated(PartListenerList2.java:113)
at org.eclipse.ui.internal.PartService.firePartDeactivated(PartService.java:242)
at org.eclipse.ui.internal.PartService.setActivePart(PartService.java:300)
at org.eclipse.ui.internal.WorkbenchPagePartList.fireActivePartChanged(WorkbenchPagePartList.java:57)
at org.eclipse.ui.internal.PartList.setActivePart(PartList.java:136)
at org.eclipse.ui.internal.WorkbenchPage.setActivePart(WorkbenchPage.java:3531)
at org.eclipse.ui.internal.WorkbenchPage.activate(WorkbenchPage.java:614)
at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1092)
at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1069)
at org.eclipse.ui.internal.WorkbenchPage$20.run(WorkbenchPage.java:3816)
at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3813)
at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3789)
at org.eclipse.ui.handlers.ShowViewHandler.openView(ShowViewHandler.java:165)
at org.eclipse.ui.handlers.ShowViewHandler.openOther(ShowViewHandler.java:109)
at org.eclipse.ui.handlers.ShowViewHandler.execute(ShowViewHandler.java:77)
at org.eclipse.ui.internal.handlers.HandlerProxy.execute(HandlerProxy.java:294)
at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
at org.eclipse.ui.internal.handlers.SlaveHandlerService.executeCommand(SlaveHandlerService.java:241)
at org.eclipse.ui.internal.ShowViewMenu$3.run(ShowViewMenu.java:141)
at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
at org.eclipse.jface.action.ActionContributionItem.handleWidgetSelection(ActionContributionItem.java:584)
at org.eclipse.jface.action.ActionContributionItem.access$2(ActionContributionItem.java:501)
at org.eclipse.jface.action.ActionContributionItem$5.handleEvent(ActionContributionItem.java:411)
at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1003)
at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:3910)
at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3503)
at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2405)
at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2369)
at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2221)
at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:500)
at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:493)
at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:113)
at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:194)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:110)
at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:79)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:368)
at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:559)
at org.eclipse.equinox.launcher.Main.basicRun(Main.java:514)
at org.eclipse.equinox.launcher.Main.run(Main.java:1311)
at org.eclipse.equinox.launcher.Main.main(Main.java:1287)


Reproducible: Always

Steps to Reproduce:

1.) Checkout org.eclipse.ui.examples.views.properties.tabbed.hockeyleague
2.) Start eclipse with this plug-in
3.) Create new hockey league project
4.) Open Properties View
5.) Select some item from the hockey league file
6.) See that properties view changes
7.) Close properties view
8.) Try to open properties view again
Comment 1 Dani Megert CLA 2010-12-29 05:30:14 EST
Heinrich, can you still reproduce this using 3.7 M4?
Comment 2 Fredrik Attebrant CLA 2013-03-07 05:19:11 EST
I've ran into the same problem with the org.eclipse.ui.examples.views.properties.tabbed.hockeyleague example.

The problem was caused by the HockeyLeagueEditor caching the propertySheetPage.
Attaching patch.
Comment 3 Fredrik Attebrant CLA 2013-03-07 05:21:38 EST
Created attachment 228051 [details]
Patch fixing the NPE problem

Tested on 3.7.2 and 4.2.1
Comment 5 Fredrik Attebrant CLA 2013-03-08 09:13:07 EST
Discovered today that the patch doesn't work properly if the user open multiple instances of the properties view.

http://wiki.eclipse.org/Platform_UI/Multi-instance_Properties_View

In that case, the caching of the propertySheetPage done by the editor will cause problems. See https://bugs.eclipse.org/bugs/show_bug.cgi?id=248103#c26
Comment 6 Paul Webster CLA 2013-03-08 09:17:09 EST
(In reply to comment #5)
> Discovered today that the patch doesn't work properly if the user open
> multiple instances of the properties view.

So this is a problem in the example, caching the sheet page prevents it from working correctly with multiple properties views?

PW
Comment 7 Paul Webster CLA 2013-03-12 14:07:20 EDT
in 4.3.0.I20130311-2000

PW
Comment 8 Fredrik Attebrant CLA 2013-03-15 06:21:08 EDT
> So this is a problem in the example, caching the sheet page prevents it from
> working correctly with multiple properties views?

Yes, the example editor is based on EMF generated editor code where the propertySheetPage is cached.