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

Bug 337385

Summary: NPE in NavigationViewPart#createPartControl
Product: [RT] Riena Reporter: Elias Volanakis <elias>
Component: navigationAssignee: Nobody - feel free to take it <nobody>
Status: RESOLVED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: christian.campo, nobody
Version: unspecified   
Target Milestone: 3.0.0.M6   
Hardware: PC   
OS: All   
Whiteboard:

Description Elias Volanakis CLA 2011-02-16 19:06:09 EST
To reproduce:

1. Start "Mail Sample (Riena UI)"

Result:

!ENTRY org.eclipse.riena.core 4 0 2011-02-16 16:01:11.638
!MESSAGE Unable to create view ID org.eclipse.riena.navigation.ui.swt.views.navigationViewPart: An unexpected exception was thrown.
!STACK 0
java.lang.NullPointerException
	at org.eclipse.riena.navigation.ui.swt.views.NavigationViewPart.createPartControl(NavigationViewPart.java:105)
	at org.eclipse.ui.internal.ViewReference.createPartHelper(ViewReference.java:375)
	at org.eclipse.ui.internal.ViewReference.createPart(ViewReference.java:229)
	at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
	at org.eclipse.ui.internal.Perspective.showView(Perspective.java:2245)
	at org.eclipse.ui.internal.WorkbenchPage.busyShowView(WorkbenchPage.java:1071)
	at org.eclipse.ui.internal.WorkbenchPage$20.run(WorkbenchPage.java:3822)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchPage.showView(WorkbenchPage.java:3819)
	at org.eclipse.riena.navigation.ui.swt.views.SubApplicationView.prepareView(SubApplicationView.java:723)
	at org.eclipse.riena.navigation.ui.swt.views.SubApplicationView.access$10(SubApplicationView.java:718)
	at org.eclipse.riena.navigation.ui.swt.views.SubApplicationView$MySubModuleNodeListener.createNavigation(SubApplicationView.java:619)
	at org.eclipse.riena.navigation.ui.swt.views.SubApplicationView$MySubModuleNodeListener.checkBaseStructure(SubApplicationView.java:612)
	at org.eclipse.riena.navigation.ui.swt.views.SubApplicationView$MySubModuleNodeListener.activated(SubApplicationView.java:565)
	at org.eclipse.riena.navigation.ui.swt.views.SubApplicationView$MySubModuleNodeListener.activated(SubApplicationView.java:1)
	at org.eclipse.riena.navigation.listener.NavigationTreeObserver$MySubModuleNodeListener.activated(NavigationTreeObserver.java:1008)
	at org.eclipse.riena.navigation.listener.NavigationTreeObserver$MySubModuleNodeListener.activated(NavigationTreeObserver.java:1)
	at org.eclipse.riena.navigation.model.NavigationNode.notifyActivated(NavigationNode.java:198)
	at org.eclipse.riena.navigation.model.NavigationNode.activate(NavigationNode.java:775)
	at org.eclipse.riena.navigation.model.NavigationProcessor.activate(NavigationProcessor.java:1129)
	at org.eclipse.riena.navigation.model.NavigationProcessor.activate(NavigationProcessor.java:115)
	at org.eclipse.riena.navigation.model.NavigationNode.activate(NavigationNode.java:408)
	at org.eclipse.riena.navigation.ui.swt.views.ApplicationAdvisor.postStartup(ApplicationAdvisor.java:81)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2632)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2495)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:674)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:667)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.riena.navigation.ui.swt.application.SwtApplication.createView(SwtApplication.java:67)
	at org.eclipse.riena.navigation.ui.application.AbstractApplication.start(AbstractApplication.java:65)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	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:344)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:179)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
	at java.lang.reflect.Method.invoke(Unknown Source)
	at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:622)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:577)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1410)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1386)
	
This is caused by this line:

setPartProperty(TitlelessStackPresentation.PROPERTY_SUBAPPLICATION_NODE, getSubApplicationNode().getNodeId()
				.getTypeId() + "-" + getSubApplicationNode().getNodeId().getInstanceId()); //$NON-NLS-1$
				
Not sure what is wrong here. Any ideas?

Maybe something changed in the way the navigation model has to be constructed? This is done in Application#createModel in the o.e.r.sample.app.client.mail package.
Comment 1 Elias Volanakis CLA 2011-02-28 18:14:59 EST
Hi Riena colleagues, any input here? If you are familiar with the navigation id things, please leave a comment :-).
Comment 2 Nobody - feel free to take it CLA 2011-03-01 05:13:23 EST
Hi Elias,
can you tell me which object is null? I'm not at my riena desktop right now...
I'll have a look ...
Comment 3 Nobody - feel free to take it CLA 2011-03-01 07:00:02 EST
I get a NPE in the TreeRidget

....

Caused by: java.lang.NullPointerException
	at org.eclipse.riena.internal.ui.ridgets.swt.TreeRidget.getRowObservables(TreeRidget.java:218)
	at org.eclipse.riena.ui.ridgets.swt.AbstractSelectableRidget.assertIsBoundToModel(AbstractSelectableRidget.java:233)
	at org.eclipse.riena.ui.ridgets.swt.AbstractSelectableRidget.setSelection(AbstractSelectableRidget.java:189)
	at org.eclipse.riena.navigation.ui.swt.views.SWTModuleController.setSelectedNode(SWTModuleController.java:205)
	at org.eclipse.riena.navigation.ui.swt.views.SWTModuleController.setSelectedNode(SWTModuleController.java:209)
	at org.eclipse.riena.navigation.ui.swt.views.SWTModuleController.selectActiveNode(SWTModuleController.java:131)
	at org.eclipse.riena.navigation.ui.swt.views.SWTModuleController.access$0(SWTModuleController.java:130)
	at org.eclipse.riena.navigation.ui.swt.views.SWTModuleController$SubModuleListener$1.run(SWTModuleController.java:249)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
	... 24 more
Comment 4 Nobody - feel free to take it CLA 2011-03-01 07:04:06 EST
(In reply to comment #3)
> I get a NPE in the TreeRidget
> 
> ....
> 
> Caused by: java.lang.NullPointerException
>     at
> org.eclipse.riena.internal.ui.ridgets.swt.TreeRidget.getRowObservables(TreeRidget.java:218)
>     at
> org.eclipse.riena.ui.ridgets.swt.AbstractSelectableRidget.assertIsBoundToModel(AbstractSelectableRidget.java:233)
>     at
> org.eclipse.riena.ui.ridgets.swt.AbstractSelectableRidget.setSelection(AbstractSelectableRidget.java:189)
>     at
> org.eclipse.riena.navigation.ui.swt.views.SWTModuleController.setSelectedNode(SWTModuleController.java:205)
>     at
> org.eclipse.riena.navigation.ui.swt.views.SWTModuleController.setSelectedNode(SWTModuleController.java:209)
>     at
> org.eclipse.riena.navigation.ui.swt.views.SWTModuleController.selectActiveNode(SWTModuleController.java:131)
>     at
> org.eclipse.riena.navigation.ui.swt.views.SWTModuleController.access$0(SWTModuleController.java:130)
>     at
> org.eclipse.riena.navigation.ui.swt.views.SWTModuleController$SubModuleListener$1.run(SWTModuleController.java:249)
>     at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
>     at
> org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
>     ... 24 more


seems just to have your NPE as root.

getSubApplicationNode().getNodeId() = null !
Comment 5 Elias Volanakis CLA 2011-03-01 12:11:18 EST
Any ideas what those id's are and where they should be defined ? I don't understand the Navigation-Model at that detail level...

The example used to work, so I think it is caused by changes / new requerements regarding the id's. Maybe the place where we construct the navigation for the example ( Application#createModel ) has to be updated ?
Comment 6 Nobody - feel free to take it CLA 2011-03-01 12:19:35 EST
I think you could fix it just by calling the SubApplicationNode-Constructor 

public SubApplicationNode(final NavigationNodeId nodeId, final String label)

in org.eclipse.riena.sample.app.client.mail.Application inside createModel().

But I think this is just a workaround as it is absolutly valid to call the constructor without the NavigationNodeId. 

I'll have a look.
Comment 7 Nobody - feel free to take it CLA 2011-03-01 13:24:37 EST
Fixed NavigationViewPart and StackPresentation