Hanning connection in STG after copy-paste of a page
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Workcraft |
Fix Committed
|
High
|
Stan |
Bug Description
To reproduce:
1) Create an STG model with a sequence of 3 transition (connected in a series)
2) Group the first two of them into a page
3) Select the whole model and copy-paste it
4) Enter the copy page and remove the second transition (the one which is connected to the outside of the page)
The following exception is thrown (see the note at the bottom!):
Exception in thread "AWT-EventQueue-0" java.lang.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at org.workcraft.
at javax.swing.
at javax.swing.
at javax.swing.
at javax.swing.
at javax.swing.
at javax.swing.
at javax.swing.
at javax.swing.
at javax.swing.
at javax.swing.
at javax.swing.
at javax.swing.
at javax.swing.
at javax.swing.
at javax.swing.
at javax.swing.
at javax.swing.
at javax.swing.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.security.
at java.security.
at java.security.
at java.awt.
at java.awt.
at java.security.
at java.security.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
at java.awt.
Note: if you undo the delete action and try to remove the transition again it work fine.
Related branches
- Danil Sokolov: Approve
-
Diff: 280 lines (+74/-20)15 files modifiedCircuitPlugin/src/org/workcraft/plugins/circuit/VisualCircuitComponent.java (+6/-0)
WorkcraftCore/src/org/workcraft/Framework.java (+4/-1)
WorkcraftCore/src/org/workcraft/dom/AbstractGroup.java (+12/-2)
WorkcraftCore/src/org/workcraft/dom/DefaultHangingConnectionRemover.java (+1/-1)
WorkcraftCore/src/org/workcraft/dom/math/MathConnection.java (+2/-1)
WorkcraftCore/src/org/workcraft/dom/math/MathGroup.java (+13/-9)
WorkcraftCore/src/org/workcraft/dom/visual/AbstractVisualModel.java (+1/-5)
WorkcraftCore/src/org/workcraft/dom/visual/VisualGroup.java (+4/-0)
WorkcraftCore/src/org/workcraft/dom/visual/VisualPage.java (+4/-0)
WorkcraftCore/src/org/workcraft/dom/visual/connections/Polyline.java (+5/-1)
WorkcraftCore/src/org/workcraft/dom/visual/connections/VisualConnection.java (+6/-0)
WorkcraftCore/src/org/workcraft/observation/ObservableHierarchy.java (+1/-0)
WorkcraftCore/src/org/workcraft/observation/ObservableHierarchyImpl.java (+4/-0)
XmasPlugin/src/org/workcraft/plugins/xmas/components/VisualXmasComponent.java (+6/-0)
XmasPlugin/src/org/workcraft/plugins/xmas/components/XmasComponent.java (+5/-0)
- Danil Sokolov: Approve
-
Diff: 568 lines (+121/-83)19 files modifiedCircuitPlugin/src/org/workcraft/plugins/circuit/VisualCircuitComponent.java (+6/-0)
GraphPlugin/src/org/workcraft/plugins/graph/ToolsProvider.java (+0/-3)
SONPlugin/src/org/workcraft/plugins/son/SONToolProvider.java (+0/-3)
WorkcraftCore/src/org/workcraft/Framework.java (+6/-10)
WorkcraftCore/src/org/workcraft/dom/AbstractGroup.java (+50/-41)
WorkcraftCore/src/org/workcraft/dom/DefaultHangingConnectionRemover.java (+1/-1)
WorkcraftCore/src/org/workcraft/dom/math/MathConnection.java (+2/-1)
WorkcraftCore/src/org/workcraft/dom/math/MathGroup.java (+13/-9)
WorkcraftCore/src/org/workcraft/dom/visual/AbstractVisualModel.java (+1/-5)
WorkcraftCore/src/org/workcraft/dom/visual/VisualGroup.java (+4/-0)
WorkcraftCore/src/org/workcraft/dom/visual/VisualPage.java (+4/-0)
WorkcraftCore/src/org/workcraft/dom/visual/connections/Polyline.java (+5/-1)
WorkcraftCore/src/org/workcraft/dom/visual/connections/VisualConnection.java (+6/-0)
WorkcraftCore/src/org/workcraft/gui/graph/tools/PageGeneratorTool.java (+1/-3)
WorkcraftCore/src/org/workcraft/observation/ObservableHierarchy.java (+1/-0)
WorkcraftCore/src/org/workcraft/observation/ObservableHierarchyImpl.java (+4/-0)
WorkcraftCore/src/org/workcraft/workspace/WorkspaceEntry.java (+6/-6)
XmasPlugin/src/org/workcraft/plugins/xmas/components/VisualXmasComponent.java (+6/-0)
XmasPlugin/src/org/workcraft/plugins/xmas/components/XmasComponent.java (+5/-0)
Changed in workcraft: | |
status: | Triaged → Confirmed |
- the problem is that the mathematical connection is deleted two times:
first - it is deleted from DefaultMathNode Remover because there are no more references to it
(after deletion its parent becomes null, it is no longer possible to determine its container)
second - it is deleted because the math Node is referring to it in the NodeContextTracker (Math node is deleted, hence the related connection must be deleted as well)
current solution: instead of creating an exception about a parent not being a container, ignore deleting node with parent == null