diff options
author | Ed Seidewitz | 2015-09-26 23:56:04 +0000 |
---|---|---|
committer | jeremie.tatibouet | 2016-03-21 15:08:14 +0000 |
commit | 9d56f0b1bf6cd659acf51ba56d61d87a8bac7769 (patch) | |
tree | e03944140704e1a07ddf8b4b40bf8dfefeb64649 | |
parent | 46fbd2983f275a865984adf31a9baded55296538 (diff) | |
download | org.eclipse.papyrus-9d56f0b1bf6cd659acf51ba56d61d87a8bac7769.tar.gz org.eclipse.papyrus-9d56f0b1bf6cd659acf51ba56d61d87a8bac7769.tar.xz org.eclipse.papyrus-9d56f0b1bf6cd659acf51ba56d61d87a8bac7769.zip |
Corrected the mapping of feature left-hand sides
- Added a missing object flow into the write action value pin, in the
case of writing a multi-valued object property.
Change-Id: I191a2337783290ad1bb5a73d8b061ffcd52252c4
Signed-off-by: Ed Seidewitz <ed-s@modeldriven.com>
-rw-r--r-- | plugins/uml/alf/org.eclipse.papyrus.uml.alf.to.fuml/transformation/AlfExpression2UML.qvto | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/plugins/uml/alf/org.eclipse.papyrus.uml.alf.to.fuml/transformation/AlfExpression2UML.qvto b/plugins/uml/alf/org.eclipse.papyrus.uml.alf.to.fuml/transformation/AlfExpression2UML.qvto index fd46c84a6d2..02af13be4a3 100644 --- a/plugins/uml/alf/org.eclipse.papyrus.uml.alf.to.fuml/transformation/AlfExpression2UML.qvto +++ b/plugins/uml/alf/org.eclipse.papyrus.uml.alf.to.fuml/transformation/AlfExpression2UML.qvto @@ -2072,11 +2072,13 @@ helper SyntaxElement::mapPropertyAssignment(property_ : Property, objectSource : region.edge := graph.edges; var objectInputPin := new InputPin(region, region.name + ".input(" + nameOf(objectSource) + ")", featuringClassifier, 1, 1); + var inputNode := new ExpansionNode(nameOf(valueSource), region, true); new ObjectFlow(region, objectInputPin, writeAction._'object'); + new ObjectFlow(region, inputNode, writeAction.value); graph.nodes := region; - graph.nodes += var inputNode ::= new ExpansionNode(nameOf(valueSource), region, true); - graph.edges += new ObjectFlow(objectSource, objectInputPin); + graph.nodes += inputNode; + graph.edges := new ObjectFlow(objectSource, objectInputPin); graph.edges += new ObjectFlow(valueSource, inputNode); } else { @@ -2203,7 +2205,7 @@ helper LeftHandSide::mapFeatureLeftHandSide(inout graph : LhsGraph, objectSource if objectResultSource = null then { var expressionGraph := feature.expression.map toActivityGraph(); objectResultSource := expressionGraph.resultSource; - graph.controlTarget := expressionGraph.addStructuredActivityNodeTo(graph, "Expression(LeftHandSide(" + nameOf(objectResultSource) + "))"); + graph.controlTarget := expressionGraph.addStructuredActivityNodeTo(graph, "Expression(LeftHandSide(" + property_.qualifiedName + "))"); } endif; var index := self.index(); var resultNode : ActivityNode; @@ -2216,7 +2218,7 @@ helper LeftHandSide::mapFeatureLeftHandSide(inout graph : LhsGraph, objectSource if rhsUpper = 0 then { resultNode := clearAction.result; } else { - graph.nodes += graph.resultSource := new ForkNode("LeftHandSide(" + nameOf(objectResultSource) + ")"); + graph.nodes += graph.resultSource := new ForkNode("LeftHandSide(" + property_.qualifiedName + ")"); graph.assignmentTarget := graph.resultSource; // Place the property assignment mapping in a structured activity node to insure @@ -2234,7 +2236,7 @@ helper LeftHandSide::mapFeatureLeftHandSide(inout graph : LhsGraph, objectSource var indexResultSource := indexSource; if indexResultSource = null then { var indexGraph := index.map toActivityGraph(); - var indexNode := indexGraph.addStructuredActivityNodeTo(graph, "Index(LeftHandSide(" + nameOf(objectResultSource) + ")"); + var indexNode := indexGraph.addStructuredActivityNodeTo(graph, "Index(LeftHandSide(" + property_.qualifiedName + ")"); if graph.controlTarget = null then { graph.controlTarget := indexNode; } else { @@ -2260,7 +2262,7 @@ helper LeftHandSide::mapFeatureLeftHandSide(inout graph : LhsGraph, objectSource graph.edges += new ObjectFlow(indexFork, removeAction.removeAt); graph.nodes += var writeAction ::= new AddStructuralFeatureValueAction(property_, false, unlimitedNaturalType); - graph.nodes += graph.assignmentTarget := graph.resultSource := new ForkNode("LeftHandSide(" + nameOf(objectResultSource) + ")"); + graph.nodes += graph.assignmentTarget := graph.resultSource := new ForkNode("LeftHandSide(" + property_.qualifiedName + ")"); graph.edges += new ObjectFlow(removeAction.result, writeAction._'object'); graph.edges += new ObjectFlow(graph.resultSource, writeAction.value); resultNode := writeAction.result; |