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

Bug 341856

Summary: NPE when a diagram connection doesn't define a label
Product: z_Archived Reporter: Konstantin Komissarchik <konstantin>
Component: SapphireAssignee: Konstantin Komissarchik <konstantin>
Status: CLOSED FIXED QA Contact:
Severity: normal    
Priority: P3 CC: shenxue.zhou
Version: unspecified   
Target Milestone: ---   
Hardware: All   
OS: All   
Whiteboard:
Attachments:
Description Flags
Patch v1 none

Description Konstantin Komissarchik CLA 2011-04-04 22:21:01 EDT
If a diagram connection is defined without a label (labeling the connection isn't necessary), the following NPE results at runtime.

java.lang.NullPointerException
	at org.eclipse.sapphire.ui.diagram.editor.DiagramEmbeddedConnectionPart.init(DiagramEmbeddedConnectionPart.java:51)
	at org.eclipse.sapphire.ui.SapphirePart.init(SapphirePart.java:148)
	at org.eclipse.sapphire.ui.diagram.editor.DiagramEmbeddedConnectionTemplate.createNewConnectionPart(DiagramEmbeddedConnectionTemplate.java:221)
	at org.eclipse.sapphire.ui.diagram.editor.DiagramEmbeddedConnectionTemplate.init(DiagramEmbeddedConnectionTemplate.java:114)
	at org.eclipse.sapphire.ui.SapphirePart.init(SapphirePart.java:148)
	at org.eclipse.sapphire.ui.diagram.editor.DiagramNodeTemplate.init(DiagramNodeTemplate.java:111)
	at org.eclipse.sapphire.ui.SapphirePart.init(SapphirePart.java:148)
	at org.eclipse.sapphire.ui.diagram.editor.SapphireDiagramEditorPart.init(SapphireDiagramEditorPart.java:71)
	at org.eclipse.sapphire.ui.SapphirePart.init(SapphirePart.java:148)
	at org.eclipse.sapphire.ui.swt.graphiti.editor.SapphireDiagramEditor.<init>(SapphireDiagramEditor.java:95)
	at org.eclipse.sapphire.samples.architecture.ui.ArchitectureEditor.createDiagramPages(ArchitectureEditor.java:73)
	at org.eclipse.sapphire.ui.SapphireEditor.addPages(SapphireEditor.java:317)
	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.EditorAreaHelper.setVisibleEditor(EditorAreaHelper.java:271)
	at org.eclipse.ui.internal.EditorManager.setVisibleEditor(EditorManager.java:1429)
	at org.eclipse.ui.internal.EditorManager$5.runWithException(EditorManager.java:942)
	at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4125)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3742)
	at org.eclipse.ui.application.WorkbenchAdvisor.openWindows(WorkbenchAdvisor.java:803)
	at org.eclipse.ui.internal.Workbench$33.runWithException(Workbench.java:1595)
	at org.eclipse.ui.internal.StartupThreading$StartupRunnable.run(StartupThreading.java:31)
	at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35)
	at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:134)
	at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:4125)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3742)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
	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 1 Konstantin Komissarchik CLA 2011-04-04 22:25:20 EDT
Created attachment 192514 [details]
Patch v1

Patch for easier review of change.
Comment 2 Konstantin Komissarchik CLA 2011-04-04 22:25:43 EDT
Fix committed.
Comment 3 Shenxue Zhou CLA 2011-04-05 12:43:55 EDT
I refactored the init() method on DiagramConnectionPart which is a super class of DiagramEmbeddedConnectionPart so that the NPE fix works for both connection parts.
Comment 4 Shenxue Zhou CLA 2011-04-05 13:00:29 EDT
Verified the fix