<?xml version="1.0" encoding="ASCII"?> | |
<umlx:UMLXModel xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:umlx="http://www.eclipse.org/qvt/2016/UMLX"> | |
<comments>***************************************************************************** | |
Copyright (c) 2007,2008 Tata Consultancy Services and others. | |
All rights reserved. This program and the accompanying materials | |
are made available under the terms of the Eclipse Public License v2.0 | |
which accompanies this distribution, and is available at | |
http://www.eclipse.org/legal/epl-v20.html | |
Contributors: | |
TCS - initial implementation for ModelMorf | |
E.D.Willink - alignment with evolved specification | |
E.D.Willink - rename / comment | |
*****************************************************************************</comments> | |
<ownedTxDiagrams name="Forward2Reverse" package="org::eclipse::qvtd::umlx::tests::forward2reverse"> | |
<comments>Reverse the order of elements in a circular list.</comments> | |
<ownedRelDiagrams name="element2element" isTop="true"> | |
<comments>Map each element to an element with reversed source/target linkage.</comments> | |
<ownedRelDomainNodes referredTxTypedModelNode="//@ownedTxDiagrams.0/@ownedTxTypedModelNodes.0"> | |
<ownedRelPatternEdges source="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.0/@ownedRelPatternNodes.1" target="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.0/@ownedRelPatternNodes.0"> | |
<referredEStructuralFeature xsi:type="ecore:EReference" href="DoublyLinkedList.ecore#//DoublyLinkedList/ownedElements"/> | |
</ownedRelPatternEdges> | |
<ownedRelPatternEdges source="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.0/@ownedRelPatternNodes.0" target="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.0/@ownedRelPatternNodes.2"> | |
<referredEStructuralFeature xsi:type="ecore:EReference" href="DoublyLinkedList.ecore#//Element/target"/> | |
</ownedRelPatternEdges> | |
<ownedRelPatternNodes name="forwardElement" incoming="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.0/@ownedRelPatternEdges.0" isRoot="true" outgoing="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.2/@ownedRelPatternEdges.0 //@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.0/@ownedRelPatternEdges.1"> | |
<referredEClassifier xsi:type="ecore:EClass" href="DoublyLinkedList.ecore#//Element"/> | |
</ownedRelPatternNodes> | |
<ownedRelPatternNodes name="forwardList" invokingRelInvocationEdges="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelInvocationNodes.1/@ownedRelInvocationEdges.0" outgoing="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.0/@ownedRelPatternEdges.0"> | |
<referredEClassifier xsi:type="ecore:EClass" href="DoublyLinkedList.ecore#//DoublyLinkedList"/> | |
</ownedRelPatternNodes> | |
<ownedRelPatternNodes name="forwardTarget" incoming="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.0/@ownedRelPatternEdges.1" invokingRelInvocationEdges="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelInvocationNodes.0/@ownedRelInvocationEdges.0"> | |
<referredEClassifier xsi:type="ecore:EClass" href="DoublyLinkedList.ecore#//Element"/> | |
</ownedRelPatternNodes> | |
</ownedRelDomainNodes> | |
<ownedRelDomainNodes isEnforced="true" referredTxTypedModelNode="//@ownedTxDiagrams.0/@ownedTxTypedModelNodes.1"> | |
<ownedRelPatternEdges source="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.1/@ownedRelPatternNodes.1" target="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.1/@ownedRelPatternNodes.0"> | |
<referredEStructuralFeature xsi:type="ecore:EReference" href="DoublyLinkedList.ecore#//DoublyLinkedList/ownedElements"/> | |
</ownedRelPatternEdges> | |
<ownedRelPatternEdges source="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.1/@ownedRelPatternNodes.0" target="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.1/@ownedRelPatternNodes.2"> | |
<referredEStructuralFeature xsi:type="ecore:EReference" href="DoublyLinkedList.ecore#//Element/source"/> | |
</ownedRelPatternEdges> | |
<ownedRelPatternNodes name="reverseElement" incoming="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.1/@ownedRelPatternEdges.0" isRoot="true" outgoing="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.2/@ownedRelPatternEdges.1 //@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.1/@ownedRelPatternEdges.1"> | |
<referredEClassifier xsi:type="ecore:EClass" href="DoublyLinkedList.ecore#//Element"/> | |
</ownedRelPatternNodes> | |
<ownedRelPatternNodes name="reverseList" invokingRelInvocationEdges="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelInvocationNodes.1/@ownedRelInvocationEdges.1" outgoing="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.1/@ownedRelPatternEdges.0"> | |
<referredEClassifier xsi:type="ecore:EClass" href="DoublyLinkedList.ecore#//DoublyLinkedList"/> | |
</ownedRelPatternNodes> | |
<ownedRelPatternNodes name="reverseSource" incoming="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.1/@ownedRelPatternEdges.1" invokingRelInvocationEdges="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelInvocationNodes.0/@ownedRelInvocationEdges.1"> | |
<referredEClassifier xsi:type="ecore:EClass" href="DoublyLinkedList.ecore#//Element"/> | |
</ownedRelPatternNodes> | |
</ownedRelDomainNodes> | |
<ownedRelDomainNodes> | |
<ownedRelPatternEdges source="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.0/@ownedRelPatternNodes.0" target="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.2/@ownedRelPatternNodes.0"> | |
<referredEStructuralFeature xsi:type="ecore:EAttribute" href="DoublyLinkedList.ecore#//Element/name"/> | |
</ownedRelPatternEdges> | |
<ownedRelPatternEdges source="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.1/@ownedRelPatternNodes.0" target="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.2/@ownedRelPatternNodes.0"> | |
<referredEStructuralFeature xsi:type="ecore:EAttribute" href="DoublyLinkedList.ecore#//Element/name"/> | |
</ownedRelPatternEdges> | |
<ownedRelPatternNodes name="elementName" incoming="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.2/@ownedRelPatternEdges.0 //@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.2/@ownedRelPatternEdges.1"> | |
<referredEClassifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/> | |
</ownedRelPatternNodes> | |
</ownedRelDomainNodes> | |
<ownedRelInvocationNodes isThen="false" referredRelDiagram="//@ownedTxDiagrams.0/@ownedRelDiagrams.0"> | |
<ownedRelInvocationEdges invokingRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.0/@ownedRelPatternNodes.2" referredRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.0/@ownedRelPatternNodes.0"/> | |
<ownedRelInvocationEdges invokingRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.1/@ownedRelPatternNodes.2" referredRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.1/@ownedRelPatternNodes.0"/> | |
</ownedRelInvocationNodes> | |
<ownedRelInvocationNodes isThen="false" referredRelDiagram="//@ownedTxDiagrams.0/@ownedRelDiagrams.1"> | |
<ownedRelInvocationEdges invokingRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.0/@ownedRelPatternNodes.1" referredRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.1/@ownedRelDomainNodes.0/@ownedRelPatternNodes.0"/> | |
<ownedRelInvocationEdges invokingRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.1/@ownedRelPatternNodes.1" referredRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.1/@ownedRelDomainNodes.1/@ownedRelPatternNodes.0"/> | |
</ownedRelInvocationNodes> | |
</ownedRelDiagrams> | |
<ownedRelDiagrams name="list2list" isTop="true"> | |
<comments>Map each list to a list</comments> | |
<ownedRelDomainNodes referredTxTypedModelNode="//@ownedTxDiagrams.0/@ownedTxTypedModelNodes.0"> | |
<ownedRelPatternNodes name="forwardList" invokingRelInvocationEdges="//@ownedTxDiagrams.0/@ownedRelDiagrams.1/@ownedRelInvocationNodes.0/@ownedRelInvocationEdges.0" isRoot="true" outgoing="//@ownedTxDiagrams.0/@ownedRelDiagrams.1/@ownedRelDomainNodes.2/@ownedRelPatternEdges.1"> | |
<referredEClassifier xsi:type="ecore:EClass" href="DoublyLinkedList.ecore#//DoublyLinkedList"/> | |
</ownedRelPatternNodes> | |
</ownedRelDomainNodes> | |
<ownedRelDomainNodes isEnforced="true" referredTxTypedModelNode="//@ownedTxDiagrams.0/@ownedTxTypedModelNodes.1"> | |
<ownedRelPatternNodes name="reverseList" invokingRelInvocationEdges="//@ownedTxDiagrams.0/@ownedRelDiagrams.1/@ownedRelInvocationNodes.0/@ownedRelInvocationEdges.1" isRoot="true" outgoing="//@ownedTxDiagrams.0/@ownedRelDiagrams.1/@ownedRelDomainNodes.2/@ownedRelPatternEdges.0"> | |
<referredEClassifier xsi:type="ecore:EClass" href="DoublyLinkedList.ecore#//DoublyLinkedList"/> | |
</ownedRelPatternNodes> | |
</ownedRelDomainNodes> | |
<ownedRelDomainNodes> | |
<ownedRelPatternEdges source="//@ownedTxDiagrams.0/@ownedRelDiagrams.1/@ownedRelDomainNodes.1/@ownedRelPatternNodes.0" target="//@ownedTxDiagrams.0/@ownedRelDiagrams.1/@ownedRelDomainNodes.2/@ownedRelPatternNodes.0"> | |
<referredEStructuralFeature xsi:type="ecore:EAttribute" href="DoublyLinkedList.ecore#//DoublyLinkedList/name"/> | |
</ownedRelPatternEdges> | |
<ownedRelPatternEdges source="//@ownedTxDiagrams.0/@ownedRelDiagrams.1/@ownedRelDomainNodes.0/@ownedRelPatternNodes.0" target="//@ownedTxDiagrams.0/@ownedRelDiagrams.1/@ownedRelDomainNodes.2/@ownedRelPatternNodes.0"> | |
<referredEStructuralFeature xsi:type="ecore:EAttribute" href="DoublyLinkedList.ecore#//DoublyLinkedList/name"/> | |
</ownedRelPatternEdges> | |
<ownedRelPatternNodes name="listName" incoming="//@ownedTxDiagrams.0/@ownedRelDiagrams.1/@ownedRelDomainNodes.2/@ownedRelPatternEdges.0 //@ownedTxDiagrams.0/@ownedRelDiagrams.1/@ownedRelDomainNodes.2/@ownedRelPatternEdges.1"> | |
<referredEClassifier xsi:type="ecore:EDataType" href="http://www.eclipse.org/emf/2002/Ecore#//EString"/> | |
</ownedRelPatternNodes> | |
</ownedRelDomainNodes> | |
<ownedRelInvocationNodes referredRelDiagram="//@ownedTxDiagrams.0/@ownedRelDiagrams.2"> | |
<ownedRelInvocationEdges invokingRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.1/@ownedRelDomainNodes.0/@ownedRelPatternNodes.0" referredRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.2/@ownedRelDomainNodes.0/@ownedRelPatternNodes.0"/> | |
<ownedRelInvocationEdges invokingRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.1/@ownedRelDomainNodes.1/@ownedRelPatternNodes.0" referredRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.2/@ownedRelDomainNodes.1/@ownedRelPatternNodes.0"/> | |
</ownedRelInvocationNodes> | |
</ownedRelDiagrams> | |
<ownedRelDiagrams name="listHead2listHead"> | |
<ownedRelDomainNodes referredTxTypedModelNode="//@ownedTxDiagrams.0/@ownedTxTypedModelNodes.0"> | |
<ownedRelPatternEdges source="//@ownedTxDiagrams.0/@ownedRelDiagrams.2/@ownedRelDomainNodes.0/@ownedRelPatternNodes.0" target="//@ownedTxDiagrams.0/@ownedRelDiagrams.2/@ownedRelDomainNodes.0/@ownedRelPatternNodes.1"> | |
<referredEStructuralFeature xsi:type="ecore:EReference" href="DoublyLinkedList.ecore#//DoublyLinkedList/headElement"/> | |
</ownedRelPatternEdges> | |
<ownedRelPatternNodes name="forwardList" isRoot="true" outgoing="//@ownedTxDiagrams.0/@ownedRelDiagrams.2/@ownedRelDomainNodes.0/@ownedRelPatternEdges.0"> | |
<referredEClassifier xsi:type="ecore:EClass" href="DoublyLinkedList.ecore#//DoublyLinkedList"/> | |
</ownedRelPatternNodes> | |
<ownedRelPatternNodes name="forwardHead" incoming="//@ownedTxDiagrams.0/@ownedRelDiagrams.2/@ownedRelDomainNodes.0/@ownedRelPatternEdges.0" invokingRelInvocationEdges="//@ownedTxDiagrams.0/@ownedRelDiagrams.2/@ownedRelInvocationNodes.0/@ownedRelInvocationEdges.0"> | |
<referredEClassifier xsi:type="ecore:EClass" href="DoublyLinkedList.ecore#//Element"/> | |
</ownedRelPatternNodes> | |
</ownedRelDomainNodes> | |
<ownedRelDomainNodes isEnforced="true" referredTxTypedModelNode="//@ownedTxDiagrams.0/@ownedTxTypedModelNodes.1"> | |
<ownedRelPatternEdges source="//@ownedTxDiagrams.0/@ownedRelDiagrams.2/@ownedRelDomainNodes.1/@ownedRelPatternNodes.0" target="//@ownedTxDiagrams.0/@ownedRelDiagrams.2/@ownedRelDomainNodes.1/@ownedRelPatternNodes.1"> | |
<referredEStructuralFeature xsi:type="ecore:EReference" href="DoublyLinkedList.ecore#//DoublyLinkedList/headElement"/> | |
</ownedRelPatternEdges> | |
<ownedRelPatternNodes name="reverseList" isRoot="true" outgoing="//@ownedTxDiagrams.0/@ownedRelDiagrams.2/@ownedRelDomainNodes.1/@ownedRelPatternEdges.0"> | |
<referredEClassifier xsi:type="ecore:EClass" href="DoublyLinkedList.ecore#//DoublyLinkedList"/> | |
</ownedRelPatternNodes> | |
<ownedRelPatternNodes name="reverseHead" incoming="//@ownedTxDiagrams.0/@ownedRelDiagrams.2/@ownedRelDomainNodes.1/@ownedRelPatternEdges.0" invokingRelInvocationEdges="//@ownedTxDiagrams.0/@ownedRelDiagrams.2/@ownedRelInvocationNodes.0/@ownedRelInvocationEdges.1"> | |
<referredEClassifier xsi:type="ecore:EClass" href="DoublyLinkedList.ecore#//Element"/> | |
</ownedRelPatternNodes> | |
</ownedRelDomainNodes> | |
<ownedRelInvocationNodes isThen="false" referredRelDiagram="//@ownedTxDiagrams.0/@ownedRelDiagrams.0"> | |
<ownedRelInvocationEdges invokingRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.2/@ownedRelDomainNodes.0/@ownedRelPatternNodes.1" referredRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.0/@ownedRelPatternNodes.0"/> | |
<ownedRelInvocationEdges invokingRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.2/@ownedRelDomainNodes.1/@ownedRelPatternNodes.1" referredRelPatternNode="//@ownedTxDiagrams.0/@ownedRelDiagrams.0/@ownedRelDomainNodes.1/@ownedRelPatternNodes.0"/> | |
</ownedRelInvocationNodes> | |
</ownedRelDiagrams> | |
<ownedTxPackageNodes> | |
<importAliases>listMM</importAliases> | |
<referredEPackage href="DoublyLinkedList.ecore#/"/> | |
</ownedTxPackageNodes> | |
<ownedTxTypedModelNodes name="forward" check="true" usedTxPackageNodes="//@ownedTxDiagrams.0/@ownedTxPackageNodes.0"/> | |
<ownedTxTypedModelNodes name="reverse" check="true" enforce="true" usedTxPackageNodes="//@ownedTxDiagrams.0/@ownedTxPackageNodes.0"/> | |
</ownedTxDiagrams> | |
</umlx:UMLXModel> |