Community
Participate
Working Groups
Created attachment 255454 [details] Sample project With the following scenario I get the following exception : 1. Import the project in attachment 2. Open the diagram 3. try to reconnect an edge with bracket style without changing target, only try to change anchor, KO : After this exception the editor is no more usable, a reopen is needed. org.eclipse.swt.SWTException: Failed to execute runnable (java.lang.IndexOutOfBoundsException: Index: -1, Size: 0) at org.eclipse.swt.SWT.error(SWT.java:4361) at org.eclipse.swt.SWT.error(SWT.java:4276) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:138) at org.eclipse.swt.widgets.Display.runAsyncMessages(Display.java:3537) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3189) at org.eclipse.ui.internal.Workbench.runEventLoop(Workbench.java:2701) at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2665) at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2499) at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:679) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:668) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:149) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:124) 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:353) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:180) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:629) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:584) at org.eclipse.equinox.launcher.Main.run(Main.java:1438) at org.eclipse.equinox.launcher.Main.main(Main.java:1414) Caused by: java.lang.IndexOutOfBoundsException: Index: -1, Size: 0 at org.eclipse.draw2d.geometry.PointList.getPoint(PointList.java:194) at org.eclipse.draw2d.geometry.PointList.getMidpoint(PointList.java:177) at org.eclipse.sirius.diagram.ui.business.internal.bracket.locators.BracketResizableLabelLocator.getReferencePoint(BracketResizableLabelLocator.java:61) at org.eclipse.gmf.runtime.diagram.ui.internal.figures.ResizableLabelLocator.relocate(ResizableLabelLocator.java:48) at org.eclipse.gmf.runtime.draw2d.ui.internal.figures.DelegatingLayout.layout(DelegatingLayout.java:43) at org.eclipse.draw2d.Figure.layout(Figure.java:1093) at org.eclipse.draw2d.PolylineConnection.layout(PolylineConnection.java:179) at org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramEdgeEditPart$ViewEdgeFigure.layout(AbstractDiagramEdgeEditPart.java:589) at org.eclipse.draw2d.Figure.validate(Figure.java:1896) at org.eclipse.draw2d.Figure.validate(Figure.java:1898) at org.eclipse.draw2d.Figure.validate(Figure.java:1898) at org.eclipse.draw2d.Figure.validate(Figure.java:1898) at org.eclipse.draw2d.Figure.validate(Figure.java:1898) at org.eclipse.draw2d.FreeformViewport$FreeformViewportLayout.calculatePreferredSize(FreeformViewport.java:25) at org.eclipse.draw2d.AbstractLayout.getPreferredSize(AbstractLayout.java:110) at org.eclipse.draw2d.AbstractHintLayout.getPreferredSize(AbstractHintLayout.java:90) at org.eclipse.draw2d.Figure.getPreferredSize(Figure.java:807) at org.eclipse.draw2d.ScrollPaneSolver.solve(ScrollPaneSolver.java:82) at org.eclipse.draw2d.FigureCanvas.layoutViewport(FigureCanvas.java:325) at org.eclipse.draw2d.FigureCanvas.access$4(FigureCanvas.java:323) at org.eclipse.draw2d.FigureCanvas$3.notifyValidating(FigureCanvas.java:292) at org.eclipse.draw2d.UpdateManager.fireValidating(UpdateManager.java:143) at org.eclipse.sirius.diagram.ui.tools.internal.part.SiriusDiagramGraphicalViewer$ToggleUpdateManager.performValidation(SiriusDiagramGraphicalViewer.java:213) at org.eclipse.draw2d.DeferredUpdateManager.performUpdate(DeferredUpdateManager.java:190) at org.eclipse.sirius.diagram.ui.tools.internal.part.SiriusDiagramGraphicalViewer$ToggleUpdateManager.performUpdate(SiriusDiagramGraphicalViewer.java:197) at org.eclipse.draw2d.DeferredUpdateManager$UpdateRequest.run(DeferredUpdateManager.java:44) at org.eclipse.swt.widgets.RunnableLock.run(RunnableLock.java:35) at org.eclipse.swt.widgets.Synchronizer.runAsyncMessages(Synchronizer.java:135) ... 23 more
The bug is not reproductible with dataset from BracketEdgeTests, i.e. /org.eclipse.sirius.tests.swtbot/data/unit/bracketEdge/VP-3092.aird. Perhaps because in VP-3092.aird edge endpoints are container in list and this this failing case it is simple node.
On v2.0.x branch we have a different exception : java.lang.ClassCastException: org.eclipse.draw2d.RelativeBendpoint cannot be cast to org.eclipse.sirius.diagram.ui.business.internal.bracket.BracketRelativeBendpoint at org.eclipse.sirius.diagram.ui.business.internal.bracket.BracketConnectionQuery.getPointListFromConstraint(BracketConnectionQuery.java:528) at org.eclipse.sirius.diagram.ui.tools.internal.routers.BracketConnectionRouter.route(BracketConnectionRouter.java:87) at org.eclipse.draw2d.PolylineConnection$RoutingNotifier.route(PolylineConnection.java:371) at org.eclipse.draw2d.PolylineConnection.layout(PolylineConnection.java:176) at org.eclipse.sirius.diagram.ui.edit.api.part.AbstractDiagramEdgeEditPart$ViewEdgeFigure.layout(AbstractDiagramEdgeEditPart.java:733) at org.eclipse.draw2d.Figure.validate(Figure.java:1896) at org.eclipse.draw2d.Figure.validate(Figure.java:1898) at org.eclipse.draw2d.Figure.validate(Figure.java:1898) at org.eclipse.draw2d.Figure.validate(Figure.java:1898) at org.eclipse.draw2d.Figure.validate(Figure.java:1898) at org.eclipse.draw2d.FreeformViewport$FreeformViewportLayout.calculatePreferredSize(FreeformViewport.java:25) at org.eclipse.draw2d.AbstractLayout.getPreferredSize(AbstractLayout.java:110) at org.eclipse.draw2d.AbstractHintLayout.getPreferredSize(AbstractHintLayout.java:90) at org.eclipse.draw2d.Figure.getPreferredSize(Figure.java:807) at org.eclipse.draw2d.ScrollPaneSolver.solve(ScrollPaneSolver.java:82) at org.eclipse.draw2d.FigureCanvas.layoutViewport(FigureCanvas.java:325) at org.eclipse.draw2d.FigureCanvas.access$4(FigureCanvas.java:323) at org.eclipse.draw2d.FigureCanvas$3.notifyValidating(FigureCanvas.java:292) at org.eclipse.draw2d.UpdateManager.fireValidating(UpdateManager.java:143) at org.eclipse.sirius.diagram.ui.tools.internal.part.SiriusDiagramGraphicalViewer$ToggleUpdateManager.performValidation(SiriusDiagramGraphicalViewer.java:213) at org.eclipse.draw2d.DeferredUpdateManager.paint(DeferredUpdateManager.java:167) at org.eclipse.draw2d.LightweightSystem.paint(LightweightSystem.java:203) at org.eclipse.draw2d.LightweightSystem$2.handleEvent(LightweightSystem.java:110) at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84) at org.eclipse.swt.widgets.Display.sendEvent(Display.java:4481) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1327) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1351) at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1336) at org.eclipse.swt.widgets.Control.gtk_expose_event(Control.java:3242) at org.eclipse.swt.widgets.Composite.gtk_expose_event(Composite.java:752) at org.eclipse.swt.widgets.Canvas.gtk_expose_event(Canvas.java:181) at org.eclipse.swt.widgets.Widget.windowProc(Widget.java:1958) at org.eclipse.swt.widgets.Control.windowProc(Control.java:5590) at org.eclipse.swt.widgets.Display.windowProc(Display.java:4717) at org.eclipse.swt.internal.gtk.OS._gtk_main_do_event(Native Method) at org.eclipse.swt.internal.gtk.OS.gtk_main_do_event(OS.java:9272) at org.eclipse.swt.widgets.Display.eventProc(Display.java:1225) at org.eclipse.swt.internal.gtk.OS._gdk_window_process_all_updates(Native Method) at org.eclipse.swt.internal.gtk.OS.gdk_window_process_all_updates(OS.java:5981) at org.eclipse.swt.widgets.Display.update(Display.java:4669) at org.eclipse.swt.widgets.Display.runDeferredLayouts(Display.java:3845) at org.eclipse.swt.widgets.Display.readAndDispatch(Display.java:3417) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine$4.run(PartRenderingEngine.java:1127) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337) at org.eclipse.e4.ui.internal.workbench.swt.PartRenderingEngine.run(PartRenderingEngine.java:1018) at org.eclipse.e4.ui.internal.workbench.E4Workbench.createAndRunUI(E4Workbench.java:156) at org.eclipse.ui.internal.Workbench$5.run(Workbench.java:654) at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:337) at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:598) at org.eclipse.ui.PlatformUI.createAndRunWorkbench(PlatformUI.java:150) at org.eclipse.ui.internal.ide.application.IDEApplication.start(IDEApplication.java:139) 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:380) at org.eclipse.core.runtime.adaptor.EclipseStarter.run(EclipseStarter.java:235) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:606) at org.eclipse.equinox.launcher.Main.invokeFramework(Main.java:669) at org.eclipse.equinox.launcher.Main.basicRun(Main.java:608) at org.eclipse.equinox.launcher.Main.run(Main.java:1515) at org.eclipse.equinox.launcher.Main.main(Main.java:1488)
This bug doesn't occurs on v1.0.x.
This is a regression from commit a5a939dfbe69c07ac1b2fc5b6bb5422b9b30adbf [437095] Update command and feedback on terminal bendpoint move to only move the last segment on Sirius 2.0