Uploaded image for project: 'jBPM'
  1. jBPM
  2. JBPM-3120

Undo/Redo appear to do nothing for certain editing changes

    XMLWordPrintable

Details

    • Bug
    • Resolution: Done
    • Major
    • jBPM 5.2
    • None
    • Eclipse
    • None

    Description

      It looks like the EditingDomain command transactions are too fine-grained. For certain editing changes (e.g. creating a connection) the undo/redo actions appear to do nothing one or two times when traversing the CommandStack. Also, I'm seeing an IllegalStateException when undo-ing a sequence flow connection:

      java.lang.IllegalStateException: Cannot activate read/write transaction in read-only transaction context
      at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.acquire(TransactionalEditingDomainImpl.java:576)
      at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.activate(TransactionalEditingDomainImpl.java:508)
      at org.eclipse.emf.transaction.impl.TransactionImpl.start(TransactionImpl.java:204)
      at org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl.createTransaction(WorkspaceCommandStackImpl.java:380)
      at org.eclipse.emf.workspace.EMFCommandOperation.createTransaction(EMFCommandOperation.java:215)
      at org.eclipse.emf.workspace.AbstractEMFOperation.execute(AbstractEMFOperation.java:147)
      at org.eclipse.core.commands.operations.DefaultOperationHistory.execute(DefaultOperationHistory.java:511)
      at org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl.doExecute(WorkspaceCommandStackImpl.java:208)
      at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:165)
      at org.eclipse.graphiti.ui.internal.editor.GFWorkspaceCommandStackImpl.execute(GFWorkspaceCommandStackImpl.java:47)
      at org.eclipse.emf.transaction.impl.AbstractTransactionalCommandStack.execute(AbstractTransactionalCommandStack.java:219)
      at org.eclipse.graphiti.ui.internal.editor.GFWorkspaceCommandStackImpl.execute(GFWorkspaceCommandStackImpl.java:39)
      at org.jboss.bpmn2.editor.ui.property.Bpmn2MainPropertySection.refresh(Bpmn2MainPropertySection.java:51)
      at org.eclipse.ui.views.properties.tabbed.TabContents$6.run(TabContents.java:217)
      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.ui.views.properties.tabbed.TabContents.refresh(TabContents.java:220)
      at org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage$SelectionChangedListener.selectionChanged(TabbedPropertySheetPage.java:222)
      at org.eclipse.jface.viewers.Viewer$2.run(Viewer.java:162)
      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.Viewer.fireSelectionChanged(Viewer.java:160)
      at org.eclipse.jface.viewers.StructuredViewer.updateSelection(StructuredViewer.java:2162)
      at org.eclipse.jface.viewers.StructuredViewer.handleSelect(StructuredViewer.java:1190)
      at org.eclipse.jface.viewers.StructuredViewer$4.widgetSelected(StructuredViewer.java:1220)
      at org.eclipse.jface.util.OpenStrategy.fireSelectionEvent(OpenStrategy.java:228)
      at org.eclipse.jface.util.OpenStrategy.access$4(OpenStrategy.java:222)
      at org.eclipse.jface.util.OpenStrategy$1.handleEvent(OpenStrategy.java:389)
      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.notifyListeners(Widget.java:774)
      at org.eclipse.ui.internal.views.properties.tabbed.view.TabbedPropertyList.select(TabbedPropertyList.java:664)
      at org.eclipse.ui.internal.views.properties.tabbed.view.TabbedPropertyViewer.setSelectionToWidget(TabbedPropertyViewer.java:122)
      at org.eclipse.jface.viewers.StructuredViewer.setSelectionToWidget(StructuredViewer.java:1741)
      at org.eclipse.jface.viewers.StructuredViewer.setSelection(StructuredViewer.java:1697)
      at org.eclipse.jface.viewers.Viewer.setSelection(Viewer.java:392)
      at org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage.setInput(TabbedPropertySheetPage.java:736)
      at org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage.selectionChanged(TabbedPropertySheetPage.java:555)
      at org.eclipse.ui.views.properties.PropertySheet.selectionChanged(PropertySheet.java:365)
      at org.eclipse.ui.internal.AbstractSelectionService.fireSelection(AbstractSelectionService.java:156)
      at org.eclipse.ui.internal.AbstractSelectionService$1.selectionChanged(AbstractSelectionService.java:62)
      at org.eclipse.gef.ui.parts.AbstractEditPartViewer.fireSelectionChanged(AbstractEditPartViewer.java:247)
      at org.eclipse.gef.ui.parts.AbstractEditPartViewer$1.run(AbstractEditPartViewer.java:131)
      at org.eclipse.gef.SelectionManager.fireSelectionChanged(SelectionManager.java:127)
      at org.eclipse.gef.SelectionManager.deselect(SelectionManager.java:101)
      at org.eclipse.gef.ui.parts.AbstractEditPartViewer.deselect(AbstractEditPartViewer.java:202)
      at org.eclipse.gef.editparts.AbstractEditPart.removeNotify(AbstractEditPart.java:934)
      at org.eclipse.gef.editparts.AbstractGraphicalEditPart.removeNotify(AbstractGraphicalEditPart.java:812)
      at org.eclipse.gef.editparts.AbstractConnectionEditPart.removeNotify(AbstractConnectionEditPart.java:253)
      at org.eclipse.gef.editparts.AbstractConnectionEditPart.setParent(AbstractConnectionEditPart.java:265)
      at org.eclipse.gef.editparts.AbstractConnectionEditPart.setTarget(AbstractConnectionEditPart.java:302)
      at org.eclipse.gef.editparts.AbstractGraphicalEditPart.removeTargetConnection(AbstractGraphicalEditPart.java:847)
      at org.eclipse.gef.editparts.AbstractGraphicalEditPart.refreshTargetConnections(AbstractGraphicalEditPart.java:760)
      at org.eclipse.gef.editparts.AbstractGraphicalEditPart.refresh(AbstractGraphicalEditPart.java:635)
      at org.eclipse.graphiti.ui.internal.parts.PictogramElementDelegate.refreshEditPartsForModelChildrenAndSourceConnections(PictogramElementDelegate.java:293)
      at org.eclipse.graphiti.ui.internal.parts.ShapeEditPart.refreshChildren(ShapeEditPart.java:629)
      at org.eclipse.gef.editparts.AbstractEditPart.refresh(AbstractEditPart.java:718)
      at org.eclipse.gef.editparts.AbstractGraphicalEditPart.refresh(AbstractGraphicalEditPart.java:633)
      at org.eclipse.graphiti.ui.internal.parts.ShapeEditPart.refresh(ShapeEditPart.java:546)
      at org.eclipse.graphiti.ui.internal.parts.PictogramElementDelegate.refreshEditPartsForModelChildrenAndSourceConnections(PictogramElementDelegate.java:293)
      at org.eclipse.graphiti.ui.internal.parts.ShapeEditPart.refreshChildren(ShapeEditPart.java:629)
      at org.eclipse.gef.editparts.AbstractEditPart.refresh(AbstractEditPart.java:718)
      at org.eclipse.gef.editparts.AbstractGraphicalEditPart.refresh(AbstractGraphicalEditPart.java:633)
      at org.eclipse.graphiti.ui.internal.parts.ShapeEditPart.refresh(ShapeEditPart.java:546)
      at org.eclipse.graphiti.ui.internal.parts.DiagramEditPart.refresh(DiagramEditPart.java:181)
      at org.eclipse.graphiti.ui.internal.editor.DiagramEditorInternal.internalRefreshEditPart(DiagramEditorInternal.java:1203)
      at org.eclipse.graphiti.ui.internal.editor.DiagramEditorInternal.refresh(DiagramEditorInternal.java:1287)
      at org.eclipse.graphiti.ui.internal.editor.DiagramRefreshJob.runInUIThread(DiagramRefreshJob.java:99)
      at org.eclipse.graphiti.ui.internal.editor.DiagramChangeListener.resourceSetChanged(DiagramChangeListener.java:140)
      at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl$1.run(TransactionalEditingDomainImpl.java:781)
      at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.runExclusive(TransactionalEditingDomainImpl.java:328)
      at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.postcommit(TransactionalEditingDomainImpl.java:771)
      at org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl.deactivate(TransactionalEditingDomainImpl.java:543)
      at org.eclipse.emf.transaction.impl.TransactionImpl.close(TransactionImpl.java:712)
      at org.eclipse.emf.transaction.impl.TransactionImpl.commit(TransactionImpl.java:474)
      at org.eclipse.emf.workspace.AbstractEMFOperation.undo(AbstractEMFOperation.java:372)
      at org.eclipse.core.commands.operations.DefaultOperationHistory.doUndo(DefaultOperationHistory.java:415)
      at org.eclipse.core.commands.operations.DefaultOperationHistory.undo(DefaultOperationHistory.java:1280)
      at org.eclipse.emf.workspace.impl.WorkspaceCommandStackImpl.undo(WorkspaceCommandStackImpl.java:255)
      at org.eclipse.graphiti.ui.internal.editor.GFCommandStack.undo(GFCommandStack.java:191)
      at org.eclipse.gef.ui.actions.UndoAction.run(UndoAction.java:94)
      at org.eclipse.jface.action.Action.runWithEvent(Action.java:498)
      at org.eclipse.ui.actions.RetargetAction.runWithEvent(RetargetAction.java:230)
      at org.eclipse.jface.commands.ActionHandler.execute(ActionHandler.java:119)
      at org.eclipse.core.commands.Command.executeWithChecks(Command.java:476)
      at org.eclipse.core.commands.ParameterizedCommand.executeWithChecks(ParameterizedCommand.java:508)
      at org.eclipse.ui.internal.handlers.HandlerService.executeCommand(HandlerService.java:169)
      at org.eclipse.ui.internal.keys.WorkbenchKeyboard.executeCommand(WorkbenchKeyboard.java:468)
      at org.eclipse.ui.internal.keys.WorkbenchKeyboard.press(WorkbenchKeyboard.java:786)
      at org.eclipse.ui.internal.keys.WorkbenchKeyboard.processKeyEvent(WorkbenchKeyboard.java:885)
      at org.eclipse.ui.internal.keys.WorkbenchKeyboard.filterKeySequenceBindings(WorkbenchKeyboard.java:567)
      at org.eclipse.ui.internal.keys.WorkbenchKeyboard.access$3(WorkbenchKeyboard.java:508)
      at org.eclipse.ui.internal.keys.WorkbenchKeyboard$KeyDownFilter.handleEvent(WorkbenchKeyboard.java:123)
      at org.eclipse.swt.widgets.EventTable.sendEvent(EventTable.java:84)
      at org.eclipse.swt.widgets.Display.filterEvent(Display.java:1253)
      at org.eclipse.swt.widgets.Widget.sendEvent(Widget.java:1052)
      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.wmChar(Widget.java:1508)
      at org.eclipse.swt.widgets.Control.WM_CHAR(Control.java:4268)
      at org.eclipse.swt.widgets.Canvas.WM_CHAR(Canvas.java:345)
      at org.eclipse.swt.widgets.Control.windowProc(Control.java:4160)
      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:2640)
      at org.eclipse.ui.internal.Workbench.runUI(Workbench.java:2604)
      at org.eclipse.ui.internal.Workbench.access$4(Workbench.java:2438)
      at org.eclipse.ui.internal.Workbench$7.run(Workbench.java:671)
      at org.eclipse.core.databinding.observable.Realm.runWithDefault(Realm.java:332)
      at org.eclipse.ui.internal.Workbench.createAndRunWorkbench(Workbench.java:664)
      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)

      Attachments

        Activity

          People

            kverlaen@redhat.com Kris Verlaenen
            bbrodt_jira Robert (Bob) Brodt (Inactive)
            Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: