Broken copy-paste of conditional vertices in CPOG plugin

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

Bug Description

Create a CPOG with a condition on a vertex and try to copy it.

Exception is thrown and most of the graph disappears.

Exception in thread "AWT-EventQueue-0" org.workcraft.exceptions.NotFoundException: Object "org.workcraft.plugins.cpog.Variable@3da1b0e" was not issued a name
 at org.workcraft.dom.references.UniqueNameManager.getName(UniqueNameManager.java:36)
 at org.workcraft.plugins.stg.STGReferenceManager.getNodeReference(STGReferenceManager.java:129)
 at org.workcraft.dom.AbstractModel.getNodeReference(AbstractModel.java:123)
 at org.workcraft.plugins.serialisation.XMLModelSerialiser$1.getReference(XMLModelSerialiser.java:77)
 at org.workcraft.plugins.cpog.serialisation.BooleanFormulaSerialiser$1.visit(BooleanFormulaSerialiser.java:58)
 at org.workcraft.plugins.cpog.optimisation.booleanvisitors.FormulaToString$DelegatingPrinter.visit(FormulaToString.java:157)
 at org.workcraft.plugins.cpog.optimisation.booleanvisitors.FormulaToString$DelegatingPrinter.visit(FormulaToString.java:157)
 at org.workcraft.plugins.cpog.optimisation.booleanvisitors.FormulaToString$DelegatingPrinter.visit(FormulaToString.java:157)
 at org.workcraft.plugins.cpog.optimisation.booleanvisitors.FormulaToString$DelegatingPrinter.visit(FormulaToString.java:157)
 at org.workcraft.plugins.cpog.optimisation.booleanvisitors.FormulaToString$DelegatingPrinter.visit(FormulaToString.java:157)
 at org.workcraft.plugins.cpog.optimisation.booleanvisitors.FormulaToString$DelegatingPrinter.visit(FormulaToString.java:157)
 at org.workcraft.plugins.cpog.optimisation.booleanvisitors.FormulaToString$DelegatingPrinter.visit(FormulaToString.java:1)
 at org.workcraft.plugins.cpog.Variable.accept(Variable.java:68)
 at org.workcraft.plugins.cpog.serialisation.BooleanFormulaSerialiser.writeFormulaAttribute(BooleanFormulaSerialiser.java:65)
 at org.workcraft.plugins.cpog.serialisation.BooleanFormulaSerialiser.serialise(BooleanFormulaSerialiser.java:44)
 at org.workcraft.serialisation.xml.DefaultNodeSerialiser.doSerialisation(DefaultNodeSerialiser.java:114)
 at org.workcraft.serialisation.xml.DefaultNodeSerialiser.serialise(DefaultNodeSerialiser.java:134)
 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.copy(WorkspaceEntry.java:283)
 at org.workcraft.gui.MainWindow.copy(MainWindow.java:1194)
 at org.workcraft.gui.MainWindowActions$15.run(MainWindowActions.java:154)
 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)

Tags: copy cpog

Related branches

tags: added: copy cpog
Revision history for this message
Danil Sokolov (danilovesky) wrote :

This bug is due to the link between the vertex and the variable nodes. When copying a vertex node the rest of the model is removed (including the associated variable node). Therefore the condition on the vertex becomes inconsistent.

Revision history for this message
Danil Sokolov (danilovesky) wrote :

As a quick solution, when a variable is removed the conditions of all associated vertices are evaluated with this variable beeing false.

Changed in workcraft:
status: Triaged → 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.