Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--extraplugins/migration/org.eclipse.papyrus.migration.rsa/transform/RSAStructureDiagram.qvto15
-rw-r--r--extraplugins/migration/org.eclipse.papyrus.migration.rsa/transform/RSAToPapyrus.qvto10
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/META-INF/MANIFEST.MF3
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/custom-src/org/eclipse/papyrus/uml/diagram/composite/internal/custom/helper/advice/PortAdvice.java76
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/model/compositediagram.elementtypesconfigurations3
-rw-r--r--plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/pom.xml2
-rw-r--r--tests/junit/extraplugins/migration/org.eclipse.papyrus.migration.rsa.tests/resources/bug498282/ConjugationExample.emx407
-rw-r--r--tests/junit/extraplugins/migration/org.eclipse.papyrus.migration.rsa.tests/src/org/eclipse/papyrus/migration/rsa/tests/qvt/AbstractTransformationTest.java18
-rw-r--r--tests/junit/extraplugins/migration/org.eclipse.papyrus.migration.rsa.tests/src/org/eclipse/papyrus/migration/rsa/tests/regression/StructureDiagramTest.java96
9 files changed, 616 insertions, 14 deletions
diff --git a/extraplugins/migration/org.eclipse.papyrus.migration.rsa/transform/RSAStructureDiagram.qvto b/extraplugins/migration/org.eclipse.papyrus.migration.rsa/transform/RSAStructureDiagram.qvto
index 3dab008f30f..237b6147bc1 100644
--- a/extraplugins/migration/org.eclipse.papyrus.migration.rsa/transform/RSAStructureDiagram.qvto
+++ b/extraplugins/migration/org.eclipse.papyrus.migration.rsa/transform/RSAStructureDiagram.qvto
@@ -8,7 +8,7 @@
*
* Contributors:
* Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
- * Christian W. Damus - bugs 461980, 497841
+ * Christian W. Damus - bugs 461980, 497841, 498282
*****************************************************************************/
import RSAToPapyrus;
@@ -182,7 +182,8 @@ mapping UMLShape::toPapyrusShape() : Shape inherits Shape::toPapyrusShape when {
/****** Adjustments to newly attached output views ******/
mapping inout Node::adjustNode() disjuncts
- Node::adjustStructureCompartment
+ Node::adjustStructureCompartment,
+ Node::adjustPort
;
mapping inout Node::adjustStructureCompartment() when {
@@ -192,6 +193,16 @@ mapping inout Node::adjustStructureCompartment() when {
self.children->select(type = '3069').map hoistPortNode();
}
+mapping inout Node::adjustPort() when {
+ self.type = '3069'
+ and self.element.oclIsKindOf(Port)
+ and self.element.oclAsType(Port).isConjugated
+} {
+ // If the port is conjugated, we need to enable the default visualization,
+ // not the colour (if any) imported from RSA
+ self.unset('fillColor');
+}
+
mapping inout Node::hoistPortNode() {
self.parentNode().parentNode().children += self;
diff --git a/extraplugins/migration/org.eclipse.papyrus.migration.rsa/transform/RSAToPapyrus.qvto b/extraplugins/migration/org.eclipse.papyrus.migration.rsa/transform/RSAToPapyrus.qvto
index 2b9c756442d..2f762aaefb6 100644
--- a/extraplugins/migration/org.eclipse.papyrus.migration.rsa/transform/RSAToPapyrus.qvto
+++ b/extraplugins/migration/org.eclipse.papyrus.migration.rsa/transform/RSAToPapyrus.qvto
@@ -8,7 +8,7 @@
*
* Contributors:
* Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
- * Christian W. Damus - bugs 461980, 496653, 497841
+ * Christian W. Damus - bugs 461980, 496653, 497841, 498282
*****************************************************************************/
import org.eclipse.papyrus.m2m.qvto.UI;
import org.eclipse.papyrus.m2m.qvto.NotationTypes;
@@ -344,6 +344,14 @@ helper View::fail() : String {
return '';
}
+/**
+ * Unset the named feature of an object.
+ */
+helper OclAny::unset(feature : String) {
+ var eObject : EObject := self.oclAsType(EObject);
+ eObject.eUnset(eObject.eClass().getEStructuralFeature(feature));
+}
+
/** Generic mapping logic */
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/META-INF/MANIFEST.MF b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/META-INF/MANIFEST.MF
index 083736e0b8f..10fed5851d0 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/META-INF/MANIFEST.MF
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/META-INF/MANIFEST.MF
@@ -21,6 +21,7 @@ Export-Package: org.eclipse.papyrus.uml.diagram.composite,
org.eclipse.papyrus.uml.diagram.composite.edit.helpers,
org.eclipse.papyrus.uml.diagram.composite.edit.parts,
org.eclipse.papyrus.uml.diagram.composite.edit.policies,
+ org.eclipse.papyrus.uml.diagram.composite.internal.custom.helper.advice;x-internal:=true,
org.eclipse.papyrus.uml.diagram.composite.parsers,
org.eclipse.papyrus.uml.diagram.composite.part,
org.eclipse.papyrus.uml.diagram.composite.preferences,
@@ -45,7 +46,7 @@ Require-Bundle: org.eclipse.gmf.runtime.diagram.ui.providers.ide;bundle-version=
org.eclipse.papyrus.infra.gmfdiag.hyperlink;bundle-version="[2.0.0,3.0.0)"
Bundle-Vendor: %providerName
Eclipse-LazyStart: true
-Bundle-Version: 2.0.0.qualifier
+Bundle-Version: 2.0.100.qualifier
Bundle-Activator: org.eclipse.papyrus.uml.diagram.composite.part.UMLDiagramEditorPlugin
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.papyrus.uml.diagram.composite; singleton:=true
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/custom-src/org/eclipse/papyrus/uml/diagram/composite/internal/custom/helper/advice/PortAdvice.java b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/custom-src/org/eclipse/papyrus/uml/diagram/composite/internal/custom/helper/advice/PortAdvice.java
new file mode 100644
index 00000000000..de536d4c659
--- /dev/null
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/custom-src/org/eclipse/papyrus/uml/diagram/composite/internal/custom/helper/advice/PortAdvice.java
@@ -0,0 +1,76 @@
+/*****************************************************************************
+ * Copyright (c) 2016 Christian W. Damus and others.
+ *
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Christian W. Damus - Initial API and implementation
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.uml.diagram.composite.internal.custom.helper.advice;
+
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.edit.command.SetCommand;
+import org.eclipse.emf.edit.domain.EditingDomain;
+import org.eclipse.gmf.runtime.common.core.command.ICommand;
+import org.eclipse.gmf.runtime.emf.type.core.IClientContext;
+import org.eclipse.gmf.runtime.emf.type.core.edithelper.AbstractEditHelperAdvice;
+import org.eclipse.gmf.runtime.emf.type.core.requests.SetRequest;
+import org.eclipse.gmf.runtime.notation.FillStyle;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.Shape;
+import org.eclipse.papyrus.infra.emf.gmf.command.ICommandWrapper;
+import org.eclipse.papyrus.infra.emf.utils.EMFHelper;
+import org.eclipse.papyrus.uml.diagram.composite.edit.parts.PortEditPart;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.UMLPackage;
+
+/**
+ * Advice for the visualization of ports when their semantics change.
+ */
+public class PortAdvice extends AbstractEditHelperAdvice {
+
+ /**
+ * When a port changes from non-conjugated to conjugated, ensure that the
+ * default CSS styling will show this state.
+ */
+ @Override
+ protected ICommand getAfterSetCommand(SetRequest request) {
+ ICommand result = null;
+ Port port = (Port) request.getElementToEdit();
+
+ if ((request.getFeature() == UMLPackage.Literals.PORT__IS_CONJUGATED)
+ && !port.isConjugated() && Boolean.TRUE.equals(request.getValue())) {
+
+ // All shapes visualizing it should have their fill colour unset to
+ // allow the CSS to present it properly
+ result = EMFHelper.getUsages(port).stream()
+ .filter(s -> s.getEStructuralFeature() == NotationPackage.Literals.VIEW__ELEMENT)
+ .map(EStructuralFeature.Setting::getEObject)
+ .filter(Shape.class::isInstance).map(Shape.class::cast)
+ .filter(s -> PortEditPart.VISUAL_ID.equals(s.getType()))
+ .filter(s -> s.eIsSet(NotationPackage.Literals.FILL_STYLE__FILL_COLOR))
+ .map(s -> createUnsetFillColorCommand(s, request.getClientContext()))
+ .reduce(ICommand::compose)
+ // Maybe there are no views of this port that have the fill color set
+ .orElse(null);
+ }
+
+ return result;
+ }
+
+ protected ICommand createUnsetFillColorCommand(FillStyle fillStyle, IClientContext context) {
+ // Papyrus doesn't have proper edit helpers for the notation, so
+ // we can't get an advisable command for this
+ EditingDomain domain = EMFHelper.resolveEditingDomain(fillStyle);
+ Command result = SetCommand.create(domain,
+ fillStyle,
+ NotationPackage.Literals.FILL_STYLE__FILL_COLOR,
+ SetCommand.UNSET_VALUE);
+ return ICommandWrapper.wrap(result, ICommand.class);
+ }
+}
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/model/compositediagram.elementtypesconfigurations b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/model/compositediagram.elementtypesconfigurations
index ec1a8dce1eb..69b7b6d45ec 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/model/compositediagram.elementtypesconfigurations
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/model/compositediagram.elementtypesconfigurations
@@ -9,4 +9,7 @@
<adviceBindingsConfigurations xsi:type="elementtypesconfigurations:AdviceBindingConfiguration" xmi:id="_Q8xrsLgSEeSsJKs23mSE-A" description="Collaboration specific advices (remove inconsistent views when a CollaborationRole is removed" identifier="org.eclipse.papyrus.uml.diagram.composite.CollaborationHelperAdvice" inheritance="all" editHelperAdviceClassName="org.eclipse.papyrus.uml.diagram.composite.custom.helper.advice.CollaborationHelperAdvice">
<target xsi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="../../org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#_Sca07VYCEeS0WsAAtVmToA"/>
</adviceBindingsConfigurations>
+ <adviceBindingsConfigurations xsi:type="elementtypesconfigurations:AdviceBindingConfiguration" xmi:id="_o7Pa8E9QEeaJ1LBTnqBlMQ" identifier="org.eclipse.papyrus.uml.diagram.composite.PortAdvice" description="Advice specific to the visualization of ports in compositr structure diagrams" inheritance="all" editHelperAdviceClassName="org.eclipse.papyrus.uml.diagram.composite.internal.custom.helper.advice.PortAdvice">
+ <target xsi:type="elementtypesconfigurations:MetamodelTypeConfiguration" href="../../org.eclipse.papyrus.uml.service.types/model/uml.elementtypesconfigurations#_Sc-ObFYCEeS0WsAAtVmToA"/>
+ </adviceBindingsConfigurations>
</elementtypesconfigurations:ElementTypeSetConfiguration>
diff --git a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/pom.xml b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/pom.xml
index edb0953957c..b3b3e8b6e40 100644
--- a/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/pom.xml
+++ b/plugins/uml/diagram/org.eclipse.papyrus.uml.diagram.composite/pom.xml
@@ -7,6 +7,6 @@
<version>0.0.1-SNAPSHOT</version>
</parent>
<artifactId>org.eclipse.papyrus.uml.diagram.composite</artifactId>
- <version>2.0.0-SNAPSHOT</version>
+ <version>2.0.100-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
</project> \ No newline at end of file
diff --git a/tests/junit/extraplugins/migration/org.eclipse.papyrus.migration.rsa.tests/resources/bug498282/ConjugationExample.emx b/tests/junit/extraplugins/migration/org.eclipse.papyrus.migration.rsa.tests/resources/bug498282/ConjugationExample.emx
new file mode 100644
index 00000000000..ad8f0dff341
--- /dev/null
+++ b/tests/junit/extraplugins/migration/org.eclipse.papyrus.migration.rsa.tests/resources/bug498282/ConjugationExample.emx
@@ -0,0 +1,407 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--xtools2_universal_type_manager-->
+<!--Rational Software Architect RealTime Edition 9.1.2-->
+<?com.ibm.xtools.emf.core.signature <signature id="com.ibm.xtools.mmi.ui.signatures.diagram" version="7.0.0"><feature description="" name="Rational Modeling Platform (com.ibm.xtools.rmp)" url="" version="7.0.0"/></signature>?>
+<?com.ibm.xtools.emf.core.signature <signature id="com.ibm.xtools.uml.msl.model" version="7.0.0"><feature description="" name="com.ibm.xtools.ruml.feature" url="" version="7.0.0"/></signature>?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:UMLRealTime="http:///schemas/UMLRealTime/_3TUzoHq6Ed2hSeAAWZznoA/119" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/3.0.0/UML" xmlns:umlnotation="http://www.ibm.com/xtools/1.5.3/Umlnotation" xsi:schemaLocation="http:///schemas/UMLRealTime/_3TUzoHq6Ed2hSeAAWZznoA/119 pathmap://RT_PROPERTIES/UMLRealTime.epx#_3TUzoXq6Ed2hSeAAWZznoA?UMLRealTime/UMLRealTime?">
+ <uml:Package xmi:id="_j316sDkkEeaNu7tKUcqzfQ" name="ConjugationExample">
+ <eAnnotations xmi:id="_j316sTkkEeaNu7tKUcqzfQ" source="uml2.diagrams"/>
+ <eAnnotations xmi:id="_j316szkkEeaNu7tKUcqzfQ" source="com.ibm.xtools.common.ui.reduction.editingCapabilities">
+ <details xmi:id="_j316tDkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBSequence2" value="1"/>
+ <details xmi:id="_j316tTkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBSequence1" value="1"/>
+ <details xmi:id="_j316tjkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBTypes1" value="1"/>
+ <details xmi:id="_j316tzkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBConstraint" value="1"/>
+ <details xmi:id="_j316uDkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBFragment" value="1"/>
+ <details xmi:id="_j316uTkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBProfile" value="1"/>
+ <details xmi:id="_j316ujkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBClassTemplateParameter" value="1"/>
+ <details xmi:id="_j316uzkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBLifeLine" value="1"/>
+ <details xmi:id="_j316vDkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBDependancy" value="1"/>
+ <details xmi:id="_j316vTkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBPackage" value="1"/>
+ <details xmi:id="_j316vjkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBTypes4" value="1"/>
+ <details xmi:id="_j316vzkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBTypes2" value="1"/>
+ <details xmi:id="_j316wDkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBRelationship2" value="1"/>
+ <details xmi:id="_j316wTkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBTypes3" value="1"/>
+ <details xmi:id="_j316wjkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBRelationship1" value="1"/>
+ <details xmi:id="_j316wzkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBFunctionTemplateParameter" value="1"/>
+ <details xmi:id="_j316xDkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBInterface" value="1"/>
+ <details xmi:id="_j316xTkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBComment2" value="1"/>
+ <details xmi:id="_j316xjkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBComment1" value="1"/>
+ <details xmi:id="_j316xzkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBSequenceDiagram" value="1"/>
+ <details xmi:id="_j316yDkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBElementImport1" value="1"/>
+ <details xmi:id="_j316yTkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBFunction" value="1"/>
+ <details xmi:id="_j316yjkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBArtifact" value="1"/>
+ <details xmi:id="_j316yzkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBEvent1" value="1"/>
+ <details xmi:id="_j316zDkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBStateMachine2" value="1"/>
+ <details xmi:id="_j316zTkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBStateMachine1" value="1"/>
+ <details xmi:id="_j316zjkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBStateChartDiagram" value="1"/>
+ <details xmi:id="_j316zzkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBCompositeStructure1" value="1"/>
+ <details xmi:id="_j3160DkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBInteraction" value="1"/>
+ <details xmi:id="_j3160TkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBUsage" value="1"/>
+ <details xmi:id="_j3160jkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBClass" value="1"/>
+ <details xmi:id="_j3160zkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBComponentDiagram" value="1"/>
+ <details xmi:id="_j3161DkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBClassDiagram" value="1"/>
+ <details xmi:id="_j3161TkkEeaNu7tKUcqzfQ" key="com.ibm.xtools.activities.umlBBStructureDiagram" value="1"/>
+ <details xmi:id="_j3161jkkEeaNu7tKUcqzfQ" key="uml.rt.activity" value="2"/>
+ </eAnnotations>
+ <packagedElement xmi:type="uml:Class" xmi:id="_lvfY0DkkEeaNu7tKUcqzfQ" name="Top">
+ <eAnnotations xmi:id="_l3YwkDkkEeaNu7tKUcqzfQ" source="uml2.diagrams" references="_l3YwkTkkEeaNu7tKUcqzfQ">
+ <contents xmi:type="umlnotation:UMLDiagram" xmi:id="_l3YwkTkkEeaNu7tKUcqzfQ" type="Structure" element="_lvfY0DkkEeaNu7tKUcqzfQ" name="MyOwnTopName" measurementUnit="Himetric">
+ <children xmi:type="umlnotation:UMLShape" xmi:id="_l3YwkjkkEeaNu7tKUcqzfQ" type="StructureDiagramFrame" element="_lvfY0DkkEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" transparency="0" lineColor="14263149" lineWidth="1" showStereotype="Label">
+ <children xmi:type="umlnotation:UMLShapeCompartment" xmi:id="_l3YwkzkkEeaNu7tKUcqzfQ" type="StructureCompartment">
+ <children xmi:type="umlnotation:UMLShape" xmi:id="_oicooDkkEeaNu7tKUcqzfQ" element="_oh_8vTkkEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" showListVisibility="None" showListSignature="true" transparency="0" lineColor="14263149" lineWidth="1" showStereotype="Label">
+ <eAnnotations xmi:id="_oicoojkkEeaNu7tKUcqzfQ" source="com.ibm.xtools.uml.ui.diagram.internal.styles">
+ <details xmi:id="_oicoozkkEeaNu7tKUcqzfQ" key="ShowTypeLabelStyle" value="Represents Name and Type Name"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_oicopDkkEeaNu7tKUcqzfQ" type="ImageCompartment">
+ <layoutConstraint xmi:type="notation:Size" xmi:id="_oicopTkkEeaNu7tKUcqzfQ" width="1320" height="1320"/>
+ </children>
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_oicopjkkEeaNu7tKUcqzfQ" type="PartTextCompartment"/>
+ <children xmi:type="umlnotation:UMLShapeCompartment" xmi:id="_oicopzkkEeaNu7tKUcqzfQ" visible="false" type="PartStructureCompartment"/>
+ <children xmi:type="umlnotation:UMLShape" xmi:id="_uRbksTkkEeaNu7tKUcqzfQ" element="_uRSawDkkEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" showListVisibility="None" showListSignature="true" fillColor="16116705" transparency="0" lineColor="14263149" lineWidth="1" showStereotype="Label">
+ <eAnnotations xmi:id="_uRbkszkkEeaNu7tKUcqzfQ" source="com.ibm.xtools.uml.ui.diagram.internal.styles">
+ <details xmi:id="_uRbktDkkEeaNu7tKUcqzfQ" key="ShowTypeLabelStyle" value="Represents Name and Type Name"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_uRbktTkkEeaNu7tKUcqzfQ" type="PortName">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_uRbktzkkEeaNu7tKUcqzfQ" type="PartTextCompartment"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uRbktjkkEeaNu7tKUcqzfQ" x="-197" y="-249"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uRbksjkkEeaNu7tKUcqzfQ" x="-132" y="457"/>
+ </children>
+ <children xmi:type="umlnotation:UMLShape" xmi:id="_emziEjkoEeaNu7tKUcqzfQ" element="_emziEDkoEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" showListVisibility="None" showListSignature="true" fillColor="16116705" transparency="0" lineColor="14263149" lineWidth="1" showStereotype="Label">
+ <eAnnotations xmi:id="_emziFDkoEeaNu7tKUcqzfQ" source="com.ibm.xtools.uml.ui.diagram.internal.styles">
+ <details xmi:id="_emziFTkoEeaNu7tKUcqzfQ" key="ShowTypeLabelStyle" value="Represents Name and Type Name"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_emziFjkoEeaNu7tKUcqzfQ" type="PortName">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_emziGDkoEeaNu7tKUcqzfQ" type="PartTextCompartment"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_emziFzkoEeaNu7tKUcqzfQ" x="505" y="-144"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_emziEzkoEeaNu7tKUcqzfQ" x="4101" y="405"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oicooTkkEeaNu7tKUcqzfQ" x="2594" y="3654"/>
+ </children>
+ <children xmi:type="umlnotation:UMLShape" xmi:id="_pveccDkkEeaNu7tKUcqzfQ" element="_pvVSjTkkEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" showListVisibility="None" showListSignature="true" transparency="0" lineColor="14263149" lineWidth="1" showStereotype="Label">
+ <eAnnotations xmi:id="_pveccjkkEeaNu7tKUcqzfQ" source="com.ibm.xtools.uml.ui.diagram.internal.styles">
+ <details xmi:id="_pvecczkkEeaNu7tKUcqzfQ" key="ShowTypeLabelStyle" value="Represents Name and Type Name"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pvecdDkkEeaNu7tKUcqzfQ" type="ImageCompartment">
+ <layoutConstraint xmi:type="notation:Size" xmi:id="_pvecdTkkEeaNu7tKUcqzfQ" width="1320" height="1320"/>
+ </children>
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_pvecdjkkEeaNu7tKUcqzfQ" type="PartTextCompartment"/>
+ <children xmi:type="umlnotation:UMLShapeCompartment" xmi:id="_pvecdzkkEeaNu7tKUcqzfQ" visible="false" type="PartStructureCompartment"/>
+ <children xmi:type="umlnotation:UMLShape" xmi:id="_frpDMjkoEeaNu7tKUcqzfQ" element="_frpDMDkoEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" showListVisibility="None" showListSignature="true" fillColor="16116705" transparency="0" lineColor="14263149" lineWidth="1" showStereotype="Label">
+ <eAnnotations xmi:id="_frpDNDkoEeaNu7tKUcqzfQ" source="com.ibm.xtools.uml.ui.diagram.internal.styles">
+ <details xmi:id="_frpDNTkoEeaNu7tKUcqzfQ" key="ShowTypeLabelStyle" value="Represents Name and Type Name"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_fry0MDkoEeaNu7tKUcqzfQ" type="PortName">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_fry0MjkoEeaNu7tKUcqzfQ" type="PartTextCompartment"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_fry0MTkoEeaNu7tKUcqzfQ" x="-404" y="-144"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_frpDMzkoEeaNu7tKUcqzfQ" x="-132" y="352"/>
+ </children>
+ <children xmi:type="umlnotation:UMLShape" xmi:id="_oE9ekjkoEeaNu7tKUcqzfQ" element="_oE9ekDkoEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" showListVisibility="None" showListSignature="true" fillColor="16116705" transparency="0" lineColor="14263149" lineWidth="1" showStereotype="Label">
+ <eAnnotations xmi:id="_oFHPkDkoEeaNu7tKUcqzfQ" source="com.ibm.xtools.uml.ui.diagram.internal.styles">
+ <details xmi:id="_oFHPkTkoEeaNu7tKUcqzfQ" key="ShowTypeLabelStyle" value="Represents Name and Type Name"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_oFHPkjkoEeaNu7tKUcqzfQ" type="PortName">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_oFHPlDkoEeaNu7tKUcqzfQ" type="PartTextCompartment"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oFHPkzkoEeaNu7tKUcqzfQ" x="718" y="-189"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oE9ekzkoEeaNu7tKUcqzfQ" x="4101" y="502"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pveccTkkEeaNu7tKUcqzfQ" x="8997" y="3654"/>
+ </children>
+ </children>
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_l3YwlDkkEeaNu7tKUcqzfQ" type="Name"/>
+ <children xmi:type="umlnotation:UMLShape" xmi:id="_reVK8DkkEeaNu7tKUcqzfQ" element="_rdvVGjkkEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" showListVisibility="None" showListSignature="true" fillColor="16116705" transparency="0" lineColor="14263149" lineWidth="1" showStereotype="Label">
+ <eAnnotations xmi:id="_ree78DkkEeaNu7tKUcqzfQ" source="com.ibm.xtools.uml.ui.diagram.internal.styles">
+ <details xmi:id="_ree78TkkEeaNu7tKUcqzfQ" key="ShowTypeLabelStyle" value="Represents Name and Type Name"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_ree78jkkEeaNu7tKUcqzfQ" type="PortName">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_ree79DkkEeaNu7tKUcqzfQ" type="PartTextCompartment"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ree78zkkEeaNu7tKUcqzfQ" x="521" y="-249"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_reVK8TkkEeaNu7tKUcqzfQ" x="-198" y="4877"/>
+ </children>
+ <children xmi:type="umlnotation:UMLShape" xmi:id="_rdBmkDkoEeaNu7tKUcqzfQ" element="_rc31kDkoEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" showListVisibility="None" showListSignature="true" fillColor="16116705" transparency="0" lineColor="14263149" lineWidth="1" showStereotype="Label">
+ <eAnnotations xmi:id="_rdBmkjkoEeaNu7tKUcqzfQ" source="com.ibm.xtools.uml.ui.diagram.internal.styles">
+ <details xmi:id="_rdBmkzkoEeaNu7tKUcqzfQ" key="ShowTypeLabelStyle" value="Represents Name and Type Name"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_rdBmlDkoEeaNu7tKUcqzfQ" type="PortName">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_rdBmljkoEeaNu7tKUcqzfQ" type="PartTextCompartment"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rdBmlTkoEeaNu7tKUcqzfQ" x="-338" y="-136"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rdBmkTkoEeaNu7tKUcqzfQ" x="15875" y="4974"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l3YwlTkkEeaNu7tKUcqzfQ" x="793" y="793"/>
+ </children>
+ <edges xmi:type="umlnotation:UMLConnector" xmi:id="_xVX20DkkEeaNu7tKUcqzfQ" element="_xU7K4DkkEeaNu7tKUcqzfQ" source="_reVK8DkkEeaNu7tKUcqzfQ" target="_uRbksTkkEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" roundedBendpointsRadius="4" routing="Rectilinear" lineColor="8421504" lineWidth="1" showStereotype="Text">
+ <children xmi:type="notation:DecorationNode" xmi:id="_xVX20jkkEeaNu7tKUcqzfQ" type="NameLabel">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_xVX21DkkEeaNu7tKUcqzfQ" type="Stereotype"/>
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_xVX21TkkEeaNu7tKUcqzfQ" type="Name"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xVX20zkkEeaNu7tKUcqzfQ" y="-186"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xVX21jkkEeaNu7tKUcqzfQ" visible="false" type="ToMultiplicityLabel" element="_xVE74TkkEeaNu7tKUcqzfQ">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_xVX22DkkEeaNu7tKUcqzfQ" type="ToMultiplicity"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xVX21zkkEeaNu7tKUcqzfQ" y="396"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_xVX22TkkEeaNu7tKUcqzfQ" visible="false" type="FromMultiplicityLabel" element="_xVE74DkkEeaNu7tKUcqzfQ">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_xVX22zkkEeaNu7tKUcqzfQ" type="FromMultiplicity"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xVX22jkkEeaNu7tKUcqzfQ" y="396"/>
+ </children>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_xVX20TkkEeaNu7tKUcqzfQ" points="[198, 5, -2475, -158]$[2620, 5, -53, -158]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_xV9ssDkkEeaNu7tKUcqzfQ" id="(0.20075757575757575,0.9696969696969697)"/>
+ </edges>
+ <edges xmi:type="umlnotation:UMLConnector" xmi:id="_jwQIJDkoEeaNu7tKUcqzfQ" element="_jwQIIDkoEeaNu7tKUcqzfQ" source="_emziEjkoEeaNu7tKUcqzfQ" target="_frpDMjkoEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" roundedBendpointsRadius="4" routing="Rectilinear" lineColor="8421504" lineWidth="1" showStereotype="Text">
+ <children xmi:type="notation:DecorationNode" xmi:id="_jwQIJjkoEeaNu7tKUcqzfQ" type="NameLabel">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_jwQIKDkoEeaNu7tKUcqzfQ" type="Stereotype"/>
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_jwQIKTkoEeaNu7tKUcqzfQ" type="Name"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jwQIJzkoEeaNu7tKUcqzfQ" y="-186"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jwQIKjkoEeaNu7tKUcqzfQ" visible="false" type="ToMultiplicityLabel" element="_jwQIIjkoEeaNu7tKUcqzfQ">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_jwQILDkoEeaNu7tKUcqzfQ" type="ToMultiplicity"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jwQIKzkoEeaNu7tKUcqzfQ" y="396"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_jwQILTkoEeaNu7tKUcqzfQ" visible="false" type="FromMultiplicityLabel" element="_jwQIITkoEeaNu7tKUcqzfQ">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_jwQILzkoEeaNu7tKUcqzfQ" type="FromMultiplicity"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jwQILjkoEeaNu7tKUcqzfQ" y="396"/>
+ </children>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jwQIJTkoEeaNu7tKUcqzfQ" points="[5, 0, -81, -6]$[87, 8, 1, 2]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_jwZ5IDkoEeaNu7tKUcqzfQ" id="(0.9015151515151515,0.803030303030303)"/>
+ </edges>
+ <edges xmi:type="umlnotation:UMLConnector" xmi:id="_tY_kATkoEeaNu7tKUcqzfQ" element="_tYP9IDkoEeaNu7tKUcqzfQ" source="_oE9ekjkoEeaNu7tKUcqzfQ" target="_rdBmkDkoEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" roundedBendpointsRadius="4" routing="Rectilinear" lineColor="8421504" lineWidth="1" showStereotype="Text">
+ <children xmi:type="notation:DecorationNode" xmi:id="_tY_kAzkoEeaNu7tKUcqzfQ" type="NameLabel">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_tY_kBTkoEeaNu7tKUcqzfQ" type="Stereotype"/>
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_tY_kBjkoEeaNu7tKUcqzfQ" type="Name"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_tY_kBDkoEeaNu7tKUcqzfQ" y="-186"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tY_kBzkoEeaNu7tKUcqzfQ" visible="false" type="ToMultiplicityLabel" element="_tYP9IjkoEeaNu7tKUcqzfQ">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_tY_kCTkoEeaNu7tKUcqzfQ" type="ToMultiplicity"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tY_kCDkoEeaNu7tKUcqzfQ" y="396"/>
+ </children>
+ <children xmi:type="notation:DecorationNode" xmi:id="_tY_kCjkoEeaNu7tKUcqzfQ" visible="false" type="FromMultiplicityLabel" element="_tYP9ITkoEeaNu7tKUcqzfQ">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_tY_kDDkoEeaNu7tKUcqzfQ" type="FromMultiplicity"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tY_kCzkoEeaNu7tKUcqzfQ" y="396"/>
+ </children>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_tY_kAjkoEeaNu7tKUcqzfQ" points="[5, 0, -93, 1]$[99, -7, 1, -6]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_tZJVADkoEeaNu7tKUcqzfQ" id="(0.7676767676767676,0.4015151515151515)"/>
+ </edges>
+ </contents>
+ </eAnnotations>
+ <ownedAttribute xmi:id="_oh_8vTkkEeaNu7tKUcqzfQ" name="client" visibility="protected" type="_oh2LsDkkEeaNu7tKUcqzfQ" aggregation="composite"/>
+ <ownedAttribute xmi:id="_pvVSjTkkEeaNu7tKUcqzfQ" name="server" visibility="protected" type="_pvBwgDkkEeaNu7tKUcqzfQ" aggregation="composite"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_rdvVGjkkEeaNu7tKUcqzfQ" name="p1" type="_rdlkEjkkEeaNu7tKUcqzfQ" aggregation="composite"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_rc31kDkoEeaNu7tKUcqzfQ" name="p2" type="_rdlkEjkkEeaNu7tKUcqzfQ" aggregation="composite"/>
+ <ownedConnector xmi:id="_xU7K4DkkEeaNu7tKUcqzfQ" name="Connector" kind="delegation">
+ <end xmi:id="_xVE74DkkEeaNu7tKUcqzfQ" role="_rdvVGjkkEeaNu7tKUcqzfQ"/>
+ <end xmi:id="_xVE74TkkEeaNu7tKUcqzfQ" role="_uRSawDkkEeaNu7tKUcqzfQ" partWithPort="_oh_8vTkkEeaNu7tKUcqzfQ"/>
+ </ownedConnector>
+ <ownedConnector xmi:id="_jwQIIDkoEeaNu7tKUcqzfQ" name="P, P~" kind="assembly">
+ <end xmi:id="_jwQIITkoEeaNu7tKUcqzfQ" role="_emziEDkoEeaNu7tKUcqzfQ" partWithPort="_oh_8vTkkEeaNu7tKUcqzfQ"/>
+ <end xmi:id="_jwQIIjkoEeaNu7tKUcqzfQ" role="_frpDMDkoEeaNu7tKUcqzfQ" partWithPort="_pvVSjTkkEeaNu7tKUcqzfQ"/>
+ </ownedConnector>
+ <ownedConnector xmi:id="_tYP9IDkoEeaNu7tKUcqzfQ" name="Connector2" kind="delegation">
+ <end xmi:id="_tYP9ITkoEeaNu7tKUcqzfQ" role="_oE9ekDkoEeaNu7tKUcqzfQ" partWithPort="_pvVSjTkkEeaNu7tKUcqzfQ"/>
+ <end xmi:id="_tYP9IjkoEeaNu7tKUcqzfQ" role="_rc31kDkoEeaNu7tKUcqzfQ"/>
+ </ownedConnector>
+ <ownedBehavior xmi:type="uml:StateMachine" xmi:id="_l2DT0DkkEeaNu7tKUcqzfQ" name="State Machine">
+ <eAnnotations xmi:id="_l3PmoDkkEeaNu7tKUcqzfQ" source="uml2.diagrams" references="_l3PmoTkkEeaNu7tKUcqzfQ">
+ <contents xmi:type="umlnotation:UMLDiagram" xmi:id="_l3PmoTkkEeaNu7tKUcqzfQ" type="Statechart" element="_l2DT0DkkEeaNu7tKUcqzfQ" measurementUnit="Himetric">
+ <children xmi:type="umlnotation:UMLFrame" xmi:id="_l3PmojkkEeaNu7tKUcqzfQ" type="Statemachine" element="_l2DT0DkkEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" fillColor="16250871" transparency="0" lineColor="12632258" lineWidth="1" showStereotype="Label" alignment="Horizontal">
+ <children xmi:type="umlnotation:UMLShapeCompartment" xmi:id="_l3PmozkkEeaNu7tKUcqzfQ" type="Region" element="_l2DT0TkkEeaNu7tKUcqzfQ" verticalAlignment="false"/>
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_l3PmpDkkEeaNu7tKUcqzfQ" type="Name"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_l3PmpTkkEeaNu7tKUcqzfQ" x="793" y="793"/>
+ </children>
+ </contents>
+ </eAnnotations>
+ <region xmi:id="_l2DT0TkkEeaNu7tKUcqzfQ" name="Region1">
+ <subvertex xmi:type="uml:Pseudostate" xmi:id="_l2MdwDkkEeaNu7tKUcqzfQ"/>
+ <subvertex xmi:type="uml:State" xmi:id="_l2MdwTkkEeaNu7tKUcqzfQ" name="State1"/>
+ <transition xmi:id="_l2MdwjkkEeaNu7tKUcqzfQ" name="Initial" source="_l2MdwDkkEeaNu7tKUcqzfQ" target="_l2MdwTkkEeaNu7tKUcqzfQ">
+ <eAnnotations xmi:id="_l2WOwDkkEeaNu7tKUcqzfQ" source="uml2.alias">
+ <details xmi:id="_l2WOwTkkEeaNu7tKUcqzfQ" key="Initial"/>
+ </eAnnotations>
+ </transition>
+ </region>
+ </ownedBehavior>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_oh2LsDkkEeaNu7tKUcqzfQ" name="Client">
+ <eAnnotations xmi:id="_oh_8tzkkEeaNu7tKUcqzfQ" source="uml2.diagrams" references="_oh_8uDkkEeaNu7tKUcqzfQ">
+ <contents xmi:type="umlnotation:UMLDiagram" xmi:id="_oh_8uDkkEeaNu7tKUcqzfQ" type="Structure" element="_oh2LsDkkEeaNu7tKUcqzfQ" measurementUnit="Himetric">
+ <children xmi:type="umlnotation:UMLShape" xmi:id="_oh_8uTkkEeaNu7tKUcqzfQ" type="StructureDiagramFrame" element="_oh2LsDkkEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" transparency="0" lineColor="14263149" lineWidth="1" showStereotype="Label">
+ <children xmi:type="umlnotation:UMLShapeCompartment" xmi:id="_oh_8ujkkEeaNu7tKUcqzfQ" type="StructureCompartment"/>
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_oh_8uzkkEeaNu7tKUcqzfQ" type="Name"/>
+ <children xmi:type="umlnotation:UMLShape" xmi:id="_IF9V4TkpEeaNu7tKUcqzfQ" element="_uRSawDkkEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" showListVisibility="None" showListSignature="true" fillColor="16116705" transparency="0" lineColor="14263149" lineWidth="1" showStereotype="Label">
+ <eAnnotations xmi:id="_IF9V4zkpEeaNu7tKUcqzfQ" source="com.ibm.xtools.uml.ui.diagram.internal.styles">
+ <details xmi:id="_IF9V5DkpEeaNu7tKUcqzfQ" key="ShowTypeLabelStyle" value="Represents Name and Type Name"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IF9V5TkpEeaNu7tKUcqzfQ" type="PortName">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_IF9V5zkpEeaNu7tKUcqzfQ" type="PartTextCompartment"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IF9V5jkpEeaNu7tKUcqzfQ" y="-133"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IF9V4jkpEeaNu7tKUcqzfQ" x="-198" y="5297"/>
+ </children>
+ <children xmi:type="umlnotation:UMLShape" xmi:id="_IF9V6DkpEeaNu7tKUcqzfQ" element="_emziEDkoEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" showListVisibility="None" showListSignature="true" fillColor="16116705" transparency="0" lineColor="14263149" lineWidth="1" showStereotype="Label">
+ <eAnnotations xmi:id="_IF9V6jkpEeaNu7tKUcqzfQ" source="com.ibm.xtools.uml.ui.diagram.internal.styles">
+ <details xmi:id="_IF9V6zkpEeaNu7tKUcqzfQ" key="ShowTypeLabelStyle" value="Represents Name and Type Name"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_IF9V7DkpEeaNu7tKUcqzfQ" type="PortName">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_IF9V7jkpEeaNu7tKUcqzfQ" type="PartTextCompartment"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IF9V7TkpEeaNu7tKUcqzfQ" y="-133"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_IF9V6TkpEeaNu7tKUcqzfQ" x="15677" y="5402"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oh_8vDkkEeaNu7tKUcqzfQ" x="793" y="793"/>
+ </children>
+ </contents>
+ </eAnnotations>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_uRSawDkkEeaNu7tKUcqzfQ" name="p1" type="_rdlkEjkkEeaNu7tKUcqzfQ" aggregation="composite" isBehavior="true"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_emziEDkoEeaNu7tKUcqzfQ" name="p2" type="_rdlkEjkkEeaNu7tKUcqzfQ" aggregation="composite" isBehavior="true"/>
+ <ownedBehavior xmi:type="uml:StateMachine" xmi:id="_oh2LsTkkEeaNu7tKUcqzfQ" name="State Machine">
+ <eAnnotations xmi:id="_oh_8sTkkEeaNu7tKUcqzfQ" source="uml2.diagrams" references="_oh_8sjkkEeaNu7tKUcqzfQ">
+ <contents xmi:type="umlnotation:UMLDiagram" xmi:id="_oh_8sjkkEeaNu7tKUcqzfQ" type="Statechart" element="_oh2LsTkkEeaNu7tKUcqzfQ" measurementUnit="Himetric">
+ <children xmi:type="umlnotation:UMLFrame" xmi:id="_oh_8szkkEeaNu7tKUcqzfQ" type="Statemachine" element="_oh2LsTkkEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" fillColor="16250871" transparency="0" lineColor="12632258" lineWidth="1" showStereotype="Label" alignment="Horizontal">
+ <children xmi:type="umlnotation:UMLShapeCompartment" xmi:id="_oh_8tDkkEeaNu7tKUcqzfQ" type="Region" element="_oh2LsjkkEeaNu7tKUcqzfQ" verticalAlignment="false"/>
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_oh_8tTkkEeaNu7tKUcqzfQ" type="Name"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_oh_8tjkkEeaNu7tKUcqzfQ" x="793" y="793"/>
+ </children>
+ </contents>
+ </eAnnotations>
+ <region xmi:id="_oh2LsjkkEeaNu7tKUcqzfQ" name="Region1">
+ <subvertex xmi:type="uml:Pseudostate" xmi:id="_oh2LszkkEeaNu7tKUcqzfQ"/>
+ <subvertex xmi:type="uml:State" xmi:id="_oh2LtDkkEeaNu7tKUcqzfQ" name="State1"/>
+ <transition xmi:id="_oh2LtTkkEeaNu7tKUcqzfQ" name="Initial" source="_oh2LszkkEeaNu7tKUcqzfQ" target="_oh2LtDkkEeaNu7tKUcqzfQ">
+ <eAnnotations xmi:id="_oh2LtjkkEeaNu7tKUcqzfQ" source="uml2.alias">
+ <details xmi:id="_oh2LtzkkEeaNu7tKUcqzfQ" key="Initial"/>
+ </eAnnotations>
+ </transition>
+ </region>
+ </ownedBehavior>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_pvBwgDkkEeaNu7tKUcqzfQ" name="Server">
+ <eAnnotations xmi:id="_pvVShzkkEeaNu7tKUcqzfQ" source="uml2.diagrams" references="_pvVSiDkkEeaNu7tKUcqzfQ">
+ <contents xmi:type="umlnotation:UMLDiagram" xmi:id="_pvVSiDkkEeaNu7tKUcqzfQ" type="Structure" element="_pvBwgDkkEeaNu7tKUcqzfQ" measurementUnit="Himetric">
+ <children xmi:type="umlnotation:UMLShape" xmi:id="_pvVSiTkkEeaNu7tKUcqzfQ" type="StructureDiagramFrame" element="_pvBwgDkkEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" transparency="0" lineColor="14263149" lineWidth="1" showStereotype="Label">
+ <children xmi:type="umlnotation:UMLShapeCompartment" xmi:id="_pvVSijkkEeaNu7tKUcqzfQ" type="StructureCompartment"/>
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_pvVSizkkEeaNu7tKUcqzfQ" type="Name"/>
+ <children xmi:type="umlnotation:UMLShape" xmi:id="_K_7MoDkpEeaNu7tKUcqzfQ" element="_frpDMDkoEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" showListVisibility="None" showListSignature="true" fillColor="16116705" transparency="0" lineColor="14263149" lineWidth="1" showStereotype="Label">
+ <eAnnotations xmi:id="_K_7MojkpEeaNu7tKUcqzfQ" source="com.ibm.xtools.uml.ui.diagram.internal.styles">
+ <details xmi:id="_K_7MozkpEeaNu7tKUcqzfQ" key="ShowTypeLabelStyle" value="Represents Name and Type Name"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_K_7MpDkpEeaNu7tKUcqzfQ" type="PortName">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_K_7MpjkpEeaNu7tKUcqzfQ" type="PartTextCompartment"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K_7MpTkpEeaNu7tKUcqzfQ" y="-133"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K_7MoTkpEeaNu7tKUcqzfQ" x="-198" y="4877"/>
+ </children>
+ <children xmi:type="umlnotation:UMLShape" xmi:id="_K_7MpzkpEeaNu7tKUcqzfQ" element="_oE9ekDkoEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" showListVisibility="None" showListSignature="true" fillColor="16116705" transparency="0" lineColor="14263149" lineWidth="1" showStereotype="Label">
+ <eAnnotations xmi:id="_K_7MqTkpEeaNu7tKUcqzfQ" source="com.ibm.xtools.uml.ui.diagram.internal.styles">
+ <details xmi:id="_K_7MqjkpEeaNu7tKUcqzfQ" key="ShowTypeLabelStyle" value="Represents Name and Type Name"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_K_7MqzkpEeaNu7tKUcqzfQ" type="PortName">
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_K_7MrTkpEeaNu7tKUcqzfQ" type="PartTextCompartment"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K_7MrDkpEeaNu7tKUcqzfQ" y="-133"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_K_7MqDkpEeaNu7tKUcqzfQ" x="15677" y="4877"/>
+ </children>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pvVSjDkkEeaNu7tKUcqzfQ" x="793" y="793"/>
+ </children>
+ </contents>
+ </eAnnotations>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_frpDMDkoEeaNu7tKUcqzfQ" name="p1" type="_rdlkEjkkEeaNu7tKUcqzfQ" aggregation="composite" isBehavior="true"/>
+ <ownedAttribute xmi:type="uml:Port" xmi:id="_oE9ekDkoEeaNu7tKUcqzfQ" name="p2" type="_rdlkEjkkEeaNu7tKUcqzfQ" aggregation="composite" isBehavior="true"/>
+ <ownedBehavior xmi:type="uml:StateMachine" xmi:id="_pvLhgDkkEeaNu7tKUcqzfQ" name="State Machine">
+ <eAnnotations xmi:id="_pvVSgTkkEeaNu7tKUcqzfQ" source="uml2.diagrams" references="_pvVSgjkkEeaNu7tKUcqzfQ">
+ <contents xmi:type="umlnotation:UMLDiagram" xmi:id="_pvVSgjkkEeaNu7tKUcqzfQ" type="Statechart" element="_pvLhgDkkEeaNu7tKUcqzfQ" measurementUnit="Himetric">
+ <children xmi:type="umlnotation:UMLFrame" xmi:id="_pvVSgzkkEeaNu7tKUcqzfQ" type="Statemachine" element="_pvLhgDkkEeaNu7tKUcqzfQ" fontName="Segoe UI" fontHeight="8" fillColor="16250871" transparency="0" lineColor="12632258" lineWidth="1" showStereotype="Label" alignment="Horizontal">
+ <children xmi:type="umlnotation:UMLShapeCompartment" xmi:id="_pvVShDkkEeaNu7tKUcqzfQ" type="Region" element="_pvLhgTkkEeaNu7tKUcqzfQ" verticalAlignment="false"/>
+ <children xmi:type="notation:BasicDecorationNode" xmi:id="_pvVShTkkEeaNu7tKUcqzfQ" type="Name"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pvVShjkkEeaNu7tKUcqzfQ" x="793" y="793"/>
+ </children>
+ </contents>
+ </eAnnotations>
+ <region xmi:id="_pvLhgTkkEeaNu7tKUcqzfQ" name="Region1">
+ <subvertex xmi:type="uml:Pseudostate" xmi:id="_pvLhgjkkEeaNu7tKUcqzfQ"/>
+ <subvertex xmi:type="uml:State" xmi:id="_pvLhgzkkEeaNu7tKUcqzfQ" name="State1"/>
+ <transition xmi:id="_pvLhhDkkEeaNu7tKUcqzfQ" name="Initial" source="_pvLhgjkkEeaNu7tKUcqzfQ" target="_pvLhgzkkEeaNu7tKUcqzfQ">
+ <eAnnotations xmi:id="_pvLhhTkkEeaNu7tKUcqzfQ" source="uml2.alias">
+ <details xmi:id="_pvLhhjkkEeaNu7tKUcqzfQ" key="Initial"/>
+ </eAnnotations>
+ </transition>
+ </region>
+ </ownedBehavior>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_rdlkEDkkEeaNu7tKUcqzfQ" name="P">
+ <packagedElement xmi:type="uml:Collaboration" xmi:id="_rdlkEjkkEeaNu7tKUcqzfQ" name="P" clientDependency="_rdvVFzkkEeaNu7tKUcqzfQ _rdvVGDkkEeaNu7tKUcqzfQ">
+ <interfaceRealization xmi:id="_rdvVFzkkEeaNu7tKUcqzfQ" name="" supplier="_rdvVETkkEeaNu7tKUcqzfQ" client="_rdlkEjkkEeaNu7tKUcqzfQ" contract="_rdvVETkkEeaNu7tKUcqzfQ"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_rdvVETkkEeaNu7tKUcqzfQ" name="P">
+ <eAnnotations xmi:id="_rdvVEjkkEeaNu7tKUcqzfQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <details xmi:id="_rdvVEzkkEeaNu7tKUcqzfQ" key="ProtocolRole"/>
+ </eAnnotations>
+ <ownedOperation xmi:id="_wP74wjkkEeaNu7tKUcqzfQ" name="response"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_rdvVFDkkEeaNu7tKUcqzfQ" name="P~">
+ <eAnnotations xmi:id="_rdvVFTkkEeaNu7tKUcqzfQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <details xmi:id="_rdvVFjkkEeaNu7tKUcqzfQ" key="ProtocolRole"/>
+ </eAnnotations>
+ <ownedOperation xmi:id="_vPtx4TkkEeaNu7tKUcqzfQ" name="request"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Usage" xmi:id="_rdvVGDkkEeaNu7tKUcqzfQ" supplier="_rdvVFDkkEeaNu7tKUcqzfQ" client="_rdlkEjkkEeaNu7tKUcqzfQ"/>
+ <packagedElement xmi:type="uml:AnyReceiveEvent" xmi:id="_rdvVGTkkEeaNu7tKUcqzfQ" name="*"/>
+ <packagedElement xmi:type="uml:CallEvent" xmi:id="_vPkn8DkkEeaNu7tKUcqzfQ" operation="_vPtx4TkkEeaNu7tKUcqzfQ">
+ <name xsi:nil="true"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:CallEvent" xmi:id="_wP74wDkkEeaNu7tKUcqzfQ" operation="_wP74wjkkEeaNu7tKUcqzfQ">
+ <name xsi:nil="true"/>
+ </packagedElement>
+ </packagedElement>
+ <profileApplication xmi:id="_j3161zkkEeaNu7tKUcqzfQ">
+ <eAnnotations xmi:id="_j3162DkkEeaNu7tKUcqzfQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML_PROFILES/Standard.profile.uml#_yzU58YinEdqtvbnfB2L_5w"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:id="_j3162TkkEeaNu7tKUcqzfQ">
+ <eAnnotations xmi:id="_j3162jkkEeaNu7tKUcqzfQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML2_MSL_PROFILES/Default.epx#_fNwoAAqoEd6-N_NOT9vsCA?Default/Default?"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML2_MSL_PROFILES/Default.epx#_a_S3wNWLEdiy4IqP8whjFA?Default?"/>
+ </profileApplication>
+ <profileApplication xmi:id="_j3162zkkEeaNu7tKUcqzfQ">
+ <eAnnotations xmi:id="_j3163DkkEeaNu7tKUcqzfQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://UML2_MSL_PROFILES/Deployment.epx#_4OVBUD0TEeKt-L0gyEptgQ?Deployment/Deployment?"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://UML2_MSL_PROFILES/Deployment.epx#_vjbuwOvHEdiDX5bji0iVSA?Deployment?"/>
+ </profileApplication>
+ <profileApplication xmi:id="_j3163TkkEeaNu7tKUcqzfQ">
+ <eAnnotations xmi:id="_j3163jkkEeaNu7tKUcqzfQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://RT_PROPERTIES/UMLRealTime.epx#_3TUzoXq6Ed2hSeAAWZznoA?UMLRealTime/UMLRealTime?"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://RT_PROPERTIES/UMLRealTime.epx#_uTDwIRHVEdu19OChlR9tHg?UMLRealTime?"/>
+ </profileApplication>
+ <profileApplication xmi:id="_j3163zkkEeaNu7tKUcqzfQ">
+ <eAnnotations xmi:id="_j3164DkkEeaNu7tKUcqzfQ" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://RT_PROPERTIES/InteractionProfile.epx#_dDVwwX8wEd2ags_Lr77Vow?InteractionProfile/InteractionProfile?"/>
+ </eAnnotations>
+ <appliedProfile href="pathmap://RT_PROPERTIES/InteractionProfile.epx#_LyeQ4HnVEd2No7ra0rEeOg?InteractionProfile?"/>
+ </profileApplication>
+ </uml:Package>
+ <UMLRealTime:Capsule xmi:id="_l2WOwjkkEeaNu7tKUcqzfQ" base_Class="_lvfY0DkkEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:Capsule xmi:id="_oh_8sDkkEeaNu7tKUcqzfQ" base_Class="_oh2LsDkkEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:CapsulePart xmi:id="_oiJGoDkkEeaNu7tKUcqzfQ" base_Property="_oh_8vTkkEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:Capsule xmi:id="_pvVSgDkkEeaNu7tKUcqzfQ" base_Class="_pvBwgDkkEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:CapsulePart xmi:id="_pvVSjjkkEeaNu7tKUcqzfQ" base_Property="_pvVSjTkkEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:ProtocolContainer xmi:id="_rdlkETkkEeaNu7tKUcqzfQ" base_Package="_rdlkEDkkEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:Protocol xmi:id="_rdvVEDkkEeaNu7tKUcqzfQ" base_Collaboration="_rdlkEjkkEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:RTPort xmi:id="_rd4fADkkEeaNu7tKUcqzfQ" base_Port="_rdvVGjkkEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:RTPort xmi:id="_uRbksDkkEeaNu7tKUcqzfQ" base_Port="_uRSawDkkEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:OutEvent xmi:id="_vPtx4DkkEeaNu7tKUcqzfQ" base_CallEvent="_vPkn8DkkEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:InEvent xmi:id="_wP74wTkkEeaNu7tKUcqzfQ" base_CallEvent="_wP74wDkkEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:RTConnector xmi:id="_xVE74jkkEeaNu7tKUcqzfQ" base_Connector="_xU7K4DkkEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:RTPort xmi:id="_emziETkoEeaNu7tKUcqzfQ" base_Port="_emziEDkoEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:RTPort xmi:id="_frpDMTkoEeaNu7tKUcqzfQ" isConjugate="true" base_Port="_frpDMDkoEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:RTConnector xmi:id="_jwQIIzkoEeaNu7tKUcqzfQ" base_Connector="_jwQIIDkoEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:RTPort xmi:id="_oE9ekTkoEeaNu7tKUcqzfQ" isConjugate="true" base_Port="_oE9ekDkoEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:RTPort xmi:id="_rc31kTkoEeaNu7tKUcqzfQ" isConjugate="true" base_Port="_rc31kDkoEeaNu7tKUcqzfQ"/>
+ <UMLRealTime:RTConnector xmi:id="_tY_kADkoEeaNu7tKUcqzfQ" base_Connector="_tYP9IDkoEeaNu7tKUcqzfQ"/>
+</xmi:XMI>
diff --git a/tests/junit/extraplugins/migration/org.eclipse.papyrus.migration.rsa.tests/src/org/eclipse/papyrus/migration/rsa/tests/qvt/AbstractTransformationTest.java b/tests/junit/extraplugins/migration/org.eclipse.papyrus.migration.rsa.tests/src/org/eclipse/papyrus/migration/rsa/tests/qvt/AbstractTransformationTest.java
index c0210f1439f..8089a4f5946 100644
--- a/tests/junit/extraplugins/migration/org.eclipse.papyrus.migration.rsa.tests/src/org/eclipse/papyrus/migration/rsa/tests/qvt/AbstractTransformationTest.java
+++ b/tests/junit/extraplugins/migration/org.eclipse.papyrus.migration.rsa.tests/src/org/eclipse/papyrus/migration/rsa/tests/qvt/AbstractTransformationTest.java
@@ -8,7 +8,7 @@
*
* Contributors:
* Camille Letavernier (CEA LIST) camille.letavernier@cea.fr - Initial API and implementation
- * Christian W. Damus - bugs 496439, 461980, 496653
+ * Christian W. Damus - bugs 496439, 461980, 496653, 498282
*****************************************************************************/
package org.eclipse.papyrus.migration.rsa.tests.qvt;
@@ -24,7 +24,10 @@ import java.util.LinkedList;
import java.util.List;
import java.util.Objects;
import java.util.Queue;
+import java.util.Spliterator;
+import java.util.Spliterators;
import java.util.stream.Collectors;
+import java.util.stream.Stream;
import java.util.stream.StreamSupport;
import org.eclipse.core.resources.IFile;
@@ -33,6 +36,7 @@ import org.eclipse.core.resources.ResourcesPlugin;
import org.eclipse.core.runtime.IPath;
import org.eclipse.emf.common.util.EList;
import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.resource.Resource;
import org.eclipse.emf.ecore.util.EcoreUtil;
import org.eclipse.gmf.runtime.diagram.core.util.ViewUtil;
@@ -42,6 +46,7 @@ import org.eclipse.papyrus.infra.core.resource.ModelSet;
import org.eclipse.papyrus.infra.core.utils.ServiceUtils;
import org.eclipse.papyrus.infra.emf.utils.ServiceUtilsForEObject;
import org.eclipse.papyrus.infra.gmfdiag.common.model.NotationUtils;
+import org.eclipse.papyrus.infra.gmfdiag.common.utils.DiagramUtils;
import org.eclipse.papyrus.infra.ui.editor.IMultiDiagramEditor;
import org.eclipse.papyrus.junit.framework.classification.tests.AbstractPapyrusTest;
import org.eclipse.papyrus.junit.utils.DisplayUtils;
@@ -284,6 +289,17 @@ public class AbstractTransformationTest extends AbstractPapyrusTest {
return ofClass.cast(result);
}
+ protected Stream<EObject> streamAllContents(EObject object) {
+ return StreamSupport.stream(Spliterators.spliteratorUnknownSize(
+ object.eAllContents(),
+ Spliterator.ORDERED | Spliterator.DISTINCT | Spliterator.NONNULL),
+ false);
+ }
+
+ protected Stream<Diagram> diagramsOf(EObject object) {
+ return DiagramUtils.getAssociatedDiagrams(object, null).stream();
+ }
+
@SafeVarargs
protected final <T> Matcher<Iterable<? extends T>> containsInOrder(T... elements) {
List<T> expected = Arrays.asList(elements);
diff --git a/tests/junit/extraplugins/migration/org.eclipse.papyrus.migration.rsa.tests/src/org/eclipse/papyrus/migration/rsa/tests/regression/StructureDiagramTest.java b/tests/junit/extraplugins/migration/org.eclipse.papyrus.migration.rsa.tests/src/org/eclipse/papyrus/migration/rsa/tests/regression/StructureDiagramTest.java
index a184ed5c1f7..23b2ce0c18b 100644
--- a/tests/junit/extraplugins/migration/org.eclipse.papyrus.migration.rsa.tests/src/org/eclipse/papyrus/migration/rsa/tests/regression/StructureDiagramTest.java
+++ b/tests/junit/extraplugins/migration/org.eclipse.papyrus.migration.rsa.tests/src/org/eclipse/papyrus/migration/rsa/tests/regression/StructureDiagramTest.java
@@ -15,25 +15,44 @@ package org.eclipse.papyrus.migration.rsa.tests.regression;
import static org.hamcrest.CoreMatchers.instanceOf;
import static org.hamcrest.CoreMatchers.is;
+import static org.hamcrest.CoreMatchers.notNullValue;
import static org.hamcrest.MatcherAssert.assertThat;
+import static org.junit.Assume.assumeThat;
import java.util.List;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
import org.eclipse.gmf.runtime.notation.Diagram;
import org.eclipse.gmf.runtime.notation.Node;
+import org.eclipse.gmf.runtime.notation.NotationPackage;
+import org.eclipse.gmf.runtime.notation.Shape;
import org.eclipse.gmf.runtime.notation.Size;
import org.eclipse.gmf.runtime.notation.View;
+import org.eclipse.papyrus.junit.utils.rules.AnnotationRule;
+import org.eclipse.papyrus.junit.utils.rules.PluginResource;
import org.eclipse.papyrus.migration.rsa.tests.qvt.AbstractTransformationTest;
import org.eclipse.papyrus.uml.diagram.composite.edit.parts.ClassCompositeCompartmentEditPart;
import org.eclipse.papyrus.uml.diagram.composite.edit.parts.ClassCompositeEditPart;
import org.eclipse.papyrus.uml.diagram.composite.edit.parts.ClassCompositeNameEditPart;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Port;
+import org.junit.Before;
+import org.junit.Rule;
import org.junit.Test;
+import org.junit.rules.TestName;
/**
* Specific regression tests for bugs in the import of structure diagrams.
*/
public class StructureDiagramTest extends AbstractTransformationTest {
+ @Rule
+ public final TestName name = new TestName();
+
+ @Rule
+ public final AnnotationRule<String[]> testModel = AnnotationRule.create(PluginResource.class);
+
/**
* Initializes me.
*/
@@ -45,11 +64,8 @@ public class StructureDiagramTest extends AbstractTransformationTest {
* @see <a href="http://eclip.se/461980">bug 461980</a>
*/
@Test
+ @PluginResource("CompositeStructureDiagram.emx")
public void defaultFrameSize_bug461980() throws Exception {
- simpleImport("resources/bug461980/CompositeStructureDiagram.emx");
-
- openEditor();
-
// Need to open the diagram to convert the visual IDs to modern notation for assertions
Diagram diagram = openDiagram("StructureDiagram1");
@@ -64,11 +80,8 @@ public class StructureDiagramTest extends AbstractTransformationTest {
* @see <a href="http://eclip.se/496653">bug 496653</a>
*/
@Test
+ @PluginResource("bug461980/CompositeStructureDiagram.emx")
public void dividerBetweenNameAndStructureCompartment_bug496653() throws Exception {
- simpleImport("resources/bug461980/CompositeStructureDiagram.emx");
-
- openEditor();
-
// Need to open the diagram to convert the visual IDs to modern notation for assertions
Diagram diagram = openDiagram("StructureDiagram1");
@@ -81,4 +94,71 @@ public class StructureDiagramTest extends AbstractTransformationTest {
List<? extends View> children = frame.getChildren();
assertThat(children, containsInOrder(name, structure));
}
+
+ /**
+ * Verify that non-conjugated ports in imported diagrams show the coloured interior
+ * as specified in the source diagram notation.
+ *
+ * @see <a href="http://eclip.se/498282">bug 498282</a>
+ */
+ @Test
+ @PluginResource("ConjugationExample.emx")
+ public void portNonconjugationVisuals_bug498282() throws Exception {
+ Class client = (Class) rootPackage.getOwnedType("Client");
+ Diagram csd = diagramsOf(client).findAny().get();
+ assumeThat(csd, notNullValue());
+
+ // All of these are not conjugated
+ streamAllContents(csd)
+ .filter(Shape.class::isInstance).map(Shape.class::cast)
+ .filter(s -> s.getElement() instanceof Port)
+ .forEach(p -> assertThat(p.eIsSet(NotationPackage.Literals.FILL_STYLE__FILL_COLOR), is(true)));
+ }
+
+ /**
+ * Verify that conjugated ports in imported diagrams show the white interior
+ * regardless of the coloration in the source (which used a different styling
+ * convention to show conjugation).
+ *
+ * @see <a href="http://eclip.se/498282">bug 498282</a>
+ */
+ @Test
+ @PluginResource("ConjugationExample.emx")
+ public void portConjugationVisuals_bug498282() throws Exception {
+ Class server = (Class) rootPackage.getOwnedType("Server");
+ Diagram csd = diagramsOf(server).findAny().get();
+ assumeThat(csd, notNullValue());
+
+ // All of these are conjugated
+ streamAllContents(csd)
+ .filter(Shape.class::isInstance).map(Shape.class::cast)
+ .filter(s -> s.getElement() instanceof Port)
+ .forEach(p -> assertThat(p.eIsSet(NotationPackage.Literals.FILL_STYLE__FILL_COLOR), is(false)));
+ }
+
+ //
+ // Test framework
+ //
+
+ @Before
+ public void importAndOpen() throws Exception {
+ String resourcePath = testModel.get()[0];
+
+ Matcher bugMatcher = Pattern.compile("^(bug\\d+)/").matcher(resourcePath);
+ String bug;
+
+ if (bugMatcher.find()) {
+ bug = bugMatcher.group(1);
+
+ // Don't be redundant
+ resourcePath = resourcePath.substring(bugMatcher.end());
+ } else {
+ bug = name.getMethodName();
+ bug = bug.substring(bug.lastIndexOf('_') + 1);
+ }
+
+ simpleImport(String.format("resources/%s/%s", bug, resourcePath));
+
+ openEditor();
+ }
}

Back to the top