Fix : Foreign key editing in SQL Schema Editor sample is incomplete

User can edit foreign keys by creating connections between table nodes
and then editing the properties of these connections. However...

1. On the details page, foreign keys cannot be fully edited as column
   associations are not displayed.

2. In the properties page for the table, there is no mention of the
   foreign keys.

Bugzilla: https://bugs.eclipse.org/bugs/show_bug.cgi?id=444281
Fix : Property is disposed exception in ElementReferenceService

To reproduce, use the SQL Schema Editor...

1. Create two tables A and B
2. Make a column in A a primary key
3. Create a foreign key from B to A
3. Using the Details page, delete A an exception is thrown

java.lang.RuntimeException: ColumnAssociation.ReferencedColumn: ForeignKeyColumnReferenceService.compute() has failed
	at org.eclipse.sapphire.services.DataService.refresh(DataService.java:130)
	at org.eclipse.sapphire.ElementReferenceService.access$1(ElementReferenceService.java:1)
	at org.eclipse.sapphire.ElementReferenceService$2.handleTypedEvent(ElementReferenceService.java:99)
	at org.eclipse.sapphire.ElementReferenceService$2.handleTypedEvent(ElementReferenceService.java:1)
	at org.eclipse.sapphire.FilteredListener.handle(FilteredListener.java:35)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.Property.broadcast(Property.java:766)
	at org.eclipse.sapphire.Property.refreshValidation(Property.java:282)
	at org.eclipse.sapphire.Property$5.handle(Property.java:242)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.services.Service.broadcast(Service.java:126)
	at org.eclipse.sapphire.samples.sqlschema.ForeignKeyColumnReferenceService.access$0(ForeignKeyColumnReferenceService.java:1)
	at org.eclipse.sapphire.samples.sqlschema.ForeignKeyColumnReferenceService$2.handle(ForeignKeyColumnReferenceService.java:49)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.services.Service.broadcast(Service.java:126)
	at org.eclipse.sapphire.services.Service.broadcast(Service.java:131)
	at org.eclipse.sapphire.services.DataService.refresh(DataService.java:152)
	at org.eclipse.sapphire.services.internal.ReferenceValidationService.access$1(ReferenceValidationService.java:1)
	at org.eclipse.sapphire.services.internal.ReferenceValidationService$1.handle(ReferenceValidationService.java:61)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.ui.SapphirePart.broadcast(SapphirePart.java:560)
	at org.eclipse.sapphire.ui.diagram.internal.StandardDiagramConnectionPart.notifyConnectionEndpointUpdate(StandardDiagramConnectionPart.java:590)
	at org.eclipse.sapphire.ui.diagram.internal.StandardEmbeddedConnectionPart.handleEndpointReferenceChange(StandardEmbeddedConnectionPart.java:168)
	at org.eclipse.sapphire.ui.diagram.internal.StandardEmbeddedConnectionPart$2.handle(StandardEmbeddedConnectionPart.java:134)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.ui.SapphirePart.broadcast(SapphirePart.java:560)
	at org.eclipse.sapphire.ui.SapphirePart.dispose(SapphirePart.java:877)
	at org.eclipse.sapphire.ui.forms.MasterDetailsContentNodePart.dispose(MasterDetailsContentNodePart.java:763)
	at org.eclipse.sapphire.ui.forms.MasterDetailsContentNodePart$NodeFactory.nodes(MasterDetailsContentNodePart.java:1026)
	at org.eclipse.sapphire.ui.forms.MasterDetailsContentNodePart.refreshNodes(MasterDetailsContentNodePart.java:689)
	at org.eclipse.sapphire.ui.forms.MasterDetailsContentNodePart.access$0(MasterDetailsContentNodePart.java:677)
	at org.eclipse.sapphire.ui.forms.MasterDetailsContentNodePart$NodeFactory$1.handle(MasterDetailsContentNodePart.java:894)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.services.Service.broadcast(Service.java:126)
	at org.eclipse.sapphire.services.Service.broadcast(Service.java:131)
	at org.eclipse.sapphire.services.DataService.refresh(DataService.java:152)
	at org.eclipse.sapphire.ElementReferenceService.access$1(ElementReferenceService.java:1)
	at org.eclipse.sapphire.ElementReferenceService$1.handleTypedEvent(ElementReferenceService.java:88)
	at org.eclipse.sapphire.ElementReferenceService$1.handleTypedEvent(ElementReferenceService.java:1)
	at org.eclipse.sapphire.FilteredListener.handle(FilteredListener.java:35)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.ui.SapphirePart.broadcast(SapphirePart.java:560)
	at org.eclipse.sapphire.ui.diagram.editor.SapphireDiagramEditorPagePart.notifyNodeDelete(SapphireDiagramEditorPagePart.java:582)
	at org.eclipse.sapphire.ui.diagram.editor.SapphireDiagramEditorPagePart.access$3(SapphireDiagramEditorPagePart.java:579)
	at org.eclipse.sapphire.ui.diagram.editor.SapphireDiagramEditorPagePart$NodeTemplateListener.handleNodeDelete(SapphireDiagramEditorPagePart.java:677)
	at org.eclipse.sapphire.ui.diagram.editor.DiagramNodeTemplate.notifyNodeDelete(DiagramNodeTemplate.java:466)
	at org.eclipse.sapphire.ui.diagram.editor.DiagramNodeTemplate.handleModelPropertyChange(DiagramNodeTemplate.java:336)
	at org.eclipse.sapphire.ui.diagram.editor.DiagramNodeTemplate.access$2(DiagramNodeTemplate.java:301)
	at org.eclipse.sapphire.ui.diagram.editor.DiagramNodeTemplate$2.handleTypedEvent(DiagramNodeTemplate.java:151)
	at org.eclipse.sapphire.ui.diagram.editor.DiagramNodeTemplate$2.handleTypedEvent(DiagramNodeTemplate.java:1)
	at org.eclipse.sapphire.FilteredListener.handle(FilteredListener.java:35)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.Index.handle(Index.java:339)
	at org.eclipse.sapphire.Index.access$0(Index.java:277)
	at org.eclipse.sapphire.Index$1.handleTypedEvent(Index.java:85)
	at org.eclipse.sapphire.Index$1.handleTypedEvent(Index.java:1)
	at org.eclipse.sapphire.FilteredListener.handle(FilteredListener.java:35)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.Property.broadcast(Property.java:766)
	at org.eclipse.sapphire.ElementList.refreshContent(ElementList.java:214)
	at org.eclipse.sapphire.ElementList.refresh(ElementList.java:82)
	at org.eclipse.sapphire.ElementList.remove$(ElementList.java:601)
	at org.eclipse.sapphire.ElementList.remove(ElementList.java:591)
	at org.eclipse.sapphire.ui.forms.internal.OutlineNodeDeleteActionHandler.run(OutlineNodeDeleteActionHandler.java:79)
	at org.eclipse.sapphire.ui.SapphireActionHandler.execute(SapphireActionHandler.java:95)
	at org.eclipse.sapphire.ui.forms.swt.SapphireMenuActionPresentation$2.widgetSelected(SapphireMenuActionPresentation.java:125)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4353)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4172)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3761)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:384)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:239)
	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:648)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Caused by: java.lang.IllegalStateException: Columns property is already disposed.
	at org.eclipse.sapphire.Property.assertNotDisposed(Property.java:838)
	at org.eclipse.sapphire.Property.init(Property.java:84)
	at org.eclipse.sapphire.ElementList.iterator(ElementList.java:831)
	at org.eclipse.sapphire.ElementList.detach(ElementList.java:294)
	at org.eclipse.sapphire.Property.detach(Property.java:696)
	at org.eclipse.sapphire.ElementReferenceService.compute(ElementReferenceService.java:117)
	at org.eclipse.sapphire.ElementReferenceService.compute(ElementReferenceService.java:1)
	at org.eclipse.sapphire.services.DataService.refresh(DataService.java:103)
	... 120 more

Bugzilla: https://bugs.eclipse.org/bugs/show_bug.cgi?id=444285
Fix : NPE in ElementReferencePossibleValuesService

To reproduce, use the SQL Schema Editor...

1. Create two tables A and B
2. Make a column in A a primary key
3. Create a foreign key from B to A
3. Using the Details page, delete A an exception is thrown

java.lang.RuntimeException: ColumnAssociation.ReferencedColumn: ElementReferencePossibleValuesService.compute() has failed
	at org.eclipse.sapphire.services.DataService.refresh(DataService.java:130)
	at org.eclipse.sapphire.internal.ElementReferencePossibleValuesService.access$0(ElementReferencePossibleValuesService.java:1)
	at org.eclipse.sapphire.internal.ElementReferencePossibleValuesService$1.handleTypedEvent(ElementReferencePossibleValuesService.java:55)
	at org.eclipse.sapphire.internal.ElementReferencePossibleValuesService$1.handleTypedEvent(ElementReferencePossibleValuesService.java:1)
	at org.eclipse.sapphire.FilteredListener.handle(FilteredListener.java:35)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.services.Service.broadcast(Service.java:126)
	at org.eclipse.sapphire.services.Service.broadcast(Service.java:131)
	at org.eclipse.sapphire.services.DataService.refresh(DataService.java:152)
	at org.eclipse.sapphire.ElementReferenceService.access$1(ElementReferenceService.java:1)
	at org.eclipse.sapphire.ElementReferenceService$2.handleTypedEvent(ElementReferenceService.java:99)
	at org.eclipse.sapphire.ElementReferenceService$2.handleTypedEvent(ElementReferenceService.java:1)
	at org.eclipse.sapphire.FilteredListener.handle(FilteredListener.java:35)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.services.Service.broadcast(Service.java:126)
	at org.eclipse.sapphire.services.Service.broadcast(Service.java:131)
	at org.eclipse.sapphire.services.DataService.refresh(DataService.java:152)
	at org.eclipse.sapphire.services.internal.ReferenceValidationService.access$1(ReferenceValidationService.java:1)
	at org.eclipse.sapphire.services.internal.ReferenceValidationService$1.handle(ReferenceValidationService.java:61)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.services.Service.broadcast(Service.java:126)
	at org.eclipse.sapphire.samples.sqlschema.ForeignKeyColumnReferenceService.access$0(ForeignKeyColumnReferenceService.java:1)
	at org.eclipse.sapphire.samples.sqlschema.ForeignKeyColumnReferenceService$2.handle(ForeignKeyColumnReferenceService.java:49)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.ui.SapphirePart.broadcast(SapphirePart.java:560)
	at org.eclipse.sapphire.ui.diagram.internal.StandardDiagramConnectionPart.notifyConnectionEndpointUpdate(StandardDiagramConnectionPart.java:590)
	at org.eclipse.sapphire.ui.diagram.internal.StandardEmbeddedConnectionPart.handleEndpointReferenceChange(StandardEmbeddedConnectionPart.java:168)
	at org.eclipse.sapphire.ui.diagram.internal.StandardEmbeddedConnectionPart$2.handle(StandardEmbeddedConnectionPart.java:134)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.ui.SapphirePart.broadcast(SapphirePart.java:560)
	at org.eclipse.sapphire.ui.SapphirePart.dispose(SapphirePart.java:877)
	at org.eclipse.sapphire.ui.forms.MasterDetailsContentNodePart.dispose(MasterDetailsContentNodePart.java:763)
	at org.eclipse.sapphire.ui.forms.MasterDetailsContentNodePart$NodeFactory.nodes(MasterDetailsContentNodePart.java:1026)
	at org.eclipse.sapphire.ui.forms.MasterDetailsContentNodePart.refreshNodes(MasterDetailsContentNodePart.java:689)
	at org.eclipse.sapphire.ui.forms.MasterDetailsContentNodePart.access$0(MasterDetailsContentNodePart.java:677)
	at org.eclipse.sapphire.ui.forms.MasterDetailsContentNodePart$NodeFactory$1.handle(MasterDetailsContentNodePart.java:894)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.services.Service.broadcast(Service.java:126)
	at org.eclipse.sapphire.services.Service.broadcast(Service.java:131)
	at org.eclipse.sapphire.services.DataService.refresh(DataService.java:152)
	at org.eclipse.sapphire.ElementReferenceService.access$1(ElementReferenceService.java:1)
	at org.eclipse.sapphire.ElementReferenceService$1.handleTypedEvent(ElementReferenceService.java:88)
	at org.eclipse.sapphire.ElementReferenceService$1.handleTypedEvent(ElementReferenceService.java:1)
	at org.eclipse.sapphire.FilteredListener.handle(FilteredListener.java:35)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.ui.SapphirePart.broadcast(SapphirePart.java:560)
	at org.eclipse.sapphire.ui.diagram.editor.SapphireDiagramEditorPagePart.notifyNodeDelete(SapphireDiagramEditorPagePart.java:582)
	at org.eclipse.sapphire.ui.diagram.editor.SapphireDiagramEditorPagePart.access$3(SapphireDiagramEditorPagePart.java:579)
	at org.eclipse.sapphire.ui.diagram.editor.SapphireDiagramEditorPagePart$NodeTemplateListener.handleNodeDelete(SapphireDiagramEditorPagePart.java:677)
	at org.eclipse.sapphire.ui.diagram.editor.DiagramNodeTemplate.notifyNodeDelete(DiagramNodeTemplate.java:466)
	at org.eclipse.sapphire.ui.diagram.editor.DiagramNodeTemplate.handleModelPropertyChange(DiagramNodeTemplate.java:336)
	at org.eclipse.sapphire.ui.diagram.editor.DiagramNodeTemplate.access$2(DiagramNodeTemplate.java:301)
	at org.eclipse.sapphire.ui.diagram.editor.DiagramNodeTemplate$2.handleTypedEvent(DiagramNodeTemplate.java:151)
	at org.eclipse.sapphire.ui.diagram.editor.DiagramNodeTemplate$2.handleTypedEvent(DiagramNodeTemplate.java:1)
	at org.eclipse.sapphire.FilteredListener.handle(FilteredListener.java:35)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.Index.handle(Index.java:339)
	at org.eclipse.sapphire.Index.access$0(Index.java:277)
	at org.eclipse.sapphire.Index$1.handleTypedEvent(Index.java:85)
	at org.eclipse.sapphire.Index$1.handleTypedEvent(Index.java:1)
	at org.eclipse.sapphire.FilteredListener.handle(FilteredListener.java:35)
	at org.eclipse.sapphire.EventDeliveryJob.run(EventDeliveryJob.java:52)
	at org.eclipse.sapphire.JobQueue.process(JobQueue.java:94)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:126)
	at org.eclipse.sapphire.ListenerContext.broadcast(ListenerContext.java:132)
	at org.eclipse.sapphire.Property.broadcast(Property.java:766)
	at org.eclipse.sapphire.ElementList.refreshContent(ElementList.java:214)
	at org.eclipse.sapphire.ElementList.refresh(ElementList.java:82)
	at org.eclipse.sapphire.ElementList.remove$(ElementList.java:601)
	at org.eclipse.sapphire.ElementList.remove(ElementList.java:591)
	at org.eclipse.sapphire.ui.forms.internal.OutlineNodeDeleteActionHandler.run(OutlineNodeDeleteActionHandler.java:79)
	at org.eclipse.sapphire.ui.SapphireActionHandler.execute(SapphireActionHandler.java:95)
	at org.eclipse.sapphire.ui.forms.swt.SapphireMenuActionPresentation$2.widgetSelected(SapphireMenuActionPresentation.java:125)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:248)
	at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
	at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4353)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1061)
	at org.eclipse.swt.widgets.Display.runDeferredEvents(Display.java:4172)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3761)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$9.run(PartRenderingEngine.java:1151)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1032)
	at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:148)
	at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:636)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:579)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:135)
	at org.eclipse.equinox.internal.app.EclipseAppHandle.run(EclipseAppHandle.java:196)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.runApplication(EclipseAppLauncher.java:134)
	at org.eclipse.core.runtime.internal.adaptor.EclipseAppLauncher.start(EclipseAppLauncher.java:104)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:384)
	at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:239)
	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:648)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:603)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1465)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1438)
Caused by: java.lang.NullPointerException
	at org.eclipse.sapphire.internal.ElementReferencePossibleValuesService.compute(ElementReferencePossibleValuesService.java:87)
	at org.eclipse.sapphire.PossibleValuesService.compute(PossibleValuesService.java:93)
	at org.eclipse.sapphire.PossibleValuesService.compute(PossibleValuesService.java:1)
	at org.eclipse.sapphire.services.DataService.refresh(DataService.java:103)
	... 124 more

Bugzilla: https://bugs.eclipse.org/bugs/show_bug.cgi?id=444195
Releng : Adopt WTP 3.6.1 RC4 (Luna SR1)
Fix : Connection does not reconnect when target appears

StandardDiagramConnectionPart already has listeners on the reference
services at connection's both ends. Upon reference event, it can
recompute the connection endpoints. The problem lies in
DiagramEmbeddedConnectionTemplate class which has a model element
listener on connection's target. The listener would delete the
connection part if the target node is deleted. Removing that listener
would ensure the connection part is still around to listen on endpoint
changes.

Bugzilla: https://bugs.eclipse.org/bugs/show_bug.cgi?id=444301