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

Bug 328046

Summary: Deleting relations is broken
Product: [WebTools] Dali JPA Tools Reporter: Stefan Dimov <stefan.dimov>
Component: Diagram EditorAssignee: Petya Sabeva <petya.sabeva>
Status: RESOLVED FIXED QA Contact: Stefan Dimov <stefan.dimov>
Severity: normal    
Priority: P3    
Version: 0.5   
Target Milestone: 0.5 RC4   
Hardware: All   
OS: All   
Whiteboard:
Attachments:
Description Flags
patch
none
Delete relation fix + tests
none
delete relation + tests fix stefan.dimov: iplog+

Description Stefan Dimov CLA 2010-10-18 10:49:22 EDT
1. Create two entities in the diagram
2. Create 1 to 1 bidir relation between them
3. Rename them
4. Try to delete the relation between them

Result: The relation is not being deleted and you get error message:

java.lang.NullPointerException
	at org.eclipse.jpt.ui.diagrameditor.feature.ClickRemoveAttributeButtonFeature.delete(ClickRemoveAttributeButtonFeature.java:76)
	at org.eclipse.jpt.ui.diagrameditor.feature.DeleteRelationFeature.delete(DeleteRelationFeature.java:94)
	at org.eclipse.graphiti.ui.features.DefaultDeleteFeature.execute(DefaultDeleteFeature.java:130)
	at org.eclipse.graphiti.internal.command.GenericFeatureCommandWithContext.execute(GenericFeatureCommandWithContext.java:64)
	at org.eclipse.graphiti.internal.command.CommandContainer.execute(CommandContainer.java:81)
	at org.eclipse.graphiti.ui.internal.command.GefCommandWrapper.execute(GefCommandWrapper.java:51)
	at org.eclipse.gef.commands.CommandStack.execute(CommandStack.java:197)
	at org.eclipse.graphiti.ui.internal.action.AbstractPreDefinedAction.executeOnCommandStack(AbstractPreDefinedAction.java:75)
	at org.eclipse.graphiti.ui.internal.action.AbstractPreDefinedAction.genericRun(AbstractPreDefinedAction.java:93)
	at org.eclipse.graphiti.ui.internal.action.DeleteAction.run(DeleteAction.java:83)
	at org.eclipse.gef.KeyHandler.performStroke(KeyHandler.java:83)
	at org.eclipse.gef.KeyHandler.keyPressed(KeyHandler.java:55)
	at org.eclipse.gef.KeyHandler.keyPressed(KeyHandler.java:59)
	at org.eclipse.gef.ui.parts.GraphicalViewerKeyHandler.keyPressed(GraphicalViewerKeyHandler.java:338)
	at org.eclipse.gef.tools.SelectionTool.handleKeyDown(SelectionTool.java:329)
	at org.eclipse.gef.tools.PanningSelectionTool.handleKeyDown(PanningSelectionTool.java:161)
	at org.eclipse.gef.tools.AbstractTool.keyDown(AbstractTool.java:1021)
	at org.eclipse.gef.tools.SelectionTool.keyDown(SelectionTool.java:489)
	at org.eclipse.gef.EditDomain.keyDown(EditDomain.java:169)
	at org.eclipse.gef.ui.parts.DomainEventDispatcher.dispatchKeyPressed(DomainEventDispatcher.java:252)
	at org.eclipse.draw2d.LightweightSystem$EventHandler.keyPressed(LightweightSystem.java:497)
	at org.eclipse.swt.widgets.TypedListener.handleEvent(TypedListener.java:161)
	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.Widget.sendEvent(Widget.java:1077)
	at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1062)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1103)
	at org.eclipse.swt.widgets.Widget.sendKeyEvent(Widget.java:1099)
	at org.eclipse.swt.widgets.Widget.wmKeyDown(Widget.java:1808)
	at org.eclipse.swt.widgets.Control.WM_KEYDOWN(Control.java:4496)
	at org.eclipse.swt.widgets.Control.windowProc(Control.java:4191)
	at org.eclipse.swt.widgets.Canvas.windowProc(Canvas.java:341)
	at org.eclipse.swt.widgets.Display.windowProc(Display.java:4873)
	at org.eclipse.swt.internal.win32.OS.DispatchMessageW(Native Method)
	at org.eclipse.swt.internal.win32.OS.DispatchMessage(OS.java:2459)
	at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3655)
	at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2629)
	at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2593)
	at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2427)
	at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:670)
	at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
	at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:663)
	at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149)
	at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:115)
	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:369)
	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:619)
	at org.eclipse.equinox.launcher.Main.basicRun(Main.java:574)
	at org.eclipse.equinox.launcher.Main.run(Main.java:1407)
	at org.eclipse.equinox.launcher.Main.main(Main.java:1383)
Comment 1 Stefan Dimov CLA 2010-10-18 11:15:28 EDT
Seems that row 87 of DeleteRelationFeature returns null:

PictogramElement ownerAttributeTextShape = getFeatureProvider().               getPictogramElementForBusinessObject(ownerAttribute);
Comment 2 Petya Sabeva CLA 2010-10-27 09:08:21 EDT
Created attachment 181828 [details]
patch
Comment 3 Petya Sabeva CLA 2010-10-27 09:40:20 EDT
Created attachment 181833 [details]
Delete relation fix + tests
Comment 4 Petya Sabeva CLA 2010-10-27 09:54:09 EDT
Created attachment 181836 [details]
delete relation + tests fix

The patch should be now compatible with latest in HEAD.
Comment 5 Stefan Dimov CLA 2010-10-27 11:40:06 EDT
Patch submitted ...