Copy-paste of a "doubled" implicit arc in STG causes an exception

Bug #1291931 reported by Stan
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Workcraft
Fix Committed
High
Danil Sokolov

Bug Description

Create two transitions, connect them with two arcs (the same direction). Try to copy and paste these connections together with the transitions. The following exception is thrown:

Exception in thread "AWT-EventQueue-0" java.lang.RuntimeException: An implicit place cannot have more that one transition in its preset or postset.
 at org.workcraft.plugins.stg.STG.getNodeReference(STG.java:276)
 at org.workcraft.plugins.serialisation.XMLModelSerialiser$1.getReference(XMLModelSerialiser.java:77)
 at org.workcraft.serialisation.xml.DefaultNodeSerialiser.serialise(DefaultNodeSerialiser.java:136)
 at org.workcraft.serialisation.xml.XMLSerialisationManager.serialise(XMLSerialisationManager.java:67)
 at org.workcraft.serialisation.xml.XMLSerialisationManager.serialise(XMLSerialisationManager.java:72)
 at org.workcraft.plugins.serialisation.XMLModelSerialiser.serialise(XMLModelSerialiser.java:91)
 at org.workcraft.Framework.save(Framework.java:779)
 at org.workcraft.Framework.save(Framework.java:831)
 at org.workcraft.workspace.WorkspaceEntry.paste(WorkspaceEntry.java:296)
 at org.workcraft.gui.MainWindow.paste(MainWindow.java:1200)
 at org.workcraft.gui.MainWindowActions$16.run(MainWindowActions.java:165)
 at org.workcraft.gui.MainWindow$1.actionPerformed(MainWindow.java:108)
 at org.workcraft.gui.actions.ActionMenuItem.fireActionPerformed(ActionMenuItem.java:58)
 at org.workcraft.gui.actions.ActionMenuItem.access$0(ActionMenuItem.java:55)
 at org.workcraft.gui.actions.ActionMenuItem$ActionForwarder.actionPerformed(ActionMenuItem.java:34)
 at javax.swing.AbstractButton.fireActionPerformed(AbstractButton.java:2018)
 at javax.swing.AbstractButton$Handler.actionPerformed(AbstractButton.java:2341)
 at javax.swing.DefaultButtonModel.fireActionPerformed(DefaultButtonModel.java:402)
 at javax.swing.DefaultButtonModel.setPressed(DefaultButtonModel.java:259)
 at javax.swing.AbstractButton.doClick(AbstractButton.java:376)
 at javax.swing.AbstractButton.doClick(AbstractButton.java:356)
 at javax.swing.plaf.basic.BasicMenuItemUI$Actions.actionPerformed(BasicMenuItemUI.java:802)
 at javax.swing.SwingUtilities.notifyAction(SwingUtilities.java:1662)
 at javax.swing.JComponent.processKeyBinding(JComponent.java:2878)
 at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:689)
 at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:697)
 at javax.swing.JMenuBar.processBindingForKeyStrokeRecursive(JMenuBar.java:697)
 at javax.swing.JMenuBar.processKeyBinding(JMenuBar.java:668)
 at javax.swing.KeyboardManager.fireBinding(KeyboardManager.java:307)
 at javax.swing.KeyboardManager.fireKeyboardAction(KeyboardManager.java:293)
 at javax.swing.JComponent.processKeyBindingsForAllComponents(JComponent.java:2970)
 at javax.swing.JComponent.processKeyBindings(JComponent.java:2962)
 at javax.swing.JComponent.processKeyEvent(JComponent.java:2841)
 at java.awt.Component.processEvent(Component.java:6282)
 at java.awt.Container.processEvent(Container.java:2229)
 at java.awt.Component.dispatchEventImpl(Component.java:4861)
 at java.awt.Container.dispatchEventImpl(Container.java:2287)
 at java.awt.Component.dispatchEvent(Component.java:4687)
 at java.awt.KeyboardFocusManager.redispatchEvent(KeyboardFocusManager.java:1895)
 at java.awt.DefaultKeyboardFocusManager.dispatchKeyEvent(DefaultKeyboardFocusManager.java:762)
 at java.awt.DefaultKeyboardFocusManager.preDispatchKeyEvent(DefaultKeyboardFocusManager.java:1027)
 at java.awt.DefaultKeyboardFocusManager.typeAheadAssertions(DefaultKeyboardFocusManager.java:899)
 at java.awt.DefaultKeyboardFocusManager.dispatchEvent(DefaultKeyboardFocusManager.java:727)
 at java.awt.Component.dispatchEventImpl(Component.java:4731)
 at java.awt.Container.dispatchEventImpl(Container.java:2287)
 at java.awt.Window.dispatchEventImpl(Window.java:2719)
 at java.awt.Component.dispatchEvent(Component.java:4687)
 at java.awt.EventQueue.dispatchEventImpl(EventQueue.java:735)
 at java.awt.EventQueue.access$200(EventQueue.java:103)
 at java.awt.EventQueue$3.run(EventQueue.java:694)
 at java.awt.EventQueue$3.run(EventQueue.java:692)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
 at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:87)
 at java.awt.EventQueue$4.run(EventQueue.java:708)
 at java.awt.EventQueue$4.run(EventQueue.java:706)
 at java.security.AccessController.doPrivileged(Native Method)
 at java.security.ProtectionDomain$1.doIntersectionPrivilege(ProtectionDomain.java:76)
 at java.awt.EventQueue.dispatchEvent(EventQueue.java:705)
 at java.awt.EventDispatchThread.pumpOneEventForFilters(EventDispatchThread.java:242)
 at java.awt.EventDispatchThread.pumpEventsForFilter(EventDispatchThread.java:161)
 at java.awt.EventDispatchThread.pumpEventsForHierarchy(EventDispatchThread.java:150)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:146)
 at java.awt.EventDispatchThread.pumpEvents(EventDispatchThread.java:138)
 at java.awt.EventDispatchThread.run(EventDispatchThread.java:91)

Related branches

tags: added: connection copy exception stg
description: updated
summary: - error on creating a second implicit arc between two nodes
+ Copy-paste of a "doubled" implicit arc in STG causes an exception
Changed in workcraft:
importance: Undecided → High
Changed in workcraft:
assignee: nobody → Danil Sokolov (danilovesky)
status: New → Confirmed
milestone: none → 3.0
description: updated
Revision history for this message
Danil Sokolov (danilovesky) wrote :

The same exception is thrown is you try to modify the shape of one of the connections.

The reason for this behaviour is that both implicit places on the connecting arcs have the same name:
<first_transition_name;second_transition_name> and the reference manager gets confused between them.

The fix is to forbid multiple arcs between transitions, thus avoiding implicit places with the same name.

Changed in workcraft:
status: Confirmed → Fix Committed
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.