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

Bug 357645

Summary: NPE in MasterDetailsContentNode.isChildNodeFactoryProperty
Product: z_Archived Reporter: Kamesh Sampath <kamesh.sampath>
Component: SapphireAssignee: Konstantin Komissarchik <konstantin>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: gregory.amerson, konstantin, shenxue.zhou
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: All   
Whiteboard:
Attachments:
Description Flags
Stack Trace for the Bug
none
Repro Project
none
Error Trace with R_0_3_x
none
File that is causing the error none

Description Kamesh Sampath CLA 2011-09-14 11:12:39 EDT
Build Identifier: I20110906-2000

A NullPointer exception is thrown when opening the Eclipse plugin based on Sapphire

Reproducible: Always

Steps to Reproduce:
1.Create a Plugin
2.Add Sapphire dependencies
3.Create an Editor based on Sapphire
4.Run/Debug the #1 plugin as Eclipse Plugin
Comment 1 Kamesh Sampath CLA 2011-09-14 11:13:49 EDT
Created attachment 203345 [details]
Stack Trace for the Bug

The stack trace to debug the application or fix the bug
Comment 2 Konstantin Komissarchik CLA 2011-09-14 14:27:41 EDT
I am not seeing this problem in any of the samples. From the stack trace, I have an idea as to what the problem might be, but I am not all that comfortable trying to fix it without a repro. Would you be able to attach a repro project?
Comment 3 Kamesh Sampath CLA 2011-09-15 00:30:40 EDT
Created attachment 203380 [details]
Repro Project

Attaching the Repro project execution of which I am getting the error.

From my knowledge i see the following possibilities,

1. My improper modeling 

2. Linux with Juno42 

~Kamesh
Comment 4 Konstantin Komissarchik CLA 2011-09-15 21:48:05 EDT
I was not able to reproduce the attached stack trace. I imported the project, launched the workspace and created abc.shape file. That immediately generated numerous regarding .shape being an unknown content type and editor didn't open. The stack trace that I did get showed that XML editor was confused and didn't accept it as an XML content type. I then modified the editor extension in plugin.xml to specify filenames attributes as "shapes.xml" instead of using .shape extension. I was able to open the editor at that point and didn't see any issues.

Two observations:

1. You need to fix .shape content type specification. See how this is done in the SDK plugin for .sdef files.

2. The attached exception must not occur when starting with an empty shapes file. Perhaps it takes a certain file to trigger it. If so, please attach this file.
Comment 5 Kamesh Sampath CLA 2011-09-18 10:59:53 EDT
(In reply to comment #4)
> I was not able to reproduce the attached stack trace. I imported the project,
> launched the workspace and created abc.shape file. That immediately generated
> numerous regarding .shape being an unknown content type and editor didn't open.
> The stack trace that I did get showed that XML editor was confused and didn't
> accept it as an XML content type. I then modified the editor extension in
> plugin.xml to specify filenames attributes as "shapes.xml" instead of using
> .shape extension. I was able to open the editor at that point and didn't see
> any issues.
> 
> Two observations:
> 
> 1. You need to fix .shape content type specification. See how this is done in
> the SDK plugin for .sdef files.
> 
> 2. The attached exception must not occur when starting with an empty shapes
> file. Perhaps it takes a certain file to trigger it. If so, please attach this
> file.

I am getting the same error for the another editor that I was developing with 0.3.x (latest build). I have again attached the error trace (with_r_0_3_x) for you. I have not been getting this error until i took the latest update. Not sure what was the cause
Comment 6 Kamesh Sampath CLA 2011-09-18 11:00:30 EDT
Created attachment 203552 [details]
Error Trace with R_0_3_x
Comment 7 Konstantin Komissarchik CLA 2011-09-18 11:05:37 EDT
Could you attach the file you are getting this error with? I have not been able to reproduce this problem.
Comment 8 Kamesh Sampath CLA 2011-09-18 11:15:38 EDT
Created attachment 203553 [details]
File that is causing the error

This is the sample file that is causing the error, I am not sure how i can share the complete project (for debugging if needed) as it has some other dependencies and whole lot of setup :@

Hope this helps. Also my testing or developing on Windows 7 x86_64 with Indigo platform on jdk 1.6.0_27(64-bit)
Comment 9 Konstantin Komissarchik CLA 2011-09-20 19:44:09 EDT
*** Bug 358316 has been marked as a duplicate of this bug. ***
Comment 10 Konstantin Komissarchik CLA 2011-09-20 20:44:38 EDT
I have not be able to reproduce this one, but I took a stab at a fix. Please re-open if you are still seeing this problem, otherwise please mark as verified.

Fixed in 0.3.1 and 0.4 streams.
Comment 11 Greg Amerson CLA 2011-09-20 22:34:15 EDT
Previous to build 527 I was able to reproduce the NPE each time. Now, after installing build 527 I no longer see any NPEs loading the exact same file.  I believe this one has been fixed.  However, I'll let Kamesh test it as well and if he sees it it fixed, perhaps he should be the one to mark this bug verified.
Comment 12 Kamesh Sampath CLA 2011-09-21 04:07:36 EDT
(In reply to comment #11)
> Previous to build 527 I was able to reproduce the NPE each time. Now, after
> installing build 527 I no longer see any NPEs loading the exact same file.  I
> believe this one has been fixed.  However, I'll let Kamesh test it as well and
> if he sees it it fixed, perhaps he should be the one to mark this bug verified.

I too don't see that error anymore with R_0_3_x. Let me check 0.4.x, but when I updated my source i see its updated to juno-38 as recommended, are we going to use juno-38 for R_0_4x ?or juno-42 ?

I will mark it as verified. If i see in other Sapphire branches i will reopen it.

~Kamesh
Comment 13 Konstantin Komissarchik CLA 2011-09-21 08:43:37 EDT
Closing. Thanks.

> Let me check 0.4.x, but when I updated my source i see its updated to juno-38 
> as recommended, are we going to use juno-38 for R_0_4x ?or juno-42 ?

We are having temporary issues getting a working 4.2 build, so I've reverted to using juno-38 instead. I expect that we will be able to go back to juno-42 in about a week or so when M2 is ready.
Comment 14 Konstantin Komissarchik CLA 2011-09-21 11:22:33 EDT
Seeing a somewhat different variant of the same problem. Looks like this isn't fully fixed yet...

java.lang.NullPointerException
	at org.eclipse.sapphire.ui.form.editors.masterdetails.MasterDetailsContentNode.isChildNodeFactoryProperty(MasterDetailsContentNode.java:636)
	at org.eclipse.sapphire.ui.form.editors.masterdetails.MasterDetailsContentNode.handleModelElementChange(MasterDetailsContentNode.java:762)
	at org.eclipse.sapphire.ui.SapphirePart$1.propertyChanged(SapphirePart.java:105)
	at org.eclipse.sapphire.modeling.ModelElement.notifyPropertyChangeListeners(ModelElement.java:1280)
	at org.eclipse.sapphire.modeling.ModelElement.notifyPropertyChangeListeners(ModelElement.java:1256)
	at org.eclipse.sapphire.modeling.ModelElementList.refresh(ModelElementList.java:186)
	at org.eclipse.sapphire.modeling.ModelElementList.init(ModelElementList.java:63)
	at oracle.eclipse.tools.weblogic.descriptors.deploy.internal.WeblogicDeploymentPlan.refreshProperty(WeblogicDeploymentPlan.java:353)
	at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:457)
	at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:450)
	at oracle.eclipse.tools.weblogic.descriptors.deploy.internal.WeblogicDeploymentPlan.getModuleOverride(WeblogicDeploymentPlan.java:163)
	at oracle.eclipse.tools.weblogic.descriptors.deploy.internal.VariableAssignedPropertyCustomBinding.read(VariableAssignedPropertyCustomBinding.java:25)
	at oracle.eclipse.tools.weblogic.descriptors.deploy.internal.Variable.refreshProperty(Variable.java:208)
	at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:457)
	at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:450)
	at oracle.eclipse.tools.weblogic.descriptors.deploy.internal.Variable.getAssigned(Variable.java:44)
	at oracle.eclipse.tools.weblogic.descriptors.deploy.internal.Variable.read(Variable.java:346)
	at org.eclipse.sapphire.modeling.ModelElement.read(ModelElement.java:233)
	at org.eclipse.sapphire.modeling.ModelElement.refreshValidationResult(ModelElement.java:880)
	at org.eclipse.sapphire.modeling.ModelElement.validate(ModelElement.java:862)
	at org.eclipse.sapphire.modeling.ModelElementList.refreshValidationResult(ModelElementList.java:212)
	at org.eclipse.sapphire.modeling.ModelElementList.refresh(ModelElementList.java:189)
	at org.eclipse.sapphire.modeling.ModelElementList.init(ModelElementList.java:63)
	at oracle.eclipse.tools.weblogic.descriptors.deploy.internal.VariableDefinition.refreshProperty(VariableDefinition.java:132)
	at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:457)
	at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:450)
	at oracle.eclipse.tools.weblogic.descriptors.deploy.internal.VariableDefinition.getVariables(VariableDefinition.java:84)
	at oracle.eclipse.tools.weblogic.descriptors.deploy.internal.VariableDefinition.read(VariableDefinition.java:160)
	at org.eclipse.sapphire.modeling.ModelElement.read(ModelElement.java:254)
	at org.eclipse.sapphire.modeling.ModelElement.refreshValidationResult(ModelElement.java:884)
	at org.eclipse.sapphire.modeling.ModelElement.validate(ModelElement.java:862)
	at org.eclipse.sapphire.modeling.ModelElementHandle.refreshValidationState(ModelElementHandle.java:285)
	at org.eclipse.sapphire.modeling.ModelElementHandle.refreshInternal(ModelElementHandle.java:249)
	at org.eclipse.sapphire.modeling.ModelElementHandle.init(ModelElementHandle.java:50)
	at oracle.eclipse.tools.weblogic.descriptors.deploy.internal.WeblogicDeploymentPlan.refreshProperty(WeblogicDeploymentPlan.java:402)
	at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:457)
	at org.eclipse.sapphire.modeling.ModelElement.refresh(ModelElement.java:450)
	at oracle.eclipse.tools.weblogic.descriptors.deploy.internal.WeblogicDeploymentPlan.getVariableDefinition(WeblogicDeploymentPlan.java:216)
	at oracle.eclipse.tools.weblogic.descriptors.deploy.internal.WeblogicDeploymentPlan.read(WeblogicDeploymentPlan.java:473)
	at org.eclipse.sapphire.modeling.ModelElement.read(ModelElement.java:247)
	at org.eclipse.sapphire.ui.form.editors.masterdetails.MasterDetailsContentNode.init(MasterDetailsContentNode.java:124)
	at org.eclipse.sapphire.ui.SapphirePart.init(SapphirePart.java:147)
	at org.eclipse.sapphire.ui.form.editors.masterdetails.MasterDetailsContentNode.init(MasterDetailsContentNode.java:269)
	at org.eclipse.sapphire.ui.SapphirePart.init(SapphirePart.java:147)
	at org.eclipse.sapphire.ui.form.editors.masterdetails.MasterDetailsContentOutline.getRoot(MasterDetailsContentOutline.java:82)
	at org.eclipse.sapphire.ui.form.editors.masterdetails.MasterDetailsEditorPage$5.getElements(MasterDetailsEditorPage.java:583)
	at org.eclipse.jface.viewers.StructuredViewer.getRawChildren(StructuredViewer.java:1010)
	at org.eclipse.jface.viewers.ColumnViewer.getRawChildren(ColumnViewer.java:703)
	at org.eclipse.jface.viewers.AbstractTreeViewer.getRawChildren(AbstractTreeViewer.java:1336)
	at org.eclipse.jface.viewers.TreeViewer.getRawChildren(TreeViewer.java:391)
	at org.eclipse.jface.viewers.StructuredViewer.getFilteredChildren(StructuredViewer.java:917)
	at org.eclipse.jface.viewers.AbstractTreeViewer.getSortedChildren(AbstractTreeViewer.java:605)
	at org.eclipse.jface.viewers.AbstractTreeViewer$1.run(AbstractTreeViewer.java:805)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:782)
	at org.eclipse.jface.viewers.TreeViewer.createChildren(TreeViewer.java:644)
	at org.eclipse.jface.viewers.AbstractTreeViewer.createChildren(AbstractTreeViewer.java:753)
	at org.eclipse.jface.viewers.AbstractTreeViewer.internalInitializeTree(AbstractTreeViewer.java:1533)
	at org.eclipse.jface.viewers.TreeViewer.internalInitializeTree(TreeViewer.java:833)
	at org.eclipse.jface.viewers.AbstractTreeViewer$5.run(AbstractTreeViewer.java:1517)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1443)
	at org.eclipse.jface.viewers.TreeViewer.preservingSelection(TreeViewer.java:403)
	at org.eclipse.jface.viewers.StructuredViewer.preservingSelection(StructuredViewer.java:1404)
	at org.eclipse.jface.viewers.AbstractTreeViewer.inputChanged(AbstractTreeViewer.java:1510)
	at org.eclipse.ui.dialogs.FilteredTree$NotifyingTreeViewer.inputChanged(FilteredTree.java:1187)
	at org.eclipse.jface.viewers.ContentViewer.setInput(ContentViewer.java:280)
	at org.eclipse.jface.viewers.StructuredViewer.setInput(StructuredViewer.java:1690)
	at org.eclipse.sapphire.ui.form.editors.masterdetails.MasterDetailsEditorPage.createContentOutline(MasterDetailsEditorPage.java:792)
	at org.eclipse.sapphire.ui.form.editors.masterdetails.MasterDetailsEditorPage.access$2(MasterDetailsEditorPage.java:569)
	at org.eclipse.sapphire.ui.form.editors.masterdetails.MasterDetailsEditorPage$MasterSection.<init>(MasterDetailsEditorPage.java:1388)
	at org.eclipse.sapphire.ui.form.editors.masterdetails.MasterDetailsEditorPage$RootSection.createMasterPart(MasterDetailsEditorPage.java:1271)
	at org.eclipse.ui.forms.MasterDetailsBlock.createContent(MasterDetailsBlock.java:161)
	at org.eclipse.ui.forms.MasterDetailsBlock.createContent(MasterDetailsBlock.java:142)
	at org.eclipse.sapphire.ui.form.editors.masterdetails.MasterDetailsEditorPage$RootSection.createContent(MasterDetailsEditorPage.java:1247)
	at org.eclipse.sapphire.ui.form.editors.masterdetails.MasterDetailsEditorPage.createFormContent(MasterDetailsEditorPage.java:279)
	at org.eclipse.ui.forms.editor.FormPage$1.run(FormPage.java:152)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.forms.editor.FormPage.createPartControl(FormPage.java:150)
	at org.eclipse.sapphire.ui.SapphireEditorFormPage.createPartControl(SapphireEditorFormPage.java:80)
	at org.eclipse.ui.forms.editor.FormEditor.pageChange(FormEditor.java:471)
	at org.eclipse.sapphire.ui.SapphireEditor.pageChange(SapphireEditor.java:516)
	at org.eclipse.ui.part.MultiPageEditorPart.setActivePage(MultiPageEditorPart.java:1067)
	at org.eclipse.ui.forms.editor.FormEditor.setActivePage(FormEditor.java:603)
	at org.eclipse.sapphire.ui.SapphireEditor.addPages(SapphireEditor.java:403)
	at org.eclipse.ui.forms.editor.FormEditor.createPages(FormEditor.java:138)
	at org.eclipse.ui.part.MultiPageEditorPart.createPartControl(MultiPageEditorPart.java:348)
	at org.eclipse.ui.internal.EditorReference.createPartHelper(EditorReference.java:670)
	at org.eclipse.ui.internal.EditorReference.createPart(EditorReference.java:465)
	at org.eclipse.ui.internal.WorkbenchPartReference.getPart(WorkbenchPartReference.java:595)
	at org.eclipse.ui.internal.PartPane.setVisible(PartPane.java:313)
	at org.eclipse.ui.internal.presentations.PresentablePart.setVisible(PresentablePart.java:180)
	at org.eclipse.ui.internal.presentations.util.PresentablePartFolder.select(PresentablePartFolder.java:270)
	at org.eclipse.ui.internal.presentations.util.LeftToRightTabOrder.select(LeftToRightTabOrder.java:65)
	at org.eclipse.ui.internal.presentations.util.TabbedStackPresentation.selectPart(TabbedStackPresentation.java:473)
	at org.eclipse.ui.internal.PartStack.refreshPresentationSelection(PartStack.java:1245)
	at org.eclipse.ui.internal.PartStack.setSelection(PartStack.java:1198)
	at org.eclipse.ui.internal.PartStack.showPart(PartStack.java:1597)
	at org.eclipse.ui.internal.PartStack.add(PartStack.java:493)
	at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:103)
	at org.eclipse.ui.internal.PartStack.add(PartStack.java:479)
	at org.eclipse.ui.internal.EditorStack.add(EditorStack.java:112)
	at org.eclipse.ui.internal.EditorSashContainer.addEditor(EditorSashContainer.java:63)
	at org.eclipse.ui.internal.EditorAreaHelper.addToLayout(EditorAreaHelper.java:225)
	at org.eclipse.ui.internal.EditorAreaHelper.addEditor(EditorAreaHelper.java:213)
	at org.eclipse.ui.internal.EditorManager.createEditorTab(EditorManager.java:808)
	at org.eclipse.ui.internal.EditorManager.openEditorFromDescriptor(EditorManager.java:707)
	at org.eclipse.ui.internal.EditorManager.openEditor(EditorManager.java:666)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditorBatched(WorkbenchPage.java:2942)
	at org.eclipse.ui.internal.WorkbenchPage.busyOpenEditor(WorkbenchPage.java:2850)
	at org.eclipse.ui.internal.WorkbenchPage.access$11(WorkbenchPage.java:2842)
	at org.eclipse.ui.internal.WorkbenchPage$10.run(WorkbenchPage.java:2793)
	at org.eclipse.swt.custom.BusyIndicator.showWhile(BusyIndicator.java:70)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2789)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2773)
	at org.eclipse.ui.internal.WorkbenchPage.openEditor(WorkbenchPage.java:2756)
	at org.eclipse.ui.ide.IDE.openEditor(IDE.java:683)
	at org.python.pydev.navigator.actions.PyOpenResourceAction.openFiles(PyOpenResourceAction.java:100)
	at org.python.pydev.navigator.actions.PyOpenPythonFileAction.run(PyOpenPythonFileAction.java:84)
	at org.eclipse.ui.actions.RetargetAction.run(RetargetAction.java:221)
	at org.eclipse.ui.navigator.CommonNavigatorManager$3.open(CommonNavigatorManager.java:185)
	at org.eclipse.ui.OpenAndLinkWithEditorHelper$InternalListener.open(OpenAndLinkWithEditorHelper.java:48)
	at org.eclipse.jface.viewers.StructuredViewer$2.run(StructuredViewer.java:866)
	at org.eclipse.core.runtime.SafeRunner.run(SafeRunner.java:42)
	at org.eclipse.ui.internal.JFaceUtil$1.run(JFaceUtil.java:49)
	at org.eclipse.jface.util.SafeRunnable.run(SafeRunnable.java:175)
	at org.eclipse.jface.viewers.StructuredViewer.fireOpen(StructuredViewer.java:864)
	at org.eclipse.jface.viewers.StructuredViewer.handleOpen(StructuredViewer.java:1152)
	at org.eclipse.ui.navigator.CommonViewer.handleOpen(CommonViewer.java:462)
	at org.eclipse.jface.viewers.StructuredViewer$6.handleOpen(StructuredViewer.java:1256)
	at org.eclipse.jface.util.OpenStrategy.fireOpenEvent(OpenStrategy.java:275)
	at org.eclipse.jface.util.OpenStrategy.access$2(OpenStrategy.java:269)
	at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:309)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1053)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4165)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3754)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2696)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2660)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2494)
	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.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:123)
	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)
Comment 15 Konstantin Komissarchik CLA 2011-09-21 11:34:13 EDT
Second fix attempt implemented.
Comment 16 Konstantin Komissarchik CLA 2011-09-27 12:20:18 EDT
Closing based on previous determination.