Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnsgar Radermacher2015-02-21 20:09:11 +0000
committerAnsgar Radermacher2015-03-04 06:20:11 +0000
commit8f122fe502e26a1486f063703327abb420db6596 (patch)
treefe0f82db0ce6471f301fdb6802c00975b8d7ba04 /extraplugins/qompass-designer
parent0d99eaa2984b1177b7053ddfeb4e66bbe637da06 (diff)
downloadorg.eclipse.papyrus-8f122fe502e26a1486f063703327abb420db6596.tar.gz
org.eclipse.papyrus-8f122fe502e26a1486f063703327abb420db6596.tar.xz
org.eclipse.papyrus-8f122fe502e26a1486f063703327abb420db6596.zip
460452 - [QDesigner] component to OO transformation is for C++ only
Diffstat (limited to 'extraplugins/qompass-designer')
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.classpath2
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.settings/org.eclipse.jdt.core.prefs6
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/META-INF/MANIFEST.MF2
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.notation529
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.uml44
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/org/eclipse/papyrus/FCM/InterceptionKind.java4
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.classpath2
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.settings/org.eclipse.jdt.core.prefs6
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/META-INF/MANIFEST.MF4
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/plugin.xml1
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/externalGenerator.exsd2
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/ooTransformation.exsd109
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Messages.java5
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/BootLoaderGen.java31
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepUtils.java35
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/Deploy.java2
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IOOTrafo.java97
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/OOTrafo.java61
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompImplSync.java4
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompImplTrafos.java673
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompTypeTrafos.java27
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ExecuteOOTrafo.java117
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/InstantiateDepPlan.java20
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LWContainerTrafo.java2
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/MainModelTrafo.java2
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/connector/ConnectorReification.java (renamed from extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ConnectorReification.java)4
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/container/ContainerTrafo.java (renamed from extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ContainerTrafo.java)8
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.classpath8
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.project34
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/META-INF/MANIFEST.MF21
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/about.html28
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/build.properties7
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.properties12
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.xml18
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Activator.java50
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Constants.java9
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Messages.java19
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/messages.properties3
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppPortMapping.xtend552
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppUtils.xtend26
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/DynamicCpptoOO.xtend504
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/StaticCppToOO.xtend550
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.CppPortMapping.xtendbinbin0 -> 14313 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.CppUtils.xtendbinbin0 -> 2901 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.DynamicCpptoOO.xtendbinbin0 -> 13872 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.StaticCppToOO.xtendbinbin0 -> 14542 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.gitignore1
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppPortMapping.java762
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppUtils.java44
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/DynamicCppToOO.java714
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/StaticCppToOO.java769
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/.classpath8
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/.project34
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/.settings/org.eclipse.jdt.core.prefs7
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/META-INF/MANIFEST.MF19
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/about.html28
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/build.properties6
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/plugin.properties12
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/plugin.xml11
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/Activator.java50
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/Messages.java19
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/messages.properties3
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/xtend/JavaToOO.xtend547
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/xtend-gen/org/eclipse/papyrus/qompass/designer/java/xtend/.JavaToOO.xtendbinbin0 -> 14387 bytes
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/xtend-gen/org/eclipse/papyrus/qompass/designer/java/xtend/.gitignore2
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/xtend-gen/org/eclipse/papyrus/qompass/designer/java/xtend/JavaToOO.java761
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.ui/.classpath2
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.ui/.settings/org.eclipse.jdt.core.prefs6
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.ui/META-INF/MANIFEST.MF2
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ExecutorIsNotUsedAsPartName.java2
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.classpath2
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.settings/org.eclipse.jdt.core.prefs6
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/META-INF/MANIFEST.MF2
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.notation94
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.uml112
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.notation152
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.uml205
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.di3
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.notation109
-rw-r--r--extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.uml8
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.classpath2
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.settings/org.eclipse.jdt.core.prefs6
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/META-INF/MANIFEST.MF2
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.classpath2
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.settings/org.eclipse.jdt.core.prefs6
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/META-INF/MANIFEST.MF2
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.notation66
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.uml224
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/IConfiguratorOTF.java2
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/src/org/eclipse/papyrus/qompass/modellibs/tracing/IConfiguratorTrace.java2
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/.classpath2
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/.settings/org.eclipse.jdt.core.prefs6
-rw-r--r--extraplugins/qompass-designer/tracing/org.eclipse.papyrus.views.tracepoints/META-INF/MANIFEST.MF2
94 files changed, 7026 insertions, 1447 deletions
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.classpath b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.classpath
index ad32c83a788..098194ca4b7 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.classpath
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.settings/org.eclipse.jdt.core.prefs b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.settings/org.eclipse.jdt.core.prefs
index c537b63063c..f42de363afa 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.settings/org.eclipse.jdt.core.prefs
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,7 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/META-INF/MANIFEST.MF
index f7c99b5b6c4..09c9a1b3296 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/META-INF/MANIFEST.MF
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/META-INF/MANIFEST.MF
@@ -21,5 +21,5 @@ Bundle-Localization: plugin
Bundle-Name: %pluginName
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.papyrus.fcm.profile;singleton:=true
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.notation
index f00985ebf1c..d5e18a3e7df 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.notation
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.notation
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI 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:l2="http://www.eclipse.org/uml2/4.0.0/UML/Profile/L2" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+<xmi:XMI 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:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:standard="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
<notation:Diagram xmi:id="_Va74cGE3Ed-1rN74nkR_XQ" type="PapyrusUMLProfileDiagram" name="Components" measurementUnit="Pixel">
<children xmi:type="notation:Shape" xmi:id="_iXBUYGE3Ed-1rN74nkR_XQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8yLrAE2lEeG8L5eAOYvthg" source="QualifiedName">
@@ -11,6 +11,12 @@
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_J6n58NTgEeKiLbHSN_MIRQ" source="CustomAppearance_Annotation">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_J6ohANTgEeKiLbHSN_MIRQ" key="CustomAppearance_MaskValue" value="56"/>
</eAnnotations>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_AOW9wKYjEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_r2VLUJD2Ed-I9dVdNhZAGQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_r2pUYZD2Ed-I9dVdNhZAGQ"/>
</children>
@@ -58,10 +64,21 @@
<children xmi:type="notation:DecorationNode" xmi:id="_nvEXIGE3Ed-1rN74nkR_XQ" type="1034"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_nvEXIWE3Ed-1rN74nkR_XQ" type="1071">
<children xmi:type="notation:Shape" xmi:id="_souBQEzuEeG_JK8KIEXPxQ" type="3002" fontName="Sans Serif" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_DONaEKYjEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_zhkAEMewEd6zpahAtGCOkA"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_souBQUzuEeG_JK8KIEXPxQ"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_tTdAUEzuEeG_JK8KIEXPxQ" type="3002" fontName="Sans Serif" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_Dzuh8KYjEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_X4RqMFaaEd-w9f5DG2hQCA"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_tTdAUUzuEeG_JK8KIEXPxQ"/>
</children>
@@ -80,13 +97,13 @@
</children>
<styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_nvDwEWE3Ed-1rN74nkR_XQ"/>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_Z1W68MtlEd2H_o0jIC6qDQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nvDwEmE3Ed-1rN74nkR_XQ" x="9" y="459" width="208" height="85"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nvDwEmE3Ed-1rN74nkR_XQ" x="9" y="480" width="232" height="81"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_kOCSoG1nEd-XwOGM-uryhg" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
<children xmi:type="notation:DecorationNode" xmi:id="_kOC5sW1nEd-XwOGM-uryhg" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_4GlMsHI0EeOZxcUd14vDog" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_4GlMsXI0EeOZxcUd14vDog" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4GlMsnI0EeOZxcUd14vDog"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_4GlMs3I0EeOZxcUd14vDog" visible="false" type="compartment_shape_display">
@@ -94,7 +111,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4GlMtXI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kOC5sG1nEd-XwOGM-uryhg" x="9" y="378" width="415"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kOC5sG1nEd-XwOGM-uryhg" x="9" y="400" width="432" height="41"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_6kgFYJD1Ed-I9dVdNhZAGQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6kgscJD1Ed-I9dVdNhZAGQ" source="ShadowFigure">
@@ -109,6 +126,12 @@
<children xmi:type="notation:DecorationNode" xmi:id="_6kgsdpD1Ed-I9dVdNhZAGQ" type="1034"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_6kgsd5D1Ed-I9dVdNhZAGQ" type="1071">
<children xmi:type="notation:Shape" xmi:id="_OIPlUKFeEd-Ow8yfE2PGoA" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_Z_3ZgKYOEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_lznjEMttEd2H_o0jIC6qDQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_OIPlUaFeEd-Ow8yfE2PGoA" x="139" y="19"/>
</children>
@@ -127,7 +150,7 @@
</children>
<styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_6kgFYZD1Ed-I9dVdNhZAGQ"/>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_JWD9UMttEd2H_o0jIC6qDQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6kgFYpD1Ed-I9dVdNhZAGQ" x="489" y="459" width="205" height="82"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6kgFYpD1Ed-I9dVdNhZAGQ" x="500" y="480" width="241" height="81"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_6lF7QJD1Ed-I9dVdNhZAGQ" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_6lF7QpD1Ed-I9dVdNhZAGQ" source="ShadowFigure">
@@ -142,7 +165,7 @@
<children xmi:type="notation:DecorationNode" xmi:id="_6lF7SJD1Ed-I9dVdNhZAGQ" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_4GqFMHI0EeOZxcUd14vDog" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_4GqFMXI0EeOZxcUd14vDog" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sizf0KtKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sizf0KtKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4GqFMnI0EeOZxcUd14vDog"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_4GqsQHI0EeOZxcUd14vDog" visible="false" type="compartment_shape_display">
@@ -150,7 +173,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4GqsQnI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Connector"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6lF7QZD1Ed-I9dVdNhZAGQ" x="489" y="378" width="91" height="46"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6lF7QZD1Ed-I9dVdNhZAGQ" x="500" y="400" width="101" height="41"/>
</children>
<children xmi:type="notation:Shape" xmi:id="__1h6IJD1Ed-I9dVdNhZAGQ" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__1h6IpD1Ed-I9dVdNhZAGQ" source="ShadowFigure">
@@ -165,7 +188,7 @@
<children xmi:type="notation:DecorationNode" xmi:id="__1h6KJD1Ed-I9dVdNhZAGQ" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_4GtIgHI0EeOZxcUd14vDog" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_4GtIgXI0EeOZxcUd14vDog" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_SlSMEKtKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_SlSMEKtKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4GtIgnI0EeOZxcUd14vDog"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_4GtIg3I0EeOZxcUd14vDog" visible="false" type="compartment_shape_display">
@@ -173,7 +196,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4GtIhXI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1h6IZD1Ed-I9dVdNhZAGQ" x="603" y="378" width="91" height="46"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__1h6IZD1Ed-I9dVdNhZAGQ" x="620" y="400" width="121" height="41"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_kBqtgKFPEd-Ow8yfE2PGoA" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kB1soKFPEd-Ow8yfE2PGoA" source="ShadowFigure">
@@ -201,7 +224,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4Gu9snI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_aQTf0FSdEd-w9f5DG2hQCA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kBqtgaFPEd-Ow8yfE2PGoA" x="243" y="459" width="181" height="82"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kBqtgaFPEd-Ow8yfE2PGoA" x="260" y="480" width="181" height="81"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_0iP5wMGiEd-BXcifqN3Y_A" type="1002" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0iP5wsGiEd-BXcifqN3Y_A" source="ShadowFigure">
@@ -215,7 +238,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_0iQg0MGiEd-BXcifqN3Y_A" type="3"/>
<element xmi:type="uml:Comment" href="FCM.profile.uml#_0h1qEMGiEd-BXcifqN3Y_A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0iP5wcGiEd-BXcifqN3Y_A" x="252" y="567" width="199"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0iP5wcGiEd-BXcifqN3Y_A" x="252" y="582" width="199" height="159"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_be7EsEZ0EeCLCJBkU67iDQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_be7EskZ0EeCLCJBkU67iDQ" source="ShadowFigure">
@@ -230,6 +253,12 @@
<children xmi:type="notation:DecorationNode" xmi:id="_be7rxUZ0EeCLCJBkU67iDQ" type="1034"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_be7rxkZ0EeCLCJBkU67iDQ" type="1071">
<children xmi:type="notation:Shape" xmi:id="_vl72QEZ0EeCLCJBkU67iDQ" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_Cjg3QKYjEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_vkwxkEZ0EeCLCJBkU67iDQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_vl72QUZ0EeCLCJBkU67iDQ"/>
</children>
@@ -269,7 +298,7 @@
<children xmi:type="notation:DecorationNode" xmi:id="_dMeLpkZ0EeCLCJBkU67iDQ" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_4Gz2MHI0EeOZxcUd14vDog" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_4Gz2MXI0EeOZxcUd14vDog" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4Gz2MnI0EeOZxcUd14vDog"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_4Gz2M3I0EeOZxcUd14vDog" visible="false" type="compartment_shape_display">
@@ -277,7 +306,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4Gz2NXI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dMdkkUZ0EeCLCJBkU67iDQ" x="9" y="63" width="631"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_dMdkkUZ0EeCLCJBkU67iDQ" x="9" y="60" width="631" height="41"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_kDz24EZ0EeCLCJBkU67iDQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kD0d8EZ0EeCLCJBkU67iDQ" source="ShadowFigure">
@@ -292,6 +321,12 @@
<children xmi:type="notation:DecorationNode" xmi:id="_kD0d9kZ0EeCLCJBkU67iDQ" type="1034"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_kD1FAEZ0EeCLCJBkU67iDQ" type="1071">
<children xmi:type="notation:Shape" xmi:id="_sFLEQGm4EeOEG7lSPuRLag" type="3002">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_B7gcEKYjEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_sE27MGm4EeOEG7lSPuRLag"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_sFLrUGm4EeOEG7lSPuRLag"/>
</children>
@@ -309,7 +344,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4G2ScnI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_kDGFMEZ0EeCLCJBkU67iDQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kDz24UZ0EeCLCJBkU67iDQ" x="406" y="153" width="144" height="73"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kDz24UZ0EeCLCJBkU67iDQ" x="406" y="153" width="155" height="73"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_9NfIoCNZEeKGuM7MKNu-KA" type="1031" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9Q1-oCNZEeKGuM7MKNu-KA" source="ShadowFigure">
@@ -322,16 +357,16 @@
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Q2ltCNZEeKGuM7MKNu-KA" key="QualifiedNameDepth" value="1000"/>
</eAnnotations>
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9Q3MwCNZEeKGuM7MKNu-KA" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Q3z0CNZEeKGuM7MKNu-KA" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Q3z0SNZEeKGuM7MKNu-KA" key="StereotypeList" value="StandardProfileL2::Metaclass"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Q3z0iNZEeKGuM7MKNu-KA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Q3z0yNZEeKGuM7MKNu-KA" key="PropStereoDisplay" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Q3z1CNZEeKGuM7MKNu-KA" key="StereotypePropertyLocation" value="Compartment"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PfaSgKYOEeSti6341zpcDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PfaSgaYOEeSti6341zpcDg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PfaSgqYOEeSti6341zpcDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PfaSg6YOEeSti6341zpcDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PfaShKYOEeSti6341zpcDg" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_9Q2ltSNZEeKGuM7MKNu-KA" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_4G4usHI0EeOZxcUd14vDog" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_4G4usXI0EeOZxcUd14vDog" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sk8N0KtKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sk8N0KtKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4G4usnI0EeOZxcUd14vDog"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_4G5VwHI0EeOZxcUd14vDog" visible="false" type="compartment_shape_display">
@@ -339,7 +374,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4G5VwnI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Q2ltiNZEeKGuM7MKNu-KA" x="666" y="63" width="136"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9Q2ltiNZEeKGuM7MKNu-KA" x="666" y="60" width="136" height="41"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_jMzJwCNgEeKGuM7MKNu-KA" type="1002" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jMzw0CNgEeKGuM7MKNu-KA" source="ShadowFigure">
@@ -367,7 +402,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_ZrDRUNTWEeKiLbHSN_MIRQ" type="3"/>
<element xmi:type="uml:Comment" href="FCM.profile.uml#_Zq7VgNTWEeKiLbHSN_MIRQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZrCqQdTWEeKiLbHSN_MIRQ" x="9" y="565" width="220"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZrCqQdTWEeKiLbHSN_MIRQ" x="9" y="580" width="212" height="161"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_2Vn_YNTWEeKiLbHSN_MIRQ" type="1002" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2Vn_YtTWEeKiLbHSN_MIRQ" source="ShadowFigure">
@@ -381,7 +416,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_2Vn_aNTWEeKiLbHSN_MIRQ" type="3"/>
<element xmi:type="uml:Comment" href="FCM.profile.uml#_2VgqoNTWEeKiLbHSN_MIRQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2Vn_YdTWEeKiLbHSN_MIRQ" x="18" y="261" width="208"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_2Vn_YdTWEeKiLbHSN_MIRQ" x="20" y="260" width="208"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_8I6MoNTWEeKiLbHSN_MIRQ" type="1002" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8I6zsNTWEeKiLbHSN_MIRQ" source="ShadowFigure">
@@ -395,7 +430,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_8I6zttTWEeKiLbHSN_MIRQ" type="3"/>
<element xmi:type="uml:Comment" href="FCM.profile.uml#_8Ize8NTWEeKiLbHSN_MIRQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8I6ModTWEeKiLbHSN_MIRQ" x="495" y="567" width="388"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8I6ModTWEeKiLbHSN_MIRQ" x="495" y="582" width="388" height="159"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_UMdyoNTfEeKiLbHSN_MIRQ" type="1002" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UMdyotTfEeKiLbHSN_MIRQ" source="ShadowFigure">
@@ -409,7 +444,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_UMdyqNTfEeKiLbHSN_MIRQ" type="3"/>
<element xmi:type="uml:Comment" href="FCM.profile.uml#_UMWd4NTfEeKiLbHSN_MIRQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UMdyodTfEeKiLbHSN_MIRQ" x="296" y="261" width="380"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UMdyodTfEeKiLbHSN_MIRQ" x="300" y="260" width="380"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_FPu4INTgEeKiLbHSN_MIRQ" type="1002" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FPu4ItTgEeKiLbHSN_MIRQ" source="ShadowFigure">
@@ -423,7 +458,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_FPu4KNTgEeKiLbHSN_MIRQ" type="3"/>
<element xmi:type="uml:Comment" href="FCM.profile.uml#_FPnjYNTgEeKiLbHSN_MIRQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FPu4IdTgEeKiLbHSN_MIRQ" x="732" y="261" width="277"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FPu4IdTgEeKiLbHSN_MIRQ" x="720" y="260" width="277"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_Va74cWE3Ed-1rN74nkR_XQ"/>
<element xmi:type="uml:Profile" href="FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
@@ -438,13 +473,15 @@
<styles xmi:type="notation:FontStyle" xmi:id="_6lsYMZD1Ed-I9dVdNhZAGQ" fontName="Sans Serif" fontHeight="10"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_jDoHsMttEd2H_o0jIC6qDQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_6lsYMpD1Ed-I9dVdNhZAGQ" points="[0, 0, 0, 0]$[0, 0, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SfEiYEzvEeG_JK8KIEXPxQ" id="(0.25510204081632654,0.07)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SfEiYEzvEeG_JK8KIEXPxQ" id="(0.2033195020746888,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bsf6cKYOEeSti6341zpcDg" id="(0.48514851485148514,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="__2KzUJD1Ed-I9dVdNhZAGQ" type="1013" source="_6kgFYJD1Ed-I9dVdNhZAGQ" target="__1h6IJD1Ed-I9dVdNhZAGQ" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="__2KzUZD1Ed-I9dVdNhZAGQ" fontName="Sans Serif" fontHeight="10"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_F_vFQMtuEd2H_o0jIC6qDQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="__2KzUpD1Ed-I9dVdNhZAGQ" points="[-37, -50, 400, 550]$[-437, -600, 0, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_S2kcYEzvEeG_JK8KIEXPxQ" id="(0.7653061224489796,0.11)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_S2kcYEzvEeG_JK8KIEXPxQ" id="(0.7777777777777778,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_bDahMKYOEeSti6341zpcDg" id="(0.5371900826446281,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_ekK-YEZ0EeCLCJBkU67iDQ" type="1013" source="_be7EsEZ0EeCLCJBkU67iDQ" target="_dMdkkEZ0EeCLCJBkU67iDQ" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_ekK-YUZ0EeCLCJBkU67iDQ" fontName="Sans Serif" fontHeight="10"/>
@@ -471,8 +508,8 @@
<styles xmi:type="notation:FontStyle" xmi:id="_5PIvMUzuEeG_JK8KIEXPxQ" fontName="Sans Serif"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_5OkugEzuEeG_JK8KIEXPxQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_5PIvMkzuEeG_JK8KIEXPxQ" points="[2, -3, -54, 62]$[45, -52, -11, 13]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5P3H8EzuEeG_JK8KIEXPxQ" id="(0.5027624309392266,0.13414634146341464)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5P3H8UzuEeG_JK8KIEXPxQ" id="(0.8024096385542169,0.9)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5P3H8EzuEeG_JK8KIEXPxQ" id="(0.5248618784530387,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5P3H8UzuEeG_JK8KIEXPxQ" id="(0.8009259259259259,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_BpcCAEzvEeG_JK8KIEXPxQ" type="1013" source="_jArVYGE3Ed-1rN74nkR_XQ" target="_dMdkkEZ0EeCLCJBkU67iDQ" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_BpcCAUzvEeG_JK8KIEXPxQ" fontName="Sans Serif"/>
@@ -485,8 +522,8 @@
<styles xmi:type="notation:FontStyle" xmi:id="_PYYxIU2mEeG8L5eAOYvthg" fontName=""/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_PYYxIk2mEeG8L5eAOYvthg" points="[9, -28, 0, 48]$[-10, -74, -19, 2]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PYmzkE2mEeG8L5eAOYvthg" id="(0.18592964824120603,0.3888888888888889)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PYmzkU2mEeG8L5eAOYvthg" id="(0.2430939226519337,0.9390243902439024)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PYmzkE2mEeG8L5eAOYvthg" id="(0.3417085427135678,0.11320754716981132)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_PYmzkU2mEeG8L5eAOYvthg" id="(0.2430939226519337,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_DafdcCNaEeKGuM7MKNu-KA" type="1013" source="_iXBUYGE3Ed-1rN74nkR_XQ" target="_9NfIoCNZEeKGuM7MKNu-KA" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_DafdcSNaEeKGuM7MKNu-KA" fontName="Sans Serif"/>
@@ -506,36 +543,36 @@
<styles xmi:type="notation:FontStyle" xmi:id="_l-4acdTWEeKiLbHSN_MIRQ" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_l-4actTWEeKiLbHSN_MIRQ" points="[-3, -6, 0, 42]$[11, -27, 14, 21]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l-6PoNTWEeKiLbHSN_MIRQ" id="(0.4318181818181818,0.08333333333333333)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l-6PodTWEeKiLbHSN_MIRQ" id="(0.46634615384615385,0.9764705882352941)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l-6PoNTWEeKiLbHSN_MIRQ" id="(0.5235849056603774,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l-6PodTWEeKiLbHSN_MIRQ" id="(0.46634615384615385,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_K3SFkNTXEeKiLbHSN_MIRQ" type="1022" source="_8I6MoNTWEeKiLbHSN_MIRQ" target="_6kgFYJD1Ed-I9dVdNhZAGQ" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_K3SFkdTXEeKiLbHSN_MIRQ" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_K3SFktTXEeKiLbHSN_MIRQ" points="[3, -2, 0, 40]$[6, -28, 3, 14]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_K3T6wNTXEeKiLbHSN_MIRQ" id="(0.18867924528301888,0.03333333333333333)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_K3T6wdTXEeKiLbHSN_MIRQ" id="(0.4097560975609756,0.9390243902439024)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_K3T6wNTXEeKiLbHSN_MIRQ" id="(0.2706185567010309,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_K3T6wdTXEeKiLbHSN_MIRQ" id="(0.4097560975609756,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_Q7jbgNTfEeKiLbHSN_MIRQ" type="1022" source="_2Vn_YNTWEeKiLbHSN_MIRQ" target="_jArVYGE3Ed-1rN74nkR_XQ" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_Q7jbgdTfEeKiLbHSN_MIRQ" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Q7jbgtTfEeKiLbHSN_MIRQ" points="[-3, -13, 0, 23]$[6, -25, 9, 11]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Q7kpoNTfEeKiLbHSN_MIRQ" id="(0.5096153846153846,0.013888888888888888)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Q7kpodTfEeKiLbHSN_MIRQ" id="(0.6629834254143646,0.8791208791208791)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Q7kpoNTfEeKiLbHSN_MIRQ" id="(0.5240384615384616,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Q7kpodTfEeKiLbHSN_MIRQ" id="(0.6629834254143646,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_CQm0kNTgEeKiLbHSN_MIRQ" type="1022" source="_UMdyoNTfEeKiLbHSN_MIRQ" target="_be7EsEZ0EeCLCJBkU67iDQ" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_CQm0kdTgEeKiLbHSN_MIRQ" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_CQm0ktTgEeKiLbHSN_MIRQ" points="[-5, -9, 0, 51]$[25, -50, 30, 10]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CQopwNTgEeKiLbHSN_MIRQ" id="(0.1763157894736842,0.125)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CQopwdTgEeKiLbHSN_MIRQ" id="(0.8342541436464088,0.7808219178082192)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CQopwNTgEeKiLbHSN_MIRQ" id="(0.15263157894736842,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_CQopwdTgEeKiLbHSN_MIRQ" id="(0.8342541436464088,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_MNc4MNTgEeKiLbHSN_MIRQ" type="1022" source="_FPu4INTgEeKiLbHSN_MIRQ" target="_iXBUYGE3Ed-1rN74nkR_XQ" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_MNc4MdTgEeKiLbHSN_MIRQ" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_MNc4MtTgEeKiLbHSN_MIRQ" points="[-8, -3, 0, 52]$[46, -44, 54, 11]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MNeGUNTgEeKiLbHSN_MIRQ" id="(0.14634146341463414,0.05)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MNeGUdTgEeKiLbHSN_MIRQ" id="(0.8716814159292036,0.9315068493150684)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MNeGUNTgEeKiLbHSN_MIRQ" id="(0.148014440433213,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_MNeGUdTgEeKiLbHSN_MIRQ" id="(0.8141592920353983,0.9178082191780822)"/>
</edges>
</notation:Diagram>
<notation:Diagram xmi:id="_AypCoHiMEd-iNcV8QPhhiQ" type="PapyrusUMLProfileDiagram" name="Container" measurementUnit="Pixel">
@@ -581,7 +618,7 @@
</children>
<styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_GNycsXiMEd-iNcV8QPhhiQ"/>
<element xmi:type="uml:Enumeration" href="FCM.profile.uml#_-ZqycAAhEd-0dMgailnZgA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GNycsniMEd-iNcV8QPhhiQ" x="306" y="252" width="163" height="181"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GNycsniMEd-iNcV8QPhhiQ" x="320" y="260" width="161" height="141"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_Gw80IHiMEd-iNcV8QPhhiQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Gw9bMHiMEd-iNcV8QPhhiQ" source="ShadowFigure">
@@ -596,10 +633,21 @@
<children xmi:type="notation:DecorationNode" xmi:id="_Gw9bNniMEd-iNcV8QPhhiQ" type="1034"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_Gw9bN3iMEd-iNcV8QPhhiQ" type="1071">
<children xmi:type="notation:Shape" xmi:id="_TlRsIHiVEd-owss_ACqnJA" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_4uM_AKYiEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_fqiIwHPqEd-XO5WB9B_TDA"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_TlRsIXiVEd-owss_ACqnJA" x="58" y="35"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_BwRJcCm_EeKgOdm6HirHfA" type="3002" fontName="Sans Serif" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_5O6fYKYiEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_BvGEwCm_EeKgOdm6HirHfA"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_BwRJcSm_EeKgOdm6HirHfA"/>
</children>
@@ -618,7 +666,7 @@
</children>
<styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_Gw80IXiMEd-iNcV8QPhhiQ"/>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_5SI38AAhEd-0dMgailnZgA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gw80IniMEd-iNcV8QPhhiQ" x="198" y="126" width="191" height="91"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Gw80IniMEd-iNcV8QPhhiQ" x="200" y="120" width="221" height="91"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_cwV04HiSEd-iNcV8QPhhiQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_cwV043iSEd-iNcV8QPhhiQ" source="ShadowFigure">
@@ -647,20 +695,20 @@
</children>
<styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_cwV04XiSEd-iNcV8QPhhiQ"/>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_JSKpIHiLEd-iNcV8QPhhiQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cwV04niSEd-iNcV8QPhhiQ" x="18" y="126" width="134" height="91"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cwV04niSEd-iNcV8QPhhiQ" x="20" y="120" width="134" height="91"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_kTGUUHiVEd-owss_ACqnJA" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_kQCyoCq3EeKWMcuhL1C5sA" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kQCyoSq3EeKWMcuhL1C5sA" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kQCyoiq3EeKWMcuhL1C5sA" key="StereotypeList" value="StandardProfileL2::Metaclass"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kQCyoyq3EeKWMcuhL1C5sA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kQCypCq3EeKWMcuhL1C5sA" key="PropStereoDisplay" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kQCypSq3EeKWMcuhL1C5sA" key="StereotypePropertyLocation" value="Compartment"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PffyEKYOEeSti6341zpcDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PffyEaYOEeSti6341zpcDg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PffyEqYOEeSti6341zpcDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PffyE6YOEeSti6341zpcDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PfgZIKYOEeSti6341zpcDg" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_kTGUUXiVEd-owss_ACqnJA" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_4Kaj0HI0EeOZxcUd14vDog" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_4Kaj0XI0EeOZxcUd14vDog" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4Kaj0nI0EeOZxcUd14vDog"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_4Kaj03I0EeOZxcUd14vDog" visible="false" type="compartment_shape_display">
@@ -668,7 +716,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4Kaj1XI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kTGUUniVEd-owss_ACqnJA" x="18" y="19" width="577"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kTGUUniVEd-owss_ACqnJA" x="20" y="19" width="401"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_JXHXYJDxEd-I9dVdNhZAGQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JXH-cJDxEd-I9dVdNhZAGQ" source="ShadowFigure">
@@ -683,10 +731,21 @@
<children xmi:type="notation:DecorationNode" xmi:id="_JXH-dpDxEd-I9dVdNhZAGQ" type="1034"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_JXH-d5DxEd-I9dVdNhZAGQ" type="1071">
<children xmi:type="notation:Shape" xmi:id="_SyoHMHiVEd-owss_ACqnJA" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_vy0YYKYiEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_JZaBAAAjEd-0dMgailnZgA"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_SyoHMXiVEd-owss_ACqnJA" x="56" y="18"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_XMpbcHiVEd-owss_ACqnJA" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_xAiIsKYiEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_3SMAIAAmEd-0dMgailnZgA"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_XMpbcXiVEd-owss_ACqnJA" x="137" y="74"/>
</children>
@@ -705,7 +764,7 @@
</children>
<styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_JXHXYZDxEd-I9dVdNhZAGQ"/>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_JWyAMJDxEd-I9dVdNhZAGQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JXHXYpDxEd-I9dVdNhZAGQ" x="18" y="342" width="235" height="91"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JXHXYpDxEd-I9dVdNhZAGQ" x="20" y="360" width="261" height="91"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_9aAYUPS2EeCLI_ythlfGJw" type="1031" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9aC0kPS2EeCLI_ythlfGJw" source="ShadowFigure">
@@ -718,16 +777,16 @@
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9aDboPS2EeCLI_ythlfGJw" key="QualifiedNameDepth" value="1000"/>
</eAnnotations>
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9aECsPS2EeCLI_ythlfGJw" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jUCdYCq3EeKWMcuhL1C5sA" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jUDEcCq3EeKWMcuhL1C5sA" key="StereotypeList" value="StandardProfileL2::Metaclass"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jUDEcSq3EeKWMcuhL1C5sA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jUDEciq3EeKWMcuhL1C5sA" key="PropStereoDisplay" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jUDEcyq3EeKWMcuhL1C5sA" key="StereotypePropertyLocation" value="Compartment"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pfl4sKYOEeSti6341zpcDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pfl4saYOEeSti6341zpcDg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pfl4sqYOEeSti6341zpcDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pfl4s6YOEeSti6341zpcDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pfl4tKYOEeSti6341zpcDg" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_9aDbofS2EeCLI_ythlfGJw" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_4KgDYHI0EeOZxcUd14vDog" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_4KgDYXI0EeOZxcUd14vDog" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_SlSMEKtKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_SlSMEKtKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4KgDYnI0EeOZxcUd14vDog"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_4KgDY3I0EeOZxcUd14vDog" visible="false" type="compartment_shape_display">
@@ -735,7 +794,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4KgDZXI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9aDbovS2EeCLI_ythlfGJw" x="18" y="252" width="109"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9aDbovS2EeCLI_ythlfGJw" x="20" y="260" width="109"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_FFzh4Cm_EeKgOdm6HirHfA" type="2006" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FF3zUCm_EeKgOdm6HirHfA" source="ShadowFigure">
@@ -767,7 +826,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4KifonI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Enumeration" href="FCM.profile.uml#_FFvQcCm_EeKgOdm6HirHfA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FFzh4Sm_EeKgOdm6HirHfA" x="513" y="252"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FFzh4Sm_EeKgOdm6HirHfA" x="520" y="260" width="161" height="81"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_bc1QkCq3EeKWMcuhL1C5sA" type="1031" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bc3s0Cq3EeKWMcuhL1C5sA" source="ShadowFigure">
@@ -780,16 +839,16 @@
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc4T5Cq3EeKWMcuhL1C5sA" key="QualifiedNameDepth" value="1000"/>
</eAnnotations>
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_bc5iACq3EeKWMcuhL1C5sA" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc5iASq3EeKWMcuhL1C5sA" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc5iAiq3EeKWMcuhL1C5sA" key="StereotypeList" value="StandardProfileL2::Metaclass"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc5iAyq3EeKWMcuhL1C5sA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc5iBCq3EeKWMcuhL1C5sA" key="PropStereoDisplay" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_bc5iBSq3EeKWMcuhL1C5sA" key="StereotypePropertyLocation" value="Compartment"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PfrYQKYOEeSti6341zpcDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PfrYQaYOEeSti6341zpcDg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PfrYQqYOEeSti6341zpcDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PfrYQ6YOEeSti6341zpcDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PfrYRKYOEeSti6341zpcDg" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_bc4T5Sq3EeKWMcuhL1C5sA" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_4Kk74HI0EeOZxcUd14vDog" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_4Kk74XI0EeOZxcUd14vDog" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sk2HMKtKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sk2HMKtKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4Kk74nI0EeOZxcUd14vDog"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_4Kli8HI0EeOZxcUd14vDog" visible="false" type="compartment_shape_display">
@@ -797,7 +856,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4Kli8nI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bc468Cq3EeKWMcuhL1C5sA" x="153" y="252"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bc468Cq3EeKWMcuhL1C5sA" x="180" y="260"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_WiBfUNTgEeKiLbHSN_MIRQ" type="1002" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_WiBfUtTgEeKiLbHSN_MIRQ" source="ShadowFigure">
@@ -811,7 +870,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_WiCGYNTgEeKiLbHSN_MIRQ" type="3"/>
<element xmi:type="uml:Comment" href="FCM.profile.uml#_Wh6KkNTgEeKiLbHSN_MIRQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WiBfUdTgEeKiLbHSN_MIRQ" x="441" y="126" width="270"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WiBfUdTgEeKiLbHSN_MIRQ" x="460" y="120" width="270"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_a995cIInEeOCe7O91ElfCA" type="1002">
<children xmi:type="notation:DecorationNode" xmi:id="_a9-ggIInEeOCe7O91ElfCA" type="3"/>
@@ -824,40 +883,43 @@
<styles xmi:type="notation:FontStyle" xmi:id="_b63wAXiTEd-iNcV8QPhhiQ" fontName="Sans Serif" fontHeight="10"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_b6cSMHiTEd-iNcV8QPhhiQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_b63wAniTEd-iNcV8QPhhiQ" points="[1, -9, -12, 71]$[10, -73, -3, 7]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b7jFcHiTEd-iNcV8QPhhiQ" id="(0.5149253731343284,0.0)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b7jFcXiTEd-iNcV8QPhhiQ" id="(0.11611785095320624,0.94)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b7jFcHiTEd-iNcV8QPhhiQ" id="(0.5074626865671642,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_b7jFcXiTEd-iNcV8QPhhiQ" id="(0.14962593516209477,0.82)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_kVwYMHjAEd-be4c-807k2A" type="1013" source="_Gw80IHiMEd-iNcV8QPhhiQ" target="_kTGUUHiVEd-owss_ACqnJA" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_kVwYMXjAEd-be4c-807k2A" fontName="Sans Serif" fontHeight="10"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_s6giAAAjEd-0dMgailnZgA"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kVwYMnjAEd-be4c-807k2A" points="[-95, 39, 123, -52]$[-158, 66, 60, -25]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5UiGkKYfEeSti6341zpcDg" id="(0.518324607329843,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_5UitoKYfEeSti6341zpcDg" id="(0.7481296758104738,0.82)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_Qnfg4PS3EeCLI_ythlfGJw" type="1013" source="_JXHXYJDxEd-I9dVdNhZAGQ" target="_9aAYUPS2EeCLI_ythlfGJw" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_Qnfg4fS3EeCLI_ythlfGJw" fontName="Sans Serif"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_Qnb2gPS3EeCLI_ythlfGJw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Qnfg4vS3EeCLI_ythlfGJw" points="[-7, -15, 74, 167]$[-75, -157, 6, 25]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QnhWEPS3EeCLI_ythlfGJw" id="(0.2936170212765957,0.03296703296703297)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e4KvACq3EeKWMcuhL1C5sA" id="(0.576271186440678,0.84)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QnhWEPS3EeCLI_ythlfGJw" id="(0.26382978723404255,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_e4KvACq3EeKWMcuhL1C5sA" id="(0.5688073394495413,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_gFVswCq3EeKWMcuhL1C5sA" type="1013" source="_JXHXYJDxEd-I9dVdNhZAGQ" target="_bc1QkCq3EeKWMcuhL1C5sA" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_gFVswSq3EeKWMcuhL1C5sA" fontName="Sans Serif"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_gEFvkCq3EeKWMcuhL1C5sA"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_gFVswiq3EeKWMcuhL1C5sA" points="[0, -2, -2, 65]$[0, -42, -2, 25]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gFdokCq3EeKWMcuhL1C5sA" id="(0.7787234042553192,0.02197802197802198)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gFdokCq3EeKWMcuhL1C5sA" id="(0.8045977011494253,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_6Cv3cKYfEeSti6341zpcDg" id="(0.5,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_mFl64NTgEeKiLbHSN_MIRQ" type="1022" source="_WiBfUNTgEeKiLbHSN_MIRQ" target="_Gw80IHiMEd-iNcV8QPhhiQ" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_mFl64dTgEeKiLbHSN_MIRQ" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mFl64tTgEeKiLbHSN_MIRQ" points="[-40, 4, 90, 0]$[-92, -5, 38, -9]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mFnJANTgEeKiLbHSN_MIRQ" id="(0.14814814814814814,0.4666666666666667)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mFnJAdTgEeKiLbHSN_MIRQ" id="(0.8010471204188482,0.3516483516483517)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mFnJANTgEeKiLbHSN_MIRQ" id="(0.0,0.3854166666666667)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mFnJAdTgEeKiLbHSN_MIRQ" id="(1.0,0.4065934065934066)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_KKdDgIIoEeOCe7O91ElfCA" type="1022" source="_a995cIInEeOCe7O91ElfCA" target="_GNycsHiMEd-iNcV8QPhhiQ">
<styles xmi:type="notation:FontStyle" xmi:id="_KKdDgYIoEeOCe7O91ElfCA"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KKdDgoIoEeOCe7O91ElfCA" points="[-22, -3, 38, 0]$[-53, 2, 7, 5]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KKk_UIIoEeOCe7O91ElfCA" id="(0.07308970099667775,0.40625)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KKk_UYIoEeOCe7O91ElfCA" id="(0.9570552147239264,0.7955801104972375)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KKk_UIIoEeOCe7O91ElfCA" id="(0.0,0.3548387096774194)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KKk_UYIoEeOCe7O91ElfCA" id="(1.0,0.7943262411347518)"/>
</edges>
</notation:Diagram>
<notation:Diagram xmi:id="_uxB-EIKhEd-aI_x8ivV7vQ" type="PapyrusUMLProfileDiagram" name="Libraries" measurementUnit="Pixel">
@@ -874,7 +936,7 @@
<children xmi:type="notation:DecorationNode" xmi:id="_1gtiJoKhEd-aI_x8ivV7vQ" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_4Ng7IHI0EeOZxcUd14vDog" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_4Ng7IXI0EeOZxcUd14vDog" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sk8N0KtKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sk8N0KtKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4Ng7InI0EeOZxcUd14vDog"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_4NhiMHI0EeOZxcUd14vDog" visible="false" type="compartment_shape_display">
@@ -882,7 +944,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4NhiMnI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1gsUAYKhEd-aI_x8ivV7vQ" x="144" y="27" width="298" height="49"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1gsUAYKhEd-aI_x8ivV7vQ" x="80" y="40" width="298" height="49"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_C-RnwNRwEeKiLbHSN_MIRQ" type="1026" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_C-RnwtRwEeKiLbHSN_MIRQ" source="ShadowFigure">
@@ -897,10 +959,20 @@
<children xmi:type="notation:DecorationNode" xmi:id="_C-SO1NRwEeKiLbHSN_MIRQ" type="1034"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_C-SO1dRwEeKiLbHSN_MIRQ" type="1071">
<children xmi:type="notation:Shape" xmi:id="_fjQEINRwEeKiLbHSN_MIRQ" type="3002" fontName="Sans Serif" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_S2GU8KYjEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_fi6s8NRwEeKiLbHSN_MIRQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_fjQEIdRwEeKiLbHSN_MIRQ"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_oTdVgNRwEeKiLbHSN_MIRQ" type="3002" fontName="Sans Serif" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_R7zP4KYjEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_oTWn0NRwEeKiLbHSN_MIRQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_oTdVgdRwEeKiLbHSN_MIRQ"/>
</children>
@@ -920,7 +992,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4NjXYnI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_C-GooNRwEeKiLbHSN_MIRQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_C-RnwdRwEeKiLbHSN_MIRQ" x="144" y="126" width="298" height="73"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_C-RnwdRwEeKiLbHSN_MIRQ" x="80" y="120" width="298" height="73"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_HjQO0NRwEeKiLbHSN_MIRQ" type="1026" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_HjQ14NRwEeKiLbHSN_MIRQ" source="ShadowFigure">
@@ -950,7 +1022,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4NlzonI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_HjF2wNRwEeKiLbHSN_MIRQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HjQO0dRwEeKiLbHSN_MIRQ" x="639" y="126" width="136" height="73"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_HjQO0dRwEeKiLbHSN_MIRQ" x="580" y="120" width="141" height="73"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_QdTYsNRwEeKiLbHSN_MIRQ" type="1031" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QdT_wNRwEeKiLbHSN_MIRQ" source="ShadowFigure">
@@ -963,16 +1035,16 @@
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QdT_xdRwEeKiLbHSN_MIRQ" key="QualifiedNameDepth" value="1000"/>
</eAnnotations>
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_QdUm0NRwEeKiLbHSN_MIRQ" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QdUm0dRwEeKiLbHSN_MIRQ" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QdUm0tRwEeKiLbHSN_MIRQ" key="StereotypeList" value="StandardProfileL2::Metaclass"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QdUm09RwEeKiLbHSN_MIRQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QdUm1NRwEeKiLbHSN_MIRQ" key="PropStereoDisplay" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_QdUm1dRwEeKiLbHSN_MIRQ" key="StereotypePropertyLocation" value="Compartment"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pfw30KYOEeSti6341zpcDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pfw30aYOEeSti6341zpcDg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pfw30qYOEeSti6341zpcDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pfxe4KYOEeSti6341zpcDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pfxe4aYOEeSti6341zpcDg" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_QdT_xtRwEeKiLbHSN_MIRQ" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_4NoP4HI0EeOZxcUd14vDog" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_4NoP4XI0EeOZxcUd14vDog" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4NoP4nI0EeOZxcUd14vDog"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_4NoP43I0EeOZxcUd14vDog" visible="false" type="compartment_shape_display">
@@ -980,7 +1052,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4NoP5XI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QdT_x9RwEeKiLbHSN_MIRQ" x="513" y="27" width="262"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_QdT_x9RwEeKiLbHSN_MIRQ" x="440" y="40" width="281"/>
</children>
<children xmi:type="notation:Shape" xmi:id="__QZyYNRwEeKiLbHSN_MIRQ" type="1026" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__QaZcNRwEeKiLbHSN_MIRQ" source="ShadowFigure">
@@ -1010,7 +1082,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4NqsInI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#__QLv8NRwEeKiLbHSN_MIRQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="__QZyYdRwEeKiLbHSN_MIRQ" x="513" y="126" width="109" height="73"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="__QZyYdRwEeKiLbHSN_MIRQ" x="440" y="120" width="109" height="73"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_EOs4YNRxEeKiLbHSN_MIRQ" type="1002" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_EOtfcNRxEeKiLbHSN_MIRQ" source="ShadowFigure">
@@ -1024,7 +1096,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_EOtfdtRxEeKiLbHSN_MIRQ" type="3"/>
<element xmi:type="uml:Comment" href="FCM.profile.uml#_EOljoNRxEeKiLbHSN_MIRQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EOs4YdRxEeKiLbHSN_MIRQ" x="513" y="234" width="262" height="73"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_EOs4YdRxEeKiLbHSN_MIRQ" x="443" y="231" width="278" height="73"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_0NN94NTVEeKiLbHSN_MIRQ" type="1002" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0NN94tTVEeKiLbHSN_MIRQ" source="ShadowFigure">
@@ -1038,49 +1110,51 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_0NN96NTVEeKiLbHSN_MIRQ" type="3"/>
<element xmi:type="uml:Comment" href="FCM.profile.uml#_0NGpINTVEeKiLbHSN_MIRQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0NN94dTVEeKiLbHSN_MIRQ" x="144" y="243" width="298"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0NN94dTVEeKiLbHSN_MIRQ" x="80" y="240" width="298"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_uxB-EYKhEd-aI_x8ivV7vQ"/>
<element xmi:type="uml:Profile" href="FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
- <edges xmi:type="notation:Connector" xmi:id="_aT5DUNRwEeKiLbHSN_MIRQ" type="1013" source="_C-RnwNRwEeKiLbHSN_MIRQ" target="_1gsUAIKhEd-aI_x8ivV7vQ" lineColor="0">
+ <edges xmi:type="notation:Connector" xmi:id="_aT5DUNRwEeKiLbHSN_MIRQ" type="1013" source="_C-RnwNRwEeKiLbHSN_MIRQ" target="_1gsUAIKhEd-aI_x8ivV7vQ" routing="Rectilinear" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_aT5DUdRwEeKiLbHSN_MIRQ" fontName="Sans Serif"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_aTxukNRwEeKiLbHSN_MIRQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_aT5DUtRwEeKiLbHSN_MIRQ" points="[-1, -4, 18, 74]$[50, -79, 69, -1]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aT8tsNRwEeKiLbHSN_MIRQ" id="(0.5310344827586206,0.07547169811320754)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aT8tsdRwEeKiLbHSN_MIRQ" id="(0.5302013422818792,0.7551020408163265)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aT8tsNRwEeKiLbHSN_MIRQ" id="(0.4697986577181208,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_aT8tsdRwEeKiLbHSN_MIRQ" id="(0.4697986577181208,0.8163265306122449)"/>
</edges>
- <edges xmi:type="notation:Connector" xmi:id="_eio7sNRwEeKiLbHSN_MIRQ" type="1013" source="_HjQO0NRwEeKiLbHSN_MIRQ" target="_QdTYsNRwEeKiLbHSN_MIRQ" lineColor="0">
+ <edges xmi:type="notation:Connector" xmi:id="_eio7sNRwEeKiLbHSN_MIRQ" type="1013" source="_HjQO0NRwEeKiLbHSN_MIRQ" target="_QdTYsNRwEeKiLbHSN_MIRQ" routing="Rectilinear" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_eio7sdRwEeKiLbHSN_MIRQ" fontName="Sans Serif"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_eiejoNRwEeKiLbHSN_MIRQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_eio7stRwEeKiLbHSN_MIRQ" points="[-6, -7, -2, 71]$[-6, -53, -2, 25]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eitNINRwEeKiLbHSN_MIRQ" id="(0.5419847328244275,0.07)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DAZSMNRxEeKiLbHSN_MIRQ" id="(0.758893280632411,0.8)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_eitNINRwEeKiLbHSN_MIRQ" id="(0.47794117647058826,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_DAZSMNRxEeKiLbHSN_MIRQ" id="(0.7061068702290076,1.0)"/>
</edges>
- <edges xmi:type="notation:Connector" xmi:id="_B_LFwNRxEeKiLbHSN_MIRQ" type="1013" source="__QZyYNRwEeKiLbHSN_MIRQ" target="_QdTYsNRwEeKiLbHSN_MIRQ" lineColor="0">
+ <edges xmi:type="notation:Connector" xmi:id="_B_LFwNRxEeKiLbHSN_MIRQ" type="1013" source="__QZyYNRwEeKiLbHSN_MIRQ" target="_QdTYsNRwEeKiLbHSN_MIRQ" routing="Rectilinear" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_B_LFwdRxEeKiLbHSN_MIRQ" fontName="Sans Serif"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_B_Ci4NRxEeKiLbHSN_MIRQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_B_LFwtRxEeKiLbHSN_MIRQ" points="[-4, -12, 0, 64]$[55, -72, 59, 4]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_B_OJENRxEeKiLbHSN_MIRQ" id="(0.5,0.12)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_B_OJEdRxEeKiLbHSN_MIRQ" id="(0.20553359683794467,0.82)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_B_OJENRxEeKiLbHSN_MIRQ" id="(0.5045871559633027,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_B_OJEdRxEeKiLbHSN_MIRQ" id="(0.2099236641221374,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_r5AsANTVEeKiLbHSN_MIRQ" type="1022" source="_EOs4YNRxEeKiLbHSN_MIRQ" target="_HjQO0NRwEeKiLbHSN_MIRQ" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_r5AsAdTVEeKiLbHSN_MIRQ" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_r5BTENTVEeKiLbHSN_MIRQ" points="[-3, -16, 7, 63]$[-14, -42, -4, 37]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_r5ChMNTVEeKiLbHSN_MIRQ" id="(0.7175572519083969,0.1095890410958904)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_r5ChMNTVEeKiLbHSN_MIRQ" id="(0.7519083969465649,0.08181818181818182)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n8bLQKYfEeSti6341zpcDg" id="(0.425531914893617,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_s1YNoNTVEeKiLbHSN_MIRQ" type="1022" source="_EOs4YNRxEeKiLbHSN_MIRQ" target="__QZyYNRwEeKiLbHSN_MIRQ" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_s1YNodTVEeKiLbHSN_MIRQ" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_s1YNotTVEeKiLbHSN_MIRQ" points="[-22, -16, 78, 63]$[-98, -42, 2, 37]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s1ZbwNTVEeKiLbHSN_MIRQ" id="(0.193717277486911,0.19047619047619047)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_s1ZbwNTVEeKiLbHSN_MIRQ" id="(0.22900763358778625,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_n8Nv4KYfEeSti6341zpcDg" id="(0.5779816513761468,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_7Qz8cNTVEeKiLbHSN_MIRQ" type="1022" source="_0NN94NTVEeKiLbHSN_MIRQ" target="_C-RnwNRwEeKiLbHSN_MIRQ" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_7Qz8cdTVEeKiLbHSN_MIRQ" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7Qz8ctTVEeKiLbHSN_MIRQ" points="[-4, -11, -15, 81]$[-21, -55, -32, 37]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7Q1xoNTVEeKiLbHSN_MIRQ" id="(0.5369127516778524,0.05)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8VtvANTVEeKiLbHSN_MIRQ" id="(0.540268456375839,0.958904109589041)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7Q1xoNTVEeKiLbHSN_MIRQ" id="(0.4697986577181208,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8VtvANTVEeKiLbHSN_MIRQ" id="(0.4697986577181208,1.0)"/>
</edges>
</notation:Diagram>
<notation:Diagram xmi:id="_2t0Q4JMoEd-I9dVdNhZAGQ" type="PapyrusUMLProfileDiagram" name="Deployment" measurementUnit="Pixel">
@@ -1684,6 +1758,12 @@
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8VyVALmNEeKsCfS4vGDjZw" source="CustomAppearance_Annotation">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8VyVAbmNEeKsCfS4vGDjZw" key="CustomAppearance_MaskValue" value="24"/>
</eAnnotations>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_wnrT4KYOEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_xdmfIMuHEd2H_o0jIC6qDQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_gQNOoZWJEd-xqrYFQVL_qg" x="65" y="5"/>
</children>
@@ -1691,6 +1771,12 @@
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8tsesLmNEeKsCfS4vGDjZw" source="CustomAppearance_Annotation">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_8ttFwLmNEeKsCfS4vGDjZw" key="CustomAppearance_MaskValue" value="24"/>
</eAnnotations>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_xExfkKYOEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_wa_yoMuHEd2H_o0jIC6qDQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_gQxPUZWJEd-xqrYFQVL_qg" x="65" y="5"/>
</children>
@@ -1705,6 +1791,12 @@
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9LnJwLmNEeKsCfS4vGDjZw" source="CustomAppearance_Annotation">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_9Lnw0LmNEeKsCfS4vGDjZw" key="CustomAppearance_MaskValue" value="24"/>
</eAnnotations>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_xgEUcKYOEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_nkb3gOSBEeCPMMwBhvVAnA"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_nk6YoOSBEeCPMMwBhvVAnA"/>
</children>
@@ -1722,7 +1814,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4RA7EnI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_tBRZYMtpEd2H_o0jIC6qDQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VSgyAZWJEd-xqrYFQVL_qg" x="450" y="165" width="271" height="106"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VSgyAZWJEd-xqrYFQVL_qg" x="420" y="140" width="281" height="106"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_V3iKoJWJEd-xqrYFQVL_qg" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_V3ixsJWJEd-xqrYFQVL_qg" source="ShadowFigure">
@@ -1736,7 +1828,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_V3ixtpWJEd-xqrYFQVL_qg" type="1034"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_V3ixt5WJEd-xqrYFQVL_qg" type="1071">
- <children xmi:type="notation:Shape" xmi:id="_ZDvA4JWJEd-xqrYFQVL_qg" type="3002" fontName="Sans Serif" fontHeight="10" lineColor="0">
+ <children xmi:type="notation:Shape" xmi:id="_ZDvA4JWJEd-xqrYFQVL_qg" type="3002" fontName="Sans Serif" fontHeight="10" gradient="16777215, -1, 1" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VMJbgJjPEd-YabZhJFlJ9g" source="Stereotype_Annotation">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dFn5MJjPEd-YabZhJFlJ9g" key="StereotypeWithQualifiedNameList" value=""/>
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_dFn5MZjPEd-YabZhJFlJ9g" key="StereotypeList" value="Ecore::EReference"/>
@@ -1747,6 +1839,12 @@
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0aLJULmNEeKsCfS4vGDjZw" source="CustomAppearance_Annotation">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_-6a4AOIpEeKl1vaXi7stuw" key="CustomAppearance_MaskValue" value="28"/>
</eAnnotations>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_upIjkKYOEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_nZNicMweEd2H_o0jIC6qDQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_ZDvA4ZWJEd-xqrYFQVL_qg" x="48" y="12"/>
</children>
@@ -1761,6 +1859,12 @@
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_06XsULmNEeKsCfS4vGDjZw" source="CustomAppearance_Annotation">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="__X9voOIpEeKl1vaXi7stuw" key="CustomAppearance_MaskValue" value="28"/>
</eAnnotations>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_vyRV4KYOEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_ml85gMweEd2H_o0jIC6qDQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_ZEVd0ZWJEd-xqrYFQVL_qg" x="48" y="12"/>
</children>
@@ -1768,6 +1872,12 @@
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1UsQ0LmNEeKsCfS4vGDjZw" source="CustomAppearance_Annotation">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1Us34LmNEeKsCfS4vGDjZw" key="CustomAppearance_MaskValue" value="24"/>
</eAnnotations>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_wNJUAKYOEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_AorBUMtrEd2H_o0jIC6qDQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_ZFG54ZWJEd-xqrYFQVL_qg" x="48" y="12"/>
</children>
@@ -1785,7 +1895,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4RElcnI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_pP-ckMtqEd2H_o0jIC6qDQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V3iKoZWJEd-xqrYFQVL_qg" x="108" y="165" width="307" height="106"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_V3iKoZWJEd-xqrYFQVL_qg" x="60" y="140" width="321" height="106"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_iw1YUJWJEd-xqrYFQVL_qg" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_iw1YUpWJEd-xqrYFQVL_qg" source="ShadowFigure">
@@ -1800,7 +1910,7 @@
<children xmi:type="notation:DecorationNode" xmi:id="_iw1_ZJWJEd-xqrYFQVL_qg" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_4RHowHI0EeOZxcUd14vDog" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_4RHowXI0EeOZxcUd14vDog" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_SlLeYatKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_SlLeYatKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4RHownI0EeOZxcUd14vDog"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_4RIP0HI0EeOZxcUd14vDog" visible="false" type="compartment_shape_display">
@@ -1808,7 +1918,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4RIP0nI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Port"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iw1YUZWJEd-xqrYFQVL_qg" x="108" y="63" width="307"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_iw1YUZWJEd-xqrYFQVL_qg" x="60" y="40" width="321"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_jWfqIJWJEd-xqrYFQVL_qg" type="1031" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jWfqIpWJEd-xqrYFQVL_qg" source="ShadowFigure">
@@ -1823,7 +1933,7 @@
<children xmi:type="notation:DecorationNode" xmi:id="_jWgRMJWJEd-xqrYFQVL_qg" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_4RKsEHI0EeOZxcUd14vDog" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_4RKsEXI0EeOZxcUd14vDog" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4RKsEnI0EeOZxcUd14vDog"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_4RLTIHI0EeOZxcUd14vDog" visible="false" type="compartment_shape_display">
@@ -1831,7 +1941,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4RLTInI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jWfqIZWJEd-xqrYFQVL_qg" x="450" y="60" width="271"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jWfqIZWJEd-xqrYFQVL_qg" x="420" y="40" width="281"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_KCSSsDyEEeCYGtteoBz6vQ" type="1026" fontName="Sans Serif" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KCV9EDyEEeCYGtteoBz6vQ" source="ShadowFigure">
@@ -1856,6 +1966,12 @@
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ESNcE-IqEeKl1vaXi7stuw" key="PropStereoDisplay" value=""/>
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_ESNcFOIqEeKl1vaXi7stuw" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_yKApUKYOEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_RgadAOHNEeKl1vaXi7stuw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_Rh4coeHNEeKl1vaXi7stuw"/>
</children>
@@ -1873,7 +1989,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4RNvYnI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_KBrOsDyEEeCYGtteoBz6vQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KCSSsTyEEeCYGtteoBz6vQ" x="108" y="306" width="307" height="82"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KCSSsTyEEeCYGtteoBz6vQ" x="55" y="280" width="326" height="82"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_hlecEOHNEeKl1vaXi7stuw" type="1002" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_hlfDIOHNEeKl1vaXi7stuw" source="ShadowFigure">
@@ -1887,7 +2003,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_hlgRQeHNEeKl1vaXi7stuw" type="3"/>
<element xmi:type="uml:Comment" href="FCM.profile.uml#_hkxRcOHNEeKl1vaXi7stuw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hlecEeHNEeKl1vaXi7stuw" x="486" y="306" width="307" height="73"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_hlecEeHNEeKl1vaXi7stuw" x="433" y="280" width="307" height="73"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_UBBU8ZWJEd-xqrYFQVL_qg"/>
<element xmi:type="uml:Profile" href="FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
@@ -1895,11 +2011,15 @@
<styles xmi:type="notation:FontStyle" xmi:id="_ixb1QZWJEd-xqrYFQVL_qg" fontName="Sans Serif" fontHeight="10"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_y0ITYMtqEd2H_o0jIC6qDQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_ixb1QpWJEd-xqrYFQVL_qg" points="[-93, -85, 172, 160]$[-265, -245, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oQip0aYOEeSti6341zpcDg" id="(0.4984423676012461,0.18867924528301888)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oQjQ4KYOEeSti6341zpcDg" id="(0.4560260586319218,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_jXDq0JWJEd-xqrYFQVL_qg" type="1013" source="_VSgyAJWJEd-xqrYFQVL_qg" target="_jWfqIJWJEd-xqrYFQVL_qg" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_jXDq0ZWJEd-xqrYFQVL_qg" fontName="Sans Serif" fontHeight="10"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_PlrooMtqEd2H_o0jIC6qDQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_jXDq0pWJEd-xqrYFQVL_qg" points="[-90, -42, 450, 203]$[-540, -245, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oQrMsKYOEeSti6341zpcDg" id="(0.498220640569395,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oQrMsaYOEeSti6341zpcDg" id="(0.498220640569395,0.8)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_OVP8sDyEEeCYGtteoBz6vQ" type="4002" source="_KCSSsDyEEeCYGtteoBz6vQ" target="_V3iKoJWJEd-xqrYFQVL_qg" lineColor="0">
<children xmi:type="notation:DecorationNode" xmi:id="_OVQjwDyEEeCYGtteoBz6vQ" type="6007">
@@ -1908,14 +2028,15 @@
<styles xmi:type="notation:FontStyle" xmi:id="_OVP8sTyEEeCYGtteoBz6vQ" fontName="Sans Serif" fontHeight="10"/>
<element xmi:type="uml:Generalization" href="FCM.profile.uml#_OUdSgDyEEeCYGtteoBz6vQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OVP8sjyEEeCYGtteoBz6vQ" points="[0, -1, -4, 109]$[6, -173, 2, -63]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OVU1MDyEEeCYGtteoBz6vQ" id="(0.5022026431718062,0.05)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OVU1MDyEEeCYGtteoBz6vQ" id="(0.495114006514658,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_oQip0KYOEeSti6341zpcDg" id="(0.4984423676012461,0.9433962264150944)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_QYCQUOIoEeKl1vaXi7stuw" type="1022" source="_hlecEOHNEeKl1vaXi7stuw" target="_KCSSsDyEEeCYGtteoBz6vQ" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_QYCQUeIoEeKl1vaXi7stuw" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_QYCQUuIoEeKl1vaXi7stuw" points="[-19, 5, 114, 0]$[-90, 1, 43, -4]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QYFToOIoEeKl1vaXi7stuw" id="(0.06188925081433225,0.2916666666666667)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QYF6sOIoEeKl1vaXi7stuw" id="(0.8512110726643599,0.4024390243902439)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QYFToOIoEeKl1vaXi7stuw" id="(0.0,0.3188405797101449)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_QYF6sOIoEeKl1vaXi7stuw" id="(1.0,0.2682926829268293)"/>
</edges>
</notation:Diagram>
<notation:Diagram xmi:id="_1hRXQObEEd-oHsJhS1620Q" type="PapyrusUMLProfileDiagram" name="Templates" measurementUnit="Pixel">
@@ -1935,6 +2056,12 @@
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DQhgoISAEeO2oJGF2cvpFw" source="CustomAppearance_Annotation">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_DQiHsISAEeO2oJGF2cvpFw" key="CustomAppearance_MaskValue" value="24"/>
</eAnnotations>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_2yvH8KYOEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_AROS4HI1EeOZxcUd14vDog"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_ASHDsXI1EeOZxcUd14vDog"/>
</children>
@@ -1952,7 +2079,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4TtCsnI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_BOnDoFLpEd6rYflXebIz1g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3dcwEebEEd-oHsJhS1620Q" x="240" y="160" width="181" height="61"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_3dcwEebEEd-oHsJhS1620Q" x="240" y="160" width="221" height="61"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_8I7AwHI0EeOZxcUd14vDog" type="1026" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8I818HI0EeOZxcUd14vDog" source="ShadowFigure">
@@ -1982,7 +2109,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_8JGm8nI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_8IkbcHI0EeOZxcUd14vDog"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8I7AwXI0EeOZxcUd14vDog" x="464" y="160" width="136" height="61"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8I7AwXI0EeOZxcUd14vDog" x="500" y="160" width="136" height="61"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_NdO50HI4EeOCrdvV8oxOKA" type="1031" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NdPg4HI4EeOCrdvV8oxOKA" source="ShadowFigure">
@@ -1995,16 +2122,16 @@
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NdPg5XI4EeOCrdvV8oxOKA" key="QualifiedNameDepth" value="1000"/>
</eAnnotations>
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_NdQvAHI4EeOCrdvV8oxOKA" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NdQvAXI4EeOCrdvV8oxOKA" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NdQvAnI4EeOCrdvV8oxOKA" key="StereotypeList" value="StandardProfileL2::Metaclass"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NdQvA3I4EeOCrdvV8oxOKA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NdQvBHI4EeOCrdvV8oxOKA" key="PropStereoDisplay" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_NdQvBXI4EeOCrdvV8oxOKA" key="StereotypePropertyLocation" value="Compartment"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pf2-cKYOEeSti6341zpcDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pf2-caYOEeSti6341zpcDg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pf2-cqYOEeSti6341zpcDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pf2-c6YOEeSti6341zpcDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pf2-dKYOEeSti6341zpcDg" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_NdPg5nI4EeOCrdvV8oxOKA" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_Ndk4EHI4EeOCrdvV8oxOKA" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_Ndk4EXI4EeOCrdvV8oxOKA" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_Ndk4EnI4EeOCrdvV8oxOKA"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_NdlfIHI4EeOCrdvV8oxOKA" visible="false" type="compartment_shape_display">
@@ -2012,7 +2139,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_NdlfInI4EeOCrdvV8oxOKA"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NdPg53I4EeOCrdvV8oxOKA" x="464" y="40" width="136"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_NdPg53I4EeOCrdvV8oxOKA" x="500" y="40" width="136" height="41"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_MyjSYHJqEeOMF7YEvnQt5g" type="1002" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Myj5cHJqEeOMF7YEvnQt5g" source="ShadowFigure">
@@ -2026,7 +2153,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_Myj5dnJqEeOMF7YEvnQt5g" type="3"/>
<element xmi:type="uml:Comment" href="FCM.profile.uml#_MyfoAHJqEeOMF7YEvnQt5g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MyjSYXJqEeOMF7YEvnQt5g" x="621" y="126" width="208" height="82"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_MyjSYXJqEeOMF7YEvnQt5g" x="657" y="126" width="208" height="82"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_q5ihwIRKEeO2oJGF2cvpFw" type="1026">
<children xmi:type="notation:DecorationNode" xmi:id="_q5ihwoRKEeO2oJGF2cvpFw" type="1034"/>
@@ -2038,6 +2165,19 @@
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_CPF40ISAEeO2oJGF2cvpFw" source="CustomAppearance_Annotation">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_CPGf4ISAEeO2oJGF2cvpFw" key="CustomAppearance_MaskValue" value="24"/>
</eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_2HZE4KYOEeSti6341zpcDg" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2HZr8KYOEeSti6341zpcDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2HZr8aYOEeSti6341zpcDg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2HZr8qYOEeSti6341zpcDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2HZr86YOEeSti6341zpcDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_2HZr9KYOEeSti6341zpcDg" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_2Rdm4KYOEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_veM_wIRKEeO2oJGF2cvpFw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_veWwwYRKEeO2oJGF2cvpFw"/>
</children>
@@ -2060,27 +2200,27 @@
</children>
<children xmi:type="notation:Shape" xmi:id="_C-uzwISFEeOY0rziOe6V0Q" type="1031">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_C-wo8ISFEeOY0rziOe6V0Q" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_C-wo8YSFEeOY0rziOe6V0Q" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_C-wo8oSFEeOY0rziOe6V0Q" key="StereotypeList" value="StandardProfileL2::Metaclass"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_C-wo84SFEeOY0rziOe6V0Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_C-wo9ISFEeOY0rziOe6V0Q" key="PropStereoDisplay" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_C-xQAISFEeOY0rziOe6V0Q" key="StereotypePropertyLocation" value="Compartment"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pf8eAKYOEeSti6341zpcDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pf8eAaYOEeSti6341zpcDg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pf8eAqYOEeSti6341zpcDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pf8eA6YOEeSti6341zpcDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Pf9FEKYOEeSti6341zpcDg" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_C-va0ISFEeOY0rziOe6V0Q" type="1084"/>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_C-va0YSFEeOY0rziOe6V0Q" x="40" y="40" width="161"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_C-va0YSFEeOY0rziOe6V0Q" x="40" y="40" width="161" height="41"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_9ic70ISFEeOY0rziOe6V0Q" type="1031">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_COVcIISGEeOY0rziOe6V0Q" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_COWDMISGEeOY0rziOe6V0Q" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_COWDMYSGEeOY0rziOe6V0Q" key="StereotypeList" value="StandardProfileL2::Metaclass"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_COWDMoSGEeOY0rziOe6V0Q" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_COWDM4SGEeOY0rziOe6V0Q" key="PropStereoDisplay" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_COWDNISGEeOY0rziOe6V0Q" key="StereotypePropertyLocation" value="Compartment"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgCkoKYOEeSti6341zpcDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgCkoaYOEeSti6341zpcDg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgCkoqYOEeSti6341zpcDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgCko6YOEeSti6341zpcDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgCkpKYOEeSti6341zpcDg" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_9ic70oSFEeOY0rziOe6V0Q" type="1084"/>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9ic70YSFEeOY0rziOe6V0Q" x="240" y="40" width="181"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_9ic70YSFEeOY0rziOe6V0Q" x="240" y="40" width="221" height="41"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_1hRXQebEEd-oHsJhS1620Q"/>
<element xmi:type="uml:Profile" href="FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
@@ -2088,20 +2228,22 @@
<styles xmi:type="notation:FontStyle" xmi:id="_SdsjAXI4EeOCrdvV8oxOKA" fontName="Sans Serif"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_SdnDcHI4EeOCrdvV8oxOKA"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_SdsjAnI4EeOCrdvV8oxOKA" points="[0, -10, 0, 65]$[0, -50, 0, 25]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Sd5XUHI4EeOCrdvV8oxOKA" id="(0.5,0.136986301369863)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Sd5XUHI4EeOCrdvV8oxOKA" id="(0.4485294117647059,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="__PAwsKYOEeSti6341zpcDg" id="(0.4485294117647059,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_OUiCgHJqEeOMF7YEvnQt5g" type="1022" source="_MyjSYHJqEeOMF7YEvnQt5g" target="_8I7AwHI0EeOZxcUd14vDog" routing="Rectilinear" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_OUiCgXJqEeOMF7YEvnQt5g" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_OUiCgnJqEeOMF7YEvnQt5g" points="[29, 21, -58, -43]$[64, 58, -23, -6]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OUm7AHJqEeOMF7YEvnQt5g" id="(0.7716535433070866,0.4146341463414634)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OUniEHJqEeOMF7YEvnQt5g" id="(0.16911764705882354,0.3561643835616438)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OUm7AHJqEeOMF7YEvnQt5g" id="(0.014423076923076924,0.391304347826087)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OUniEHJqEeOMF7YEvnQt5g" id="(1.0,0.32786885245901637)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_KK-_EISFEeOY0rziOe6V0Q" type="1013" source="_q5ihwIRKEeO2oJGF2cvpFw" target="_C-uzwISFEeOY0rziOe6V0Q">
<styles xmi:type="notation:FontStyle" xmi:id="_KK-_EYSFEeOY0rziOe6V0Q"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_KKt5UISFEeOY0rziOe6V0Q"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_KK-_EoSFEeOY0rziOe6V0Q" points="[-2, -10, 1, 95]$[-2, -80, 1, 25]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KLCpcISFEeOY0rziOe6V0Q" id="(0.515527950310559,0.16393442622950818)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KLCpcISFEeOY0rziOe6V0Q" id="(0.4968944099378882,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_4aWmAKYOEeSti6341zpcDg" id="(0.4968944099378882,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_9ik3oISFEeOY0rziOe6V0Q" type="1013" source="_3dcwEObEEd-oHsJhS1620Q" target="_9ic70ISFEeOY0rziOe6V0Q">
<styles xmi:type="notation:FontStyle" xmi:id="_9ik3oYSFEeOY0rziOe6V0Q"/>
@@ -2123,26 +2265,58 @@
<children xmi:type="notation:DecorationNode" xmi:id="_x96VhMniEeCWXsgs0yuyKQ" type="1034"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_x96VhcniEeCWXsgs0yuyKQ" type="1071">
<children xmi:type="notation:Shape" xmi:id="_Tn8lEEzmEeGSD5wnU7hiAw" type="3002" fontName="Sans Serif" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_HiOkEKYPEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#__5rAUGE_Ed-eArNXja7SuA"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_Tn8lEUzmEeGSD5wnU7hiAw"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_Tn9zMEzmEeGSD5wnU7hiAw" type="3002" fontName="Sans Serif" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_H6cPwKYPEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_C5WBYGGLEd-yH9S4VNNbSQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_Tn9zMUzmEeGSD5wnU7hiAw"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_Tn_oYEzmEeGSD5wnU7hiAw" type="3002" fontName="Sans Serif" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_IUOBsKYPEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_BZCjMJOGEd-5qPBhYeIVtw"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_Tn_oYUzmEeGSD5wnU7hiAw"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_ToAPcEzmEeGSD5wnU7hiAw" type="3002" fontName="Sans Serif" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_IoN7wKYPEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_D-cckJPxEd-UMN59oR7XbA"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_ToAPcUzmEeGSD5wnU7hiAw"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_ToAPckzmEeGSD5wnU7hiAw" type="3002" fontName="Sans Serif" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_JVX8sKYPEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_HtMmQJPxEd-UMN59oR7XbA"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_ToAPc0zmEeGSD5wnU7hiAw"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_8hF2YNTGEeKiLbHSN_MIRQ" type="3002" fontName="Sans Serif" lineColor="0">
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_J0VwoKYPEeSti6341zpcDg" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="FCM.profile.uml#_8g_IsNTGEeKiLbHSN_MIRQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_8hF2YdTGEeKiLbHSN_MIRQ"/>
</children>
@@ -2160,7 +2334,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4WIEknI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_0KEH0JOCEd-5qPBhYeIVtw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x935QcniEeCWXsgs0yuyKQ" x="111" y="253" width="223" height="135"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_x935QcniEeCWXsgs0yuyKQ" x="60" y="160" width="261" height="135"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_0A7WIMniEeCWXsgs0yuyKQ" type="1031" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0A7WIsniEeCWXsgs0yuyKQ" source="ShadowFigure">
@@ -2175,7 +2349,7 @@
<children xmi:type="notation:DecorationNode" xmi:id="_0A79NcniEeCWXsgs0yuyKQ" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_4WLu8HI0EeOZxcUd14vDog" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_4WLu8XI0EeOZxcUd14vDog" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_SksWMKtKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_SksWMKtKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4WLu8nI0EeOZxcUd14vDog"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_4WLu83I0EeOZxcUd14vDog" visible="false" type="compartment_shape_display">
@@ -2183,7 +2357,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4WLu9XI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Node"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0A7WIcniEeCWXsgs0yuyKQ" x="108" y="126" width="226"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0A7WIcniEeCWXsgs0yuyKQ" x="60" y="40" width="261" height="51"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_7VhVgLMkEeKKMNfz1DLnog" type="1026" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7VkY0LMkEeKKMNfz1DLnog" source="ShadowFigure">
@@ -2213,7 +2387,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4WOLMnI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_361C4FapEd-w9f5DG2hQCA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7VhVgbMkEeKKMNfz1DLnog" x="396" y="256" width="145" height="132"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7VhVgbMkEeKKMNfz1DLnog" x="360" y="160" width="145" height="132"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_8588sLMkEeKKMNfz1DLnog" type="1031" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_859jwLMkEeKKMNfz1DLnog" source="ShadowFigure">
@@ -2226,16 +2400,16 @@
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_85-K0bMkEeKKMNfz1DLnog" key="QualifiedNameDepth" value="1000"/>
</eAnnotations>
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_86DDULMkEeKKMNfz1DLnog" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_86DqYLMkEeKKMNfz1DLnog" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_86DqYbMkEeKKMNfz1DLnog" key="StereotypeList" value="StandardProfileL2::Metaclass"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_86DqYrMkEeKKMNfz1DLnog" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_86DqY7MkEeKKMNfz1DLnog" key="PropStereoDisplay" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_86DqZLMkEeKKMNfz1DLnog" key="StereotypePropertyLocation" value="Compartment"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgIEMKYOEeSti6341zpcDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgIEMaYOEeSti6341zpcDg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgIEMqYOEeSti6341zpcDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgIEM6YOEeSti6341zpcDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgIENKYOEeSti6341zpcDg" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_85-K0rMkEeKKMNfz1DLnog" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_4WQncHI0EeOZxcUd14vDog" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_4WQncXI0EeOZxcUd14vDog" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4WQncnI0EeOZxcUd14vDog"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_4WROgHI0EeOZxcUd14vDog" visible="false" type="compartment_shape_display">
@@ -2243,7 +2417,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4WROgnI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8588sbMkEeKKMNfz1DLnog" x="396" y="126" width="145"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8588sbMkEeKKMNfz1DLnog" x="360" y="40" width="145"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_w-KvwcniEeCWXsgs0yuyKQ"/>
<element xmi:type="uml:Profile" href="FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
@@ -2251,11 +2425,15 @@
<styles xmi:type="notation:FontStyle" xmi:id="_0CNvkcniEeCWXsgs0yuyKQ" fontName="Sans Serif"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_biaAIJODEd-5qPBhYeIVtw"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_0CNvksniEeCWXsgs0yuyKQ" points="[-27, -50, 134, 253]$[-161, -303, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Df7MQKYPEeSti6341zpcDg" id="(0.5363984674329502,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Df7MQaYPEeSti6341zpcDg" id="(0.5363984674329502,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_-yQiILMkEeKKMNfz1DLnog" type="1013" source="_7VhVgLMkEeKKMNfz1DLnog" target="_8588sLMkEeKKMNfz1DLnog" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_-yQiIbMkEeKKMNfz1DLnog" fontName="Sans Serif"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_-jKo0FapEd-w9f5DG2hQCA"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_-yQiIrMkEeKKMNfz1DLnog" points="[0, -66, 0, 105]$[0, -146, 0, 25]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Df260KYPEeSti6341zpcDg" id="(0.496551724137931,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Df260aYPEeSti6341zpcDg" id="(0.496551724137931,1.0)"/>
</edges>
</notation:Diagram>
<notation:Diagram xmi:id="_hbTVgMnpEeK-j9yGRHQ3Jw" type="PapyrusUMLProfileDiagram" name="Distribution" measurementUnit="Pixel">
@@ -2287,7 +2465,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4ZXl0nI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_maLdwLCJEd-D5aqfqbr7IQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jOZq0cnpEeK-j9yGRHQ3Jw" x="54" y="149" width="136" height="73"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_jOZq0cnpEeK-j9yGRHQ3Jw" x="60" y="140" width="141" height="73"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_nq0y0MnpEeK-j9yGRHQ3Jw" type="1031" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nq0y0snpEeK-j9yGRHQ3Jw" source="ShadowFigure">
@@ -2300,16 +2478,16 @@
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nq1Z5MnpEeK-j9yGRHQ3Jw" key="QualifiedNameDepth" value="1000"/>
</eAnnotations>
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_nq2A8MnpEeK-j9yGRHQ3Jw" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nq2A8cnpEeK-j9yGRHQ3Jw" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nq2A8snpEeK-j9yGRHQ3Jw" key="StereotypeList" value="StandardProfileL2::Metaclass"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nq2A88npEeK-j9yGRHQ3Jw" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nq2A9MnpEeK-j9yGRHQ3Jw" key="PropStereoDisplay" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nq2A9cnpEeK-j9yGRHQ3Jw" key="StereotypePropertyLocation" value="Compartment"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgNjwKYOEeSti6341zpcDg" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgNjwaYOEeSti6341zpcDg" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgNjwqYOEeSti6341zpcDg" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgNjw6YOEeSti6341zpcDg" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PgNjxKYOEeSti6341zpcDg" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_nq1Z5cnpEeK-j9yGRHQ3Jw" type="1084"/>
<children xmi:type="notation:BasicCompartment" xmi:id="_4ZbQMHI0EeOZxcUd14vDog" visible="false" type="AppliedStereotypeCompartement">
<styles xmi:type="notation:TitleStyle" xmi:id="_4ZbQMXI0EeOZxcUd14vDog" showTitle="true"/>
- <element xmi:type="l2:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
+ <element xmi:type="standard:Metaclass" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_Sh6H8KtKEeGF4uwJob34Mw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4ZbQMnI0EeOZxcUd14vDog"/>
</children>
<children xmi:type="notation:BasicCompartment" xmi:id="_4Zb3QHI0EeOZxcUd14vDog" visible="false" type="compartment_shape_display">
@@ -2317,7 +2495,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4Zb3QnI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nq1Z5snpEeK-j9yGRHQ3Jw" x="54" y="50" width="469"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nq1Z5snpEeK-j9yGRHQ3Jw" x="60" y="40" width="461" height="41"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_D8tI8NM-EeKflOoYwofqLA" type="1026" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_D8twANM-EeKflOoYwofqLA" source="ShadowFigure">
@@ -2347,7 +2525,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4ZdscnI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_D8dRUNM-EeKflOoYwofqLA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D8tI8dM-EeKflOoYwofqLA" x="387" y="149" width="136" height="73"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_D8tI8dM-EeKflOoYwofqLA" x="380" y="140" width="136" height="73"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_Md6NoNNBEeKflOoYwofqLA" type="1002" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Md60sNNBEeKflOoYwofqLA" source="ShadowFigure">
@@ -2361,7 +2539,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_Md60ttNBEeKflOoYwofqLA" type="3"/>
<element xmi:type="uml:Comment" href="FCM.profile.uml#_MdcTkNNBEeKflOoYwofqLA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Md6NodNBEeKflOoYwofqLA" x="585" y="77" width="190" height="91"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Md6NodNBEeKflOoYwofqLA" x="600" y="60" width="241" height="91"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_0dEvgNRsEeKiLbHSN_MIRQ" type="1026" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0dFWkNRsEeKiLbHSN_MIRQ" source="ShadowFigure">
@@ -2391,7 +2569,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4ZgIsnI0EeOZxcUd14vDog"/>
</children>
<element xmi:type="uml:Stereotype" href="FCM.profile.uml#_0c1e8NRsEeKiLbHSN_MIRQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0dEvgdRsEeKiLbHSN_MIRQ" x="225" y="149" width="136" height="73"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0dEvgdRsEeKiLbHSN_MIRQ" x="220" y="140" width="141" height="73"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_JQLLANRtEeKiLbHSN_MIRQ" type="1002" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JQLLAtRtEeKiLbHSN_MIRQ" source="ShadowFigure">
@@ -2405,7 +2583,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_JQLyE9RtEeKiLbHSN_MIRQ" type="3"/>
<element xmi:type="uml:Comment" href="FCM.profile.uml#_JPyJcNRtEeKiLbHSN_MIRQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JQLLAdRtEeKiLbHSN_MIRQ" x="216" y="252" width="289"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JQLLAdRtEeKiLbHSN_MIRQ" x="220" y="240" width="301" height="121"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_ikw0sNRtEeKiLbHSN_MIRQ" type="1002" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ikw0stRtEeKiLbHSN_MIRQ" source="ShadowFigure">
@@ -2419,7 +2597,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_ikxbxdRtEeKiLbHSN_MIRQ" type="3"/>
<element xmi:type="uml:Comment" href="FCM.profile.uml#_ikpf8NRtEeKiLbHSN_MIRQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ikw0sdRtEeKiLbHSN_MIRQ" x="585" y="211" width="190"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ikw0sdRtEeKiLbHSN_MIRQ" x="600" y="200" width="241"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_hbTVgcnpEeK-j9yGRHQ3Jw"/>
<element xmi:type="uml:Profile" href="FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
@@ -2427,33 +2605,36 @@
<styles xmi:type="notation:FontStyle" xmi:id="_k9rQEcnpEeK-j9yGRHQ3Jw" fontName="Sans Serif"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_5QfccLCJEd-D5aqfqbr7IQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_k9rQEsnpEeK-j9yGRHQ3Jw" points="[-61, -50, 301, 247]$[-362, -297, 0, 0]"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rHUH0MnpEeK-j9yGRHQ3Jw" id="(0.15565031982942432,0.84)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UX40oaYfEeSti6341zpcDg" id="(0.47794117647058826,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_rHUH0MnpEeK-j9yGRHQ3Jw" id="(0.13859275053304904,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_I02joNM-EeKflOoYwofqLA" type="1013" source="_D8tI8NM-EeKflOoYwofqLA" target="_nq0y0MnpEeK-j9yGRHQ3Jw" routing="Rectilinear" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_I02jodM-EeKflOoYwofqLA" fontName="Sans Serif"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_I0syoNM-EeKflOoYwofqLA"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_I02jotM-EeKflOoYwofqLA" points="[-4, -4, 85, 104]$[-71, -98, 18, 10]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_I09RUNM-EeKflOoYwofqLA" id="(0.496551724137931,0.03896103896103896)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_I09RUdM-EeKflOoYwofqLA" id="(0.8464818763326226,0.8)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_I09RUNM-EeKflOoYwofqLA" id="(0.5661764705882353,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_I09RUdM-EeKflOoYwofqLA" id="(0.8464818763326226,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_Fu3AYNRtEeKiLbHSN_MIRQ" type="1013" source="_0dEvgNRsEeKiLbHSN_MIRQ" target="_nq0y0MnpEeK-j9yGRHQ3Jw" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_Fu3AYdRtEeKiLbHSN_MIRQ" fontName="Sans Serif"/>
<element xmi:type="uml:Extension" href="FCM.profile.uml#_FutPYNRtEeKiLbHSN_MIRQ"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Fu3AYtRtEeKiLbHSN_MIRQ" points="[-3, -8, 4, 74]$[-3, -57, 4, 25]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Fu6qwNRtEeKiLbHSN_MIRQ" id="(0.5147058823529411,0.1095890410958904)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Fu6qwNRtEeKiLbHSN_MIRQ" id="(0.5441176470588235,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_UX40oKYfEeSti6341zpcDg" id="(0.4989339019189765,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_8VyiwNRtEeKiLbHSN_MIRQ" type="1022" source="_JQLLANRtEeKiLbHSN_MIRQ" target="_0dEvgNRsEeKiLbHSN_MIRQ" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_8VyiwdRtEeKiLbHSN_MIRQ" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_8VyiwtRtEeKiLbHSN_MIRQ" points="[-6, -12, 23, 48]$[-3, -49, 26, 11]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8V0_ANRtEeKiLbHSN_MIRQ" id="(0.4125,0.2)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8V0_AdRtEeKiLbHSN_MIRQ" id="(0.8088235294117647,0.7534246575342466)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8V0_ANRtEeKiLbHSN_MIRQ" id="(0.3944636678200692,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_8V0_AdRtEeKiLbHSN_MIRQ" id="(0.8085106382978723,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_9CWGwNRtEeKiLbHSN_MIRQ" type="1022" source="_ikw0sNRtEeKiLbHSN_MIRQ" target="_D8tI8NM-EeKflOoYwofqLA" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_9CWGwdRtEeKiLbHSN_MIRQ" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_9CWGwtRtEeKiLbHSN_MIRQ" points="[-95, -42, 77, 34]$[-157, -76, 15, 0]"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9CYjANRtEeKiLbHSN_MIRQ" id="(0.8897058823529411,0.547945205479452)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_ViowgKYfEeSti6341zpcDg" id="(0.0,0.09444444444444444)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_9CYjANRtEeKiLbHSN_MIRQ" id="(1.0,0.6986301369863014)"/>
</edges>
</notation:Diagram>
</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.uml
index 7d907578a37..8d05cbcae4e 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.uml
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/model/FCM.profile.uml
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
+<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Ecore="http://www.eclipse.org/uml2/schemas/Ecore/5" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/uml2/schemas/Ecore/5 pathmap://UML_PROFILES/Ecore.profile.uml#_z1OFcHjqEdy8S4Cr8Rc_NA">
<uml:Profile xmi:id="_5mvT0MtjEd2H_o0jIC6qDQ" name="FCM" metaclassReference="_NYUA4MtkEd2H_o0jIC6qDQ _pb8DsMtkEd2H_o0jIC6qDQ _WPBJkMtpEd2H_o0jIC6qDQ _WSSgAMtpEd2H_o0jIC6qDQ _4Sf2AMtpEd2H_o0jIC6qDQ _IDbl4MtvEd2H_o0jIC6qDQ _ofc4YMuHEd2H_o0jIC6qDQ _asQCAC5SEd6q9cO948d5Fw _5OunYGV9Ed6b6erIXzmEEA _nKCJAGu2Ed647PfocwT3eg _wo2GgMewEd6zpahAtGCOkA _9HS28MnvEd6fKfvcq7rbxA _Y3dP0DdMEd-Qn7_dAqT11Q _Zc-ksJODEd-5qPBhYeIVtw _wTDjYKvTEd-i17GN-GaZ6g _kK724LTaEd-jOpA9YHRXqw _03w64NXnEd-CUqOXH3INsw _eAlkcCm_EeKgOdm6HirHfA _4r98wIR_EeO2oJGF2cvpFw">
<ownedComment xmi:type="uml:Comment" xmi:id="_D0js0O69Ed2rSKyRUaSRjw">
<body>The associations between PortKind and Operation simply denote the fact that we want to target something that encapsulates the definition of interface mapping rules (i.e. the rules that determine the interfaces that are provided/required on a port &#xD;
@@ -140,9 +140,6 @@ For instance, we cound type a port with &quot;MyType&quot; and use an extended p
<ownedAttribute xmi:type="uml:Property" xmi:id="_r2VLUJD2Ed-I9dVdNhZAGQ" name="containerRule" visibility="public" type="_5SI38AAhEd-0dMgailnZgA" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_zTT6QJD2Ed-I9dVdNhZAGQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_zTVIYJD2Ed-I9dVdNhZAGQ" value="*"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_i5ZywO34EeCMv89l8IxFBg">
- <value xsi:nil="true"/>
- </defaultValue>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_DZQuYCNaEeKGuM7MKNu-KA" name="base_Package" association="_DaA8UCNaEeKGuM7MKNu-KA">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Package"/>
@@ -253,9 +250,6 @@ For instance, we cound type a port with &quot;MyType&quot; and use an extended p
<ownedAttribute xmi:type="uml:Property" xmi:id="_lznjEMttEd2H_o0jIC6qDQ" name="ic" visibility="public" type="_Z1W68MtlEd2H_o0jIC6qDQ" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_9HGQoMttEd2H_o0jIC6qDQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_9HQBoMttEd2H_o0jIC6qDQ" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_XdkcsEzvEeG_JK8KIEXPxQ">
- <value xsi:nil="true"/>
- </defaultValue>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_GEXGkMtuEd2H_o0jIC6qDQ" name="base_Property" isUnique="false" association="_F_vFQMtuEd2H_o0jIC6qDQ">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
@@ -457,17 +451,11 @@ For instance, we cound type a port with &quot;MyType&quot; and use an extended p
<ownedAttribute xmi:type="uml:Property" xmi:id="_JZaBAAAjEd-0dMgailnZgA" name="interceptionKind" visibility="public" type="_-ZqycAAhEd-0dMgailnZgA" isUnique="false">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_MIadkAAmEd-0dMgailnZgA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_MIcSwAAmEd-0dMgailnZgA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_KFrZsPS3EeCLI_ythlfGJw">
- <value xsi:nil="true"/>
- </defaultValue>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_3SMAIAAmEd-0dMgailnZgA" name="interceptionSet" visibility="public" isUnique="false">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Feature"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_uqZjkAApEd-0dMgailnZgA"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_uqkisAApEd-0dMgailnZgA" value="*"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_XpuwECm_EeKgOdm6HirHfA">
- <value xsi:nil="true"/>
- </defaultValue>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_QnaoYPS3EeCLI_ythlfGJw" name="base_Property" association="_Qnb2gPS3EeCLI_ythlfGJw">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
@@ -480,16 +468,10 @@ For instance, we cound type a port with &quot;MyType&quot; and use an extended p
<ownedAttribute xmi:type="uml:Property" xmi:id="__5rAUGE_Ed-eArNXja7SuA" name="targetArch" visibility="public" type="_361C4FapEd-w9f5DG2hQCA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Glq-QGFAEd-eArNXja7SuA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GlszcGFAEd-eArNXja7SuA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_GltagGFAEd-eArNXja7SuA">
- <value xsi:nil="true"/>
- </defaultValue>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_C5WBYGGLEd-yH9S4VNNbSQ" name="options" visibility="public" type="_JSKpIHiLEd-iNcV8QPhhiQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FGz-gGGLEd-yH9S4VNNbSQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FG1MoGGLEd-yH9S4VNNbSQ" value="*"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_FG1zsGGLEd-yH9S4VNNbSQ">
- <value xsi:nil="true"/>
- </defaultValue>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_biZZEJODEd-5qPBhYeIVtw" name="base_Node" association="_biaAIJODEd-5qPBhYeIVtw">
<type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Node"/>
@@ -497,32 +479,20 @@ For instance, we cound type a port with &quot;MyType&quot; and use an extended p
<ownedAttribute xmi:type="uml:Property" xmi:id="_BZCjMJOGEd-5qPBhYeIVtw" name="usedOS" visibility="public" type="_1rKtYFapEd-w9f5DG2hQCA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_E7f9UJOGEd-5qPBhYeIVtw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_E7nSEJOGEd-5qPBhYeIVtw" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_E7qVYJOGEd-5qPBhYeIVtw">
- <value xsi:nil="true"/>
- </defaultValue>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_D-cckJPxEd-UMN59oR7XbA" name="availRAM" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_GX4ZIJPxEd-UMN59oR7XbA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_GX8DgJPxEd-UMN59oR7XbA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_GX_G0JPxEd-UMN59oR7XbA">
- <value xsi:nil="true"/>
- </defaultValue>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_HtMmQJPxEd-UMN59oR7XbA" name="availROM" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JzMpcJPxEd-UMN59oR7XbA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Jzar4JPxEd-UMN59oR7XbA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_JzeWQJPxEd-UMN59oR7XbA">
- <value xsi:nil="true"/>
- </defaultValue>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_8g_IsNTGEeKiLbHSN_MIRQ" name="compiler" visibility="public" type="_iDiaINRxEeKiLbHSN_MIRQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_AIgB8NTHEeKiLbHSN_MIRQ"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_AJC0gNTHEeKiLbHSN_MIRQ" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_AKHykNTHEeKiLbHSN_MIRQ">
- <value xsi:nil="true"/>
- </defaultValue>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_biaAIJODEd-5qPBhYeIVtw" name="E_Target_Node0" memberEnd="_biaAIZODEd-5qPBhYeIVtw _biZZEJODEd-5qPBhYeIVtw">
@@ -595,9 +565,6 @@ For instance, we cound type a port with &quot;MyType&quot; and use an extended p
<ownedAttribute xmi:type="uml:Property" xmi:id="_RgadAOHNEeKl1vaXi7stuw" name="boundType" visibility="public" type="_tBRZYMtpEd2H_o0jIC6qDQ" isDerived="true">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_VfrH4OHNEeKl1vaXi7stuw"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_VgfAMOHNEeKl1vaXi7stuw" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_VidWIOHNEeKl1vaXi7stuw">
- <value xsi:nil="true"/>
- </defaultValue>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_beqmAEZ0EeCLCJBkU67iDQ" name="UseInstanceConfigurator">
@@ -607,9 +574,6 @@ For instance, we cound type a port with &quot;MyType&quot; and use an extended p
<ownedAttribute xmi:type="uml:Property" xmi:id="_vkwxkEZ0EeCLCJBkU67iDQ" name="configurator" visibility="public" type="_kDGFMEZ0EeCLCJBkU67iDQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_x906sEZ0EeCLCJBkU67iDQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_x-ozAEZ0EeCLCJBkU67iDQ" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_yA41wEZ0EeCLCJBkU67iDQ">
- <value xsi:nil="true"/>
- </defaultValue>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Extension" xmi:id="_ejj6YEZ0EeCLCJBkU67iDQ" name="E_UseInstanceConfigurator_Class0" memberEnd="_ejj6YUZ0EeCLCJBkU67iDQ _ejisQEZ0EeCLCJBkU67iDQ">
@@ -673,16 +637,10 @@ For instance, we cound type a port with &quot;MyType&quot; and use an extended p
<ownedAttribute xmi:type="uml:Property" xmi:id="_fi6s8NRwEeKiLbHSN_MIRQ" name="compToOOmapping" visibility="public" type="_HjF2wNRwEeKiLbHSN_MIRQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mp59wNRwEeKiLbHSN_MIRQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_mqyukNRwEeKiLbHSN_MIRQ" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_mspIsNRwEeKiLbHSN_MIRQ">
- <value xsi:nil="true"/>
- </defaultValue>
</ownedAttribute>
<ownedAttribute xmi:type="uml:Property" xmi:id="_oTWn0NRwEeKiLbHSN_MIRQ" name="progLanguage" visibility="public" type="__QLv8NRwEeKiLbHSN_MIRQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_p94P8NRwEeKiLbHSN_MIRQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_p-DPENRwEeKiLbHSN_MIRQ" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="_p-XYINRwEeKiLbHSN_MIRQ">
- <value xsi:nil="true"/>
- </defaultValue>
</ownedAttribute>
</packagedElement>
<packagedElement xmi:type="uml:Stereotype" xmi:id="_HjF2wNRwEeKiLbHSN_MIRQ" name="CompToOOmapping">
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/org/eclipse/papyrus/FCM/InterceptionKind.java b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/org/eclipse/papyrus/FCM/InterceptionKind.java
index 1a0001779c5..2bdc2c12bc2 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/org/eclipse/papyrus/FCM/InterceptionKind.java
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.fcm.profile/src/org/eclipse/papyrus/FCM/InterceptionKind.java
@@ -78,7 +78,9 @@ public enum InterceptionKind implements Enumerator {
* @generated
* @ordered
*/
- INTERCEPT_ALL_IN(3, "InterceptAllIn", "InterceptAllIn"), /**
+ INTERCEPT_ALL_IN(3, "InterceptAllIn", "InterceptAllIn"), //$NON-NLS-1$ //$NON-NLS-2$
+
+ /**
* The '<em><b>Intercept Matching</b></em>' literal object.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.classpath b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.classpath
index ad32c83a788..098194ca4b7 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.classpath
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.settings/org.eclipse.jdt.core.prefs b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.settings/org.eclipse.jdt.core.prefs
index c537b63063c..f42de363afa 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.settings/org.eclipse.jdt.core.prefs
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,7 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/META-INF/MANIFEST.MF
index 35e634bb44f..2c7ed9fa7d7 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/META-INF/MANIFEST.MF
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/META-INF/MANIFEST.MF
@@ -10,6 +10,8 @@ Export-Package: org.eclipse.papyrus.qompass.designer.core,
org.eclipse.papyrus.qompass.designer.core.sync,
org.eclipse.papyrus.qompass.designer.core.templates,
org.eclipse.papyrus.qompass.designer.core.transformations,
+ org.eclipse.papyrus.qompass.designer.core.transformations.connector,
+ org.eclipse.papyrus.qompass.designer.core.transformations.container,
org.eclipse.papyrus.qompass.designer.core.transformations.filters
Require-Bundle: org.eclipse.core.runtime,
org.eclipse.emf.ecore,
@@ -46,5 +48,5 @@ Bundle-Activator: org.eclipse.papyrus.qompass.designer.core.Activator
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.papyrus.qompass.designer.core;singlet
on:=true
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/plugin.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/plugin.xml
index 1e67fdce17b..0bc3dd49495 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/plugin.xml
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/plugin.xml
@@ -3,6 +3,7 @@
<plugin>
<extension-point id="instanceConfig" name="instanceConfigName" schema="schema/instanceConfig.exsd"/>
<extension-point id="externalGenerator" name="externalGenerator" schema="schema/externalGenerator.exsd"/>
+ <extension-point id="ooTransformation" name="ooTransformation" schema="schema/ooTransformation.exsd"/>
<extension
point="org.eclipse.papyrus.infra.core.modelListener">
<listener
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/externalGenerator.exsd b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/externalGenerator.exsd
index d9c048f3cf0..f91f9c1ce35 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/externalGenerator.exsd
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/externalGenerator.exsd
@@ -3,7 +3,7 @@
<schema targetNamespace="org.eclipse.papyrus.qompass.designer.core" xmlns="http://www.w3.org/2001/XMLSchema">
<annotation>
<appInfo>
- <meta.schema plugin="org.eclipse.papyrus.qompass.designer.core" id="instanceConfig" name="instanceConfigName"/>
+ <meta.schema plugin="org.eclipse.papyrus.qompass.designer.core" id="externalGenerator" name="externalGenerator"/>
</appInfo>
<documentation>
[Enter description of this extension point.]
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/ooTransformation.exsd b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/ooTransformation.exsd
new file mode 100644
index 00000000000..ade738bcc04
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/schema/ooTransformation.exsd
@@ -0,0 +1,109 @@
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.papyrus.qompass.designer.core" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appInfo>
+ <meta.schema plugin="org.eclipse.papyrus.qompass.designer.core" id="ooTransformation" name="ooTransformation"/>
+ </appInfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appInfo>
+ <meta.element />
+ </appInfo>
+ </annotation>
+ <complexType>
+ <choice minOccurs="0" maxOccurs="unbounded">
+ <element ref="client"/>
+ </choice>
+ <attribute name="point" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="id" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="name" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute translatable="true"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <element name="client">
+ <complexType>
+ <attribute name="ooTrafoID" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </annotation>
+ </attribute>
+ <attribute name="class" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appInfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.papyrus.qompass.designer.core.extensions.IOOTrafo"/>
+ </appInfo>
+ </annotation>
+ </attribute>
+ </complexType>
+ </element>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="since"/>
+ </appInfo>
+ <documentation>
+ [Enter the first release in which this extension point appears.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="examples"/>
+ </appInfo>
+ <documentation>
+ [Enter extension point usage example here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="apiinfo"/>
+ </appInfo>
+ <documentation>
+ [Enter API information here.]
+ </documentation>
+ </annotation>
+
+ <annotation>
+ <appInfo>
+ <meta.section type="implementation"/>
+ </appInfo>
+ <documentation>
+ [Enter information about supplied implementation of this extension point.]
+ </documentation>
+ </annotation>
+
+
+</schema>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Messages.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Messages.java
index bf2cc63cefe..b710703ff17 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Messages.java
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/Messages.java
@@ -33,7 +33,7 @@ public class Messages extends NLS {
public static String Description_NoAvail;
public static String LWContainerTrafo_CannotApplyRule;
-
+
public static String ConnectorBinding_CannotFindBinding;
public static String ConnectorBinding_CannotFindBindingForPort;
public static String ConnectorBinding_CannotFindConsistentBinding;
@@ -102,8 +102,7 @@ public class Messages extends NLS {
public static String InstantiateDepPlan_InfoImportPackage;
public static String InstantiateDepPlan_InfoNoneAllocated;
public static String InstantiateDepPlan_TransformationException;
- public static String LWContainerTrafo_0;
- public static String LWContainerTrafo_1;
+
public static String MainModelTrafo_ChangePartType;
public static String MainModelTrafo_NoDefiningFeature;
public static String MainModelTrafo_NoInstanceAssociated;
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/BootLoaderGen.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/BootLoaderGen.java
index 672d7109cce..4a2d8cab596 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/BootLoaderGen.java
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/BootLoaderGen.java
@@ -29,7 +29,7 @@ import org.eclipse.papyrus.qompass.designer.core.Messages;
import org.eclipse.papyrus.qompass.designer.core.StUtils;
import org.eclipse.papyrus.qompass.designer.core.Utils;
import org.eclipse.papyrus.qompass.designer.core.acceleo.UMLTool;
-import org.eclipse.papyrus.qompass.designer.core.transformations.CompImplTrafos;
+import org.eclipse.papyrus.qompass.designer.core.transformations.ExecuteOOTrafo;
import org.eclipse.papyrus.qompass.designer.core.transformations.LazyCopier;
import org.eclipse.papyrus.qompass.designer.core.transformations.PrefixConstants;
import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
@@ -74,17 +74,19 @@ public class BootLoaderGen {
* Create a new boot-loader in a specific package
* (which represents a node of the system).
*
- * @param The
- * package in which the bootloader should be created
+ * @param copier a lazy copier
+ * @param nodeIndex the index of the node
+ * @param numberOfNodes the number of nodes
+ * @throws TransformationException
*/
- public BootLoaderGen(LazyCopier copy, int nodeIndex, int numberOfNodes)
+ public BootLoaderGen(LazyCopier copier, int nodeIndex, int numberOfNodes)
throws TransformationException {
// Class composite = (Class) ut.getClassifier (mainInstance);
// place in root (getModel()) to avoid the problem that the declaration of the bootLoader
// instance is within a namespace (a static attribute on the model level would not solve the
// problem as it must be accessed by function main).
- Class nodeInfo = copy.target.createOwnedClass(NODE_INFO, false);
+ Class nodeInfo = copier.target.createOwnedClass(NODE_INFO, false);
String headerStr =
"const int nodeIndex = " + nodeIndex + ";" + NL + //$NON-NLS-1$//$NON-NLS-2$
"const int numberOfNodes = " + numberOfNodes + ";" + NL; //$NON-NLS-1$ //$NON-NLS-2$
@@ -93,10 +95,10 @@ public class BootLoaderGen {
// bootLoader.createOwnedAttribute (mainInstance.getName (), composite);
- m_bootLoader = copy.target.createOwnedClass(BOOTLOADER_NAME, false);
+ m_bootLoader = copier.target.createOwnedClass(BOOTLOADER_NAME, false);
outputSizeof = false;
- m_copy = copy;
- Class template = (Class) Utils.getQualifiedElement(copy.source, bootloaderQNAME);
+ m_copy = copier;
+ Class template = (Class) Utils.getQualifiedElement(copier.source, bootloaderQNAME);
if (template == null) {
throw new TransformationException(String.format(
Messages.BootLoaderGen_CannotRetrieveTemplate, bootloaderQNAME));
@@ -178,7 +180,7 @@ public class BootLoaderGen {
path = UMLTool.varName(path); // use variable name instead.
}
path += "." + pathElement.getDefiningFeature().getName(); //$NON-NLS-1$
- previousInstantiatedByBL = CompImplTrafos.instantiateViaBootloader(pathElement.getDefiningFeature());
+ previousInstantiatedByBL = ExecuteOOTrafo.instantiateViaBootloader(pathElement.getDefiningFeature());
}
}
if (previousInstantiatedByBL && !accessName) {
@@ -221,7 +223,7 @@ public class BootLoaderGen {
// return now and skip code below
return implemPart;
}
- else if (CompImplTrafos.instantiateViaBootloader(containerSlot.getDefiningFeature())) {
+ else if (ExecuteOOTrafo.instantiateViaBootloader(containerSlot.getDefiningFeature())) {
// let bootloader instantiate
implemPart = m_bootLoader.createOwnedAttribute(/* "i_" + */varName, implementation);
// add code for initialization
@@ -274,7 +276,7 @@ public class BootLoaderGen {
m_activation.put(implementation, varNameList);
}
- // check, if implementation contains a composite if (implementation.getOwnedOperation ("createConnections", null, null) != null) {
+ // check, if implementation contains a composite if (implementation.getOwnedOperation (StaticOOTrafo.CREATE_CONNECTIONS, null, null) != null) {
boolean bCreateConn = false;
for (Connector connector : implementation.getOwnedConnectors()) {
if (ConnectorUtil.isAssembly(connector)) {
@@ -284,7 +286,7 @@ public class BootLoaderGen {
}
if (bCreateConn) {
- m_initCodeCConnections += varName + ".createConnections();\n"; //$NON-NLS-1$
+ m_initCodeCConnections += varName + "." + ExecuteOOTrafo.CREATE_CONNECTIONS +"();\n"; //$NON-NLS-1$ //$NON-NLS-2$
}
return implemPart;
}
@@ -388,15 +390,14 @@ public class BootLoaderGen {
m_bootLoader.getOwnedConnectors().clear();
}
- public void addInit() {
+ public void addInit(InstanceSpecification mainInstance) {
// TODO: use template
Operation init = m_bootLoader.createOwnedOperation(INIT_OP_NAME, null, null);
OpaqueBehavior initBehavior = (OpaqueBehavior)
m_bootLoader.createOwnedBehavior(INIT_OP_NAME, UMLPackage.eINSTANCE.getOpaqueBehavior());
init.getMethods().add(initBehavior);
-
- initBehavior.getLanguages().add(CompImplTrafos.progLang);
+ initBehavior.getLanguages().add(DepUtils.getTargetLanguage(mainInstance));
String code = m_initCode + "\n"; //$NON-NLS-1$
if (m_initCodeCConfig.length() > 0) {
code += "\n// instance configuration\n" + //$NON-NLS-1$
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepUtils.java
index 8aefba81f36..80c5d4a0d76 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepUtils.java
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/DepUtils.java
@@ -482,6 +482,41 @@ public class DepUtils {
}
/**
+ * Return the target language when given the mainInstance
+ * @param mainInstance the mainInstance of an application
+ * @return target language
+ */
+ public static String getTargetLanguage(InstanceSpecification mainInstance) {
+ Classifier cl = DepUtils.getClassifier(mainInstance);
+ String targetLanguage = DepUtils.getLanguageFromPackage(cl.getNearestPackage());
+ if (targetLanguage == null) {
+ targetLanguage = "C++"; //$NON-NLS-1$
+ }
+ return targetLanguage;
+ }
+
+ /**
+ * Determine the component to OO language. The stereotype CodeGenOptions
+ * (which could be on any owning package) is evaluated.
+ *
+ * @param pkg
+ * a classifier
+ * @return the programming language
+ */
+ public static String getOOTransformationFromPackage(Package pkg) {
+ CodeGenOptions codeGenOpt = UMLUtil.getStereotypeApplication(pkg, CodeGenOptions.class);
+ if ((codeGenOpt != null) && (codeGenOpt.getProgLanguage() != null)) {
+ return codeGenOpt.getCompToOOmapping().getBase_Class().getName();
+ }
+ else if (pkg.getOwner() instanceof Package) {
+ return getLanguageFromPackage((Package) pkg.getOwner());
+ }
+ else {
+ return null;
+ }
+ }
+
+ /**
* Get all instances within a package that comply with a filter criterion. Recurse into sub-packages.
*
* @param pkg
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/Deploy.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/Deploy.java
index 86dc202b79d..dcbf2d0bb7b 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/Deploy.java
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/deployment/Deploy.java
@@ -85,7 +85,7 @@ public class Deploy {
InstanceSpecification newRootIS = distributeToNode(false, slotPath, instance);
bootLoaderGen.addCreateConnections();
- bootLoaderGen.addInit();
+ bootLoaderGen.addInit(instance);
return newRootIS;
}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IOOTrafo.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IOOTrafo.java
new file mode 100644
index 00000000000..9aeb006fed4
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/IOOTrafo.java
@@ -0,0 +1,97 @@
+/*****************************************************************************
+ * Copyright (c) 2013 CEA LIST.
+ *
+ *
+ * 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:
+ * Ansgar Radermacher ansgar.radermacher@cea.fr
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.qompass.designer.core.extensions;
+
+import org.eclipse.papyrus.qompass.designer.core.transformations.LazyCopier;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+import org.eclipse.uml2.uml.Class;
+
+/**
+ * An interface that must be implemented by classes that realize the transformation
+ * from component-based to object-oriented models. It includes the replacement of
+ * ports and connectors. Ports are
+ * replaced with attributes and access operations, connectors within a composite
+ * by an operation that creates the initial setup.
+ *
+ * 1. add an operation that allows to retrieve the reference to an interface provided
+ * by a port. This operation has a mapping specific name, e.g. get_<port_name>
+ * 2. add an operation that allows to connect a specific port.
+ * the connect_q operation (*including a
+ * storage attribute*) for a port with a required interface
+ * 3. add an implementation for the getcnx_q operation for a port
+ * with a required interface (the operation itself has been added before)
+ *
+ * TODO: C++ specific, support different "component to OO" mappings
+ *
+ * Problems: need to align bootloader creation with this mapping, since
+ * the bootloader may be responsible for instantiation
+ *
+ * Caveat: Assure that the folder derivedInterfaces already exists in a model.
+ * Otherwise the call to getProvided/getRequired interface might trigger its
+ * creation resulting in the corruption of list iterators (ConcurrentAccess
+ * exception)
+ *
+ * TODO: keep only transform & deleteConn operation? (why has addGetPortOperation
+ *
+ * New considerations: could the OO trafo be seens as a specific form of the
+ * LwContainerTrafo?
+ * [if yes, would that be useful?] Problem: it's not only a merge and operation
+ * interception, but additional operation(s) for ports. But, it might well
+ * be based on similar mechanisms as in merging in a template + Java code instead
+ * of Java code only. Also possible: still have OOTrafo, but there is a collaboration
+ * between the OO trafo and a LW container rule.
+ *
+ *
+ */
+public interface IOOTrafo {
+
+ public void init(LazyCopier copier, Class bootloader);
+
+ /**
+ * Transformations adds operations for accessing ports. A common but not necessary
+ * code generation pattern is to associate different operations with ports that
+ * provide services (access operations) and ports requiring services (connection operations)
+ *
+ * @param implementation
+ * A component implementation
+ */
+ public void addPortOperations(Class implementation);
+
+
+ /**
+ * Add an operation that connects the parts within a composite class based on the
+ * UML connector information.
+ *
+ * @param compositeImplementation
+ * A (composite) component implementation
+ * @throws TransformationException
+ */
+ public void addConnectionOperation(Class compositeImplementation)
+ throws TransformationException;
+
+ /**
+ * Transform parts if necessary. This transformation is for target programming languages
+ * like C++ that support different ways of composition for attributes, i.e. references/pointers
+ * versus values. In case of the latter, the instantiation of a composite directly implies
+ * the instantiation of its sub-components. In case of the former, parts need to be instantiated
+ * by a different mechanism, e.g. by the constructor (which is still a valid correspondence for
+ * composition in UML at a logical level).
+ * Another possible use is the support of a more dynamic deployment: it is for instance possible
+ * to use a use a part-list (single attribute) instead of fixed named attributes.
+ *
+ * @param compositeImplementation
+ * A (composite) component implementation
+ */
+ public void transformParts(Class compositeImplementation);
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/OOTrafo.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/OOTrafo.java
new file mode 100644
index 00000000000..f96ccad4765
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/extensions/OOTrafo.java
@@ -0,0 +1,61 @@
+/*******************************************************************************
+ * Copyright (c) 2011 CEA LIST.
+ * 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:
+ * CEA LIST - initial API and implementation
+ *******************************************************************************/
+
+package org.eclipse.papyrus.qompass.designer.core.extensions;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.papyrus.qompass.designer.core.Activator;
+import org.eclipse.papyrus.qompass.designer.core.Messages;
+
+/**
+ * Support for different OO transformation via the Eclipse extension
+ * mechanism
+ */
+public class OOTrafo {
+
+ public static final String IOO_TRANSFORMATION_ID = Activator.PLUGIN_ID + ".ooTransformation"; //$NON-NLS-1$
+
+ /**
+ * Get an OOTransformation for a given ID (language)
+ *
+ * @param iOOTrafoID
+ * the ID of an OO Transformation
+ * @return
+ */
+ public static IOOTrafo getOOTrafo(String iOOTrafoID) {
+ IExtensionRegistry reg = Platform.getExtensionRegistry();
+ IConfigurationElement[] configElements = reg.getConfigurationElementsFor(IOO_TRANSFORMATION_ID);
+ for (IConfigurationElement configElement : configElements) {
+ try {
+ final String iOOTrafoIDext = configElement.getAttribute("ooTrafoID"); //$NON-NLS-1$
+ if (iOOTrafoIDext == null) {
+ throw new RuntimeException(String.format(Messages.InstanceConfigurator_InvalidPluginExtension,
+ iOOTrafoID));
+ }
+ if (iOOTrafoIDext.endsWith("." + iOOTrafoID)) { //$NON-NLS-1$
+ // TODO: cache returned instance (avoid creating a new
+ // instance each time => more efficient, no need for static
+ // attributes)
+ final Object obj = configElement.createExecutableExtension("class"); //$NON-NLS-1$
+ if (obj instanceof IOOTrafo) {
+ return (IOOTrafo) obj;
+ }
+ }
+ } catch (CoreException exception) {
+ exception.printStackTrace();
+ }
+ }
+ return null;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompImplSync.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompImplSync.java
index 942488108e7..a49a1da39e5 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompImplSync.java
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/sync/CompImplSync.java
@@ -235,7 +235,9 @@ public class CompImplSync {
* add derived realization relationships of a component implementation
* due to provided interfaces of its ports
*
- * @param implementation
+ * TODO: depends on OOTrafo, duplicate functionality
+ *
+ * @param implementation a component implementation
*/
public static EList<Interface> addRealizations(Class implementation) {
// create a list of all provided interfaces and check whether realization relationship
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompImplTrafos.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompImplTrafos.java
deleted file mode 100644
index ec21198d968..00000000000
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompImplTrafos.java
+++ /dev/null
@@ -1,673 +0,0 @@
-/*****************************************************************************
- * Copyright (c) 2013 CEA LIST.
- *
- *
- * 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:
- * Ansgar Radermacher ansgar.radermacher@cea.fr
- *
- *****************************************************************************/
-
-package org.eclipse.papyrus.qompass.designer.core.transformations;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import org.eclipse.emf.common.util.BasicEList;
-import org.eclipse.emf.common.util.EList;
-import org.eclipse.papyrus.C_Cpp.Ptr;
-import org.eclipse.papyrus.FCM.PortKind;
-import org.eclipse.papyrus.qompass.designer.core.Messages;
-import org.eclipse.papyrus.qompass.designer.core.PortInfo;
-import org.eclipse.papyrus.qompass.designer.core.PortUtils;
-import org.eclipse.papyrus.qompass.designer.core.Utils;
-import org.eclipse.papyrus.uml.tools.utils.ConnectorUtil;
-import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil;
-import org.eclipse.uml2.uml.AggregationKind;
-import org.eclipse.uml2.uml.Association;
-import org.eclipse.uml2.uml.Class;
-import org.eclipse.uml2.uml.ConnectableElement;
-import org.eclipse.uml2.uml.Connector;
-import org.eclipse.uml2.uml.ConnectorEnd;
-import org.eclipse.uml2.uml.Element;
-import org.eclipse.uml2.uml.Interface;
-import org.eclipse.uml2.uml.Model;
-import org.eclipse.uml2.uml.OpaqueBehavior;
-import org.eclipse.uml2.uml.Operation;
-import org.eclipse.uml2.uml.Package;
-import org.eclipse.uml2.uml.PackageableElement;
-import org.eclipse.uml2.uml.Parameter;
-import org.eclipse.uml2.uml.Port;
-import org.eclipse.uml2.uml.Property;
-import org.eclipse.uml2.uml.StructuralFeature;
-import org.eclipse.uml2.uml.StructuredClassifier;
-import org.eclipse.uml2.uml.Type;
-import org.eclipse.uml2.uml.UMLPackage;
-
-/**
- * This class realizes the transformations for a component implementation (the
- * executor) It includes: 1. add the get_p operation for a port with a provided
- * interface. 2. add the connect_q operation and realization (*including a
- * storage attribute*) for a port with a required interface 3. add an
- * implementation for the getcnx_q operation for a port with a required
- * interface (the operation itself has been added before)
- *
- * TODO: C++ specific, support different "component to OO" mappings
- *
- * Caveat: Assure that the folder derivedInterfaces already exists in a model.
- * Otherwise the call to getProvided/getRequired interface might trigger its
- * creation resulting in the corruption of list iterators (ConcurrentAccess
- * exception)
- *
- */
-public class CompImplTrafos {
-
- public static Class bootloader;
-
- public static final String retParamName = "ret"; //$NON-NLS-1$
-
- public static final String progLang = "C/C++"; //$NON-NLS-1$
-
- public static void addPortOperations(LazyCopier copy, Package pkg)
- throws TransformationException {
- EList<PackageableElement> peList = new BasicEList<PackageableElement>();
- peList.addAll(pkg.getPackagedElements());
- for (PackageableElement element : peList) {
- if (element instanceof Package) {
- addPortOperations(copy, (Package) element);
- } else if (element instanceof Class) {
- Class implementation = (Class) element;
- // we may not apply the transformation to the boot-loader
- // itself, in particular it would transform
- // singletons into pointers.
- if (Utils.isCompImpl(implementation)
- && (implementation != bootloader)
- && !StereotypeUtil.isApplied(implementation,
- PortKind.class)) {
- addGetPortOperation(copy, implementation);
- addConnectPortOperation(copy, implementation);
- markPartsPointer(implementation);
- }
- addCreateConnections(implementation);
- }
- }
- }
-
- /**
- * Add the get_p operation for each port with a provided interface. It also
- * adds a suitable implementation that evaluates delegation connectors from
- * the port to a property within the composite. The delegation target could
- * either be a normal class (no port) or an inner component.
- *
- * @param implementation
- */
- private static void addGetPortOperation(LazyCopier copy, Class implementation) {
- for (PortInfo portInfo : PortUtils.flattenExtendedPorts(PortUtils
- .getAllPorts2(implementation))) {
- Interface providedIntf = portInfo.getProvided();
- if (providedIntf != null) {
- // port provides an interface, add "get_p" operation &
- // implementation
-
- String opName = PrefixConstants.getP_Prefix
- + portInfo.getName();
- Operation op = implementation.getOwnedOperation(opName, null,
- null);
- if (op != null) {
- // operation already exists. Assume that user wants to
- // override standard delegation
- if (op.getType() != providedIntf) {
- op.createOwnedParameter(retParamName, providedIntf);
- }
- continue;
- }
- op = implementation.createOwnedOperation(opName, null, null,
- providedIntf);
- Parameter retParam = op.getOwnedParameters().get(0);
- retParam.setName(retParamName);
- StereotypeUtil.apply(retParam, Ptr.class);
-
- OpaqueBehavior behavior = (OpaqueBehavior) implementation
- .createOwnedBehavior(opName,
- UMLPackage.eINSTANCE.getOpaqueBehavior());
- op.getMethods().add(behavior);
-
- ConnectorEnd ce = ConnectorUtil.getDelegation(implementation,
- portInfo.getModelPort());
- // if there is an delegation to an inner property, delegate to
- // it
- // Make distinction between delegation to component (with a
- // port) or
- // "normal" class (without).
- String body;
- if (ce != null) {
- Property part = ce.getPartWithPort();
- ConnectableElement role = ce.getRole();
-
- body = "return "; //$NON-NLS-1$
- if (role instanceof Port) {
- // check whether the part exists within the
- // implementation (might not be the case
- // due to partially copied composites).
- // Check is based on names, since the connector points
- // to elements within another
- // model (copyClassifier does not make a proper
- // connector copy)
- // body += part.getName() + refOp(part) + opName + "();"; //$NON-NLS-1$
- // TODO: this will NOT work for extended ports!
- body += part.getName() + refOp(part)
- + PrefixConstants.getP_Prefix + role.getName()
- + "();"; //$NON-NLS-1$
- } else {
- // role is not a port: connector connects directly to a
- // structural feature
- // without passing via a port
- // TODO: check whether structural feature exists
- body += role.getName();
- }
- } else {
- // no delegation, check whether port implements provided
- // interface
- boolean implementsIntf = implementation
- .getInterfaceRealization(null, providedIntf) != null;
- if (!implementsIntf) {
- // The extended port itself is not copied to the target
- // model (since referenced via a stereotype). Therefore,
- // a port of an extended port still points to the
- // original model. We try whether the providedIntf
- // within
- // the target model is within the interface
- // realizations.
- Interface providedIntfInCopy = (Interface) copy
- .get(providedIntf);
- implementsIntf = implementation
- .getInterfaceRealization(null,
- providedIntfInCopy) != null;
- }
- if (implementsIntf) {
- body = "return this;"; //$NON-NLS-1$
- } else {
- throw new RuntimeException(String.format(
- Messages.CompImplTrafos_IntfNotImplemented,
- providedIntf.getName(), portInfo.getPort()
- .getName(), implementation.getName()));
- }
- }
- // todo: defined by template
- behavior.getLanguages().add(progLang);
- behavior.getBodies().add(body);
- }
- }
- }
-
- /**
- * if the bootloader is responsible for creating an instance (if it is a
- * abstract type), mark the associated part as a C++ pointer. We do not want
- * to change the aggregation kind, since it remains logically a composition,
- * it is merely an implementation issue that it must be a pointer for C++ if
- * the concrete type is not yet known.
- *
- *
- * @param implementation
- */
- private static void markPartsPointer(Class implementation) {
- for (Property attribute : Utils.getParts(implementation)) {
- Type type = attribute.getType();
- if (type instanceof Class) {
- Class cl = (Class) type;
- // => requires adaptations of boot-loader which is then only
- // responsible for creating instances
- // corresponding to types
- if (instantiateViaBootloader(cl)) {
- StereotypeUtil.apply(attribute, Ptr.class);
- }
- }
- }
- }
-
- /**
- * Add a connect_<portName> operation for ports with a required interface.
- * Whereas operation and a behavior is added for each owned port, a behavior
- * (method) is needed for ports inherited from a component type (the
- * behavior is implementation specific, as it needs to take delegation to
- * parts into account)
- *
- * @param implementation
- */
- private static void addConnectPortOperation(LazyCopier sat, Class implementation) {
- for (PortInfo portInfo : PortUtils.flattenExtendedPorts(PortUtils
- .getAllPorts2(implementation))) {
- Interface requiredIntf = portInfo.getRequired();
- if (requiredIntf != null) {
- // port requires an interface, add "connect_p" operation &
- // implementation
-
- String opName = PrefixConstants.connectQ_Prefix
- + portInfo.getName();
-
- if (implementation.getOwnedOperation(opName, null, null) != null) {
- // do not add the operation, if it already exists. This
- // means that the
- // user wants to override it with custom behavior. In case
- // of extended
- // ports, we may have to do that.
- continue;
- }
- Operation op = implementation.createOwnedOperation(opName,
- null, null);
- boolean multiPort = (portInfo.getUpper() > 1)
- || (portInfo.getUpper() == -1); // -1 indicates "*"
- if (multiPort) {
- // add index parameter
- Element eLong = Utils.getQualifiedElement(
- Utils.getTop(implementation),
- CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE);
- if (eLong instanceof Type) {
- op.createOwnedParameter("index", (Type) eLong); //$NON-NLS-1$
- } else {
- throw new RuntimeException(String.format(
- Messages.CompImplTrafos_CannotFindType,
- CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE));
- }
- }
- Parameter refParam = op.createOwnedParameter("ref", requiredIntf); //$NON-NLS-1$
- StereotypeUtil.apply(refParam, Ptr.class);
-
- OpaqueBehavior behavior = (OpaqueBehavior) implementation
- .createOwnedBehavior(opName,
- UMLPackage.eINSTANCE.getOpaqueBehavior());
- op.getMethods().add(behavior);
-
- ConnectorEnd ce = ConnectorUtil.getDelegation(implementation,
- portInfo.getModelPort());
- // if there is an delegation to an inner property, delegate to
- // it
- // Make distinction between delegation to component (with a
- // port) or
- // "normal" class (without).
- String body;
- if (ce != null) {
- Property part = ce.getPartWithPort();
- body = part.getName();
- ConnectableElement role = ce.getRole();
- if (role instanceof Port) {
- // in case of a delegation, use name of target port
- // which might be different
- String targetOpName = PrefixConstants.connectQ_Prefix
- + role.getName();
- body += refOp(part) + targetOpName;
- // TODO: no check that multiplicity of both port matches
- if ((portInfo.getUpper() > 1)
- || (portInfo.getUpper() == -1)) {
- body += "(index, ref);"; //$NON-NLS-1$
- } else {
- body += "(ref);"; //$NON-NLS-1$
- }
-
- } else {
- body += ";"; //$NON-NLS-1$
- }
- } else {
- // no delegation - create attribute for port
- String attributeName = PrefixConstants.attributePrefix
- + portInfo.getName();
- if (!Utils.hasNonPortOwnedAttribute(implementation,
- attributeName)) {
- Property attr = implementation.createOwnedAttribute(
- attributeName, requiredIntf);
- LazyCopier.copyMultElemModifiers(portInfo.getPort(), attr);
- // is shared (should store a reference)
- attr.setAggregation(AggregationKind.SHARED_LITERAL);
- }
- body = attributeName
- + (multiPort ? "[index]" : "") + " = ref;"; //$NON-NLS-1$//$NON-NLS-2$ //$NON-NLS-3$
- }
- // TODO: defined by template
- behavior.getLanguages().add(progLang);
- behavior.getBodies().add(body);
-
- // -------------------------
- // add body to get-connection operation (which exists already if
- // the port is also
- // owned, since it is synchronized automatically during model
- // edit)
- // getConnQ prefix may be empty to indicate that the port is
- // accessed directly
- // TODO: reconsider optimization that delegated required ports
- // do not have a
- // local attribute & associated operation (an inner class may
- // delegate, but the
- // composite may be using it as well).
- if ((PrefixConstants.getConnQ_Prefix.length() > 0)
- && (ce != null)) {
- opName = PrefixConstants.getConnQ_Prefix
- + portInfo.getName();
- op = implementation.getOwnedOperation(opName, null, null);
- if (op == null) {
- op = implementation.createOwnedOperation(opName, null,
- null, requiredIntf);
- Parameter retParam = op.getOwnedParameters().get(0);
- retParam.setName(retParamName);
- StereotypeUtil.apply(retParam, Ptr.class);
- }
- behavior = (OpaqueBehavior) implementation
- .createOwnedBehavior(opName,
- UMLPackage.eINSTANCE.getOpaqueBehavior());
- op.getMethods().add(behavior);
-
- // no delegation
- String name = PrefixConstants.attributePrefix
- + portInfo.getName();
- body = "return " + name + ";"; //$NON-NLS-1$ //$NON-NLS-2$
- behavior.getLanguages().add(progLang);
- behavior.getBodies().add(body);
- }
- }
- }
- }
-
- /**
- * Add an operation "createConnections" that implements the connections
- * between composite parts. It only takes the assembly connections into
- * account, since delegation connectors are handled by the get_ and connect_
- * port operations above.
- *
- * @param implementation
- */
- private static void addCreateConnections(Class implementation)
- throws TransformationException {
- String createConnBody = ""; //$NON-NLS-1$
- Map<ConnectorEnd, Integer> indexMap = new HashMap<ConnectorEnd, Integer>();
-
- for (Connector connector : implementation.getOwnedConnectors()) {
- if (ConnectorUtil.isAssembly(connector)) {
- // Boolean associationBased = false;
- if (connector.getEnds().size() != 2) {
- throw new TransformationException(
- "Connector <" + connector.getName() + "> does not have two ends. This is currently not supported"); //$NON-NLS-1$ //$NON-NLS-2$
- }
- ConnectorEnd end1 = connector.getEnds().get(0);
- ConnectorEnd end2 = connector.getEnds().get(1);
- String cmd;
- cmd = "// realization of connector <" + connector.getName() + ">\n"; //$NON-NLS-1$//$NON-NLS-2$
- if ((end1.getRole() instanceof Port)
- && PortUtils.isExtendedPort((Port) end1.getRole())) {
- Port port = (Port) end1.getRole();
- EList<PortInfo> subPorts = PortUtils
- .flattenExtendedPort(port);
- for (PortInfo subPort : subPorts) {
- cmd += " // realization of connection for sub-port " + subPort.getPort().getName() + "\n"; //$NON-NLS-1$//$NON-NLS-2$
- cmd += connectPorts(indexMap, connector, end1, end2,
- subPort.getPort());
- cmd += connectPorts(indexMap, connector, end2, end1,
- subPort.getPort());
- }
- } else {
- cmd += connectPorts(indexMap, connector, end1, end2, null);
- cmd += connectPorts(indexMap, connector, end2, end1, null);
- }
- createConnBody += cmd + "\n"; //$NON-NLS-1$
- }
- }
- // TODO: use template, as in bootloader
- if (createConnBody.length() > 0) {
- Operation operation = implementation.createOwnedOperation("createConnections", null, null); //$NON-NLS-1$
-
- OpaqueBehavior behavior = (OpaqueBehavior) implementation
- .createOwnedBehavior("b:" + operation.getName(), //$NON-NLS-1$
- UMLPackage.eINSTANCE.getOpaqueBehavior());
- behavior.getLanguages().add(progLang);
- behavior.getBodies().add(createConnBody);
- behavior.setSpecification(operation);
- }
- }
-
- /**
- * Create a connection between the two ends of a receptacle. This function
- * checks whether the first end really is a receptacle and the second really
- * is a facet.
- *
- * @param indexMap
- * a map of indices that are used in case of multiplex
- * receptacles
- * @param connector
- * a connector
- * @param receptacleEnd
- * an end of the connector that may point to a receptacle port
- * @param facetEnd
- * an end of the connector that may point to a facet port
- * @param subPort
- * a sub-port in case of extended ports
- * @return
- * @throws TransformationException
- */
- public static String connectPorts(Map<ConnectorEnd, Integer> indexMap,
- Connector connector, ConnectorEnd receptacleEnd,
- ConnectorEnd facetEnd, Port subPort) throws TransformationException {
- Association association = connector.getType();
- if ((receptacleEnd.getRole() instanceof Port)
- && (facetEnd.getRole() instanceof Port)) {
- Port facetPort = (Port) facetEnd.getRole();
- Port receptaclePort = (Port) receptacleEnd.getRole();
- PortInfo facetPI = PortInfo.fromSubPort(facetPort, subPort);
- PortInfo receptaclePI = PortInfo.fromSubPort(receptaclePort,
- subPort);
-
- if ((facetPI.getProvided() != null)
- && (receptaclePI.getRequired() != null)) {
- Property facetPart = facetEnd.getPartWithPort();
- Property receptaclePart = receptacleEnd.getPartWithPort();
-
- String subPortName = (subPort != null) ? "_" + subPort.getName() : ""; //$NON-NLS-1$ //$NON-NLS-2$
- String indexName = getIndexName(indexMap, receptaclePort,
- receptacleEnd);
- String setter = receptaclePart.getName()
- + refOp(receptaclePart)
- + "connect_" + receptaclePort.getName() + subPortName; //$NON-NLS-1$
- String getter = facetPart.getName() + refOp(facetPart)
- + "get_" + facetPort.getName() + subPortName + "()"; //$NON-NLS-1$ //$NON-NLS-2$
- return setter + "(" + indexName + getter + ");\n"; //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- } else if (receptacleEnd.getRole() instanceof Port) {
- // only the receptacle end is of type port.
- Port receptaclePort = (Port) receptacleEnd.getRole();
- if (PortUtils.getRequired(receptaclePort) != null) {
- Property facetPart = (Property) facetEnd.getRole();
- Property receptaclePart = facetEnd.getPartWithPort();
-
- String indexName = getIndexName(indexMap, receptaclePort,
- receptacleEnd);
- String setter = receptaclePart.getName()
- + refOp(receptaclePart)
- + "connect_" + receptaclePort.getName(); //$NON-NLS-1$
- String getter = facetPart.getName() + refOp(facetPart)
- + facetPart.getName();
- return setter + "(" + indexName + getter + ");\n"; //$NON-NLS-1$ //$NON-NLS-2$
- }
- } else if (facetEnd.getRole() instanceof Port) {
- // only the receptacle end is of type port.
- Port facetPort = (Port) facetEnd.getRole();
- if (PortUtils.getProvided(facetPort) != null) {
- Property facetPart = facetEnd.getPartWithPort();
- Property receptaclePart = (Property) facetEnd.getRole();
-
- String setter = receptaclePart.getName();
- String getter = facetPart.getName() + refOp(facetPart)
- + "get_" + facetPort.getName() + " ()"; //$NON-NLS-1$ //$NON-NLS-2$
- return setter + " = " + getter + ";\n"; //$NON-NLS-1$ //$NON-NLS-2$
- }
- } else if (association != null) {
- // both connector ends do not target ports. In this case, we require
- // that the connector is typed
- // with an association. We use this association to find out which
- // end is navigable and assume that
- // the part pointed to by the other end is a pointer that gets
- // initialized with the part of the
- // navigable end.
- Property facetPart = (Property) facetEnd.getRole();
- Property receptaclePart = (Property) receptacleEnd.getRole();
-
- Property assocProp1 = association.getMemberEnd(null,
- facetPart.getType());
- // Property assocProp2 = facetPart.getOtherEnd();
- if ((assocProp1 != null) && assocProp1.isNavigable()) {
- String setter = receptaclePart.getName()
- + refOp(receptaclePart) + assocProp1.getName();
- String getter = "&" + facetPart.getName(); //$NON-NLS-1$
- return setter + " = " + getter + ";\n"; //$NON-NLS-1$ //$NON-NLS-2$
- }
- } else {
- // not handled (a connector not targeting a port must be typed)
- throw new TransformationException(
- "Connector <" + connector.getName() + //$NON-NLS-1$
- "> does not use ports, but it is not typed (only connectors between ports should not be typed)"); //$NON-NLS-1$
- }
- return ""; //$NON-NLS-1$
- }
-
- /**
- * Handle ports with multiplicity > 1. The idea is that we could have
- * multiple connections targeting a receptacle. The first connection would
- * start with index 0. Implementations can make no assumption which
- * connection is associated with a certain index. [want to avoid associative
- * array in runtime].
- *
- * @param port
- * @param end
- * @return
- */
- public static String getIndexName(Map<ConnectorEnd, Integer> indexMap,
- Port port, ConnectorEnd end) {
- if ((port.getUpper() > 1) || (port.getUpper() == -1)) {
- // index depends of combination of property and port, use connector
- // end as key
- Integer indexValue = indexMap.get(end);
- if (indexValue == null) {
- indexValue = 0;
- indexMap.put(end, indexValue);
- }
- String index = indexValue + ", "; //$NON-NLS-1$
- indexValue++;
- indexMap.put(end, indexValue);
- return index;
- }
- return ""; //$NON-NLS-1$
- }
-
- /**
- * Recursively delete all connectors in a given package package
- *
- * @param pkg
- * the package in which connector deletion starts
- */
- public static void deleteConnectors(Package pkg) {
- for (PackageableElement element : pkg.getPackagedElements()) {
- if (element instanceof Package) {
- deleteConnectors((Package) element);
- } else if (element instanceof StructuredClassifier) {
- StructuredClassifier sc = (StructuredClassifier) element;
- EList<Connector> connectors = new BasicEList<Connector>();
- connectors.addAll(sc.getOwnedConnectors());
- for (Connector connector : connectors) {
- connector.destroy();
- }
- }
- }
- }
-
- /**
- * Return true, if the bootloader is responsible for the instantiation of a
- * part. [Structual difference: bootloader can decide instance based - and
- * instances are deployed]
- *
- * If a part is a component type or an abstract implementation, it cannot be
- * instantiated. Thus, a heir has to be selected in the deployment plan.
- * Since the selection might be different for different instances of the
- * composite, the instantiation is not done by the component itself, but by
- * the bootloader. The bootloader also has to instantiate, if different
- * allocation variants are required. (this is for instance the case for
- * distribution connectors and for the system itself)
- *
- * If possible, we want to let composites instantiate sub-components, since
- * this eases the transition to systems which support reconfiguration.
- *
- * [TODO: optimization: analyze whether the deployment plan selects a single
- * implementation. If yes, let the composite instantiate]
- *
- * [TODO: elements within an assembly need to be instantiated by composite -
- * if System - by bootloader. assembly also need to be instantiated by
- * composite!!
- *
- * @param implementation
- * @return
- */
- public static boolean instantiateViaBootloader(Class implementation) {
- return implementation.isAbstract() || Utils.isAssembly(implementation);
- }
-
- /**
- * Return whether a part needs to be instantiated by the bootloader instead
- * by the composite in which it is contained. The criteria is based on the
- * question whether the containing composite is flattened, as it is the case
- * for the system component and the interaction components for distribution.
- *
- * @param part
- * @return
- */
- public static boolean instantiateViaBootloader(StructuralFeature part) {
- if (part != null) {
- if (part.getType() instanceof Class) {
- Class implementation = (Class) part.getType();
- // TODO: wrong criteria? (must be shared or not?)
- return instantiateViaBootloader(implementation);
- } else {
- // not a class, assume primitive type instantiated by composite
- return false;
- }
- }
- return false;
- }
-
- /**
- * return the operator for (de-) referencing a part. If the part is
- * instantiate via the bootloader, it becomes a pointer. If it is
- * instantiated by the composite itself, it is not a pointer, it will be
- * instantiated along with the composite
- *
- * @param part
- * @return
- */
- protected static String refOp(Property part) {
- return ((part.getAggregation() == AggregationKind.SHARED_LITERAL) || StereotypeUtil
- .isApplied(part, Ptr.class)) ? "->" : "."; //$NON-NLS-1$ //$NON-NLS-2$
- }
-
- public static void transform(Class bootloader2, LazyCopier targetCopy,
- Model genModel, boolean OOmodel) throws TransformationException {
- // 2c: add get_p/connect_q operations
- // caveat: may modify imported classes
- CompImplTrafos.bootloader = bootloader2;
- CompImplTrafos.addPortOperations(targetCopy, genModel);
-
- if (OOmodel) {
- // 3: component -> OO transformations related to ports:
- // complete port access operations
- // (get<PortName>/connect<PortName> and
- // remove the ports afterwards
- CompTypeTrafos.completeAccessOps(genModel);
- CompTypeTrafos.removePorts(genModel);
- }
-
- // 4: remove connectors from implementations, since their
- // endpoint's roles
- // have disappeared during step 4b (targeted ports have been
- // deleted together with the types).
- CompImplTrafos.deleteConnectors(genModel);
-
- }
-}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompTypeTrafos.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompTypeTrafos.java
index f9da4969fa8..554249fb2a4 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompTypeTrafos.java
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/CompTypeTrafos.java
@@ -15,7 +15,6 @@
package org.eclipse.papyrus.qompass.designer.core.transformations;
import org.eclipse.emf.common.util.BasicEList;
-import org.eclipse.emf.common.util.EList;
import org.eclipse.papyrus.C_Cpp.Ptr;
import org.eclipse.papyrus.qompass.designer.core.Messages;
import org.eclipse.papyrus.qompass.designer.core.PortUtils;
@@ -41,10 +40,12 @@ import org.eclipse.uml2.uml.Type;
* 2. Remove ports (after ports have been replaced with standard properties)
*
* TODO: transformation is specific to C++
+ * TODO: currently unused
*
* @author ansgar
*
*/
+@Deprecated
public class CompTypeTrafos {
public static final String INDEX_TYPE_FOR_MULTI_RECEPTACLE = "corba::Long"; //$NON-NLS-1$
@@ -122,28 +123,4 @@ public class CompTypeTrafos {
}
}
}
-
- /**
- * Remove ports recursively from all classes within a package and its
- * sub-packages
- *
- * @param pkg
- * the package (root) from which the port deletion starts.
- */
- public static void removePorts(Package pkg) {
- for (PackageableElement element : pkg.getPackagedElements()) {
- if (element instanceof Package) {
- removePorts((Package) element);
- } else if (element instanceof Class) {
- EList<Port> portListCopy = new BasicEList<Port>();
- portListCopy.addAll(((Class) element).getOwnedPorts());
- // avoid dangling references by calling destroy on the port list
- // TODO: who still has a reference to these ports? (connectors? - indication of other errors?)
- // maybe from port-list within ContainerRule stereotype?
- for (Port port : portListCopy) {
- port.destroy();
- }
- }
- }
- }
}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ExecuteOOTrafo.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ExecuteOOTrafo.java
new file mode 100644
index 00000000000..b31ffb72734
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ExecuteOOTrafo.java
@@ -0,0 +1,117 @@
+package org.eclipse.papyrus.qompass.designer.core.transformations;
+
+import org.eclipse.emf.common.util.BasicEList;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.papyrus.FCM.PortKind;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
+import org.eclipse.papyrus.qompass.designer.core.extensions.IOOTrafo;
+import org.eclipse.papyrus.qompass.designer.core.extensions.OOTrafo;
+import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.EncapsulatedClassifier;
+import org.eclipse.uml2.uml.Model;
+import org.eclipse.uml2.uml.Package;
+import org.eclipse.uml2.uml.PackageableElement;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.StructuralFeature;
+import org.eclipse.uml2.uml.StructuredClassifier;
+
+public class ExecuteOOTrafo {
+
+ IOOTrafo ooTrafo;
+
+ ExecuteOOTrafo(IOOTrafo ooTrafo) {
+ this.ooTrafo = ooTrafo;
+ }
+
+ /**
+ * Why is pkg a parameter ?? [wait: the transformation should rather have a
+ * component as this parameter]
+ * Need to take traversal of components out of transformation [btw. shouldn't
+ * the transformation be instance based]
+ *
+ * @param pkg
+ * @throws TransformationException
+ */
+ public void transformPackage(Package pkg) throws TransformationException {
+ EList<PackageableElement> peList = new BasicEList<PackageableElement>();
+ peList.addAll(pkg.getPackagedElements());
+ for (PackageableElement element : peList) {
+ if (element instanceof Package) {
+ transformPackage((Package) element);
+ }
+ else if (element instanceof Class) {
+ Class implementation = (Class) element;
+ // we may not apply the transformation to the boot-loader
+ // itself, in particular it would transform
+ // singletons into pointers.
+ if (Utils.isCompImpl(implementation)
+ // && (implementation != bootloader)
+ && !StereotypeUtil.isApplied(implementation, PortKind.class)) {
+ ooTrafo.addPortOperations(implementation);
+ ooTrafo.addConnectionOperation(implementation);
+ ooTrafo.transformParts(implementation);
+ }
+ }
+ // now delete connectors
+ if (element instanceof StructuredClassifier) {
+ removeConnectors((StructuredClassifier) element);
+ }
+ if (element instanceof EncapsulatedClassifier) {
+ removePorts((EncapsulatedClassifier) element);
+ }
+ }
+ }
+
+ /**
+ * Helper: remove connectors from a structured classifier (in most cases a class)
+ *
+ * @param implementation A component
+ */
+ public void removeConnectors(StructuredClassifier implementation) {
+ EList<Connector> connectors = new BasicEList<Connector>();
+ connectors.addAll(implementation.getOwnedConnectors());
+ for (Connector connector : connectors) {
+ connector.destroy();
+ }
+ }
+
+ /**
+ * Helper: remove ports from a from an encapsulated classifier (in most cases a class)
+ *
+ * @param implementation A component
+ */
+ public void removePorts(EncapsulatedClassifier implementation) {
+ EList<Port> portListCopy = new BasicEList<Port>();
+ portListCopy.addAll(implementation.getOwnedPorts());
+ // avoid dangling references by calling destroy on the port list
+ for (Port port : portListCopy) {
+ port.destroy();
+ }
+ }
+
+ public static void transform(LazyCopier copier, Class bootloader, Model genModel, boolean OOmodel) throws TransformationException {
+ String ooTransformation = DepUtils.getOOTransformationFromPackage(genModel);
+ if (ooTransformation == null) {
+ // default OO transformation
+ ooTransformation = "StaticCpp"; //$NON-NLS-1$
+ }
+ IOOTrafo ooTrafo = OOTrafo.getOOTrafo(ooTransformation);
+ ooTrafo.init(copier, bootloader);
+ ExecuteOOTrafo executeOOTrafo = new ExecuteOOTrafo(ooTrafo);
+ executeOOTrafo.transformPackage(genModel);
+
+ // complete access operations?
+ }
+
+ // TODO: always false. Is it really task of OO trafo to decide whether something is
+ // instantiated by bootloader or not?
+ public static boolean instantiateViaBootloader(StructuralFeature slot) {
+ return false;
+ }
+
+ // TODO: currently used by BOOTLOADER generator. Why needed?
+ public static final String CREATE_CONNECTIONS = "createConnections"; //$NON-NLS-1$
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/InstantiateDepPlan.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/InstantiateDepPlan.java
index acf71a76c6c..a6d8a0191d6 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/InstantiateDepPlan.java
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/InstantiateDepPlan.java
@@ -53,7 +53,6 @@ import org.eclipse.papyrus.qompass.designer.core.transformations.filters.FilterS
import org.eclipse.papyrus.qompass.designer.core.transformations.filters.FilterTemplate;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
-import org.eclipse.uml2.uml.Classifier;
import org.eclipse.uml2.uml.InstanceSpecification;
import org.eclipse.uml2.uml.Model;
import org.eclipse.uml2.uml.NamedElement;
@@ -347,9 +346,7 @@ public class InstantiateDepPlan {
removeDerivedInterfacesInRoot(generatedModel);
- CompImplTrafos.transform(
- deployment.getBootloader(), targetCopy, generatedModel,
- modelIsObjectOriented);
+ ExecuteOOTrafo.transform(targetCopy, deployment.getBootloader(), generatedModel, modelIsObjectOriented);
// --------------------------------------------------------------------
checkProgressStatus();
@@ -362,7 +359,7 @@ public class InstantiateDepPlan {
langSupport.getProject(), langSupport, genModelManagement,
monitor);
boolean option = (generationOptions & GenerationOptions.ONLY_CHANGED) != 0;
- codeGenerator.generate(node, getTargetLanguage(mainInstance),
+ codeGenerator.generate(node, DepUtils.getTargetLanguage(mainInstance),
option);
}
@@ -380,8 +377,7 @@ public class InstantiateDepPlan {
private ILangSupport configureLanguageSupport(
InstanceSpecification mainInstance, Model existingModel,
InstanceSpecification node) throws TransformationException {
- ILangSupport langSupport = LanguageSupport
- .getLangSupport(getTargetLanguage(mainInstance));
+ ILangSupport langSupport = LanguageSupport.getLangSupport(DepUtils.getTargetLanguage(mainInstance));
langSupport.resetConfigurationData();
String modelName = getModelName(existingModel, node);
@@ -454,16 +450,6 @@ public class InstantiateDepPlan {
return modelName;
}
- private String getTargetLanguage(InstanceSpecification mainInstance) {
- Classifier cl = DepUtils.getClassifier(mainInstance);
- String targetLanguage = DepUtils.getLanguageFromPackage(cl
- .getNearestPackage());
- if (targetLanguage == null) {
- targetLanguage = "C++"; //$NON-NLS-1$
- }
- return targetLanguage;
- }
-
private void initiateProgressMonitor(boolean generateCode,
EList<InstanceSpecification> nodes) {
// -- calc # of steps for progress monitor
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LWContainerTrafo.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LWContainerTrafo.java
index 4a33fb42b1e..ef189820245 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LWContainerTrafo.java
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/LWContainerTrafo.java
@@ -207,7 +207,7 @@ public class LWContainerTrafo extends AbstractContainerTrafo {
Type type = part.getType();
if (type == null) {
String ruleName = (smContainerRule.getBase_Class() != null) ? smContainerRule.getBase_Class().getName() : "undefined"; //$NON-NLS-1$
- throw new TransformationException(String.format(Messages.LWContainerTrafo_0, ruleName));
+ throw new TransformationException(String.format(Messages.LWContainerTrafo_CannotApplyRule, ruleName));
}
if (part instanceof Port) {
Port newPort = tmClass.createOwnedPort(part.getName(), part.getType());
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/MainModelTrafo.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/MainModelTrafo.java
index 0c82039663c..cadc3b639d4 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/MainModelTrafo.java
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/MainModelTrafo.java
@@ -42,6 +42,8 @@ import org.eclipse.papyrus.qompass.designer.core.deployment.AllocUtils;
import org.eclipse.papyrus.qompass.designer.core.deployment.DepCreation;
import org.eclipse.papyrus.qompass.designer.core.deployment.DepPlanUtils;
import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
+import org.eclipse.papyrus.qompass.designer.core.transformations.connector.ConnectorReification;
+import org.eclipse.papyrus.qompass.designer.core.transformations.container.ContainerTrafo;
import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil;
import org.eclipse.uml2.uml.Class;
import org.eclipse.uml2.uml.Classifier;
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ConnectorReification.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/connector/ConnectorReification.java
index e226d47601b..22908fa63c9 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ConnectorReification.java
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/connector/ConnectorReification.java
@@ -12,7 +12,7 @@
*
*****************************************************************************/
-package org.eclipse.papyrus.qompass.designer.core.transformations;
+package org.eclipse.papyrus.qompass.designer.core.transformations.connector;
/**
* This file is part of Qompass GenTools
@@ -35,6 +35,8 @@ import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
import org.eclipse.papyrus.qompass.designer.core.templates.ConnectorBinding;
import org.eclipse.papyrus.qompass.designer.core.templates.TemplateInstantiation;
import org.eclipse.papyrus.qompass.designer.core.templates.TemplateUtils;
+import org.eclipse.papyrus.qompass.designer.core.transformations.LazyCopier;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
import org.eclipse.papyrus.uml.tools.utils.ConnectorUtil;
import org.eclipse.uml2.uml.Class;
import org.eclipse.uml2.uml.ConnectableElement;
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ContainerTrafo.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/container/ContainerTrafo.java
index 5ed510659cf..3be31de126e 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/ContainerTrafo.java
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.core/src/org/eclipse/papyrus/qompass/designer/core/transformations/container/ContainerTrafo.java
@@ -12,7 +12,7 @@
*
*****************************************************************************/
-package org.eclipse.papyrus.qompass.designer.core.transformations;
+package org.eclipse.papyrus.qompass.designer.core.transformations.container;
import java.util.HashMap;
import java.util.Iterator;
@@ -39,6 +39,12 @@ import org.eclipse.papyrus.qompass.designer.core.deployment.DepCreation;
import org.eclipse.papyrus.qompass.designer.core.deployment.DepUtils;
import org.eclipse.papyrus.qompass.designer.core.templates.TemplateInstantiation;
import org.eclipse.papyrus.qompass.designer.core.templates.TemplateUtils;
+import org.eclipse.papyrus.qompass.designer.core.transformations.AbstractContainerTrafo;
+import org.eclipse.papyrus.qompass.designer.core.transformations.LazyCopier;
+import org.eclipse.papyrus.qompass.designer.core.transformations.RuleManagement;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationContext;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+import org.eclipse.papyrus.qompass.designer.core.transformations.connector.ConnectorReification;
import org.eclipse.papyrus.uml.tools.utils.ConnectorUtil;
import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil;
import org.eclipse.uml2.uml.Association;
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.classpath b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.classpath
new file mode 100644
index 00000000000..248b4c5dc7a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="xtend-gen"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.project b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.project
new file mode 100644
index 00000000000..e75a53b4f3e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.qompass.designer.cpp</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.settings/org.eclipse.jdt.core.prefs b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..f42de363afa
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..cd20c9880fa
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/META-INF/MANIFEST.MF
@@ -0,0 +1,21 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.qompass.designer.cpp;singleton:=true
+Bundle-Version: 1.1.0.qualifier
+Bundle-Activator: org.eclipse.papyrus.qompass.designer.cpp.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ com.google.guava,
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtend.lib,
+ org.eclipse.xtend.lib.macro,
+ org.eclipse.papyrus.qompass.designer.core;bundle-version="1.1.0",
+ org.eclipse.uml2.uml;bundle-version="5.0.1",
+ org.eclipse.papyrus.uml.tools.utils;bundle-version="1.1.0",
+ org.eclipse.papyrus.cpp.profile;bundle-version="1.1.0"
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
+
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/about.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/build.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/build.properties
new file mode 100644
index 00000000000..ae22b3b40a0
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/build.properties
@@ -0,0 +1,7 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ plugin.properties,\
+ plugin.xml
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.properties
new file mode 100644
index 00000000000..41efca52119
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2013 CEA LIST.
+# 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:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Papyrus extra: Qompass Designer C++ support (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.xml
new file mode 100644
index 00000000000..7e269f6b934
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/plugin.xml
@@ -0,0 +1,18 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.papyrus.qompass.designer.core.ooTransformation">
+ <client
+ class="org.eclipse.papyrus.qompass.designer.cpp.xtend.StaticCppToOO"
+ ooTrafoID="org.eclipse.papyrus.qompass.designer.cpp.StaticCpp">
+ </client>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.qompass.designer.core.ooTransformation">
+ <client
+ class="org.eclipse.papyrus.qompass.designer.cpp.xtend.DynamicCppToOO"
+ ooTrafoID="org.eclipse.papyrus.qompass.designer.cpp.DynamicCpp">
+ </client>
+ </extension>
+</plugin>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Activator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Activator.java
new file mode 100644
index 00000000000..8d1c38fcd87
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Activator.java
@@ -0,0 +1,50 @@
+package org.eclipse.papyrus.qompass.designer.cpp;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.qompass.designer.cpp"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Constants.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Constants.java
new file mode 100644
index 00000000000..546144c98e5
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Constants.java
@@ -0,0 +1,9 @@
+package org.eclipse.papyrus.qompass.designer.cpp;
+
+public class Constants {
+ public static final String CREATE_CONNECTIONS = "createConnections"; //$NON-NLS-1$
+
+ public static final String progLang = "C/C++"; //$NON-NLS-1$
+
+ public static final String retParamName = "ret"; //$NON-NLS-1$
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Messages.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Messages.java
new file mode 100644
index 00000000000..ae3f8380e5b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/Messages.java
@@ -0,0 +1,19 @@
+package org.eclipse.papyrus.qompass.designer.cpp;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.papyrus.qompass.designer.cpp.messages"; //$NON-NLS-1$
+
+ public static String CompImplTrafos_CannotFindType;
+ public static String CompImplTrafos_IntfNotImplemented;
+ public static String CompTypeTrafos_CannotFindType;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/messages.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/messages.properties
new file mode 100644
index 00000000000..c4c2141c7e6
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/messages.properties
@@ -0,0 +1,3 @@
+CompImplTrafos_CannotFindType=Can not find type %s. Thus, unable to create suitable connect operation in component to OO transformation.
+CompImplTrafos_IntfNotImplemented=Interface <%s> provided by port <%s> of class <%s> is not implemented by the component itself nor does the port delegate to a part
+CompTypeTrafos_CannotFindType=Can not find type <%s>. Thus, unable to create suitable connect operation in component to OO transformation
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppPortMapping.xtend b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppPortMapping.xtend
new file mode 100644
index 00000000000..238f4e81035
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppPortMapping.xtend
@@ -0,0 +1,552 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * 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:
+ * Ansgar Radermacher ansgar.radermacher@cea.fr
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.qompass.designer.cpp.xtend
+
+import org.eclipse.papyrus.qompass.designer.core.extensions.IOOTrafo
+import org.eclipse.papyrus.qompass.designer.core.transformations.LazyCopier
+import org.eclipse.uml2.uml.Class
+import org.eclipse.uml2.uml.Property
+import org.eclipse.uml2.uml.Port
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException
+import org.eclipse.papyrus.qompass.designer.core.PortInfo
+import org.eclipse.papyrus.qompass.designer.core.PortUtils
+import org.eclipse.papyrus.qompass.designer.core.transformations.PrefixConstants
+import org.eclipse.papyrus.qompass.designer.core.Utils
+import org.eclipse.papyrus.qompass.designer.core.transformations.CompTypeTrafos
+import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil
+import org.eclipse.uml2.uml.AggregationKind
+import org.eclipse.uml2.uml.UMLPackage
+import org.eclipse.uml2.uml.OpaqueBehavior
+import org.eclipse.uml2.uml.ConnectorEnd
+import org.eclipse.papyrus.uml.tools.utils.ConnectorUtil
+import org.eclipse.papyrus.C_Cpp.Ptr
+import org.eclipse.uml2.uml.Type
+import java.util.HashMap
+import java.util.Map
+import org.eclipse.uml2.uml.Connector
+import org.eclipse.emf.common.util.EList
+import org.eclipse.uml2.uml.StructuralFeature
+import org.eclipse.papyrus.qompass.designer.cpp.Messages
+import org.eclipse.papyrus.qompass.designer.cpp.Constants
+import static extension org.eclipse.papyrus.qompass.designer.cpp.xtend.CppUtils.nameRef;
+
+/**
+ * This class realizes the transformation from component-based to object-oriented
+ * models. It includes the replacement of ports and connectors. Ports are
+ * replaced with attributes and access operations, connectors within a composite
+ * by an operation that creates the initial setup.
+ *
+ * 1. add an operation that allows to retrieve the reference to an interface provided
+ * by a port. This operation has a mapping specific name, e.g. get_<port_name>
+ * 2. add an operation that allows to connect a specific port.
+ * the connect_q operation (*including a
+ * storage attribute*) for a port with a required interface
+ * 3. add an implementation for the getcnx_q operation for a port
+ * with a required interface (the operation itself has been added before)
+ *
+ * TODO: C++ specific, support different "component to OO" mappings
+ *
+ * Problems: need to align bootloader creation with this mapping, since
+ * the bootloader may be responsible for instantiation
+ *
+ * Caveat: Assure that the folder derivedInterfaces already exists in a model.
+ * Otherwise the call to getProvided/getRequired interface might trigger its
+ * creation resulting in the corruption of list iterators (ConcurrentAccess
+ * exception)
+ *
+ */
+class CppPortMapping implements IOOTrafo {
+
+ // protected LazyCopier copier
+
+ def override init(LazyCopier copier, Class bootloader) {
+ // this.copier = copier
+ }
+
+ override addPortOperations(Class implementation) {
+ addGetPortOperation(implementation)
+ addConnectPortOperation(implementation)
+ }
+
+ /**
+ * Add the get_p operation for each port with a provided interface. It also
+ * adds a suitable implementation that evaluates delegation connectors from
+ * the port to a property within the composite. The delegation target could
+ * either be a normal class (no port) or an inner component.
+ *
+ * @param implementation
+ */
+ def addGetPortOperation(Class implementation) {
+ for (PortInfo portInfo : PortUtils.flattenExtendedPorts(PortUtils.getAllPorts2(implementation))) {
+ val providedIntf = portInfo.getProvided()
+ if (providedIntf != null) {
+
+ // port provides an interface, add "get_p" operation &
+ // implementation
+ val opName = PrefixConstants.getP_Prefix + portInfo.name
+ var op = implementation.getOwnedOperation(opName, null, null)
+ if (op != null) {
+
+ // operation already exists. Assume that user wants to
+ // override standard delegation
+ if (op.type != providedIntf) {
+ op.createOwnedParameter(Constants.retParamName, providedIntf)
+ }
+ } else {
+ op = implementation.createOwnedOperation(opName, null, null, providedIntf)
+ val retParam = op.getOwnedParameters().get(0)
+ retParam.setName(Constants.retParamName)
+ StereotypeUtil.apply(retParam, Ptr)
+
+ val behavior = implementation.createOwnedBehavior(opName, UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+ op.getMethods().add(behavior)
+
+ val ce = ConnectorUtil.getDelegation(implementation, portInfo.getModelPort())
+
+ // if there is an delegation to an inner property, delegate to
+ // it
+ // Make distinction between delegation to component (with a
+ // port) or
+ // "normal" class (without).
+ var String body
+ if (ce != null) {
+ val part = ce.partWithPort
+ val role = ce.role
+
+ body = "return "
+ if (role instanceof Port) {
+
+ // check whether the part exists within the implementation (might not be the case
+ // due to partially copied composites).
+ // Check is based on names, since the connector points to elements within another
+ // model (copyClassifier does not make a proper connector copy)
+ // TODO: this will NOT work for extended ports!
+ body += '''«part.nameRef»«PrefixConstants.getP_Prefix»«role.name»();'''
+ } else {
+
+ // role is not a port: connector connects directly to a
+ // structural feature
+ // without passing via a port
+ // TODO: check whether structural feature exists
+ body += role.name
+ }
+ } else {
+
+ // no delegation, check whether port implements provided interface
+ var implementsIntf = implementation.getInterfaceRealization(null, providedIntf) != null
+ if (!implementsIntf) {
+ // TODO: This is a hack/workaround. Fix on level of extended port.
+ // The extended port itself is not copied to the target
+ // model (since referenced via a stereotype). Therefore,
+ // a port of an extended port still points to the
+ // original model. We try whether the providedIntf
+ // within the target model is within the interface
+ // realizations.
+
+ // val providedIntfInCopy = copier.getCopy(providedIntf)
+ // implementsIntf = implementation.getInterfaceRealization(null, providedIntfInCopy) != null
+ }
+ if (implementsIntf) {
+ body = "return this;"
+ } else {
+ throw new RuntimeException(
+ String.format(Messages.CompImplTrafos_IntfNotImplemented, providedIntf.name,
+ portInfo.port.name, implementation.name))
+ }
+ }
+ behavior.getLanguages().add(Constants.progLang)
+ behavior.getBodies().add(body)
+ }
+ }
+ }
+ }
+
+ /**
+ * Add a connect_<portName> operation for ports with a required interface.
+ * Whereas operation and a behavior is added for each owned port, a behavior
+ * (method) is needed for ports inherited from a component type (the
+ * behavior is implementation specific, as it needs to take delegation to
+ * parts into account)
+ *
+ * @param implementation
+ */
+ static def addConnectPortOperation(Class implementation) {
+ for (PortInfo portInfo : PortUtils.flattenExtendedPorts(PortUtils.getAllPorts2(implementation))) {
+ val requiredIntf = portInfo.getRequired()
+ if (requiredIntf != null) {
+
+ // port requires an interface, add "connect_p" operation &
+ // implementation
+ val opName = PrefixConstants.connectQ_Prefix + portInfo.name
+
+ if (implementation.getOwnedOperation(opName, null, null) != null) {
+ // do not add the operation, if it already exists. This means that the
+ // user wants to override it with custom behavior. In case of extended
+ // ports, we may have to do that.
+ } else {
+ var op = implementation.createOwnedOperation(opName, null, null)
+ val boolean multiPort = (portInfo.getUpper() > 1) || (portInfo.getUpper() == -1) // -1 indicates "*"
+ if (multiPort) {
+
+ // add index parameter
+ val eLong = Utils.getQualifiedElement(Utils.getTop(implementation),
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE)
+ if (eLong instanceof Type) {
+ op.createOwnedParameter("index", eLong as Type)
+ } else {
+ throw new RuntimeException(
+ String.format(Messages.CompImplTrafos_CannotFindType,
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE))
+ }
+ }
+ val refParam = op.createOwnedParameter("ref", requiredIntf)
+ StereotypeUtil.apply(refParam, Ptr)
+
+ val behavior = implementation.createOwnedBehavior(opName, UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+
+ op.getMethods().add(behavior)
+
+ val ConnectorEnd ce = ConnectorUtil.getDelegation(implementation, portInfo.getModelPort())
+
+ // if there is an delegation to an inner property, delegate to it
+ // Make distinction between delegation to component (with a port) or
+ // "normal" class (without).
+ var String body
+ if (ce != null) {
+ val part = ce.partWithPort
+ body = part.name
+ val role = ce.role
+ if (role instanceof Port) {
+ // in case of a delegation, use name of target port which might be different
+ val targetOpName = PrefixConstants.connectQ_Prefix + role.name
+ body = '''«part.nameRef»«targetOpName»'''
+
+ // TODO: no check that multiplicity of both port matches
+ if ((portInfo.getUpper() > 1) || (portInfo.getUpper() == -1)) {
+ body += "(index, ref);";
+ }
+ else {
+ body += "(ref);";
+ }
+
+ } else {
+ // TODO: does this case make sense?
+ body += '''«part.name»;'''
+ }
+ } else {
+ // no delegation - create attribute for port
+ val attributeName = PrefixConstants.attributePrefix + portInfo.name
+ if (!Utils.hasNonPortOwnedAttribute(implementation, attributeName)) {
+ val attr = implementation.createOwnedAttribute(attributeName, requiredIntf)
+ LazyCopier.copyMultElemModifiers(portInfo.port, attr)
+
+ // is shared (should store a reference)
+ attr.setAggregation(AggregationKind.SHARED_LITERAL)
+ }
+ body = attributeName
+ if(multiPort) body += "[index]"
+ body += " = ref;"
+ }
+
+ // TODO: defined by template
+ behavior.getLanguages().add(Constants.progLang)
+ behavior.getBodies().add(body)
+
+ // -------------------------
+ // add body to get-connection operation (which exists already if the port is also
+ // owned, since it is synchronized automatically during model edit)
+ // getConnQ prefix may be empty to indicate that the port is accessed directly
+ // TODO: reconsider optimization that delegated required ports do not have a
+ // local attribute & associated operation (an inner class may delegate, but the
+ // composite may be using it as well).
+ if ((PrefixConstants.getConnQ_Prefix.length() > 0) && (ce != null)) {
+ val getConnOpName = PrefixConstants.getConnQ_Prefix + portInfo.name
+ var getConnOp = implementation.getOwnedOperation(getConnOpName, null, null)
+ if (getConnOp == null) {
+ getConnOp = implementation.createOwnedOperation(getConnOpName, null, null, requiredIntf)
+ val retParam = op.getOwnedParameters().get(0)
+ retParam.setName(Constants.retParamName)
+ StereotypeUtil.apply(retParam, Ptr)
+ }
+ val getConnBehavior = implementation.createOwnedBehavior(getConnOpName,
+ UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+ getConnOp.getMethods().add(getConnBehavior)
+
+ // no delegation
+ val String name = PrefixConstants.attributePrefix + portInfo.name
+ body = '''return «name»;'''
+ behavior.getLanguages().add(Constants.progLang)
+ behavior.getBodies().add(body)
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Add an operation "createConnections" that implements the connections
+ * between composite parts. It only takes the assembly connections into
+ * account, since delegation connectors are handled by the get_ and connect_
+ * port operations above.
+ *
+ * @param implementation
+ */
+ override addConnectionOperation(Class compositeImplementation) throws TransformationException {
+ var createConnBody = ""
+ val Map<ConnectorEnd, Integer> indexMap = new HashMap<ConnectorEnd, Integer>()
+
+ for (Connector connector : compositeImplementation.getOwnedConnectors()) {
+ if (ConnectorUtil.isAssembly(connector)) {
+
+ // Boolean associationBased = false
+ if (connector.ends.size() != 2) {
+ throw new TransformationException(
+ '''Connector <«connector.name»> does not have two ends. This is currently not supported''')
+ }
+ val end1 = connector.ends.get(0)
+ val end2 = connector.ends.get(1)
+ var cmd = '''// realization of connector <«connector.name»>\n'''
+ if ((end1.role instanceof Port) && PortUtils.isExtendedPort(end1.role as Port)) {
+ val port = end1.role as Port
+ val EList<PortInfo> subPorts = PortUtils.flattenExtendedPort(port)
+ for (PortInfo subPort : subPorts) {
+ cmd += ''' // realization of connection for sub-port «subPort.port.name»\n'''
+ cmd += connectPorts(indexMap, connector, end1, end2, subPort.port)
+ cmd += connectPorts(indexMap, connector, end2, end1, subPort.port)
+ }
+ } else {
+ cmd += connectPorts(indexMap, connector, end1, end2, null)
+ cmd += connectPorts(indexMap, connector, end2, end1, null)
+ }
+ createConnBody += cmd + "\n"
+ }
+ }
+
+ // TODO: use template, as in bootloader
+ if (createConnBody.length() > 0) {
+ val operation = compositeImplementation.createOwnedOperation(Constants.CREATE_CONNECTIONS, null, null)
+
+ val behavior = compositeImplementation.createOwnedBehavior("b:" + operation.name,
+ UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+ behavior.getLanguages().add(Constants.progLang)
+ behavior.getBodies().add(createConnBody)
+ behavior.setSpecification(operation)
+ }
+ }
+
+ /**
+ * Create the body C++ code code that creates a connection between the two ends
+ * of a connector. This function checks whether the first end really is a receptacle
+ * and the second really is a facet.
+ * TODO: cleaner rewrite in xtend
+ *
+ * @param indexMap
+ * a map of indices that are used in case of multiplex
+ * receptacles
+ * @param connector
+ * a connector
+ * @param receptacleEnd
+ * an end of the connector that may point to a receptacle port
+ * @param facetEnd
+ * an end of the connector that may point to a facet port
+ * @param subPort
+ * a sub-port in case of extended ports
+ * @return
+ * @throws TransformationException
+ */
+ static def connectPorts(Map<ConnectorEnd, Integer> indexMap, Connector connector, ConnectorEnd receptacleEnd,
+ ConnectorEnd facetEnd, Port subPort) throws TransformationException {
+ val association = connector.type
+ if ((receptacleEnd.role instanceof Port) && (facetEnd.role instanceof Port)) {
+ val facetPort = facetEnd.role as Port
+ val receptaclePort = receptacleEnd.role as Port
+ val facetPI = PortInfo.fromSubPort(facetPort, subPort)
+ val receptaclePI = PortInfo.fromSubPort(receptaclePort, subPort)
+
+ if ((facetPI.getProvided() != null) && (receptaclePI.getRequired() != null)) {
+ val facetPart = facetEnd.partWithPort
+ val receptaclePart = receptacleEnd.partWithPort
+
+ var subPortName = ""
+ if(subPort != null) subPortName += "_" + subPort.name
+ val indexName = getIndexName(indexMap, receptaclePort, receptacleEnd)
+ val setter = '''«receptaclePart.nameRef»connect_«receptaclePort.name» «subPortName»;'''
+ val getter = '''«facetPart.nameRef»get_«facetPort.name» «subPortName»()'''
+ return '''«setter»(«indexName»«getter»);\n'''
+ }
+
+ } else if (receptacleEnd.role instanceof Port) {
+
+ // only the receptacle end is of type port.
+ val Port receptaclePort = receptacleEnd.role as Port
+ if (PortUtils.getRequired(receptaclePort) != null) {
+ val facetPart = facetEnd.role as Property
+ val receptaclePart = facetEnd.partWithPort
+
+ val indexName = getIndexName(indexMap, receptaclePort, receptacleEnd)
+ val setter = '''«receptaclePart.nameRef»connect_«receptaclePort.name»'''
+ val getter = '''&«facetPart.name»'''
+ return '''«setter»(«indexName»«getter»);\n'''
+ }
+ } else if (facetEnd.role instanceof Port) {
+
+ // only the facet end is of type port. Unsupported combination
+ val facetPort = facetEnd.role as Port
+ if (PortUtils.getProvided(facetPort) != null) {
+ val facetPart = facetEnd.partWithPort
+ val receptaclePart = facetEnd.role as Property
+
+ val setter = receptaclePart.name
+ val getter = '''«facetPart.nameRef»get_«facetPort.name»();'''
+ return '''«setter» = «getter»;\n'''
+ }
+ } else if (association != null) {
+
+ // both connector ends do not target ports. In this case, we require that the connector is typed
+ // with an association. We use this association to find out which end is navigable and assume that
+ // the part pointed to by the other end is a pointer that gets initialized with the part of the
+ // navigable end.
+ val facetPart = facetEnd.role as Property
+ val receptaclePart = receptacleEnd.role as Property
+
+ val assocProp1 = association.getMemberEnd(null, facetPart.type)
+
+ // Property assocProp2 = facetPart.getOtherEnd()
+ if ((assocProp1 != null) && assocProp1.isNavigable) {
+ val setter = '''«receptaclePart.nameRef»«assocProp1.name»'''
+ val getter = '''&«facetPart.name»'''
+ return '''«setter» = «getter»;\n'''
+ }
+ } else {
+
+ // not handled (a connector not targeting a port must be typed)
+ throw new TransformationException(
+ "Connector <" + connector.name +
+ "> does not use ports, but it is not typed (only connectors between ports should not be typed)")
+ }
+ return ""
+ }
+
+ /**
+ * Handle ports with multiplicity > 1. The idea is that we could have
+ * multiple connections targeting a receptacle. The first connection would
+ * start with index 0. Implementations can make no assumption which
+ * connection is associated with a certain index. [want to avoid associative
+ * array in runtime].
+ *
+ * @param port
+ * @param end
+ * @return
+ */
+ static def getIndexName(Map<ConnectorEnd, Integer> indexMap, Port port, ConnectorEnd end) {
+ if ((port.getUpper() > 1) || (port.getUpper() == -1)) {
+
+ // index depends of combination of property and port, use connector
+ // end as key
+ var indexValue = indexMap.get(end)
+ if (indexValue == null) {
+ indexValue = 0
+ indexMap.put(end, indexValue)
+ }
+ var index = indexValue + ", "
+ indexValue++
+ indexMap.put(end, indexValue)
+ return index
+ }
+ return ""
+ }
+
+ /**
+ * Return true, if the bootloader is responsible for the instantiation of a
+ * part. [Structual difference: bootloader can decide instance based - and
+ * instances are deployed]
+ *
+ * If a part is a component type or an abstract implementation, it cannot be
+ * instantiated. Thus, a heir has to be selected in the deployment plan.
+ * Since the selection might be different for different instances of the
+ * composite, the instantiation is not done by the component itself, but by
+ * the bootloader. The bootloader also has to instantiate, if different
+ * allocation variants are required. (this is for instance the case for
+ * distribution connectors and for the system itself)
+ *
+ * If possible, we want to let composites instantiate sub-components, since
+ * this eases the transition to systems which support reconfiguration.
+ *
+ * [TODO: optimization: analyze whether the deployment plan selects a single
+ * implementation. If yes, let the composite instantiate]
+ *
+ * [TODO: elements within an assembly need to be instantiated by composite -
+ * if System - by bootloader. assembly also need to be instantiated by
+ * composite!!
+ *
+ * @param implementation
+ * @return
+ */
+ static def instantiateViaBootloader(Class implementation) {
+ return implementation.isAbstract() || Utils.isAssembly(implementation)
+ }
+
+ /**
+ * Return whether a part needs to be instantiated by the bootloader instead
+ * by the composite in which it is contained. The criteria is based on the
+ * question whether the containing composite is flattened, as it is the case
+ * for the system component and the interaction components for distribution.
+ *
+ * @param part
+ * @return
+ */
+ static def instantiateViaBootloader(StructuralFeature part) {
+ if (part != null) {
+ if (part.type instanceof Class) {
+ val implementation = part.type as Class
+
+ // TODO: wrong criteria? (must be shared or not?)
+ return instantiateViaBootloader(implementation)
+ } else {
+
+ // not a class, assume primitive type instantiated by composite
+ return false
+ }
+ }
+ return false
+ }
+
+ /**
+ * Transform parts if necessary.
+ *
+ * If the bootloader is responsible for creating an instance (if it is a
+ * abstract type), mark the associated part as a C++ pointer. We do not want
+ * to change the aggregation kind, since it remains logically a composition,
+ * it is merely an implementation issue that it must be a pointer for C++ if
+ * the concrete type is not yet known.
+ *
+ * @param compositeImplementation
+ * a (composite) component
+ */
+ override transformParts(Class compositeImplementation) {
+
+ for (Property attribute : Utils.getParts(compositeImplementation)) {
+ val type = attribute.type
+ if (type instanceof Class) {
+ val cl = type as Class
+
+ // => requires adaptations of boot-loader which is then only
+ // responsible for creating instances corresponding to types
+ if (instantiateViaBootloader(cl)) {
+ StereotypeUtil.apply(attribute, Ptr)
+ }
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppUtils.xtend b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppUtils.xtend
new file mode 100644
index 00000000000..1d568623d14
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppUtils.xtend
@@ -0,0 +1,26 @@
+package org.eclipse.papyrus.qompass.designer.cpp.xtend
+
+import org.eclipse.uml2.uml.Property ;
+import org.eclipse.uml2.uml.AggregationKind
+import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil
+import org.eclipse.papyrus.C_Cpp.Ptr
+
+public class CppUtils {
+ public static def nameRef(Property part) {
+ part.name + refOp(part)
+ }
+
+ /**
+ * return the operator for (de-) referencing a part. If the part is
+ * instantiate via the bootloader, it becomes a pointer. If it is
+ * instantiated by the composite itself, it is not a pointer, it will be
+ * instantiated along with the composite
+ *
+ * @param part
+ * @return
+ */
+ public static def refOp(Property part) {
+ if((part.getAggregation() == AggregationKind.SHARED_LITERAL) || StereotypeUtil.isApplied(part, Ptr)) "->" else "."
+ }
+
+} \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/DynamicCpptoOO.xtend b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/DynamicCpptoOO.xtend
new file mode 100644
index 00000000000..41910d1492a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/DynamicCpptoOO.xtend
@@ -0,0 +1,504 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * 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:
+ * Ansgar Radermacher ansgar.radermacher@cea.fr
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.qompass.designer.cpp.xtend
+
+import org.eclipse.papyrus.qompass.designer.core.extensions.IOOTrafo
+import org.eclipse.papyrus.qompass.designer.core.transformations.LazyCopier
+import org.eclipse.uml2.uml.Class
+import org.eclipse.uml2.uml.Property
+import org.eclipse.uml2.uml.Port
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException
+import org.eclipse.papyrus.qompass.designer.core.PortInfo
+import org.eclipse.papyrus.qompass.designer.core.PortUtils
+import org.eclipse.papyrus.qompass.designer.core.transformations.PrefixConstants
+import org.eclipse.papyrus.qompass.designer.core.Utils
+import org.eclipse.papyrus.qompass.designer.core.transformations.CompTypeTrafos
+import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil
+import org.eclipse.uml2.uml.AggregationKind
+import org.eclipse.uml2.uml.UMLPackage
+import org.eclipse.uml2.uml.OpaqueBehavior
+import org.eclipse.uml2.uml.ConnectorEnd
+import org.eclipse.papyrus.uml.tools.utils.ConnectorUtil
+import org.eclipse.papyrus.C_Cpp.Ptr
+import org.eclipse.uml2.uml.Type
+import java.util.HashMap
+import java.util.Map
+import org.eclipse.uml2.uml.Connector
+import org.eclipse.emf.common.util.EList
+import org.eclipse.papyrus.qompass.designer.cpp.Messages
+import org.eclipse.papyrus.qompass.designer.cpp.Constants
+import static extension org.eclipse.papyrus.qompass.designer.cpp.xtend.CppUtils.nameRef;
+
+/**
+ * This class realizes the dynamic variant of the OO-transformation
+ *
+ */
+class DynamicCppToOO implements IOOTrafo {
+
+ protected LazyCopier copier
+
+ val static final String PART_MANAGER = "services::PartManager"
+
+ val static final String INIT_PARTS = "initParts"
+
+ // name of generic "parts" attribute for dynamic deployment (TODO: should be inherited)
+ val static final String PARTS = "parts"
+
+ val static final String progLang = "C/C++"
+
+ protected Class bootloader // why required?
+
+ def override init(LazyCopier copier, Class bootloader) {
+ this.copier = copier
+ this.bootloader = bootloader
+ }
+
+ override addPortOperations(Class implementation) {
+ addGetPortOperation(implementation)
+ addConnectPortOperation(implementation)
+ }
+
+ /**
+ * Add the get_p operation for each port with a provided interface. It also
+ * adds a suitable implementation that evaluates delegation connectors from
+ * the port to a property within the composite. The delegation target could
+ * either be a normal class (no port) or an inner component.
+ *
+ * @param implementation
+ */
+ def addGetPortOperation(Class implementation) {
+ for (PortInfo portInfo : PortUtils.flattenExtendedPorts(PortUtils.getAllPorts2(implementation))) {
+ val providedIntf = portInfo.getProvided()
+ if (providedIntf != null) {
+
+ // port provides an interface, add "get_p" operation &
+ // implementation
+ val opName = PrefixConstants.getP_Prefix + portInfo.name
+ var op = implementation.getOwnedOperation(opName, null, null)
+ if (op != null) {
+
+ // operation already exists. Assume that user wants to
+ // override standard delegation
+ if (op.type != providedIntf) {
+ op.createOwnedParameter(Constants.retParamName, providedIntf)
+ }
+ } else {
+ op = implementation.createOwnedOperation(opName, null, null, providedIntf)
+ val retParam = op.getOwnedParameters().get(0)
+ retParam.setName(Constants.retParamName)
+ StereotypeUtil.apply(retParam, Ptr)
+
+ val behavior = implementation.createOwnedBehavior(opName, UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+ op.getMethods().add(behavior)
+
+ val ce = ConnectorUtil.getDelegation(implementation, portInfo.getModelPort())
+
+ // if there is an delegation to an inner property, delegate to
+ // it
+ // Make distinction between delegation to component (with a
+ // port) or
+ // "normal" class (without).
+ var String body
+ if (ce != null) {
+ val part = ce.partWithPort
+ val role = ce.role
+
+ body = "return "
+ if (role instanceof Port) {
+
+ // check whether the part exists within the implementation (might not be the case
+ // due to partially copied composites).
+ // Check is based on names, since the connector points to elements within another
+ // model (copyClassifier does not make a proper connector copy)
+ // TODO: this will NOT work for extended ports!
+ body += '''«part.nameRef»«PrefixConstants.getP_Prefix»«role.name»();'''
+ } else {
+
+ // role is not a port: connector connects directly to a
+ // structural feature
+ // without passing via a port
+ // TODO: check whether structural feature exists
+ body += role.name
+ }
+ } else {
+
+ // no delegation, check whether port implements provided interface
+ var implementsIntf = implementation.getInterfaceRealization(null, providedIntf) != null
+ if (!implementsIntf) {
+
+ // The extended port itself is not copied to the target
+ // model (since referenced via a stereotype). Therefore,
+ // a port of an extended port still points to the
+ // original model. We try whether the providedIntf
+ // within
+ // the target model is within the interface
+ // realizations.
+ val providedIntfInCopy = copier.getCopy(providedIntf)
+ implementsIntf = implementation.getInterfaceRealization(null, providedIntfInCopy) != null
+ }
+ if (implementsIntf) {
+ body = "return this;"
+ } else {
+ throw new RuntimeException(
+ String.format(Messages.CompImplTrafos_IntfNotImplemented, providedIntf.name,
+ portInfo.port.name, implementation.name))
+ }
+ }
+ behavior.getLanguages().add(Constants.progLang)
+ behavior.getBodies().add(body)
+ }
+ }
+ }
+ }
+
+ /**
+ * Add a connect_<portName> operation for ports with a required interface.
+ * Whereas operation and a behavior is added for each owned port, a behavior
+ * (method) is needed for ports inherited from a component type (the
+ * behavior is implementation specific, as it needs to take delegation to
+ * parts into account)
+ *
+ * @param implementation
+ */
+ static def addConnectPortOperation(Class implementation) {
+ for (PortInfo portInfo : PortUtils.flattenExtendedPorts(PortUtils.getAllPorts2(implementation))) {
+ val requiredIntf = portInfo.getRequired()
+ if (requiredIntf != null) {
+
+ // port requires an interface, add "connect_p" operation &
+ // implementation
+ val opName = PrefixConstants.connectQ_Prefix + portInfo.name
+
+ if (implementation.getOwnedOperation(opName, null, null) != null) {
+ // do not add the operation, if it already exists. This means that the
+ // user wants to override it with custom behavior. In case of extended
+ // ports, we may have to do that.
+ } else {
+ var op = implementation.createOwnedOperation(opName, null, null)
+ val boolean multiPort = (portInfo.getUpper() > 1) || (portInfo.getUpper() == -1) // -1 indicates "*"
+ if (multiPort) {
+
+ // add index parameter
+ val eLong = Utils.getQualifiedElement(Utils.getTop(implementation),
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE)
+ if (eLong instanceof Type) {
+ op.createOwnedParameter("index", eLong as Type)
+ } else {
+ throw new RuntimeException(
+ String.format(Messages.CompImplTrafos_CannotFindType,
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE))
+ }
+ }
+ val refParam = op.createOwnedParameter("ref", requiredIntf)
+ StereotypeUtil.apply(refParam, Ptr)
+
+ val behavior = implementation.createOwnedBehavior(opName, UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+
+ op.getMethods().add(behavior)
+
+ val ConnectorEnd ce = ConnectorUtil.getDelegation(implementation, portInfo.getModelPort())
+
+ // if there is an delegation to an inner property, delegate to it
+ // Make distinction between delegation to component (with a port) or
+ // "normal" class (without).
+ var String body
+ if (ce != null) {
+ val part = ce.partWithPort
+ body = part.name
+ val role = ce.role
+ if (role instanceof Port) {
+ // in case of a delegation, use name of target port which might be different
+ val targetOpName = PrefixConstants.connectQ_Prefix + role.name
+ body = '''«part.nameRef»«targetOpName»'''
+
+ // TODO: no check that multiplicity of both port matches
+ if ((portInfo.getUpper() > 1) || (portInfo.getUpper() == -1)) {
+ body += "(index, ref);";
+ }
+ else {
+ body += "(ref);";
+ }
+
+ } else {
+ // TODO: does this case make sense?
+ body += '''«part.name»;'''
+ }
+ } else {
+ // no delegation - create attribute for port
+ val attributeName = PrefixConstants.attributePrefix + portInfo.name
+ if (!Utils.hasNonPortOwnedAttribute(implementation, attributeName)) {
+ val attr = implementation.createOwnedAttribute(attributeName, requiredIntf)
+ LazyCopier.copyMultElemModifiers(portInfo.port, attr)
+
+ // is shared (should store a reference)
+ attr.setAggregation(AggregationKind.SHARED_LITERAL)
+ }
+ body = attributeName
+ if(multiPort) body += "[index]"
+ body += " = ref;"
+ }
+
+ // TODO: defined by template
+ behavior.getLanguages().add(Constants.progLang)
+ behavior.getBodies().add(body)
+
+ // -------------------------
+ // add body to get-connection operation (which exists already if the port is also
+ // owned, since it is synchronized automatically during model edit)
+ // getConnQ prefix may be empty to indicate that the port is accessed directly
+ // TODO: reconsider optimization that delegated required ports do not have a
+ // local attribute & associated operation (an inner class may delegate, but the
+ // composite may be using it as well).
+ if ((PrefixConstants.getConnQ_Prefix.length() > 0) && (ce != null)) {
+ val getConnOpName = PrefixConstants.getConnQ_Prefix + portInfo.name
+ var getConnOp = implementation.getOwnedOperation(getConnOpName, null, null)
+ if (getConnOp == null) {
+ getConnOp = implementation.createOwnedOperation(getConnOpName, null, null, requiredIntf)
+ val retParam = op.getOwnedParameters().get(0)
+ retParam.setName(Constants.retParamName)
+ StereotypeUtil.apply(retParam, Ptr)
+ }
+ val getConnBehavior = implementation.createOwnedBehavior(getConnOpName,
+ UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+ getConnOp.getMethods().add(getConnBehavior)
+
+ // no delegation
+ val String name = PrefixConstants.attributePrefix + portInfo.name
+ body = '''return «name»;'''
+ behavior.getLanguages().add(Constants.progLang)
+ behavior.getBodies().add(body)
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Add an operation "createConnections" that implements the connections
+ * between composite parts. It only takes the assembly connections into
+ * account, since delegation connectors are handled by the get_ and connect_
+ * port operations above.
+ *
+ * @param implementation
+ */
+ override addConnectionOperation(Class compositeImplementation) throws TransformationException {
+ var createConnBody = ""
+ val Map<ConnectorEnd, Integer> indexMap = new HashMap<ConnectorEnd, Integer>()
+
+ for (Connector connector : compositeImplementation.getOwnedConnectors()) {
+ if (ConnectorUtil.isAssembly(connector)) {
+
+ // Boolean associationBased = false
+ if (connector.ends.size() != 2) {
+ throw new TransformationException(
+ '''Connector <«connector.name»> does not have two ends. This is currently not supported''')
+ }
+ val end1 = connector.ends.get(0)
+ val end2 = connector.ends.get(1)
+ var cmd = '''// realization of connector <«connector.name»>\n'''
+ if ((end1.role instanceof Port) && PortUtils.isExtendedPort(end1.role as Port)) {
+ val port = end1.role as Port
+ val EList<PortInfo> subPorts = PortUtils.flattenExtendedPort(port)
+ for (PortInfo subPort : subPorts) {
+ cmd += ''' // realization of connection for sub-port «subPort.port.name»\n'''
+ cmd += connectPorts(indexMap, connector, end1, end2, subPort.port)
+ cmd += connectPorts(indexMap, connector, end2, end1, subPort.port)
+ }
+ } else {
+ cmd += connectPorts(indexMap, connector, end1, end2, null)
+ cmd += connectPorts(indexMap, connector, end2, end1, null)
+ }
+ createConnBody += cmd + "\n"
+ }
+ }
+
+ // TODO: use template, as in bootloader
+ if (createConnBody.length() > 0) {
+ val operation = compositeImplementation.createOwnedOperation(Constants.CREATE_CONNECTIONS, null, null)
+
+ val behavior = compositeImplementation.createOwnedBehavior("b:" + operation.name,
+ UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+ behavior.getLanguages().add(Constants.progLang)
+ behavior.getBodies().add(createConnBody)
+ behavior.setSpecification(operation)
+ }
+ }
+
+ /**
+ * Create the body C++ code code that creates a connection between the two ends
+ * of a connector. This function checks whether the first end really is a receptacle
+ * and the second really is a facet.
+ * TODO: cleaner rewrite in xtend
+ *
+ * @param indexMap
+ * a map of indices that are used in case of multiplex
+ * receptacles
+ * @param connector
+ * a connector
+ * @param receptacleEnd
+ * an end of the connector that may point to a receptacle port
+ * @param facetEnd
+ * an end of the connector that may point to a facet port
+ * @param subPort
+ * a sub-port in case of extended ports
+ * @return
+ * @throws TransformationException
+ */
+ static def connectPorts(Map<ConnectorEnd, Integer> indexMap, Connector connector, ConnectorEnd receptacleEnd,
+ ConnectorEnd facetEnd, Port subPort) throws TransformationException {
+ val association = connector.type
+ if ((receptacleEnd.role instanceof Port) && (facetEnd.role instanceof Port)) {
+ val facetPort = facetEnd.role as Port
+ val receptaclePort = receptacleEnd.role as Port
+ val facetPI = PortInfo.fromSubPort(facetPort, subPort)
+ val receptaclePI = PortInfo.fromSubPort(receptaclePort, subPort)
+
+ if ((facetPI.getProvided() != null) && (receptaclePI.getRequired() != null)) {
+ val facetPart = facetEnd.partWithPort
+ val receptaclePart = receptacleEnd.partWithPort
+
+ var subPortName = ""
+ if(subPort != null) subPortName += "_" + subPort.name
+ val indexName = getIndexName(indexMap, receptaclePort, receptacleEnd)
+ val setter = '''«receptaclePart.nameRef»connect_«receptaclePort.name» «subPortName»;'''
+ val getter = '''«facetPart.nameRef»get_«facetPort.name» «subPortName»()'''
+ return '''«setter»(«indexName»«getter»);\n'''
+ }
+
+ } else if (receptacleEnd.role instanceof Port) {
+
+ // only the receptacle end is of type port.
+ val Port receptaclePort = receptacleEnd.role as Port
+ if (PortUtils.getRequired(receptaclePort) != null) {
+ val facetPart = facetEnd.role as Property
+ val receptaclePart = facetEnd.partWithPort
+
+ val indexName = getIndexName(indexMap, receptaclePort, receptacleEnd)
+ val setter = '''«receptaclePart.nameRef»connect_«receptaclePort.name»'''
+ val getter = '''&«facetPart.name»'''
+ return '''«setter»(«indexName»«getter»);\n'''
+ }
+ } else if (facetEnd.role instanceof Port) {
+
+ // only the facet end is of type port. Unsupported combination
+ val facetPort = facetEnd.role as Port
+ if (PortUtils.getProvided(facetPort) != null) {
+ val facetPart = facetEnd.partWithPort
+ val receptaclePart = facetEnd.role as Property
+
+ val setter = receptaclePart.name
+ val getter = '''«facetPart.nameRef»get_«facetPort.name»();'''
+ return '''«setter» = «getter»;\n'''
+ }
+ } else if (association != null) {
+
+ // both connector ends do not target ports. In this case, we require that the connector is typed
+ // with an association. We use this association to find out which end is navigable and assume that
+ // the part pointed to by the other end is a pointer that gets initialized with the part of the
+ // navigable end.
+ val facetPart = facetEnd.role as Property
+ val receptaclePart = receptacleEnd.role as Property
+
+ val assocProp1 = association.getMemberEnd(null, facetPart.type)
+
+ // Property assocProp2 = facetPart.getOtherEnd()
+ if ((assocProp1 != null) && assocProp1.isNavigable) {
+ val setter = '''«receptaclePart.nameRef»«assocProp1.name»'''
+ val getter = '''&«facetPart.name»'''
+ return '''«setter» = «getter»;\n'''
+ }
+ } else {
+
+ // not handled (a connector not targeting a port must be typed)
+ throw new TransformationException(
+ "Connector <" + connector.name +
+ "> does not use ports, but it is not typed (only connectors between ports should not be typed)")
+ }
+ return ""
+ }
+
+ /**
+ * Handle ports with multiplicity > 1. The idea is that we could have
+ * multiple connections targeting a receptacle. The first connection would
+ * start with index 0. Implementations can make no assumption which
+ * connection is associated with a certain index. [want to avoid associative
+ * array in runtime].
+ *
+ * @param port
+ * @param end
+ * @return
+ */
+ static def getIndexName(Map<ConnectorEnd, Integer> indexMap, Port port, ConnectorEnd end) {
+ if ((port.getUpper() > 1) || (port.getUpper() == -1)) {
+
+ // index depends of combination of property and port, use connector
+ // end as key
+ var indexValue = indexMap.get(end)
+ if (indexValue == null) {
+ indexValue = 0
+ indexMap.put(end, indexValue)
+ }
+ var index = indexValue + ", "
+ indexValue++
+ indexMap.put(end, indexValue)
+ return index
+ }
+ return ""
+ }
+
+ /**
+ * Transform parts if necessary.
+ *
+ * @param compositeImplementation
+ * a (composite) component
+ */
+ override transformParts(Class compositeImplementation) {
+
+/*
+ for (Property attribute : Utils.getParts(compositeImplementation)) {
+ val type = attribute.type
+ if (type instanceof Class) {
+ val cl = type as Class
+
+ // always transform into pointer (enable dynamic creation)
+ StereotypeUtil.apply(attribute, Ptr)
+ }
+ }
+*/
+ var String initPartsBody = ""
+ for (Property attribute : Utils.getParts(compositeImplementation)) {
+ val type = attribute.type;
+ if (type instanceof Class) {
+ initPartsBody += initPartBody(attribute);
+ attribute.destroy();
+ }
+ }
+
+ val partManager = Utils.getQualifiedElement(Utils.getTop(compositeImplementation), PART_MANAGER);
+ if (partManager instanceof Type) {
+ compositeImplementation.createOwnedAttribute(PARTS, partManager as Type);
+ }
+
+ val operation = compositeImplementation.createOwnedOperation(INIT_PARTS, null, null);
+
+ val behavior = compositeImplementation.createOwnedBehavior("b:" + operation.name, UMLPackage.eINSTANCE.opaqueBehavior)
+ as OpaqueBehavior
+ behavior.getLanguages().add(progLang);
+ behavior.getBodies().add(initPartsBody);
+ }
+
+ def initPartBody(Property part) {
+ "parts.add(" + part.getName() + ", " + part.getType() + ")"
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/StaticCppToOO.xtend b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/StaticCppToOO.xtend
new file mode 100644
index 00000000000..14e8d6016c5
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/src/org/eclipse/papyrus/qompass/designer/cpp/xtend/StaticCppToOO.xtend
@@ -0,0 +1,550 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * 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:
+ * Ansgar Radermacher ansgar.radermacher@cea.fr
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.qompass.designer.cpp.xtend
+
+import org.eclipse.papyrus.qompass.designer.core.extensions.IOOTrafo
+import org.eclipse.papyrus.qompass.designer.core.transformations.LazyCopier
+import org.eclipse.uml2.uml.Class
+import org.eclipse.uml2.uml.Property
+import org.eclipse.uml2.uml.Port
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException
+import org.eclipse.papyrus.qompass.designer.core.PortInfo
+import org.eclipse.papyrus.qompass.designer.core.PortUtils
+import org.eclipse.papyrus.qompass.designer.core.transformations.PrefixConstants
+import org.eclipse.papyrus.qompass.designer.core.Utils
+import org.eclipse.papyrus.qompass.designer.core.transformations.CompTypeTrafos
+import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil
+import org.eclipse.uml2.uml.AggregationKind
+import org.eclipse.uml2.uml.UMLPackage
+import org.eclipse.uml2.uml.OpaqueBehavior
+import org.eclipse.uml2.uml.ConnectorEnd
+import org.eclipse.papyrus.uml.tools.utils.ConnectorUtil
+import org.eclipse.papyrus.C_Cpp.Ptr
+import org.eclipse.uml2.uml.Type
+import java.util.HashMap
+import java.util.Map
+import org.eclipse.uml2.uml.Connector
+import org.eclipse.emf.common.util.EList
+import org.eclipse.uml2.uml.StructuralFeature
+import org.eclipse.papyrus.qompass.designer.cpp.Messages
+import org.eclipse.papyrus.qompass.designer.cpp.Constants
+import static extension org.eclipse.papyrus.qompass.designer.cpp.xtend.CppUtils.nameRef;
+
+/**
+ * This class realizes the transformation from component-based to object-oriented
+ * models. It includes the replacement of ports and connectors. Ports are
+ * replaced with attributes and access operations, connectors within a composite
+ * by an operation that creates the initial setup.
+ *
+ * 1. add an operation that allows to retrieve the reference to an interface provided
+ * by a port. This operation has a mapping specific name, e.g. get_<port_name>
+ * 2. add an operation that allows to connect a specific port.
+ * the connect_q operation (*including a
+ * storage attribute*) for a port with a required interface
+ * 3. add an implementation for the getcnx_q operation for a port
+ * with a required interface (the operation itself has been added before)
+ *
+ * Problems: need to align bootloader creation with this mapping, since
+ * the bootloader may be responsible for instantiation
+ *
+ * Caveat: Assure that the folder derivedInterfaces already exists in a model.
+ * Otherwise the call to getProvided/getRequired interface might trigger its
+ * creation resulting in the corruption of list iterators (ConcurrentAccess
+ * exception)
+ */
+class StaticCppToOO implements IOOTrafo {
+
+ protected LazyCopier copier
+
+ protected Class bootloader // why required?
+
+ def override init(LazyCopier copier, Class bootloader) {
+ this.copier = copier
+ this.bootloader = bootloader
+ }
+
+ override addPortOperations(Class implementation) {
+ addGetPortOperation(implementation)
+ addConnectPortOperation(implementation)
+ }
+
+ /**
+ * Add the get_p operation for each port with a provided interface. It also
+ * adds a suitable implementation that evaluates delegation connectors from
+ * the port to a property within the composite. The delegation target could
+ * either be a normal class (no port) or an inner component.
+ *
+ * @param implementation
+ */
+ def addGetPortOperation(Class implementation) {
+ for (PortInfo portInfo : PortUtils.flattenExtendedPorts(PortUtils.getAllPorts2(implementation))) {
+ val providedIntf = portInfo.getProvided()
+ if (providedIntf != null) {
+
+ // port provides an interface, add "get_p" operation &
+ // implementation
+ val opName = PrefixConstants.getP_Prefix + portInfo.name
+ var op = implementation.getOwnedOperation(opName, null, null)
+ if (op != null) {
+
+ // operation already exists. Assume that user wants to
+ // override standard delegation
+ if (op.type != providedIntf) {
+ op.createOwnedParameter(Constants.retParamName, providedIntf)
+ }
+ } else {
+ op = implementation.createOwnedOperation(opName, null, null, providedIntf)
+ val retParam = op.getOwnedParameters().get(0)
+ retParam.setName(Constants.retParamName)
+ StereotypeUtil.apply(retParam, Ptr)
+
+ val behavior = implementation.createOwnedBehavior(opName, UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+ op.getMethods().add(behavior)
+
+ val ce = ConnectorUtil.getDelegation(implementation, portInfo.getModelPort())
+
+ // if there is an delegation to an inner property, delegate to
+ // it
+ // Make distinction between delegation to component (with a
+ // port) or
+ // "normal" class (without).
+ var String body
+ if (ce != null) {
+ val part = ce.partWithPort
+ val role = ce.role
+
+ body = "return "
+ if (role instanceof Port) {
+
+ // check whether the part exists within the implementation (might not be the case
+ // due to partially copied composites).
+ // Check is based on names, since the connector points to elements within another
+ // model (copyClassifier does not make a proper connector copy)
+ // TODO: this will NOT work for extended ports!
+ body += '''«part.nameRef»«PrefixConstants.getP_Prefix»«role.name»();'''
+ } else {
+
+ // role is not a port: connector connects directly to a
+ // structural feature
+ // without passing via a port
+ // TODO: check whether structural feature exists
+ body += role.name
+ }
+ } else {
+
+ // no delegation, check whether port implements provided interface
+ var implementsIntf = implementation.getInterfaceRealization(null, providedIntf) != null
+ if (!implementsIntf) {
+
+ // The extended port itself is not copied to the target
+ // model (since referenced via a stereotype). Therefore,
+ // a port of an extended port still points to the
+ // original model. We try whether the providedIntf
+ // within
+ // the target model is within the interface
+ // realizations.
+ val providedIntfInCopy = copier.getCopy(providedIntf)
+ implementsIntf = implementation.getInterfaceRealization(null, providedIntfInCopy) != null
+ }
+ if (implementsIntf) {
+ body = "return this;"
+ } else {
+ throw new RuntimeException(
+ String.format(Messages.CompImplTrafos_IntfNotImplemented, providedIntf.name,
+ portInfo.port.name, implementation.name))
+ }
+ }
+ behavior.getLanguages().add(Constants.progLang)
+ behavior.getBodies().add(body)
+ }
+ }
+ }
+ }
+
+ /**
+ * Add a connect_<portName> operation for ports with a required interface.
+ * Whereas operation and a behavior is added for each owned port, a behavior
+ * (method) is needed for ports inherited from a component type (the
+ * behavior is implementation specific, as it needs to take delegation to
+ * parts into account)
+ *
+ * @param implementation
+ */
+ static def addConnectPortOperation(Class implementation) {
+ for (PortInfo portInfo : PortUtils.flattenExtendedPorts(PortUtils.getAllPorts2(implementation))) {
+ val requiredIntf = portInfo.getRequired()
+ if (requiredIntf != null) {
+
+ // port requires an interface, add "connect_p" operation &
+ // implementation
+ val opName = PrefixConstants.connectQ_Prefix + portInfo.name
+
+ if (implementation.getOwnedOperation(opName, null, null) != null) {
+ // do not add the operation, if it already exists. This means that the
+ // user wants to override it with custom behavior. In case of extended
+ // ports, we may have to do that.
+ } else {
+ var op = implementation.createOwnedOperation(opName, null, null)
+ val boolean multiPort = (portInfo.getUpper() > 1) || (portInfo.getUpper() == -1) // -1 indicates "*"
+ if (multiPort) {
+
+ // add index parameter
+ val eLong = Utils.getQualifiedElement(Utils.getTop(implementation),
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE)
+ if (eLong instanceof Type) {
+ op.createOwnedParameter("index", eLong as Type)
+ } else {
+ throw new RuntimeException(
+ String.format(Messages.CompImplTrafos_CannotFindType,
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE))
+ }
+ }
+ val refParam = op.createOwnedParameter("ref", requiredIntf)
+ StereotypeUtil.apply(refParam, Ptr)
+
+ val behavior = implementation.createOwnedBehavior(opName, UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+
+ op.getMethods().add(behavior)
+
+ val ConnectorEnd ce = ConnectorUtil.getDelegation(implementation, portInfo.getModelPort())
+
+ // if there is an delegation to an inner property, delegate to it
+ // Make distinction between delegation to component (with a port) or
+ // "normal" class (without).
+ var String body
+ if (ce != null) {
+ val part = ce.partWithPort
+ body = part.name
+ val role = ce.role
+ if (role instanceof Port) {
+ // in case of a delegation, use name of target port which might be different
+ val targetOpName = PrefixConstants.connectQ_Prefix + role.name
+ body = '''«part.nameRef»«targetOpName»'''
+
+ // TODO: no check that multiplicity of both port matches
+ if ((portInfo.getUpper() > 1) || (portInfo.getUpper() == -1)) {
+ body += "(index, ref);"
+ }
+ else {
+ body += "(ref);"
+ }
+
+ } else {
+ // TODO: does this case make sense?
+ body += '''«part.name»;'''
+ }
+ } else {
+ // no delegation - create attribute for port
+ val attributeName = PrefixConstants.attributePrefix + portInfo.name
+ if (!Utils.hasNonPortOwnedAttribute(implementation, attributeName)) {
+ val attr = implementation.createOwnedAttribute(attributeName, requiredIntf)
+ LazyCopier.copyMultElemModifiers(portInfo.port, attr)
+
+ // is shared (should store a reference)
+ attr.setAggregation(AggregationKind.SHARED_LITERAL)
+ }
+ body = attributeName
+ if(multiPort) body += "[index]"
+ body += " = ref;"
+ }
+
+ // TODO: defined by template
+ behavior.getLanguages().add(Constants.progLang)
+ behavior.getBodies().add(body)
+
+ // -------------------------
+ // add body to get-connection operation (which exists already if the port is also
+ // owned, since it is synchronized automatically during model edit)
+ // getConnQ prefix may be empty to indicate that the port is accessed directly
+ // TODO: reconsider optimization that delegated required ports do not have a
+ // local attribute & associated operation (an inner class may delegate, but the
+ // composite may be using it as well).
+ if ((PrefixConstants.getConnQ_Prefix.length() > 0) && (ce != null)) {
+ val getConnOpName = PrefixConstants.getConnQ_Prefix + portInfo.name
+ var getConnOp = implementation.getOwnedOperation(getConnOpName, null, null)
+ if (getConnOp == null) {
+ getConnOp = implementation.createOwnedOperation(getConnOpName, null, null, requiredIntf)
+ val retParam = op.getOwnedParameters().get(0)
+ retParam.setName(Constants.retParamName)
+ StereotypeUtil.apply(retParam, Ptr)
+ }
+ val getConnBehavior = implementation.createOwnedBehavior(getConnOpName,
+ UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+ getConnOp.getMethods().add(getConnBehavior)
+
+ // no delegation
+ val String name = PrefixConstants.attributePrefix + portInfo.name
+ body = '''return «name»;'''
+ behavior.getLanguages().add(Constants.progLang)
+ behavior.getBodies().add(body)
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Add an operation "createConnections" that implements the connections
+ * between composite parts. It only takes the assembly connections into
+ * account, since delegation connectors are handled by the get_ and connect_
+ * port operations above.
+ *
+ * @param implementation
+ */
+ override addConnectionOperation(Class compositeImplementation) throws TransformationException {
+ var createConnBody = ""
+ val Map<ConnectorEnd, Integer> indexMap = new HashMap<ConnectorEnd, Integer>()
+
+ for (Connector connector : compositeImplementation.getOwnedConnectors()) {
+ if (ConnectorUtil.isAssembly(connector)) {
+
+ // Boolean associationBased = false
+ if (connector.ends.size() != 2) {
+ throw new TransformationException(
+ '''Connector <«connector.name»> does not have two ends. This is currently not supported''')
+ }
+ val end1 = connector.ends.get(0)
+ val end2 = connector.ends.get(1)
+ var cmd = '''// realization of connector <«connector.name»>\n'''
+ if ((end1.role instanceof Port) && PortUtils.isExtendedPort(end1.role as Port)) {
+ val port = end1.role as Port
+ val EList<PortInfo> subPorts = PortUtils.flattenExtendedPort(port)
+ for (PortInfo subPort : subPorts) {
+ cmd += ''' // realization of connection for sub-port «subPort.port.name»\n'''
+ cmd += connectPorts(indexMap, connector, end1, end2, subPort.port)
+ cmd += connectPorts(indexMap, connector, end2, end1, subPort.port)
+ }
+ } else {
+ cmd += connectPorts(indexMap, connector, end1, end2, null)
+ cmd += connectPorts(indexMap, connector, end2, end1, null)
+ }
+ createConnBody += cmd + "\n"
+ }
+ }
+
+ // TODO: use template, as in bootloader
+ if (createConnBody.length() > 0) {
+ val operation = compositeImplementation.createOwnedOperation(Constants.CREATE_CONNECTIONS, null, null)
+
+ val behavior = compositeImplementation.createOwnedBehavior("b:" + operation.name,
+ UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+ behavior.getLanguages().add(Constants.progLang)
+ behavior.getBodies().add(createConnBody)
+ behavior.setSpecification(operation)
+ }
+ }
+
+ /**
+ * Create the body C++ code code that creates a connection between the two ends
+ * of a connector. This function checks whether the first end really is a receptacle
+ * and the second really is a facet.
+ *
+ * @param indexMap
+ * a map of indices that are used in case of multiplex
+ * receptacles
+ * @param connector
+ * a connector
+ * @param receptacleEnd
+ * an end of the connector that may point to a receptacle port
+ * @param facetEnd
+ * an end of the connector that may point to a facet port
+ * @param subPort
+ * a sub-port in case of extended ports
+ * @return
+ * @throws TransformationException
+ */
+ static def connectPorts(Map<ConnectorEnd, Integer> indexMap, Connector connector, ConnectorEnd receptacleEnd,
+ ConnectorEnd facetEnd, Port subPort) throws TransformationException {
+ val association = connector.type
+ if ((receptacleEnd.role instanceof Port) && (facetEnd.role instanceof Port)) {
+ val facetPort = facetEnd.role as Port
+ val receptaclePort = receptacleEnd.role as Port
+ val facetPI = PortInfo.fromSubPort(facetPort, subPort)
+ val receptaclePI = PortInfo.fromSubPort(receptaclePort, subPort)
+
+ if ((facetPI.getProvided() != null) && (receptaclePI.getRequired() != null)) {
+ val facetPart = facetEnd.partWithPort
+ val receptaclePart = receptacleEnd.partWithPort
+
+ var subPortName = ""
+ if(subPort != null) subPortName += "_" + subPort.name
+ val indexName = getIndexName(indexMap, receptaclePort, receptacleEnd)
+ val setter = '''«receptaclePart.nameRef»connect_«receptaclePort.name» «subPortName»;'''
+ val getter = '''«facetPart.nameRef»get_«facetPort.name» «subPortName»()'''
+ return '''«setter»(«indexName»«getter»);\n'''
+ }
+
+ } else if (receptacleEnd.role instanceof Port) {
+
+ // only the receptacle end is of type port.
+ val Port receptaclePort = receptacleEnd.role as Port
+ if (PortUtils.getRequired(receptaclePort) != null) {
+ val facetPart = facetEnd.role as Property
+ val receptaclePart = facetEnd.partWithPort
+
+ val indexName = getIndexName(indexMap, receptaclePort, receptacleEnd)
+ val setter = '''«receptaclePart.nameRef»connect_«receptaclePort.name»'''
+ val getter = '''&«facetPart.name»'''
+ return '''«setter»(«indexName»«getter»);\n'''
+ }
+ } else if (facetEnd.role instanceof Port) {
+
+ // only the facet end is of type port. Unsupported combination
+ val facetPort = facetEnd.role as Port
+ if (PortUtils.getProvided(facetPort) != null) {
+ val facetPart = facetEnd.partWithPort
+ val receptaclePart = facetEnd.role as Property
+
+ val setter = receptaclePart.name
+ val getter = '''«facetPart.nameRef»get_«facetPort.name»();'''
+ return '''«setter» = «getter»;\n'''
+ }
+ } else if (association != null) {
+
+ // both connector ends do not target ports. In this case, we require that the connector is typed
+ // with an association. We use this association to find out which end is navigable and assume that
+ // the part pointed to by the other end is a pointer that gets initialized with the part of the
+ // navigable end.
+ val facetPart = facetEnd.role as Property
+ val receptaclePart = receptacleEnd.role as Property
+
+ val assocProp1 = association.getMemberEnd(null, facetPart.type)
+
+ // Property assocProp2 = facetPart.getOtherEnd()
+ if ((assocProp1 != null) && assocProp1.isNavigable) {
+ val setter = '''«receptaclePart.nameRef»«assocProp1.name»'''
+ val getter = '''&«facetPart.name»'''
+ return '''«setter» = «getter»;\n'''
+ }
+ } else {
+
+ // not handled (a connector not targeting a port must be typed)
+ throw new TransformationException(
+ "Connector <" + connector.name +
+ "> does not use ports, but it is not typed (only connectors between ports should not be typed)")
+ }
+ return ""
+ }
+
+ /**
+ * Handle ports with multiplicity > 1. The idea is that we could have
+ * multiple connections targeting a receptacle. The first connection would
+ * start with index 0. Implementations can make no assumption which
+ * connection is associated with a certain index. [want to avoid associative
+ * array in runtime].
+ *
+ * @param port
+ * @param end
+ * @return
+ */
+ static def getIndexName(Map<ConnectorEnd, Integer> indexMap, Port port, ConnectorEnd end) {
+ if ((port.getUpper() > 1) || (port.getUpper() == -1)) {
+
+ // index depends of combination of property and port, use connector
+ // end as key
+ var indexValue = indexMap.get(end)
+ if (indexValue == null) {
+ indexValue = 0
+ indexMap.put(end, indexValue)
+ }
+ var index = indexValue + ", "
+ indexValue++
+ indexMap.put(end, indexValue)
+ return index
+ }
+ return ""
+ }
+
+ /**
+ * Return true, if the bootloader is responsible for the instantiation of a
+ * part. [Structual difference: bootloader can decide instance based - and
+ * instances are deployed]
+ *
+ * If a part is a component type or an abstract implementation, it cannot be
+ * instantiated. Thus, a heir has to be selected in the deployment plan.
+ * Since the selection might be different for different instances of the
+ * composite, the instantiation is not done by the component itself, but by
+ * the bootloader. The bootloader also has to instantiate, if different
+ * allocation variants are required. (this is for instance the case for
+ * distribution connectors and for the system itself)
+ *
+ * If possible, we want to let composites instantiate sub-components, since
+ * this eases the transition to systems which support reconfiguration.
+ *
+ * [TODO: optimization: analyze whether the deployment plan selects a single
+ * implementation. If yes, let the composite instantiate]
+ *
+ * [TODO: elements within an assembly need to be instantiated by composite -
+ * if System - by bootloader. assembly also need to be instantiated by
+ * composite!!
+ *
+ * @param implementation
+ * @return
+ */
+ static def instantiateViaBootloader(Class implementation) {
+ return implementation.isAbstract() || Utils.isAssembly(implementation)
+ }
+
+ /**
+ * Return whether a part needs to be instantiated by the bootloader instead
+ * by the composite in which it is contained. The criteria is based on the
+ * question whether the containing composite is flattened, as it is the case
+ * for the system component and the interaction components for distribution.
+ *
+ * @param part
+ * @return
+ */
+ static def instantiateViaBootloader(StructuralFeature part) {
+ if (part != null) {
+ if (part.type instanceof Class) {
+ val implementation = part.type as Class
+ // TODO: wrong criteria? (must be shared or not?)
+ return instantiateViaBootloader(implementation)
+ } else {
+
+ // not a class, assume primitive type instantiated by composite
+ return false
+ }
+ }
+ return false
+ }
+
+ /**
+ * Transform parts if necessary.
+ *
+ * If the bootloader is responsible for creating an instance (if it is a
+ * abstract type), mark the associated part as a C++ pointer. We do not want
+ * to change the aggregation kind, since it remains logically a composition,
+ * it is merely an implementation issue that it must be a pointer for C++ if
+ * the concrete type is not yet known.
+ *
+ * @param compositeImplementation
+ * a (composite) component
+ */
+ override transformParts(Class compositeImplementation) {
+
+ for (Property attribute : Utils.getParts(compositeImplementation)) {
+ val type = attribute.type
+ if (type instanceof Class) {
+ val cl = type as Class
+
+ // => requires adaptations of boot-loader which is then only
+ // responsible for creating instances corresponding to types
+ if (instantiateViaBootloader(cl)) {
+ StereotypeUtil.apply(attribute, Ptr)
+ }
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.CppPortMapping.xtendbin b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.CppPortMapping.xtendbin
new file mode 100644
index 00000000000..8f97c6f5126
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.CppPortMapping.xtendbin
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.CppUtils.xtendbin b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.CppUtils.xtendbin
new file mode 100644
index 00000000000..90d5d3e4374
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.CppUtils.xtendbin
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.DynamicCpptoOO.xtendbin b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.DynamicCpptoOO.xtendbin
new file mode 100644
index 00000000000..3f486842aa3
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.DynamicCpptoOO.xtendbin
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.StaticCppToOO.xtendbin b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.StaticCppToOO.xtendbin
new file mode 100644
index 00000000000..6ed965efdcb
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.StaticCppToOO.xtendbin
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.gitignore b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.gitignore
new file mode 100644
index 00000000000..74681125bc4
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/.gitignore
@@ -0,0 +1 @@
+/CppCompToOO.java
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppPortMapping.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppPortMapping.java
new file mode 100644
index 00000000000..432e522f2fb
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppPortMapping.java
@@ -0,0 +1,762 @@
+/**
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * 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:
+ * Ansgar Radermacher ansgar.radermacher@cea.fr
+ */
+package org.eclipse.papyrus.qompass.designer.cpp.xtend;
+
+import com.google.common.base.Objects;
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.C_Cpp.Ptr;
+import org.eclipse.papyrus.qompass.designer.core.PortInfo;
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.extensions.IOOTrafo;
+import org.eclipse.papyrus.qompass.designer.core.transformations.CompTypeTrafos;
+import org.eclipse.papyrus.qompass.designer.core.transformations.LazyCopier;
+import org.eclipse.papyrus.qompass.designer.core.transformations.PrefixConstants;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+import org.eclipse.papyrus.qompass.designer.cpp.Constants;
+import org.eclipse.papyrus.qompass.designer.cpp.Messages;
+import org.eclipse.papyrus.qompass.designer.cpp.xtend.CppUtils;
+import org.eclipse.papyrus.uml.tools.utils.ConnectorUtil;
+import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil;
+import org.eclipse.uml2.uml.AggregationKind;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.ConnectableElement;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.InterfaceRealization;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.OpaqueBehavior;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.StructuralFeature;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.xtend2.lib.StringConcatenation;
+
+/**
+ * This class realizes the transformation from component-based to object-oriented
+ * models. It includes the replacement of ports and connectors. Ports are
+ * replaced with attributes and access operations, connectors within a composite
+ * by an operation that creates the initial setup.
+ *
+ * 1. add an operation that allows to retrieve the reference to an interface provided
+ * by a port. This operation has a mapping specific name, e.g. get_<port_name>
+ * 2. add an operation that allows to connect a specific port.
+ * the connect_q operation (*including a
+ * storage attribute*) for a port with a required interface
+ * 3. add an implementation for the getcnx_q operation for a port
+ * with a required interface (the operation itself has been added before)
+ *
+ * TODO: C++ specific, support different "component to OO" mappings
+ *
+ * Problems: need to align bootloader creation with this mapping, since
+ * the bootloader may be responsible for instantiation
+ *
+ * Caveat: Assure that the folder derivedInterfaces already exists in a model.
+ * Otherwise the call to getProvided/getRequired interface might trigger its
+ * creation resulting in the corruption of list iterators (ConcurrentAccess
+ * exception)
+ */
+@SuppressWarnings("all")
+public class CppPortMapping implements IOOTrafo {
+ @Override
+ public void init(final LazyCopier copier, final org.eclipse.uml2.uml.Class bootloader) {
+ }
+
+ @Override
+ public void addPortOperations(final org.eclipse.uml2.uml.Class implementation) {
+ this.addGetPortOperation(implementation);
+ CppPortMapping.addConnectPortOperation(implementation);
+ }
+
+ /**
+ * Add the get_p operation for each port with a provided interface. It also
+ * adds a suitable implementation that evaluates delegation connectors from
+ * the port to a property within the composite. The delegation target could
+ * either be a normal class (no port) or an inner component.
+ *
+ * @param implementation
+ */
+ public void addGetPortOperation(final org.eclipse.uml2.uml.Class implementation) {
+ EList<Port> _allPorts2 = PortUtils.getAllPorts2(implementation);
+ EList<PortInfo> _flattenExtendedPorts = PortUtils.flattenExtendedPorts(_allPorts2);
+ for (final PortInfo portInfo : _flattenExtendedPorts) {
+ {
+ final Interface providedIntf = portInfo.getProvided();
+ boolean _notEquals = (!Objects.equal(providedIntf, null));
+ if (_notEquals) {
+ String _name = portInfo.getName();
+ final String opName = (PrefixConstants.getP_Prefix + _name);
+ Operation op = implementation.getOwnedOperation(opName, null, null);
+ boolean _notEquals_1 = (!Objects.equal(op, null));
+ if (_notEquals_1) {
+ Type _type = op.getType();
+ boolean _notEquals_2 = (!Objects.equal(_type, providedIntf));
+ if (_notEquals_2) {
+ op.createOwnedParameter(Constants.retParamName, providedIntf);
+ }
+ } else {
+ Operation _createOwnedOperation = implementation.createOwnedOperation(opName, null, null, providedIntf);
+ op = _createOwnedOperation;
+ EList<Parameter> _ownedParameters = op.getOwnedParameters();
+ final Parameter retParam = _ownedParameters.get(0);
+ retParam.setName(Constants.retParamName);
+ StereotypeUtil.apply(retParam, Ptr.class);
+ EClass _opaqueBehavior = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior = implementation.createOwnedBehavior(opName, _opaqueBehavior);
+ final OpaqueBehavior behavior = ((OpaqueBehavior) _createOwnedBehavior);
+ EList<Behavior> _methods = op.getMethods();
+ _methods.add(behavior);
+ Port _modelPort = portInfo.getModelPort();
+ final ConnectorEnd ce = ConnectorUtil.getDelegation(implementation, _modelPort);
+ String body = null;
+ boolean _notEquals_3 = (!Objects.equal(ce, null));
+ if (_notEquals_3) {
+ final Property part = ce.getPartWithPort();
+ final ConnectableElement role = ce.getRole();
+ body = "return ";
+ if ((role instanceof Port)) {
+ String _body = body;
+ StringConcatenation _builder = new StringConcatenation();
+ String _nameRef = CppUtils.nameRef(part);
+ _builder.append(_nameRef, "");
+ _builder.append(PrefixConstants.getP_Prefix, "");
+ String _name_1 = ((Port)role).getName();
+ _builder.append(_name_1, "");
+ _builder.append("();");
+ body = (_body + _builder);
+ } else {
+ String _body_1 = body;
+ String _name_2 = role.getName();
+ body = (_body_1 + _name_2);
+ }
+ } else {
+ InterfaceRealization _interfaceRealization = implementation.getInterfaceRealization(null, providedIntf);
+ boolean implementsIntf = (!Objects.equal(_interfaceRealization, null));
+ if ((!implementsIntf)) {
+ }
+ if (implementsIntf) {
+ body = "return this;";
+ } else {
+ String _name_3 = providedIntf.getName();
+ Port _port = portInfo.getPort();
+ String _name_4 = _port.getName();
+ String _name_5 = implementation.getName();
+ String _format = String.format(Messages.CompImplTrafos_IntfNotImplemented, _name_3, _name_4, _name_5);
+ throw new RuntimeException(_format);
+ }
+ }
+ EList<String> _languages = behavior.getLanguages();
+ _languages.add(Constants.progLang);
+ EList<String> _bodies = behavior.getBodies();
+ _bodies.add(body);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Add a connect_<portName> operation for ports with a required interface.
+ * Whereas operation and a behavior is added for each owned port, a behavior
+ * (method) is needed for ports inherited from a component type (the
+ * behavior is implementation specific, as it needs to take delegation to
+ * parts into account)
+ *
+ * @param implementation
+ */
+ public static void addConnectPortOperation(final org.eclipse.uml2.uml.Class implementation) {
+ EList<Port> _allPorts2 = PortUtils.getAllPorts2(implementation);
+ EList<PortInfo> _flattenExtendedPorts = PortUtils.flattenExtendedPorts(_allPorts2);
+ for (final PortInfo portInfo : _flattenExtendedPorts) {
+ {
+ final Interface requiredIntf = portInfo.getRequired();
+ boolean _notEquals = (!Objects.equal(requiredIntf, null));
+ if (_notEquals) {
+ String _name = portInfo.getName();
+ final String opName = (PrefixConstants.connectQ_Prefix + _name);
+ Operation _ownedOperation = implementation.getOwnedOperation(opName, null, null);
+ boolean _notEquals_1 = (!Objects.equal(_ownedOperation, null));
+ if (_notEquals_1) {
+ } else {
+ Operation op = implementation.createOwnedOperation(opName, null, null);
+ boolean _or = false;
+ int _upper = portInfo.getUpper();
+ boolean _greaterThan = (_upper > 1);
+ if (_greaterThan) {
+ _or = true;
+ } else {
+ int _upper_1 = portInfo.getUpper();
+ boolean _equals = (_upper_1 == (-1));
+ _or = _equals;
+ }
+ final boolean multiPort = _or;
+ if (multiPort) {
+ org.eclipse.uml2.uml.Package _top = Utils.getTop(implementation);
+ final NamedElement eLong = Utils.getQualifiedElement(_top,
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE);
+ if ((eLong instanceof Type)) {
+ op.createOwnedParameter("index", ((Type) eLong));
+ } else {
+ String _format = String.format(Messages.CompImplTrafos_CannotFindType,
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE);
+ throw new RuntimeException(_format);
+ }
+ }
+ final Parameter refParam = op.createOwnedParameter("ref", requiredIntf);
+ StereotypeUtil.apply(refParam, Ptr.class);
+ EClass _opaqueBehavior = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior = implementation.createOwnedBehavior(opName, _opaqueBehavior);
+ final OpaqueBehavior behavior = ((OpaqueBehavior) _createOwnedBehavior);
+ EList<Behavior> _methods = op.getMethods();
+ _methods.add(behavior);
+ Port _modelPort = portInfo.getModelPort();
+ final ConnectorEnd ce = ConnectorUtil.getDelegation(implementation, _modelPort);
+ String body = null;
+ boolean _notEquals_2 = (!Objects.equal(ce, null));
+ if (_notEquals_2) {
+ final Property part = ce.getPartWithPort();
+ String _name_1 = part.getName();
+ body = _name_1;
+ final ConnectableElement role = ce.getRole();
+ if ((role instanceof Port)) {
+ String _name_2 = ((Port)role).getName();
+ final String targetOpName = (PrefixConstants.connectQ_Prefix + _name_2);
+ StringConcatenation _builder = new StringConcatenation();
+ String _nameRef = CppUtils.nameRef(part);
+ _builder.append(_nameRef, "");
+ _builder.append(targetOpName, "");
+ body = _builder.toString();
+ boolean _or_1 = false;
+ int _upper_2 = portInfo.getUpper();
+ boolean _greaterThan_1 = (_upper_2 > 1);
+ if (_greaterThan_1) {
+ _or_1 = true;
+ } else {
+ int _upper_3 = portInfo.getUpper();
+ boolean _equals_1 = (_upper_3 == (-1));
+ _or_1 = _equals_1;
+ }
+ if (_or_1) {
+ String _body = body;
+ body = (_body + "(index, ref);");
+ } else {
+ String _body_1 = body;
+ body = (_body_1 + "(ref);");
+ }
+ } else {
+ String _body_2 = body;
+ StringConcatenation _builder_1 = new StringConcatenation();
+ String _name_3 = part.getName();
+ _builder_1.append(_name_3, "");
+ _builder_1.append(";");
+ body = (_body_2 + _builder_1);
+ }
+ } else {
+ String _name_4 = portInfo.getName();
+ final String attributeName = (PrefixConstants.attributePrefix + _name_4);
+ boolean _hasNonPortOwnedAttribute = Utils.hasNonPortOwnedAttribute(implementation, attributeName);
+ boolean _not = (!_hasNonPortOwnedAttribute);
+ if (_not) {
+ final Property attr = implementation.createOwnedAttribute(attributeName, requiredIntf);
+ Port _port = portInfo.getPort();
+ LazyCopier.copyMultElemModifiers(_port, attr);
+ attr.setAggregation(AggregationKind.SHARED_LITERAL);
+ }
+ body = attributeName;
+ if (multiPort) {
+ String _body_3 = body;
+ body = (_body_3 + "[index]");
+ }
+ String _body_4 = body;
+ body = (_body_4 + " = ref;");
+ }
+ EList<String> _languages = behavior.getLanguages();
+ _languages.add(Constants.progLang);
+ EList<String> _bodies = behavior.getBodies();
+ _bodies.add(body);
+ boolean _and = false;
+ int _length = PrefixConstants.getConnQ_Prefix.length();
+ boolean _greaterThan_2 = (_length > 0);
+ if (!_greaterThan_2) {
+ _and = false;
+ } else {
+ boolean _notEquals_3 = (!Objects.equal(ce, null));
+ _and = _notEquals_3;
+ }
+ if (_and) {
+ String _name_5 = portInfo.getName();
+ final String getConnOpName = (PrefixConstants.getConnQ_Prefix + _name_5);
+ Operation getConnOp = implementation.getOwnedOperation(getConnOpName, null, null);
+ boolean _equals_2 = Objects.equal(getConnOp, null);
+ if (_equals_2) {
+ Operation _createOwnedOperation = implementation.createOwnedOperation(getConnOpName, null, null, requiredIntf);
+ getConnOp = _createOwnedOperation;
+ EList<Parameter> _ownedParameters = op.getOwnedParameters();
+ final Parameter retParam = _ownedParameters.get(0);
+ retParam.setName(Constants.retParamName);
+ StereotypeUtil.apply(retParam, Ptr.class);
+ }
+ EClass _opaqueBehavior_1 = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior_1 = implementation.createOwnedBehavior(getConnOpName, _opaqueBehavior_1);
+ final OpaqueBehavior getConnBehavior = ((OpaqueBehavior) _createOwnedBehavior_1);
+ EList<Behavior> _methods_1 = getConnOp.getMethods();
+ _methods_1.add(getConnBehavior);
+ String _name_6 = portInfo.getName();
+ final String name = (PrefixConstants.attributePrefix + _name_6);
+ StringConcatenation _builder_2 = new StringConcatenation();
+ _builder_2.append("return ");
+ _builder_2.append(name, "");
+ _builder_2.append(";");
+ body = _builder_2.toString();
+ EList<String> _languages_1 = behavior.getLanguages();
+ _languages_1.add(Constants.progLang);
+ EList<String> _bodies_1 = behavior.getBodies();
+ _bodies_1.add(body);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Add an operation "createConnections" that implements the connections
+ * between composite parts. It only takes the assembly connections into
+ * account, since delegation connectors are handled by the get_ and connect_
+ * port operations above.
+ *
+ * @param implementation
+ */
+ @Override
+ public void addConnectionOperation(final org.eclipse.uml2.uml.Class compositeImplementation) throws TransformationException {
+ String createConnBody = "";
+ final Map<ConnectorEnd, Integer> indexMap = new HashMap<ConnectorEnd, Integer>();
+ EList<Connector> _ownedConnectors = compositeImplementation.getOwnedConnectors();
+ for (final Connector connector : _ownedConnectors) {
+ boolean _isAssembly = ConnectorUtil.isAssembly(connector);
+ if (_isAssembly) {
+ EList<ConnectorEnd> _ends = connector.getEnds();
+ int _size = _ends.size();
+ boolean _notEquals = (_size != 2);
+ if (_notEquals) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("Connector <");
+ String _name = connector.getName();
+ _builder.append(_name, "");
+ _builder.append("> does not have two ends. This is currently not supported");
+ throw new TransformationException(_builder.toString());
+ }
+ EList<ConnectorEnd> _ends_1 = connector.getEnds();
+ final ConnectorEnd end1 = _ends_1.get(0);
+ EList<ConnectorEnd> _ends_2 = connector.getEnds();
+ final ConnectorEnd end2 = _ends_2.get(1);
+ StringConcatenation _builder_1 = new StringConcatenation();
+ _builder_1.append("// realization of connector <");
+ String _name_1 = connector.getName();
+ _builder_1.append(_name_1, "");
+ _builder_1.append(">\\n");
+ String cmd = _builder_1.toString();
+ boolean _and = false;
+ ConnectableElement _role = end1.getRole();
+ if (!(_role instanceof Port)) {
+ _and = false;
+ } else {
+ ConnectableElement _role_1 = end1.getRole();
+ boolean _isExtendedPort = PortUtils.isExtendedPort(((Port) _role_1));
+ _and = _isExtendedPort;
+ }
+ if (_and) {
+ ConnectableElement _role_2 = end1.getRole();
+ final Port port = ((Port) _role_2);
+ final EList<PortInfo> subPorts = PortUtils.flattenExtendedPort(port);
+ for (final PortInfo subPort : subPorts) {
+ {
+ String _cmd = cmd;
+ StringConcatenation _builder_2 = new StringConcatenation();
+ _builder_2.append(" ");
+ _builder_2.append("// realization of connection for sub-port ");
+ Port _port = subPort.getPort();
+ String _name_2 = _port.getName();
+ _builder_2.append(_name_2, " ");
+ _builder_2.append("\\n");
+ cmd = (_cmd + _builder_2);
+ String _cmd_1 = cmd;
+ Port _port_1 = subPort.getPort();
+ String _connectPorts = CppPortMapping.connectPorts(indexMap, connector, end1, end2, _port_1);
+ cmd = (_cmd_1 + _connectPorts);
+ String _cmd_2 = cmd;
+ Port _port_2 = subPort.getPort();
+ String _connectPorts_1 = CppPortMapping.connectPorts(indexMap, connector, end2, end1, _port_2);
+ cmd = (_cmd_2 + _connectPorts_1);
+ }
+ }
+ } else {
+ String _cmd = cmd;
+ String _connectPorts = CppPortMapping.connectPorts(indexMap, connector, end1, end2, null);
+ cmd = (_cmd + _connectPorts);
+ String _cmd_1 = cmd;
+ String _connectPorts_1 = CppPortMapping.connectPorts(indexMap, connector, end2, end1, null);
+ cmd = (_cmd_1 + _connectPorts_1);
+ }
+ String _createConnBody = createConnBody;
+ createConnBody = (_createConnBody + (cmd + "\n"));
+ }
+ }
+ int _length = createConnBody.length();
+ boolean _greaterThan = (_length > 0);
+ if (_greaterThan) {
+ final Operation operation = compositeImplementation.createOwnedOperation(Constants.CREATE_CONNECTIONS, null, null);
+ String _name_2 = operation.getName();
+ String _plus = ("b:" + _name_2);
+ EClass _opaqueBehavior = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior = compositeImplementation.createOwnedBehavior(_plus, _opaqueBehavior);
+ final OpaqueBehavior behavior = ((OpaqueBehavior) _createOwnedBehavior);
+ EList<String> _languages = behavior.getLanguages();
+ _languages.add(Constants.progLang);
+ EList<String> _bodies = behavior.getBodies();
+ _bodies.add(createConnBody);
+ behavior.setSpecification(operation);
+ }
+ }
+
+ /**
+ * Create the body C++ code code that creates a connection between the two ends
+ * of a connector. This function checks whether the first end really is a receptacle
+ * and the second really is a facet.
+ * TODO: cleaner rewrite in xtend
+ *
+ * @param indexMap
+ * a map of indices that are used in case of multiplex
+ * receptacles
+ * @param connector
+ * a connector
+ * @param receptacleEnd
+ * an end of the connector that may point to a receptacle port
+ * @param facetEnd
+ * an end of the connector that may point to a facet port
+ * @param subPort
+ * a sub-port in case of extended ports
+ * @return
+ * @throws TransformationException
+ */
+ public static String connectPorts(final Map<ConnectorEnd, Integer> indexMap, final Connector connector, final ConnectorEnd receptacleEnd, final ConnectorEnd facetEnd, final Port subPort) throws TransformationException {
+ final Association association = connector.getType();
+ boolean _and = false;
+ ConnectableElement _role = receptacleEnd.getRole();
+ if (!(_role instanceof Port)) {
+ _and = false;
+ } else {
+ ConnectableElement _role_1 = facetEnd.getRole();
+ _and = (_role_1 instanceof Port);
+ }
+ if (_and) {
+ ConnectableElement _role_2 = facetEnd.getRole();
+ final Port facetPort = ((Port) _role_2);
+ ConnectableElement _role_3 = receptacleEnd.getRole();
+ final Port receptaclePort = ((Port) _role_3);
+ final PortInfo facetPI = PortInfo.fromSubPort(facetPort, subPort);
+ final PortInfo receptaclePI = PortInfo.fromSubPort(receptaclePort, subPort);
+ boolean _and_1 = false;
+ Interface _provided = facetPI.getProvided();
+ boolean _notEquals = (!Objects.equal(_provided, null));
+ if (!_notEquals) {
+ _and_1 = false;
+ } else {
+ Interface _required = receptaclePI.getRequired();
+ boolean _notEquals_1 = (!Objects.equal(_required, null));
+ _and_1 = _notEquals_1;
+ }
+ if (_and_1) {
+ final Property facetPart = facetEnd.getPartWithPort();
+ final Property receptaclePart = receptacleEnd.getPartWithPort();
+ String subPortName = "";
+ boolean _notEquals_2 = (!Objects.equal(subPort, null));
+ if (_notEquals_2) {
+ String _subPortName = subPortName;
+ String _name = subPort.getName();
+ String _plus = ("_" + _name);
+ subPortName = (_subPortName + _plus);
+ }
+ final String indexName = CppPortMapping.getIndexName(indexMap, receptaclePort, receptacleEnd);
+ StringConcatenation _builder = new StringConcatenation();
+ String _nameRef = CppUtils.nameRef(receptaclePart);
+ _builder.append(_nameRef, "");
+ _builder.append("connect_");
+ String _name_1 = receptaclePort.getName();
+ _builder.append(_name_1, "");
+ _builder.append(" ");
+ _builder.append(subPortName, "");
+ _builder.append(";");
+ final String setter = _builder.toString();
+ StringConcatenation _builder_1 = new StringConcatenation();
+ String _nameRef_1 = CppUtils.nameRef(facetPart);
+ _builder_1.append(_nameRef_1, "");
+ _builder_1.append("get_");
+ String _name_2 = facetPort.getName();
+ _builder_1.append(_name_2, "");
+ _builder_1.append(" ");
+ _builder_1.append(subPortName, "");
+ _builder_1.append("()");
+ final String getter = _builder_1.toString();
+ StringConcatenation _builder_2 = new StringConcatenation();
+ _builder_2.append(setter, "");
+ _builder_2.append("(");
+ _builder_2.append(indexName, "");
+ _builder_2.append(getter, "");
+ _builder_2.append(");\\n");
+ return _builder_2.toString();
+ }
+ } else {
+ ConnectableElement _role_4 = receptacleEnd.getRole();
+ if ((_role_4 instanceof Port)) {
+ ConnectableElement _role_5 = receptacleEnd.getRole();
+ final Port receptaclePort_1 = ((Port) _role_5);
+ Interface _required_1 = PortUtils.getRequired(receptaclePort_1);
+ boolean _notEquals_3 = (!Objects.equal(_required_1, null));
+ if (_notEquals_3) {
+ ConnectableElement _role_6 = facetEnd.getRole();
+ final Property facetPart_1 = ((Property) _role_6);
+ final Property receptaclePart_1 = facetEnd.getPartWithPort();
+ final String indexName_1 = CppPortMapping.getIndexName(indexMap, receptaclePort_1, receptacleEnd);
+ StringConcatenation _builder_3 = new StringConcatenation();
+ String _nameRef_2 = CppUtils.nameRef(receptaclePart_1);
+ _builder_3.append(_nameRef_2, "");
+ _builder_3.append("connect_");
+ String _name_3 = receptaclePort_1.getName();
+ _builder_3.append(_name_3, "");
+ final String setter_1 = _builder_3.toString();
+ StringConcatenation _builder_4 = new StringConcatenation();
+ _builder_4.append("&");
+ String _name_4 = facetPart_1.getName();
+ _builder_4.append(_name_4, "");
+ final String getter_1 = _builder_4.toString();
+ StringConcatenation _builder_5 = new StringConcatenation();
+ _builder_5.append(setter_1, "");
+ _builder_5.append("(");
+ _builder_5.append(indexName_1, "");
+ _builder_5.append(getter_1, "");
+ _builder_5.append(");\\n");
+ return _builder_5.toString();
+ }
+ } else {
+ ConnectableElement _role_7 = facetEnd.getRole();
+ if ((_role_7 instanceof Port)) {
+ ConnectableElement _role_8 = facetEnd.getRole();
+ final Port facetPort_1 = ((Port) _role_8);
+ Interface _provided_1 = PortUtils.getProvided(facetPort_1);
+ boolean _notEquals_4 = (!Objects.equal(_provided_1, null));
+ if (_notEquals_4) {
+ final Property facetPart_2 = facetEnd.getPartWithPort();
+ ConnectableElement _role_9 = facetEnd.getRole();
+ final Property receptaclePart_2 = ((Property) _role_9);
+ final String setter_2 = receptaclePart_2.getName();
+ StringConcatenation _builder_6 = new StringConcatenation();
+ String _nameRef_3 = CppUtils.nameRef(facetPart_2);
+ _builder_6.append(_nameRef_3, "");
+ _builder_6.append("get_");
+ String _name_5 = facetPort_1.getName();
+ _builder_6.append(_name_5, "");
+ _builder_6.append("();");
+ final String getter_2 = _builder_6.toString();
+ StringConcatenation _builder_7 = new StringConcatenation();
+ _builder_7.append(setter_2, "");
+ _builder_7.append(" = ");
+ _builder_7.append(getter_2, "");
+ _builder_7.append(";\\n");
+ return _builder_7.toString();
+ }
+ } else {
+ boolean _notEquals_5 = (!Objects.equal(association, null));
+ if (_notEquals_5) {
+ ConnectableElement _role_10 = facetEnd.getRole();
+ final Property facetPart_3 = ((Property) _role_10);
+ ConnectableElement _role_11 = receptacleEnd.getRole();
+ final Property receptaclePart_3 = ((Property) _role_11);
+ Type _type = facetPart_3.getType();
+ final Property assocProp1 = association.getMemberEnd(null, _type);
+ boolean _and_2 = false;
+ boolean _notEquals_6 = (!Objects.equal(assocProp1, null));
+ if (!_notEquals_6) {
+ _and_2 = false;
+ } else {
+ boolean _isNavigable = assocProp1.isNavigable();
+ _and_2 = _isNavigable;
+ }
+ if (_and_2) {
+ StringConcatenation _builder_8 = new StringConcatenation();
+ String _nameRef_4 = CppUtils.nameRef(receptaclePart_3);
+ _builder_8.append(_nameRef_4, "");
+ String _name_6 = assocProp1.getName();
+ _builder_8.append(_name_6, "");
+ final String setter_3 = _builder_8.toString();
+ StringConcatenation _builder_9 = new StringConcatenation();
+ _builder_9.append("&");
+ String _name_7 = facetPart_3.getName();
+ _builder_9.append(_name_7, "");
+ final String getter_3 = _builder_9.toString();
+ StringConcatenation _builder_10 = new StringConcatenation();
+ _builder_10.append(setter_3, "");
+ _builder_10.append(" = ");
+ _builder_10.append(getter_3, "");
+ _builder_10.append(";\\n");
+ return _builder_10.toString();
+ }
+ } else {
+ String _name_8 = connector.getName();
+ String _plus_1 = ("Connector <" + _name_8);
+ String _plus_2 = (_plus_1 +
+ "> does not use ports, but it is not typed (only connectors between ports should not be typed)");
+ throw new TransformationException(_plus_2);
+ }
+ }
+ }
+ }
+ return "";
+ }
+
+ /**
+ * Handle ports with multiplicity > 1. The idea is that we could have
+ * multiple connections targeting a receptacle. The first connection would
+ * start with index 0. Implementations can make no assumption which
+ * connection is associated with a certain index. [want to avoid associative
+ * array in runtime].
+ *
+ * @param port
+ * @param end
+ * @return
+ */
+ public static String getIndexName(final Map<ConnectorEnd, Integer> indexMap, final Port port, final ConnectorEnd end) {
+ boolean _or = false;
+ int _upper = port.getUpper();
+ boolean _greaterThan = (_upper > 1);
+ if (_greaterThan) {
+ _or = true;
+ } else {
+ int _upper_1 = port.getUpper();
+ boolean _equals = (_upper_1 == (-1));
+ _or = _equals;
+ }
+ if (_or) {
+ Integer indexValue = indexMap.get(end);
+ boolean _equals_1 = Objects.equal(indexValue, null);
+ if (_equals_1) {
+ indexValue = Integer.valueOf(0);
+ indexMap.put(end, indexValue);
+ }
+ String index = (indexValue + ", ");
+ indexValue++;
+ indexMap.put(end, indexValue);
+ return index;
+ }
+ return "";
+ }
+
+ /**
+ * Return true, if the bootloader is responsible for the instantiation of a
+ * part. [Structual difference: bootloader can decide instance based - and
+ * instances are deployed]
+ *
+ * If a part is a component type or an abstract implementation, it cannot be
+ * instantiated. Thus, a heir has to be selected in the deployment plan.
+ * Since the selection might be different for different instances of the
+ * composite, the instantiation is not done by the component itself, but by
+ * the bootloader. The bootloader also has to instantiate, if different
+ * allocation variants are required. (this is for instance the case for
+ * distribution connectors and for the system itself)
+ *
+ * If possible, we want to let composites instantiate sub-components, since
+ * this eases the transition to systems which support reconfiguration.
+ *
+ * [TODO: optimization: analyze whether the deployment plan selects a single
+ * implementation. If yes, let the composite instantiate]
+ *
+ * [TODO: elements within an assembly need to be instantiated by composite -
+ * if System - by bootloader. assembly also need to be instantiated by
+ * composite!!
+ *
+ * @param implementation
+ * @return
+ */
+ public static boolean instantiateViaBootloader(final org.eclipse.uml2.uml.Class implementation) {
+ boolean _or = false;
+ boolean _isAbstract = implementation.isAbstract();
+ if (_isAbstract) {
+ _or = true;
+ } else {
+ boolean _isAssembly = Utils.isAssembly(implementation);
+ _or = _isAssembly;
+ }
+ return _or;
+ }
+
+ /**
+ * Return whether a part needs to be instantiated by the bootloader instead
+ * by the composite in which it is contained. The criteria is based on the
+ * question whether the containing composite is flattened, as it is the case
+ * for the system component and the interaction components for distribution.
+ *
+ * @param part
+ * @return
+ */
+ public static boolean instantiateViaBootloader(final StructuralFeature part) {
+ boolean _notEquals = (!Objects.equal(part, null));
+ if (_notEquals) {
+ Type _type = part.getType();
+ if ((_type instanceof org.eclipse.uml2.uml.Class)) {
+ Type _type_1 = part.getType();
+ final org.eclipse.uml2.uml.Class implementation = ((org.eclipse.uml2.uml.Class) _type_1);
+ return CppPortMapping.instantiateViaBootloader(implementation);
+ } else {
+ return false;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Transform parts if necessary.
+ *
+ * If the bootloader is responsible for creating an instance (if it is a
+ * abstract type), mark the associated part as a C++ pointer. We do not want
+ * to change the aggregation kind, since it remains logically a composition,
+ * it is merely an implementation issue that it must be a pointer for C++ if
+ * the concrete type is not yet known.
+ *
+ * @param compositeImplementation
+ * a (composite) component
+ */
+ @Override
+ public void transformParts(final org.eclipse.uml2.uml.Class compositeImplementation) {
+ EList<Property> _parts = Utils.getParts(compositeImplementation);
+ for (final Property attribute : _parts) {
+ {
+ final Type type = attribute.getType();
+ if ((type instanceof org.eclipse.uml2.uml.Class)) {
+ final org.eclipse.uml2.uml.Class cl = ((org.eclipse.uml2.uml.Class) type);
+ boolean _instantiateViaBootloader = CppPortMapping.instantiateViaBootloader(cl);
+ if (_instantiateViaBootloader) {
+ StereotypeUtil.apply(attribute, Ptr.class);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppUtils.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppUtils.java
new file mode 100644
index 00000000000..aa48c6bf38c
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/CppUtils.java
@@ -0,0 +1,44 @@
+package org.eclipse.papyrus.qompass.designer.cpp.xtend;
+
+import com.google.common.base.Objects;
+import org.eclipse.papyrus.C_Cpp.Ptr;
+import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil;
+import org.eclipse.uml2.uml.AggregationKind;
+import org.eclipse.uml2.uml.Property;
+
+@SuppressWarnings("all")
+public class CppUtils {
+ public static String nameRef(final Property part) {
+ String _name = part.getName();
+ String _refOp = CppUtils.refOp(part);
+ return (_name + _refOp);
+ }
+
+ /**
+ * return the operator for (de-) referencing a part. If the part is
+ * instantiate via the bootloader, it becomes a pointer. If it is
+ * instantiated by the composite itself, it is not a pointer, it will be
+ * instantiated along with the composite
+ *
+ * @param part
+ * @return
+ */
+ public static String refOp(final Property part) {
+ String _xifexpression = null;
+ boolean _or = false;
+ AggregationKind _aggregation = part.getAggregation();
+ boolean _equals = Objects.equal(_aggregation, AggregationKind.SHARED_LITERAL);
+ if (_equals) {
+ _or = true;
+ } else {
+ boolean _isApplied = StereotypeUtil.isApplied(part, Ptr.class);
+ _or = _isApplied;
+ }
+ if (_or) {
+ _xifexpression = "->";
+ } else {
+ _xifexpression = ".";
+ }
+ return _xifexpression;
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/DynamicCppToOO.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/DynamicCppToOO.java
new file mode 100644
index 00000000000..7e203b639c9
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/DynamicCppToOO.java
@@ -0,0 +1,714 @@
+/**
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * 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:
+ * Ansgar Radermacher ansgar.radermacher@cea.fr
+ */
+package org.eclipse.papyrus.qompass.designer.cpp.xtend;
+
+import com.google.common.base.Objects;
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.C_Cpp.Ptr;
+import org.eclipse.papyrus.qompass.designer.core.PortInfo;
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.extensions.IOOTrafo;
+import org.eclipse.papyrus.qompass.designer.core.transformations.CompTypeTrafos;
+import org.eclipse.papyrus.qompass.designer.core.transformations.LazyCopier;
+import org.eclipse.papyrus.qompass.designer.core.transformations.PrefixConstants;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+import org.eclipse.papyrus.qompass.designer.cpp.Constants;
+import org.eclipse.papyrus.qompass.designer.cpp.Messages;
+import org.eclipse.papyrus.qompass.designer.cpp.xtend.CppUtils;
+import org.eclipse.papyrus.uml.tools.utils.ConnectorUtil;
+import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil;
+import org.eclipse.uml2.uml.AggregationKind;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.ConnectableElement;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.InterfaceRealization;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.OpaqueBehavior;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.xtend2.lib.StringConcatenation;
+
+/**
+ * This class realizes the dynamic variant of the OO-transformation
+ */
+@SuppressWarnings("all")
+public class DynamicCppToOO implements IOOTrafo {
+ protected LazyCopier copier;
+
+ private final static String PART_MANAGER = "services::PartManager";
+
+ private final static String INIT_PARTS = "initParts";
+
+ private final static String PARTS = "parts";
+
+ private final static String progLang = "C/C++";
+
+ protected org.eclipse.uml2.uml.Class bootloader;
+
+ @Override
+ public void init(final LazyCopier copier, final org.eclipse.uml2.uml.Class bootloader) {
+ this.copier = copier;
+ this.bootloader = bootloader;
+ }
+
+ @Override
+ public void addPortOperations(final org.eclipse.uml2.uml.Class implementation) {
+ this.addGetPortOperation(implementation);
+ DynamicCppToOO.addConnectPortOperation(implementation);
+ }
+
+ /**
+ * Add the get_p operation for each port with a provided interface. It also
+ * adds a suitable implementation that evaluates delegation connectors from
+ * the port to a property within the composite. The delegation target could
+ * either be a normal class (no port) or an inner component.
+ *
+ * @param implementation
+ */
+ public void addGetPortOperation(final org.eclipse.uml2.uml.Class implementation) {
+ EList<Port> _allPorts2 = PortUtils.getAllPorts2(implementation);
+ EList<PortInfo> _flattenExtendedPorts = PortUtils.flattenExtendedPorts(_allPorts2);
+ for (final PortInfo portInfo : _flattenExtendedPorts) {
+ {
+ final Interface providedIntf = portInfo.getProvided();
+ boolean _notEquals = (!Objects.equal(providedIntf, null));
+ if (_notEquals) {
+ String _name = portInfo.getName();
+ final String opName = (PrefixConstants.getP_Prefix + _name);
+ Operation op = implementation.getOwnedOperation(opName, null, null);
+ boolean _notEquals_1 = (!Objects.equal(op, null));
+ if (_notEquals_1) {
+ Type _type = op.getType();
+ boolean _notEquals_2 = (!Objects.equal(_type, providedIntf));
+ if (_notEquals_2) {
+ op.createOwnedParameter(Constants.retParamName, providedIntf);
+ }
+ } else {
+ Operation _createOwnedOperation = implementation.createOwnedOperation(opName, null, null, providedIntf);
+ op = _createOwnedOperation;
+ EList<Parameter> _ownedParameters = op.getOwnedParameters();
+ final Parameter retParam = _ownedParameters.get(0);
+ retParam.setName(Constants.retParamName);
+ StereotypeUtil.apply(retParam, Ptr.class);
+ EClass _opaqueBehavior = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior = implementation.createOwnedBehavior(opName, _opaqueBehavior);
+ final OpaqueBehavior behavior = ((OpaqueBehavior) _createOwnedBehavior);
+ EList<Behavior> _methods = op.getMethods();
+ _methods.add(behavior);
+ Port _modelPort = portInfo.getModelPort();
+ final ConnectorEnd ce = ConnectorUtil.getDelegation(implementation, _modelPort);
+ String body = null;
+ boolean _notEquals_3 = (!Objects.equal(ce, null));
+ if (_notEquals_3) {
+ final Property part = ce.getPartWithPort();
+ final ConnectableElement role = ce.getRole();
+ body = "return ";
+ if ((role instanceof Port)) {
+ String _body = body;
+ StringConcatenation _builder = new StringConcatenation();
+ String _nameRef = CppUtils.nameRef(part);
+ _builder.append(_nameRef, "");
+ _builder.append(PrefixConstants.getP_Prefix, "");
+ String _name_1 = ((Port)role).getName();
+ _builder.append(_name_1, "");
+ _builder.append("();");
+ body = (_body + _builder);
+ } else {
+ String _body_1 = body;
+ String _name_2 = role.getName();
+ body = (_body_1 + _name_2);
+ }
+ } else {
+ InterfaceRealization _interfaceRealization = implementation.getInterfaceRealization(null, providedIntf);
+ boolean implementsIntf = (!Objects.equal(_interfaceRealization, null));
+ if ((!implementsIntf)) {
+ final Interface providedIntfInCopy = this.copier.<Interface>getCopy(providedIntf);
+ InterfaceRealization _interfaceRealization_1 = implementation.getInterfaceRealization(null, providedIntfInCopy);
+ boolean _notEquals_4 = (!Objects.equal(_interfaceRealization_1, null));
+ implementsIntf = _notEquals_4;
+ }
+ if (implementsIntf) {
+ body = "return this;";
+ } else {
+ String _name_3 = providedIntf.getName();
+ Port _port = portInfo.getPort();
+ String _name_4 = _port.getName();
+ String _name_5 = implementation.getName();
+ String _format = String.format(Messages.CompImplTrafos_IntfNotImplemented, _name_3, _name_4, _name_5);
+ throw new RuntimeException(_format);
+ }
+ }
+ EList<String> _languages = behavior.getLanguages();
+ _languages.add(Constants.progLang);
+ EList<String> _bodies = behavior.getBodies();
+ _bodies.add(body);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Add a connect_<portName> operation for ports with a required interface.
+ * Whereas operation and a behavior is added for each owned port, a behavior
+ * (method) is needed for ports inherited from a component type (the
+ * behavior is implementation specific, as it needs to take delegation to
+ * parts into account)
+ *
+ * @param implementation
+ */
+ public static void addConnectPortOperation(final org.eclipse.uml2.uml.Class implementation) {
+ EList<Port> _allPorts2 = PortUtils.getAllPorts2(implementation);
+ EList<PortInfo> _flattenExtendedPorts = PortUtils.flattenExtendedPorts(_allPorts2);
+ for (final PortInfo portInfo : _flattenExtendedPorts) {
+ {
+ final Interface requiredIntf = portInfo.getRequired();
+ boolean _notEquals = (!Objects.equal(requiredIntf, null));
+ if (_notEquals) {
+ String _name = portInfo.getName();
+ final String opName = (PrefixConstants.connectQ_Prefix + _name);
+ Operation _ownedOperation = implementation.getOwnedOperation(opName, null, null);
+ boolean _notEquals_1 = (!Objects.equal(_ownedOperation, null));
+ if (_notEquals_1) {
+ } else {
+ Operation op = implementation.createOwnedOperation(opName, null, null);
+ boolean _or = false;
+ int _upper = portInfo.getUpper();
+ boolean _greaterThan = (_upper > 1);
+ if (_greaterThan) {
+ _or = true;
+ } else {
+ int _upper_1 = portInfo.getUpper();
+ boolean _equals = (_upper_1 == (-1));
+ _or = _equals;
+ }
+ final boolean multiPort = _or;
+ if (multiPort) {
+ org.eclipse.uml2.uml.Package _top = Utils.getTop(implementation);
+ final NamedElement eLong = Utils.getQualifiedElement(_top,
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE);
+ if ((eLong instanceof Type)) {
+ op.createOwnedParameter("index", ((Type) eLong));
+ } else {
+ String _format = String.format(Messages.CompImplTrafos_CannotFindType,
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE);
+ throw new RuntimeException(_format);
+ }
+ }
+ final Parameter refParam = op.createOwnedParameter("ref", requiredIntf);
+ StereotypeUtil.apply(refParam, Ptr.class);
+ EClass _opaqueBehavior = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior = implementation.createOwnedBehavior(opName, _opaqueBehavior);
+ final OpaqueBehavior behavior = ((OpaqueBehavior) _createOwnedBehavior);
+ EList<Behavior> _methods = op.getMethods();
+ _methods.add(behavior);
+ Port _modelPort = portInfo.getModelPort();
+ final ConnectorEnd ce = ConnectorUtil.getDelegation(implementation, _modelPort);
+ String body = null;
+ boolean _notEquals_2 = (!Objects.equal(ce, null));
+ if (_notEquals_2) {
+ final Property part = ce.getPartWithPort();
+ String _name_1 = part.getName();
+ body = _name_1;
+ final ConnectableElement role = ce.getRole();
+ if ((role instanceof Port)) {
+ String _name_2 = ((Port)role).getName();
+ final String targetOpName = (PrefixConstants.connectQ_Prefix + _name_2);
+ StringConcatenation _builder = new StringConcatenation();
+ String _nameRef = CppUtils.nameRef(part);
+ _builder.append(_nameRef, "");
+ _builder.append(targetOpName, "");
+ body = _builder.toString();
+ boolean _or_1 = false;
+ int _upper_2 = portInfo.getUpper();
+ boolean _greaterThan_1 = (_upper_2 > 1);
+ if (_greaterThan_1) {
+ _or_1 = true;
+ } else {
+ int _upper_3 = portInfo.getUpper();
+ boolean _equals_1 = (_upper_3 == (-1));
+ _or_1 = _equals_1;
+ }
+ if (_or_1) {
+ String _body = body;
+ body = (_body + "(index, ref);");
+ } else {
+ String _body_1 = body;
+ body = (_body_1 + "(ref);");
+ }
+ } else {
+ String _body_2 = body;
+ StringConcatenation _builder_1 = new StringConcatenation();
+ String _name_3 = part.getName();
+ _builder_1.append(_name_3, "");
+ _builder_1.append(";");
+ body = (_body_2 + _builder_1);
+ }
+ } else {
+ String _name_4 = portInfo.getName();
+ final String attributeName = (PrefixConstants.attributePrefix + _name_4);
+ boolean _hasNonPortOwnedAttribute = Utils.hasNonPortOwnedAttribute(implementation, attributeName);
+ boolean _not = (!_hasNonPortOwnedAttribute);
+ if (_not) {
+ final Property attr = implementation.createOwnedAttribute(attributeName, requiredIntf);
+ Port _port = portInfo.getPort();
+ LazyCopier.copyMultElemModifiers(_port, attr);
+ attr.setAggregation(AggregationKind.SHARED_LITERAL);
+ }
+ body = attributeName;
+ if (multiPort) {
+ String _body_3 = body;
+ body = (_body_3 + "[index]");
+ }
+ String _body_4 = body;
+ body = (_body_4 + " = ref;");
+ }
+ EList<String> _languages = behavior.getLanguages();
+ _languages.add(Constants.progLang);
+ EList<String> _bodies = behavior.getBodies();
+ _bodies.add(body);
+ boolean _and = false;
+ int _length = PrefixConstants.getConnQ_Prefix.length();
+ boolean _greaterThan_2 = (_length > 0);
+ if (!_greaterThan_2) {
+ _and = false;
+ } else {
+ boolean _notEquals_3 = (!Objects.equal(ce, null));
+ _and = _notEquals_3;
+ }
+ if (_and) {
+ String _name_5 = portInfo.getName();
+ final String getConnOpName = (PrefixConstants.getConnQ_Prefix + _name_5);
+ Operation getConnOp = implementation.getOwnedOperation(getConnOpName, null, null);
+ boolean _equals_2 = Objects.equal(getConnOp, null);
+ if (_equals_2) {
+ Operation _createOwnedOperation = implementation.createOwnedOperation(getConnOpName, null, null, requiredIntf);
+ getConnOp = _createOwnedOperation;
+ EList<Parameter> _ownedParameters = op.getOwnedParameters();
+ final Parameter retParam = _ownedParameters.get(0);
+ retParam.setName(Constants.retParamName);
+ StereotypeUtil.apply(retParam, Ptr.class);
+ }
+ EClass _opaqueBehavior_1 = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior_1 = implementation.createOwnedBehavior(getConnOpName, _opaqueBehavior_1);
+ final OpaqueBehavior getConnBehavior = ((OpaqueBehavior) _createOwnedBehavior_1);
+ EList<Behavior> _methods_1 = getConnOp.getMethods();
+ _methods_1.add(getConnBehavior);
+ String _name_6 = portInfo.getName();
+ final String name = (PrefixConstants.attributePrefix + _name_6);
+ StringConcatenation _builder_2 = new StringConcatenation();
+ _builder_2.append("return ");
+ _builder_2.append(name, "");
+ _builder_2.append(";");
+ body = _builder_2.toString();
+ EList<String> _languages_1 = behavior.getLanguages();
+ _languages_1.add(Constants.progLang);
+ EList<String> _bodies_1 = behavior.getBodies();
+ _bodies_1.add(body);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Add an operation "createConnections" that implements the connections
+ * between composite parts. It only takes the assembly connections into
+ * account, since delegation connectors are handled by the get_ and connect_
+ * port operations above.
+ *
+ * @param implementation
+ */
+ @Override
+ public void addConnectionOperation(final org.eclipse.uml2.uml.Class compositeImplementation) throws TransformationException {
+ String createConnBody = "";
+ final Map<ConnectorEnd, Integer> indexMap = new HashMap<ConnectorEnd, Integer>();
+ EList<Connector> _ownedConnectors = compositeImplementation.getOwnedConnectors();
+ for (final Connector connector : _ownedConnectors) {
+ boolean _isAssembly = ConnectorUtil.isAssembly(connector);
+ if (_isAssembly) {
+ EList<ConnectorEnd> _ends = connector.getEnds();
+ int _size = _ends.size();
+ boolean _notEquals = (_size != 2);
+ if (_notEquals) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("Connector <");
+ String _name = connector.getName();
+ _builder.append(_name, "");
+ _builder.append("> does not have two ends. This is currently not supported");
+ throw new TransformationException(_builder.toString());
+ }
+ EList<ConnectorEnd> _ends_1 = connector.getEnds();
+ final ConnectorEnd end1 = _ends_1.get(0);
+ EList<ConnectorEnd> _ends_2 = connector.getEnds();
+ final ConnectorEnd end2 = _ends_2.get(1);
+ StringConcatenation _builder_1 = new StringConcatenation();
+ _builder_1.append("// realization of connector <");
+ String _name_1 = connector.getName();
+ _builder_1.append(_name_1, "");
+ _builder_1.append(">\\n");
+ String cmd = _builder_1.toString();
+ boolean _and = false;
+ ConnectableElement _role = end1.getRole();
+ if (!(_role instanceof Port)) {
+ _and = false;
+ } else {
+ ConnectableElement _role_1 = end1.getRole();
+ boolean _isExtendedPort = PortUtils.isExtendedPort(((Port) _role_1));
+ _and = _isExtendedPort;
+ }
+ if (_and) {
+ ConnectableElement _role_2 = end1.getRole();
+ final Port port = ((Port) _role_2);
+ final EList<PortInfo> subPorts = PortUtils.flattenExtendedPort(port);
+ for (final PortInfo subPort : subPorts) {
+ {
+ String _cmd = cmd;
+ StringConcatenation _builder_2 = new StringConcatenation();
+ _builder_2.append(" ");
+ _builder_2.append("// realization of connection for sub-port ");
+ Port _port = subPort.getPort();
+ String _name_2 = _port.getName();
+ _builder_2.append(_name_2, " ");
+ _builder_2.append("\\n");
+ cmd = (_cmd + _builder_2);
+ String _cmd_1 = cmd;
+ Port _port_1 = subPort.getPort();
+ String _connectPorts = DynamicCppToOO.connectPorts(indexMap, connector, end1, end2, _port_1);
+ cmd = (_cmd_1 + _connectPorts);
+ String _cmd_2 = cmd;
+ Port _port_2 = subPort.getPort();
+ String _connectPorts_1 = DynamicCppToOO.connectPorts(indexMap, connector, end2, end1, _port_2);
+ cmd = (_cmd_2 + _connectPorts_1);
+ }
+ }
+ } else {
+ String _cmd = cmd;
+ String _connectPorts = DynamicCppToOO.connectPorts(indexMap, connector, end1, end2, null);
+ cmd = (_cmd + _connectPorts);
+ String _cmd_1 = cmd;
+ String _connectPorts_1 = DynamicCppToOO.connectPorts(indexMap, connector, end2, end1, null);
+ cmd = (_cmd_1 + _connectPorts_1);
+ }
+ String _createConnBody = createConnBody;
+ createConnBody = (_createConnBody + (cmd + "\n"));
+ }
+ }
+ int _length = createConnBody.length();
+ boolean _greaterThan = (_length > 0);
+ if (_greaterThan) {
+ final Operation operation = compositeImplementation.createOwnedOperation(Constants.CREATE_CONNECTIONS, null, null);
+ String _name_2 = operation.getName();
+ String _plus = ("b:" + _name_2);
+ EClass _opaqueBehavior = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior = compositeImplementation.createOwnedBehavior(_plus, _opaqueBehavior);
+ final OpaqueBehavior behavior = ((OpaqueBehavior) _createOwnedBehavior);
+ EList<String> _languages = behavior.getLanguages();
+ _languages.add(Constants.progLang);
+ EList<String> _bodies = behavior.getBodies();
+ _bodies.add(createConnBody);
+ behavior.setSpecification(operation);
+ }
+ }
+
+ /**
+ * Create the body C++ code code that creates a connection between the two ends
+ * of a connector. This function checks whether the first end really is a receptacle
+ * and the second really is a facet.
+ * TODO: cleaner rewrite in xtend
+ *
+ * @param indexMap
+ * a map of indices that are used in case of multiplex
+ * receptacles
+ * @param connector
+ * a connector
+ * @param receptacleEnd
+ * an end of the connector that may point to a receptacle port
+ * @param facetEnd
+ * an end of the connector that may point to a facet port
+ * @param subPort
+ * a sub-port in case of extended ports
+ * @return
+ * @throws TransformationException
+ */
+ public static String connectPorts(final Map<ConnectorEnd, Integer> indexMap, final Connector connector, final ConnectorEnd receptacleEnd, final ConnectorEnd facetEnd, final Port subPort) throws TransformationException {
+ final Association association = connector.getType();
+ boolean _and = false;
+ ConnectableElement _role = receptacleEnd.getRole();
+ if (!(_role instanceof Port)) {
+ _and = false;
+ } else {
+ ConnectableElement _role_1 = facetEnd.getRole();
+ _and = (_role_1 instanceof Port);
+ }
+ if (_and) {
+ ConnectableElement _role_2 = facetEnd.getRole();
+ final Port facetPort = ((Port) _role_2);
+ ConnectableElement _role_3 = receptacleEnd.getRole();
+ final Port receptaclePort = ((Port) _role_3);
+ final PortInfo facetPI = PortInfo.fromSubPort(facetPort, subPort);
+ final PortInfo receptaclePI = PortInfo.fromSubPort(receptaclePort, subPort);
+ boolean _and_1 = false;
+ Interface _provided = facetPI.getProvided();
+ boolean _notEquals = (!Objects.equal(_provided, null));
+ if (!_notEquals) {
+ _and_1 = false;
+ } else {
+ Interface _required = receptaclePI.getRequired();
+ boolean _notEquals_1 = (!Objects.equal(_required, null));
+ _and_1 = _notEquals_1;
+ }
+ if (_and_1) {
+ final Property facetPart = facetEnd.getPartWithPort();
+ final Property receptaclePart = receptacleEnd.getPartWithPort();
+ String subPortName = "";
+ boolean _notEquals_2 = (!Objects.equal(subPort, null));
+ if (_notEquals_2) {
+ String _subPortName = subPortName;
+ String _name = subPort.getName();
+ String _plus = ("_" + _name);
+ subPortName = (_subPortName + _plus);
+ }
+ final String indexName = DynamicCppToOO.getIndexName(indexMap, receptaclePort, receptacleEnd);
+ StringConcatenation _builder = new StringConcatenation();
+ String _nameRef = CppUtils.nameRef(receptaclePart);
+ _builder.append(_nameRef, "");
+ _builder.append("connect_");
+ String _name_1 = receptaclePort.getName();
+ _builder.append(_name_1, "");
+ _builder.append(" ");
+ _builder.append(subPortName, "");
+ _builder.append(";");
+ final String setter = _builder.toString();
+ StringConcatenation _builder_1 = new StringConcatenation();
+ String _nameRef_1 = CppUtils.nameRef(facetPart);
+ _builder_1.append(_nameRef_1, "");
+ _builder_1.append("get_");
+ String _name_2 = facetPort.getName();
+ _builder_1.append(_name_2, "");
+ _builder_1.append(" ");
+ _builder_1.append(subPortName, "");
+ _builder_1.append("()");
+ final String getter = _builder_1.toString();
+ StringConcatenation _builder_2 = new StringConcatenation();
+ _builder_2.append(setter, "");
+ _builder_2.append("(");
+ _builder_2.append(indexName, "");
+ _builder_2.append(getter, "");
+ _builder_2.append(");\\n");
+ return _builder_2.toString();
+ }
+ } else {
+ ConnectableElement _role_4 = receptacleEnd.getRole();
+ if ((_role_4 instanceof Port)) {
+ ConnectableElement _role_5 = receptacleEnd.getRole();
+ final Port receptaclePort_1 = ((Port) _role_5);
+ Interface _required_1 = PortUtils.getRequired(receptaclePort_1);
+ boolean _notEquals_3 = (!Objects.equal(_required_1, null));
+ if (_notEquals_3) {
+ ConnectableElement _role_6 = facetEnd.getRole();
+ final Property facetPart_1 = ((Property) _role_6);
+ final Property receptaclePart_1 = facetEnd.getPartWithPort();
+ final String indexName_1 = DynamicCppToOO.getIndexName(indexMap, receptaclePort_1, receptacleEnd);
+ StringConcatenation _builder_3 = new StringConcatenation();
+ String _nameRef_2 = CppUtils.nameRef(receptaclePart_1);
+ _builder_3.append(_nameRef_2, "");
+ _builder_3.append("connect_");
+ String _name_3 = receptaclePort_1.getName();
+ _builder_3.append(_name_3, "");
+ final String setter_1 = _builder_3.toString();
+ StringConcatenation _builder_4 = new StringConcatenation();
+ _builder_4.append("&");
+ String _name_4 = facetPart_1.getName();
+ _builder_4.append(_name_4, "");
+ final String getter_1 = _builder_4.toString();
+ StringConcatenation _builder_5 = new StringConcatenation();
+ _builder_5.append(setter_1, "");
+ _builder_5.append("(");
+ _builder_5.append(indexName_1, "");
+ _builder_5.append(getter_1, "");
+ _builder_5.append(");\\n");
+ return _builder_5.toString();
+ }
+ } else {
+ ConnectableElement _role_7 = facetEnd.getRole();
+ if ((_role_7 instanceof Port)) {
+ ConnectableElement _role_8 = facetEnd.getRole();
+ final Port facetPort_1 = ((Port) _role_8);
+ Interface _provided_1 = PortUtils.getProvided(facetPort_1);
+ boolean _notEquals_4 = (!Objects.equal(_provided_1, null));
+ if (_notEquals_4) {
+ final Property facetPart_2 = facetEnd.getPartWithPort();
+ ConnectableElement _role_9 = facetEnd.getRole();
+ final Property receptaclePart_2 = ((Property) _role_9);
+ final String setter_2 = receptaclePart_2.getName();
+ StringConcatenation _builder_6 = new StringConcatenation();
+ String _nameRef_3 = CppUtils.nameRef(facetPart_2);
+ _builder_6.append(_nameRef_3, "");
+ _builder_6.append("get_");
+ String _name_5 = facetPort_1.getName();
+ _builder_6.append(_name_5, "");
+ _builder_6.append("();");
+ final String getter_2 = _builder_6.toString();
+ StringConcatenation _builder_7 = new StringConcatenation();
+ _builder_7.append(setter_2, "");
+ _builder_7.append(" = ");
+ _builder_7.append(getter_2, "");
+ _builder_7.append(";\\n");
+ return _builder_7.toString();
+ }
+ } else {
+ boolean _notEquals_5 = (!Objects.equal(association, null));
+ if (_notEquals_5) {
+ ConnectableElement _role_10 = facetEnd.getRole();
+ final Property facetPart_3 = ((Property) _role_10);
+ ConnectableElement _role_11 = receptacleEnd.getRole();
+ final Property receptaclePart_3 = ((Property) _role_11);
+ Type _type = facetPart_3.getType();
+ final Property assocProp1 = association.getMemberEnd(null, _type);
+ boolean _and_2 = false;
+ boolean _notEquals_6 = (!Objects.equal(assocProp1, null));
+ if (!_notEquals_6) {
+ _and_2 = false;
+ } else {
+ boolean _isNavigable = assocProp1.isNavigable();
+ _and_2 = _isNavigable;
+ }
+ if (_and_2) {
+ StringConcatenation _builder_8 = new StringConcatenation();
+ String _nameRef_4 = CppUtils.nameRef(receptaclePart_3);
+ _builder_8.append(_nameRef_4, "");
+ String _name_6 = assocProp1.getName();
+ _builder_8.append(_name_6, "");
+ final String setter_3 = _builder_8.toString();
+ StringConcatenation _builder_9 = new StringConcatenation();
+ _builder_9.append("&");
+ String _name_7 = facetPart_3.getName();
+ _builder_9.append(_name_7, "");
+ final String getter_3 = _builder_9.toString();
+ StringConcatenation _builder_10 = new StringConcatenation();
+ _builder_10.append(setter_3, "");
+ _builder_10.append(" = ");
+ _builder_10.append(getter_3, "");
+ _builder_10.append(";\\n");
+ return _builder_10.toString();
+ }
+ } else {
+ String _name_8 = connector.getName();
+ String _plus_1 = ("Connector <" + _name_8);
+ String _plus_2 = (_plus_1 +
+ "> does not use ports, but it is not typed (only connectors between ports should not be typed)");
+ throw new TransformationException(_plus_2);
+ }
+ }
+ }
+ }
+ return "";
+ }
+
+ /**
+ * Handle ports with multiplicity > 1. The idea is that we could have
+ * multiple connections targeting a receptacle. The first connection would
+ * start with index 0. Implementations can make no assumption which
+ * connection is associated with a certain index. [want to avoid associative
+ * array in runtime].
+ *
+ * @param port
+ * @param end
+ * @return
+ */
+ public static String getIndexName(final Map<ConnectorEnd, Integer> indexMap, final Port port, final ConnectorEnd end) {
+ boolean _or = false;
+ int _upper = port.getUpper();
+ boolean _greaterThan = (_upper > 1);
+ if (_greaterThan) {
+ _or = true;
+ } else {
+ int _upper_1 = port.getUpper();
+ boolean _equals = (_upper_1 == (-1));
+ _or = _equals;
+ }
+ if (_or) {
+ Integer indexValue = indexMap.get(end);
+ boolean _equals_1 = Objects.equal(indexValue, null);
+ if (_equals_1) {
+ indexValue = Integer.valueOf(0);
+ indexMap.put(end, indexValue);
+ }
+ String index = (indexValue + ", ");
+ indexValue++;
+ indexMap.put(end, indexValue);
+ return index;
+ }
+ return "";
+ }
+
+ /**
+ * Transform parts if necessary.
+ *
+ * @param compositeImplementation
+ * a (composite) component
+ */
+ @Override
+ public void transformParts(final org.eclipse.uml2.uml.Class compositeImplementation) {
+ String initPartsBody = "";
+ EList<Property> _parts = Utils.getParts(compositeImplementation);
+ for (final Property attribute : _parts) {
+ {
+ final Type type = attribute.getType();
+ if ((type instanceof org.eclipse.uml2.uml.Class)) {
+ String _initPartsBody = initPartsBody;
+ String _initPartBody = this.initPartBody(attribute);
+ initPartsBody = (_initPartsBody + _initPartBody);
+ attribute.destroy();
+ }
+ }
+ }
+ org.eclipse.uml2.uml.Package _top = Utils.getTop(compositeImplementation);
+ final NamedElement partManager = Utils.getQualifiedElement(_top, DynamicCppToOO.PART_MANAGER);
+ if ((partManager instanceof Type)) {
+ compositeImplementation.createOwnedAttribute(DynamicCppToOO.PARTS, ((Type) partManager));
+ }
+ final Operation operation = compositeImplementation.createOwnedOperation(DynamicCppToOO.INIT_PARTS, null, null);
+ String _name = operation.getName();
+ String _plus = ("b:" + _name);
+ EClass _opaqueBehavior = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior = compositeImplementation.createOwnedBehavior(_plus, _opaqueBehavior);
+ final OpaqueBehavior behavior = ((OpaqueBehavior) _createOwnedBehavior);
+ EList<String> _languages = behavior.getLanguages();
+ _languages.add(DynamicCppToOO.progLang);
+ EList<String> _bodies = behavior.getBodies();
+ _bodies.add(initPartsBody);
+ }
+
+ public String initPartBody(final Property part) {
+ String _name = part.getName();
+ String _plus = ("parts.add(" + _name);
+ String _plus_1 = (_plus + ", ");
+ Type _type = part.getType();
+ String _plus_2 = (_plus_1 + _type);
+ return (_plus_2 + ")");
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/StaticCppToOO.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/StaticCppToOO.java
new file mode 100644
index 00000000000..d2613c47cb4
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.cpp/xtend-gen/org/eclipse/papyrus/qompass/designer/cpp/xtend/StaticCppToOO.java
@@ -0,0 +1,769 @@
+/**
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * 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:
+ * Ansgar Radermacher ansgar.radermacher@cea.fr
+ */
+package org.eclipse.papyrus.qompass.designer.cpp.xtend;
+
+import com.google.common.base.Objects;
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.C_Cpp.Ptr;
+import org.eclipse.papyrus.qompass.designer.core.PortInfo;
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.extensions.IOOTrafo;
+import org.eclipse.papyrus.qompass.designer.core.transformations.CompTypeTrafos;
+import org.eclipse.papyrus.qompass.designer.core.transformations.LazyCopier;
+import org.eclipse.papyrus.qompass.designer.core.transformations.PrefixConstants;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+import org.eclipse.papyrus.qompass.designer.cpp.Constants;
+import org.eclipse.papyrus.qompass.designer.cpp.Messages;
+import org.eclipse.papyrus.qompass.designer.cpp.xtend.CppUtils;
+import org.eclipse.papyrus.uml.tools.utils.ConnectorUtil;
+import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil;
+import org.eclipse.uml2.uml.AggregationKind;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.ConnectableElement;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.InterfaceRealization;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.OpaqueBehavior;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.StructuralFeature;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.xtend2.lib.StringConcatenation;
+
+/**
+ * This class realizes the transformation from component-based to object-oriented
+ * models. It includes the replacement of ports and connectors. Ports are
+ * replaced with attributes and access operations, connectors within a composite
+ * by an operation that creates the initial setup.
+ *
+ * 1. add an operation that allows to retrieve the reference to an interface provided
+ * by a port. This operation has a mapping specific name, e.g. get_<port_name>
+ * 2. add an operation that allows to connect a specific port.
+ * the connect_q operation (*including a
+ * storage attribute*) for a port with a required interface
+ * 3. add an implementation for the getcnx_q operation for a port
+ * with a required interface (the operation itself has been added before)
+ *
+ * Problems: need to align bootloader creation with this mapping, since
+ * the bootloader may be responsible for instantiation
+ *
+ * Caveat: Assure that the folder derivedInterfaces already exists in a model.
+ * Otherwise the call to getProvided/getRequired interface might trigger its
+ * creation resulting in the corruption of list iterators (ConcurrentAccess
+ * exception)
+ */
+@SuppressWarnings("all")
+public class StaticCppToOO implements IOOTrafo {
+ protected LazyCopier copier;
+
+ protected org.eclipse.uml2.uml.Class bootloader;
+
+ @Override
+ public void init(final LazyCopier copier, final org.eclipse.uml2.uml.Class bootloader) {
+ this.copier = copier;
+ this.bootloader = bootloader;
+ }
+
+ @Override
+ public void addPortOperations(final org.eclipse.uml2.uml.Class implementation) {
+ this.addGetPortOperation(implementation);
+ StaticCppToOO.addConnectPortOperation(implementation);
+ }
+
+ /**
+ * Add the get_p operation for each port with a provided interface. It also
+ * adds a suitable implementation that evaluates delegation connectors from
+ * the port to a property within the composite. The delegation target could
+ * either be a normal class (no port) or an inner component.
+ *
+ * @param implementation
+ */
+ public void addGetPortOperation(final org.eclipse.uml2.uml.Class implementation) {
+ EList<Port> _allPorts2 = PortUtils.getAllPorts2(implementation);
+ EList<PortInfo> _flattenExtendedPorts = PortUtils.flattenExtendedPorts(_allPorts2);
+ for (final PortInfo portInfo : _flattenExtendedPorts) {
+ {
+ final Interface providedIntf = portInfo.getProvided();
+ boolean _notEquals = (!Objects.equal(providedIntf, null));
+ if (_notEquals) {
+ String _name = portInfo.getName();
+ final String opName = (PrefixConstants.getP_Prefix + _name);
+ Operation op = implementation.getOwnedOperation(opName, null, null);
+ boolean _notEquals_1 = (!Objects.equal(op, null));
+ if (_notEquals_1) {
+ Type _type = op.getType();
+ boolean _notEquals_2 = (!Objects.equal(_type, providedIntf));
+ if (_notEquals_2) {
+ op.createOwnedParameter(Constants.retParamName, providedIntf);
+ }
+ } else {
+ Operation _createOwnedOperation = implementation.createOwnedOperation(opName, null, null, providedIntf);
+ op = _createOwnedOperation;
+ EList<Parameter> _ownedParameters = op.getOwnedParameters();
+ final Parameter retParam = _ownedParameters.get(0);
+ retParam.setName(Constants.retParamName);
+ StereotypeUtil.apply(retParam, Ptr.class);
+ EClass _opaqueBehavior = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior = implementation.createOwnedBehavior(opName, _opaqueBehavior);
+ final OpaqueBehavior behavior = ((OpaqueBehavior) _createOwnedBehavior);
+ EList<Behavior> _methods = op.getMethods();
+ _methods.add(behavior);
+ Port _modelPort = portInfo.getModelPort();
+ final ConnectorEnd ce = ConnectorUtil.getDelegation(implementation, _modelPort);
+ String body = null;
+ boolean _notEquals_3 = (!Objects.equal(ce, null));
+ if (_notEquals_3) {
+ final Property part = ce.getPartWithPort();
+ final ConnectableElement role = ce.getRole();
+ body = "return ";
+ if ((role instanceof Port)) {
+ String _body = body;
+ StringConcatenation _builder = new StringConcatenation();
+ String _nameRef = CppUtils.nameRef(part);
+ _builder.append(_nameRef, "");
+ _builder.append(PrefixConstants.getP_Prefix, "");
+ String _name_1 = ((Port)role).getName();
+ _builder.append(_name_1, "");
+ _builder.append("();");
+ body = (_body + _builder);
+ } else {
+ String _body_1 = body;
+ String _name_2 = role.getName();
+ body = (_body_1 + _name_2);
+ }
+ } else {
+ InterfaceRealization _interfaceRealization = implementation.getInterfaceRealization(null, providedIntf);
+ boolean implementsIntf = (!Objects.equal(_interfaceRealization, null));
+ if ((!implementsIntf)) {
+ final Interface providedIntfInCopy = this.copier.<Interface>getCopy(providedIntf);
+ InterfaceRealization _interfaceRealization_1 = implementation.getInterfaceRealization(null, providedIntfInCopy);
+ boolean _notEquals_4 = (!Objects.equal(_interfaceRealization_1, null));
+ implementsIntf = _notEquals_4;
+ }
+ if (implementsIntf) {
+ body = "return this;";
+ } else {
+ String _name_3 = providedIntf.getName();
+ Port _port = portInfo.getPort();
+ String _name_4 = _port.getName();
+ String _name_5 = implementation.getName();
+ String _format = String.format(Messages.CompImplTrafos_IntfNotImplemented, _name_3, _name_4, _name_5);
+ throw new RuntimeException(_format);
+ }
+ }
+ EList<String> _languages = behavior.getLanguages();
+ _languages.add(Constants.progLang);
+ EList<String> _bodies = behavior.getBodies();
+ _bodies.add(body);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Add a connect_<portName> operation for ports with a required interface.
+ * Whereas operation and a behavior is added for each owned port, a behavior
+ * (method) is needed for ports inherited from a component type (the
+ * behavior is implementation specific, as it needs to take delegation to
+ * parts into account)
+ *
+ * @param implementation
+ */
+ public static void addConnectPortOperation(final org.eclipse.uml2.uml.Class implementation) {
+ EList<Port> _allPorts2 = PortUtils.getAllPorts2(implementation);
+ EList<PortInfo> _flattenExtendedPorts = PortUtils.flattenExtendedPorts(_allPorts2);
+ for (final PortInfo portInfo : _flattenExtendedPorts) {
+ {
+ final Interface requiredIntf = portInfo.getRequired();
+ boolean _notEquals = (!Objects.equal(requiredIntf, null));
+ if (_notEquals) {
+ String _name = portInfo.getName();
+ final String opName = (PrefixConstants.connectQ_Prefix + _name);
+ Operation _ownedOperation = implementation.getOwnedOperation(opName, null, null);
+ boolean _notEquals_1 = (!Objects.equal(_ownedOperation, null));
+ if (_notEquals_1) {
+ } else {
+ Operation op = implementation.createOwnedOperation(opName, null, null);
+ boolean _or = false;
+ int _upper = portInfo.getUpper();
+ boolean _greaterThan = (_upper > 1);
+ if (_greaterThan) {
+ _or = true;
+ } else {
+ int _upper_1 = portInfo.getUpper();
+ boolean _equals = (_upper_1 == (-1));
+ _or = _equals;
+ }
+ final boolean multiPort = _or;
+ if (multiPort) {
+ org.eclipse.uml2.uml.Package _top = Utils.getTop(implementation);
+ final NamedElement eLong = Utils.getQualifiedElement(_top,
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE);
+ if ((eLong instanceof Type)) {
+ op.createOwnedParameter("index", ((Type) eLong));
+ } else {
+ String _format = String.format(Messages.CompImplTrafos_CannotFindType,
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE);
+ throw new RuntimeException(_format);
+ }
+ }
+ final Parameter refParam = op.createOwnedParameter("ref", requiredIntf);
+ StereotypeUtil.apply(refParam, Ptr.class);
+ EClass _opaqueBehavior = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior = implementation.createOwnedBehavior(opName, _opaqueBehavior);
+ final OpaqueBehavior behavior = ((OpaqueBehavior) _createOwnedBehavior);
+ EList<Behavior> _methods = op.getMethods();
+ _methods.add(behavior);
+ Port _modelPort = portInfo.getModelPort();
+ final ConnectorEnd ce = ConnectorUtil.getDelegation(implementation, _modelPort);
+ String body = null;
+ boolean _notEquals_2 = (!Objects.equal(ce, null));
+ if (_notEquals_2) {
+ final Property part = ce.getPartWithPort();
+ String _name_1 = part.getName();
+ body = _name_1;
+ final ConnectableElement role = ce.getRole();
+ if ((role instanceof Port)) {
+ String _name_2 = ((Port)role).getName();
+ final String targetOpName = (PrefixConstants.connectQ_Prefix + _name_2);
+ StringConcatenation _builder = new StringConcatenation();
+ String _nameRef = CppUtils.nameRef(part);
+ _builder.append(_nameRef, "");
+ _builder.append(targetOpName, "");
+ body = _builder.toString();
+ boolean _or_1 = false;
+ int _upper_2 = portInfo.getUpper();
+ boolean _greaterThan_1 = (_upper_2 > 1);
+ if (_greaterThan_1) {
+ _or_1 = true;
+ } else {
+ int _upper_3 = portInfo.getUpper();
+ boolean _equals_1 = (_upper_3 == (-1));
+ _or_1 = _equals_1;
+ }
+ if (_or_1) {
+ String _body = body;
+ body = (_body + "(index, ref);");
+ } else {
+ String _body_1 = body;
+ body = (_body_1 + "(ref);");
+ }
+ } else {
+ String _body_2 = body;
+ StringConcatenation _builder_1 = new StringConcatenation();
+ String _name_3 = part.getName();
+ _builder_1.append(_name_3, "");
+ _builder_1.append(";");
+ body = (_body_2 + _builder_1);
+ }
+ } else {
+ String _name_4 = portInfo.getName();
+ final String attributeName = (PrefixConstants.attributePrefix + _name_4);
+ boolean _hasNonPortOwnedAttribute = Utils.hasNonPortOwnedAttribute(implementation, attributeName);
+ boolean _not = (!_hasNonPortOwnedAttribute);
+ if (_not) {
+ final Property attr = implementation.createOwnedAttribute(attributeName, requiredIntf);
+ Port _port = portInfo.getPort();
+ LazyCopier.copyMultElemModifiers(_port, attr);
+ attr.setAggregation(AggregationKind.SHARED_LITERAL);
+ }
+ body = attributeName;
+ if (multiPort) {
+ String _body_3 = body;
+ body = (_body_3 + "[index]");
+ }
+ String _body_4 = body;
+ body = (_body_4 + " = ref;");
+ }
+ EList<String> _languages = behavior.getLanguages();
+ _languages.add(Constants.progLang);
+ EList<String> _bodies = behavior.getBodies();
+ _bodies.add(body);
+ boolean _and = false;
+ int _length = PrefixConstants.getConnQ_Prefix.length();
+ boolean _greaterThan_2 = (_length > 0);
+ if (!_greaterThan_2) {
+ _and = false;
+ } else {
+ boolean _notEquals_3 = (!Objects.equal(ce, null));
+ _and = _notEquals_3;
+ }
+ if (_and) {
+ String _name_5 = portInfo.getName();
+ final String getConnOpName = (PrefixConstants.getConnQ_Prefix + _name_5);
+ Operation getConnOp = implementation.getOwnedOperation(getConnOpName, null, null);
+ boolean _equals_2 = Objects.equal(getConnOp, null);
+ if (_equals_2) {
+ Operation _createOwnedOperation = implementation.createOwnedOperation(getConnOpName, null, null, requiredIntf);
+ getConnOp = _createOwnedOperation;
+ EList<Parameter> _ownedParameters = op.getOwnedParameters();
+ final Parameter retParam = _ownedParameters.get(0);
+ retParam.setName(Constants.retParamName);
+ StereotypeUtil.apply(retParam, Ptr.class);
+ }
+ EClass _opaqueBehavior_1 = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior_1 = implementation.createOwnedBehavior(getConnOpName, _opaqueBehavior_1);
+ final OpaqueBehavior getConnBehavior = ((OpaqueBehavior) _createOwnedBehavior_1);
+ EList<Behavior> _methods_1 = getConnOp.getMethods();
+ _methods_1.add(getConnBehavior);
+ String _name_6 = portInfo.getName();
+ final String name = (PrefixConstants.attributePrefix + _name_6);
+ StringConcatenation _builder_2 = new StringConcatenation();
+ _builder_2.append("return ");
+ _builder_2.append(name, "");
+ _builder_2.append(";");
+ body = _builder_2.toString();
+ EList<String> _languages_1 = behavior.getLanguages();
+ _languages_1.add(Constants.progLang);
+ EList<String> _bodies_1 = behavior.getBodies();
+ _bodies_1.add(body);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Add an operation "createConnections" that implements the connections
+ * between composite parts. It only takes the assembly connections into
+ * account, since delegation connectors are handled by the get_ and connect_
+ * port operations above.
+ *
+ * @param implementation
+ */
+ @Override
+ public void addConnectionOperation(final org.eclipse.uml2.uml.Class compositeImplementation) throws TransformationException {
+ String createConnBody = "";
+ final Map<ConnectorEnd, Integer> indexMap = new HashMap<ConnectorEnd, Integer>();
+ EList<Connector> _ownedConnectors = compositeImplementation.getOwnedConnectors();
+ for (final Connector connector : _ownedConnectors) {
+ boolean _isAssembly = ConnectorUtil.isAssembly(connector);
+ if (_isAssembly) {
+ EList<ConnectorEnd> _ends = connector.getEnds();
+ int _size = _ends.size();
+ boolean _notEquals = (_size != 2);
+ if (_notEquals) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("Connector <");
+ String _name = connector.getName();
+ _builder.append(_name, "");
+ _builder.append("> does not have two ends. This is currently not supported");
+ throw new TransformationException(_builder.toString());
+ }
+ EList<ConnectorEnd> _ends_1 = connector.getEnds();
+ final ConnectorEnd end1 = _ends_1.get(0);
+ EList<ConnectorEnd> _ends_2 = connector.getEnds();
+ final ConnectorEnd end2 = _ends_2.get(1);
+ StringConcatenation _builder_1 = new StringConcatenation();
+ _builder_1.append("// realization of connector <");
+ String _name_1 = connector.getName();
+ _builder_1.append(_name_1, "");
+ _builder_1.append(">\\n");
+ String cmd = _builder_1.toString();
+ boolean _and = false;
+ ConnectableElement _role = end1.getRole();
+ if (!(_role instanceof Port)) {
+ _and = false;
+ } else {
+ ConnectableElement _role_1 = end1.getRole();
+ boolean _isExtendedPort = PortUtils.isExtendedPort(((Port) _role_1));
+ _and = _isExtendedPort;
+ }
+ if (_and) {
+ ConnectableElement _role_2 = end1.getRole();
+ final Port port = ((Port) _role_2);
+ final EList<PortInfo> subPorts = PortUtils.flattenExtendedPort(port);
+ for (final PortInfo subPort : subPorts) {
+ {
+ String _cmd = cmd;
+ StringConcatenation _builder_2 = new StringConcatenation();
+ _builder_2.append(" ");
+ _builder_2.append("// realization of connection for sub-port ");
+ Port _port = subPort.getPort();
+ String _name_2 = _port.getName();
+ _builder_2.append(_name_2, " ");
+ _builder_2.append("\\n");
+ cmd = (_cmd + _builder_2);
+ String _cmd_1 = cmd;
+ Port _port_1 = subPort.getPort();
+ String _connectPorts = StaticCppToOO.connectPorts(indexMap, connector, end1, end2, _port_1);
+ cmd = (_cmd_1 + _connectPorts);
+ String _cmd_2 = cmd;
+ Port _port_2 = subPort.getPort();
+ String _connectPorts_1 = StaticCppToOO.connectPorts(indexMap, connector, end2, end1, _port_2);
+ cmd = (_cmd_2 + _connectPorts_1);
+ }
+ }
+ } else {
+ String _cmd = cmd;
+ String _connectPorts = StaticCppToOO.connectPorts(indexMap, connector, end1, end2, null);
+ cmd = (_cmd + _connectPorts);
+ String _cmd_1 = cmd;
+ String _connectPorts_1 = StaticCppToOO.connectPorts(indexMap, connector, end2, end1, null);
+ cmd = (_cmd_1 + _connectPorts_1);
+ }
+ String _createConnBody = createConnBody;
+ createConnBody = (_createConnBody + (cmd + "\n"));
+ }
+ }
+ int _length = createConnBody.length();
+ boolean _greaterThan = (_length > 0);
+ if (_greaterThan) {
+ final Operation operation = compositeImplementation.createOwnedOperation(Constants.CREATE_CONNECTIONS, null, null);
+ String _name_2 = operation.getName();
+ String _plus = ("b:" + _name_2);
+ EClass _opaqueBehavior = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior = compositeImplementation.createOwnedBehavior(_plus, _opaqueBehavior);
+ final OpaqueBehavior behavior = ((OpaqueBehavior) _createOwnedBehavior);
+ EList<String> _languages = behavior.getLanguages();
+ _languages.add(Constants.progLang);
+ EList<String> _bodies = behavior.getBodies();
+ _bodies.add(createConnBody);
+ behavior.setSpecification(operation);
+ }
+ }
+
+ /**
+ * Create the body C++ code code that creates a connection between the two ends
+ * of a connector. This function checks whether the first end really is a receptacle
+ * and the second really is a facet.
+ *
+ * @param indexMap
+ * a map of indices that are used in case of multiplex
+ * receptacles
+ * @param connector
+ * a connector
+ * @param receptacleEnd
+ * an end of the connector that may point to a receptacle port
+ * @param facetEnd
+ * an end of the connector that may point to a facet port
+ * @param subPort
+ * a sub-port in case of extended ports
+ * @return
+ * @throws TransformationException
+ */
+ public static String connectPorts(final Map<ConnectorEnd, Integer> indexMap, final Connector connector, final ConnectorEnd receptacleEnd, final ConnectorEnd facetEnd, final Port subPort) throws TransformationException {
+ final Association association = connector.getType();
+ boolean _and = false;
+ ConnectableElement _role = receptacleEnd.getRole();
+ if (!(_role instanceof Port)) {
+ _and = false;
+ } else {
+ ConnectableElement _role_1 = facetEnd.getRole();
+ _and = (_role_1 instanceof Port);
+ }
+ if (_and) {
+ ConnectableElement _role_2 = facetEnd.getRole();
+ final Port facetPort = ((Port) _role_2);
+ ConnectableElement _role_3 = receptacleEnd.getRole();
+ final Port receptaclePort = ((Port) _role_3);
+ final PortInfo facetPI = PortInfo.fromSubPort(facetPort, subPort);
+ final PortInfo receptaclePI = PortInfo.fromSubPort(receptaclePort, subPort);
+ boolean _and_1 = false;
+ Interface _provided = facetPI.getProvided();
+ boolean _notEquals = (!Objects.equal(_provided, null));
+ if (!_notEquals) {
+ _and_1 = false;
+ } else {
+ Interface _required = receptaclePI.getRequired();
+ boolean _notEquals_1 = (!Objects.equal(_required, null));
+ _and_1 = _notEquals_1;
+ }
+ if (_and_1) {
+ final Property facetPart = facetEnd.getPartWithPort();
+ final Property receptaclePart = receptacleEnd.getPartWithPort();
+ String subPortName = "";
+ boolean _notEquals_2 = (!Objects.equal(subPort, null));
+ if (_notEquals_2) {
+ String _subPortName = subPortName;
+ String _name = subPort.getName();
+ String _plus = ("_" + _name);
+ subPortName = (_subPortName + _plus);
+ }
+ final String indexName = StaticCppToOO.getIndexName(indexMap, receptaclePort, receptacleEnd);
+ StringConcatenation _builder = new StringConcatenation();
+ String _nameRef = CppUtils.nameRef(receptaclePart);
+ _builder.append(_nameRef, "");
+ _builder.append("connect_");
+ String _name_1 = receptaclePort.getName();
+ _builder.append(_name_1, "");
+ _builder.append(" ");
+ _builder.append(subPortName, "");
+ _builder.append(";");
+ final String setter = _builder.toString();
+ StringConcatenation _builder_1 = new StringConcatenation();
+ String _nameRef_1 = CppUtils.nameRef(facetPart);
+ _builder_1.append(_nameRef_1, "");
+ _builder_1.append("get_");
+ String _name_2 = facetPort.getName();
+ _builder_1.append(_name_2, "");
+ _builder_1.append(" ");
+ _builder_1.append(subPortName, "");
+ _builder_1.append("()");
+ final String getter = _builder_1.toString();
+ StringConcatenation _builder_2 = new StringConcatenation();
+ _builder_2.append(setter, "");
+ _builder_2.append("(");
+ _builder_2.append(indexName, "");
+ _builder_2.append(getter, "");
+ _builder_2.append(");\\n");
+ return _builder_2.toString();
+ }
+ } else {
+ ConnectableElement _role_4 = receptacleEnd.getRole();
+ if ((_role_4 instanceof Port)) {
+ ConnectableElement _role_5 = receptacleEnd.getRole();
+ final Port receptaclePort_1 = ((Port) _role_5);
+ Interface _required_1 = PortUtils.getRequired(receptaclePort_1);
+ boolean _notEquals_3 = (!Objects.equal(_required_1, null));
+ if (_notEquals_3) {
+ ConnectableElement _role_6 = facetEnd.getRole();
+ final Property facetPart_1 = ((Property) _role_6);
+ final Property receptaclePart_1 = facetEnd.getPartWithPort();
+ final String indexName_1 = StaticCppToOO.getIndexName(indexMap, receptaclePort_1, receptacleEnd);
+ StringConcatenation _builder_3 = new StringConcatenation();
+ String _nameRef_2 = CppUtils.nameRef(receptaclePart_1);
+ _builder_3.append(_nameRef_2, "");
+ _builder_3.append("connect_");
+ String _name_3 = receptaclePort_1.getName();
+ _builder_3.append(_name_3, "");
+ final String setter_1 = _builder_3.toString();
+ StringConcatenation _builder_4 = new StringConcatenation();
+ _builder_4.append("&");
+ String _name_4 = facetPart_1.getName();
+ _builder_4.append(_name_4, "");
+ final String getter_1 = _builder_4.toString();
+ StringConcatenation _builder_5 = new StringConcatenation();
+ _builder_5.append(setter_1, "");
+ _builder_5.append("(");
+ _builder_5.append(indexName_1, "");
+ _builder_5.append(getter_1, "");
+ _builder_5.append(");\\n");
+ return _builder_5.toString();
+ }
+ } else {
+ ConnectableElement _role_7 = facetEnd.getRole();
+ if ((_role_7 instanceof Port)) {
+ ConnectableElement _role_8 = facetEnd.getRole();
+ final Port facetPort_1 = ((Port) _role_8);
+ Interface _provided_1 = PortUtils.getProvided(facetPort_1);
+ boolean _notEquals_4 = (!Objects.equal(_provided_1, null));
+ if (_notEquals_4) {
+ final Property facetPart_2 = facetEnd.getPartWithPort();
+ ConnectableElement _role_9 = facetEnd.getRole();
+ final Property receptaclePart_2 = ((Property) _role_9);
+ final String setter_2 = receptaclePart_2.getName();
+ StringConcatenation _builder_6 = new StringConcatenation();
+ String _nameRef_3 = CppUtils.nameRef(facetPart_2);
+ _builder_6.append(_nameRef_3, "");
+ _builder_6.append("get_");
+ String _name_5 = facetPort_1.getName();
+ _builder_6.append(_name_5, "");
+ _builder_6.append("();");
+ final String getter_2 = _builder_6.toString();
+ StringConcatenation _builder_7 = new StringConcatenation();
+ _builder_7.append(setter_2, "");
+ _builder_7.append(" = ");
+ _builder_7.append(getter_2, "");
+ _builder_7.append(";\\n");
+ return _builder_7.toString();
+ }
+ } else {
+ boolean _notEquals_5 = (!Objects.equal(association, null));
+ if (_notEquals_5) {
+ ConnectableElement _role_10 = facetEnd.getRole();
+ final Property facetPart_3 = ((Property) _role_10);
+ ConnectableElement _role_11 = receptacleEnd.getRole();
+ final Property receptaclePart_3 = ((Property) _role_11);
+ Type _type = facetPart_3.getType();
+ final Property assocProp1 = association.getMemberEnd(null, _type);
+ boolean _and_2 = false;
+ boolean _notEquals_6 = (!Objects.equal(assocProp1, null));
+ if (!_notEquals_6) {
+ _and_2 = false;
+ } else {
+ boolean _isNavigable = assocProp1.isNavigable();
+ _and_2 = _isNavigable;
+ }
+ if (_and_2) {
+ StringConcatenation _builder_8 = new StringConcatenation();
+ String _nameRef_4 = CppUtils.nameRef(receptaclePart_3);
+ _builder_8.append(_nameRef_4, "");
+ String _name_6 = assocProp1.getName();
+ _builder_8.append(_name_6, "");
+ final String setter_3 = _builder_8.toString();
+ StringConcatenation _builder_9 = new StringConcatenation();
+ _builder_9.append("&");
+ String _name_7 = facetPart_3.getName();
+ _builder_9.append(_name_7, "");
+ final String getter_3 = _builder_9.toString();
+ StringConcatenation _builder_10 = new StringConcatenation();
+ _builder_10.append(setter_3, "");
+ _builder_10.append(" = ");
+ _builder_10.append(getter_3, "");
+ _builder_10.append(";\\n");
+ return _builder_10.toString();
+ }
+ } else {
+ String _name_8 = connector.getName();
+ String _plus_1 = ("Connector <" + _name_8);
+ String _plus_2 = (_plus_1 +
+ "> does not use ports, but it is not typed (only connectors between ports should not be typed)");
+ throw new TransformationException(_plus_2);
+ }
+ }
+ }
+ }
+ return "";
+ }
+
+ /**
+ * Handle ports with multiplicity > 1. The idea is that we could have
+ * multiple connections targeting a receptacle. The first connection would
+ * start with index 0. Implementations can make no assumption which
+ * connection is associated with a certain index. [want to avoid associative
+ * array in runtime].
+ *
+ * @param port
+ * @param end
+ * @return
+ */
+ public static String getIndexName(final Map<ConnectorEnd, Integer> indexMap, final Port port, final ConnectorEnd end) {
+ boolean _or = false;
+ int _upper = port.getUpper();
+ boolean _greaterThan = (_upper > 1);
+ if (_greaterThan) {
+ _or = true;
+ } else {
+ int _upper_1 = port.getUpper();
+ boolean _equals = (_upper_1 == (-1));
+ _or = _equals;
+ }
+ if (_or) {
+ Integer indexValue = indexMap.get(end);
+ boolean _equals_1 = Objects.equal(indexValue, null);
+ if (_equals_1) {
+ indexValue = Integer.valueOf(0);
+ indexMap.put(end, indexValue);
+ }
+ String index = (indexValue + ", ");
+ indexValue++;
+ indexMap.put(end, indexValue);
+ return index;
+ }
+ return "";
+ }
+
+ /**
+ * Return true, if the bootloader is responsible for the instantiation of a
+ * part. [Structual difference: bootloader can decide instance based - and
+ * instances are deployed]
+ *
+ * If a part is a component type or an abstract implementation, it cannot be
+ * instantiated. Thus, a heir has to be selected in the deployment plan.
+ * Since the selection might be different for different instances of the
+ * composite, the instantiation is not done by the component itself, but by
+ * the bootloader. The bootloader also has to instantiate, if different
+ * allocation variants are required. (this is for instance the case for
+ * distribution connectors and for the system itself)
+ *
+ * If possible, we want to let composites instantiate sub-components, since
+ * this eases the transition to systems which support reconfiguration.
+ *
+ * [TODO: optimization: analyze whether the deployment plan selects a single
+ * implementation. If yes, let the composite instantiate]
+ *
+ * [TODO: elements within an assembly need to be instantiated by composite -
+ * if System - by bootloader. assembly also need to be instantiated by
+ * composite!!
+ *
+ * @param implementation
+ * @return
+ */
+ public static boolean instantiateViaBootloader(final org.eclipse.uml2.uml.Class implementation) {
+ boolean _or = false;
+ boolean _isAbstract = implementation.isAbstract();
+ if (_isAbstract) {
+ _or = true;
+ } else {
+ boolean _isAssembly = Utils.isAssembly(implementation);
+ _or = _isAssembly;
+ }
+ return _or;
+ }
+
+ /**
+ * Return whether a part needs to be instantiated by the bootloader instead
+ * by the composite in which it is contained. The criteria is based on the
+ * question whether the containing composite is flattened, as it is the case
+ * for the system component and the interaction components for distribution.
+ *
+ * @param part
+ * @return
+ */
+ public static boolean instantiateViaBootloader(final StructuralFeature part) {
+ boolean _notEquals = (!Objects.equal(part, null));
+ if (_notEquals) {
+ Type _type = part.getType();
+ if ((_type instanceof org.eclipse.uml2.uml.Class)) {
+ Type _type_1 = part.getType();
+ final org.eclipse.uml2.uml.Class implementation = ((org.eclipse.uml2.uml.Class) _type_1);
+ return StaticCppToOO.instantiateViaBootloader(implementation);
+ } else {
+ return false;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Transform parts if necessary.
+ *
+ * If the bootloader is responsible for creating an instance (if it is a
+ * abstract type), mark the associated part as a C++ pointer. We do not want
+ * to change the aggregation kind, since it remains logically a composition,
+ * it is merely an implementation issue that it must be a pointer for C++ if
+ * the concrete type is not yet known.
+ *
+ * @param compositeImplementation
+ * a (composite) component
+ */
+ @Override
+ public void transformParts(final org.eclipse.uml2.uml.Class compositeImplementation) {
+ EList<Property> _parts = Utils.getParts(compositeImplementation);
+ for (final Property attribute : _parts) {
+ {
+ final Type type = attribute.getType();
+ if ((type instanceof org.eclipse.uml2.uml.Class)) {
+ final org.eclipse.uml2.uml.Class cl = ((org.eclipse.uml2.uml.Class) type);
+ boolean _instantiateViaBootloader = StaticCppToOO.instantiateViaBootloader(cl);
+ if (_instantiateViaBootloader) {
+ StereotypeUtil.apply(attribute, Ptr.class);
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/.classpath b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/.classpath
new file mode 100644
index 00000000000..248b4c5dc7a
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/.classpath
@@ -0,0 +1,8 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="src" path="xtend-gen"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/.project b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/.project
new file mode 100644
index 00000000000..49ba9131ad8
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.qompass.designer.java</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <buildCommand>
+ <name>org.eclipse.xtext.ui.shared.xtextBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.jdt.core.javabuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.ManifestBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ <buildCommand>
+ <name>org.eclipse.pde.SchemaBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ <nature>org.eclipse.xtext.ui.shared.xtextNature</nature>
+ </natures>
+</projectDescription>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/.settings/org.eclipse.jdt.core.prefs b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 00000000000..f42de363afa
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,7 @@
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/META-INF/MANIFEST.MF
new file mode 100644
index 00000000000..ca75da00db5
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: %pluginName
+Bundle-SymbolicName: org.eclipse.papyrus.qompass.designer.java;singleton:=true
+Bundle-Version: 1.1.0.qualifier
+Bundle-Activator: org.eclipse.papyrus.qompass.designer.java.Activator
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.uml2.uml;bundle-version="5.0.1",
+ org.eclipse.papyrus.uml.tools.utils;bundle-version="1.1.0",
+ org.eclipse.papyrus.qompass.designer.core;bundle-version="1.1.0",
+ com.google.guava,
+ org.eclipse.xtext.xbase.lib,
+ org.eclipse.xtend.lib,
+ org.eclipse.xtend.lib.macro
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
+Bundle-ActivationPolicy: lazy
+Bundle-Vendor: %providerName
+Bundle-Localization: plugin
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/about.html b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/about.html
new file mode 100644
index 00000000000..209103075a7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/about.html
@@ -0,0 +1,28 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html xmlns="http://www.w3.org/1999/xhtml">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"/>
+<title>About</title>
+</head>
+<body lang="EN-US">
+<h2>About This Content</h2>
+
+<p>November 14, 2008</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in (&quot;Content&quot;). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 (&quot;EPL&quot;). A copy of the EPL is available
+at <a href="http://www.eclipse.org/legal/epl-v10.html">http://www.eclipse.org/legal/epl-v10.html</a>.
+For purposes of the EPL, &quot;Program&quot; will mean the Content.</p>
+
+<p>If you did not receive this Content directly from the Eclipse Foundation, the Content is
+being redistributed by another party (&quot;Redistributor&quot;) and different terms and conditions may
+apply to your use of any object code in the Content. Check the Redistributor's license that was
+provided with the Content. If no such license exists, contact the Redistributor. Unless otherwise
+indicated below, the terms and conditions of the EPL still apply to any source code in the Content
+and such source code may be obtained at <a href="http://www.eclipse.org">http://www.eclipse.org</a>.</p>
+
+</body>
+</html> \ No newline at end of file
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/build.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/build.properties
new file mode 100644
index 00000000000..d944674ba0b
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/build.properties
@@ -0,0 +1,6 @@
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ about.html,\
+ plugin.properties
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/plugin.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/plugin.properties
new file mode 100644
index 00000000000..5c6ac578195
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/plugin.properties
@@ -0,0 +1,12 @@
+###############################################################################
+# Copyright (c) 2013 CEA LIST.
+# 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:
+# CEA LIST - initial API and implementation
+###############################################################################
+pluginName=Papyrus extra: Qompass Designer Java support (Incubation)
+providerName=Eclipse Modeling Project
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/plugin.xml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/plugin.xml
new file mode 100644
index 00000000000..325c6bd80d0
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/plugin.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.papyrus.qompass.designer.core.ooTransformation">
+ <client
+ class="org.eclipse.papyrus.qompass.designer.java.xtend.JavaToOO"
+ ooTrafoID="org.eclipse.papyrus.qompass.designer.java.Java">
+ </client>
+ </extension>
+</plugin>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/Activator.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/Activator.java
new file mode 100644
index 00000000000..1e7d5e25650
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/Activator.java
@@ -0,0 +1,50 @@
+package org.eclipse.papyrus.qompass.designer.java;
+
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.qompass.designer.cpp"; //$NON-NLS-1$
+
+ // The shared instance
+ private static Activator plugin;
+
+ /**
+ * The constructor
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext)
+ */
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /*
+ * (non-Javadoc)
+ * @see org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext)
+ */
+ public void stop(BundleContext context) throws Exception {
+ plugin = null;
+ super.stop(context);
+ }
+
+ /**
+ * Returns the shared instance
+ *
+ * @return the shared instance
+ */
+ public static Activator getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/Messages.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/Messages.java
new file mode 100644
index 00000000000..070d1956590
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/Messages.java
@@ -0,0 +1,19 @@
+package org.eclipse.papyrus.qompass.designer.java;
+
+import org.eclipse.osgi.util.NLS;
+
+public class Messages extends NLS {
+ private static final String BUNDLE_NAME = "org.eclipse.papyrus.qompass.designer.cpp.messages"; //$NON-NLS-1$
+
+ public static String CompImplTrafos_CannotFindType;
+ public static String CompImplTrafos_IntfNotImplemented;
+ public static String CompTypeTrafos_CannotFindType;
+
+ static {
+ // initialize resource bundle
+ NLS.initializeMessages(BUNDLE_NAME, Messages.class);
+ }
+
+ private Messages() {
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/messages.properties b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/messages.properties
new file mode 100644
index 00000000000..c4c2141c7e6
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/messages.properties
@@ -0,0 +1,3 @@
+CompImplTrafos_CannotFindType=Can not find type %s. Thus, unable to create suitable connect operation in component to OO transformation.
+CompImplTrafos_IntfNotImplemented=Interface <%s> provided by port <%s> of class <%s> is not implemented by the component itself nor does the port delegate to a part
+CompTypeTrafos_CannotFindType=Can not find type <%s>. Thus, unable to create suitable connect operation in component to OO transformation
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/xtend/JavaToOO.xtend b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/xtend/JavaToOO.xtend
new file mode 100644
index 00000000000..f06b3d6eb0e
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/src/org/eclipse/papyrus/qompass/designer/java/xtend/JavaToOO.xtend
@@ -0,0 +1,547 @@
+/*****************************************************************************
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * 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:
+ * Ansgar Radermacher ansgar.radermacher@cea.fr
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.qompass.designer.java.xtend
+
+import org.eclipse.papyrus.qompass.designer.core.transformations.LazyCopier
+import org.eclipse.uml2.uml.Class
+import org.eclipse.uml2.uml.Property
+import org.eclipse.uml2.uml.Port
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException
+import org.eclipse.papyrus.qompass.designer.core.PortInfo
+import org.eclipse.papyrus.qompass.designer.core.PortUtils
+import org.eclipse.papyrus.qompass.designer.core.transformations.PrefixConstants
+import org.eclipse.papyrus.qompass.designer.core.Utils
+import org.eclipse.papyrus.qompass.designer.core.transformations.CompTypeTrafos
+import org.eclipse.uml2.uml.AggregationKind
+import org.eclipse.uml2.uml.UMLPackage
+import org.eclipse.uml2.uml.OpaqueBehavior
+import org.eclipse.uml2.uml.ConnectorEnd
+import org.eclipse.papyrus.uml.tools.utils.ConnectorUtil
+import org.eclipse.uml2.uml.Type
+import java.util.HashMap
+import java.util.Map
+import org.eclipse.uml2.uml.Connector
+import org.eclipse.emf.common.util.EList
+import org.eclipse.uml2.uml.StructuralFeature
+import org.eclipse.papyrus.qompass.designer.java.Messages
+import org.eclipse.papyrus.qompass.designer.core.extensions.IOOTrafo
+
+/**
+ * This class realizes the transformation from component-based to object-oriented
+ * models. It includes the replacement of ports and connectors. Ports are
+ * replaced with attributes and access operations, connectors within a composite
+ * by an operation that creates the initial setup.
+ *
+ * 1. add an operation that allows to retrieve the reference to an interface provided
+ * by a port. This operation has a mapping specific name, e.g. get_<port_name>
+ * 2. add an operation that allows to connect a specific port.
+ * the connect_q operation (*including a
+ * storage attribute*) for a port with a required interface
+ * 3. add an implementation for the getcnx_q operation for a port
+ * with a required interface (the operation itself has been added before)
+ *
+ * TODO: C++ specific, support different "component to OO" mappings
+ *
+ * Problems: need to align bootloader creation with this mapping, since
+ * the bootloader may be responsible for instantiation
+ *
+ * Caveat: Assure that the folder derivedInterfaces already exists in a model.
+ * Otherwise the call to getProvided/getRequired interface might trigger its
+ * creation resulting in the corruption of list iterators (ConcurrentAccess
+ * exception)
+ *
+ */
+class JavaToOO implements IOOTrafo {
+
+ public static final String CREATE_CONNECTIONS = "createConnections"
+
+ protected LazyCopier copier
+
+ protected Class bootloader // why required?
+
+ override init(LazyCopier copier, Class bootloader) {
+ this.copier = copier
+ this.bootloader = bootloader
+ }
+
+ public static final String retParamName = "ret"
+
+ public static final String progLang = "JAVA"
+
+ override addPortOperations(Class implementation) {
+ addGetPortOperation(implementation)
+ addConnectPortOperation(implementation)
+ }
+
+ /**
+ * Add the get_p operation for each port with a provided interface. It also
+ * adds a suitable implementation that evaluates delegation connectors from
+ * the port to a property within the composite. The delegation target could
+ * either be a normal class (no port) or an inner component.
+ *
+ * @param implementation
+ */
+ def addGetPortOperation(Class implementation) {
+ for (PortInfo portInfo : PortUtils.flattenExtendedPorts(PortUtils.getAllPorts2(implementation))) {
+ val providedIntf = portInfo.getProvided()
+ if (providedIntf != null) {
+
+ // port provides an interface, add "get_p" operation &
+ // implementation
+ val opName = PrefixConstants.getP_Prefix + portInfo.name
+ var op = implementation.getOwnedOperation(opName, null, null)
+ if (op != null) {
+
+ // operation already exists. Assume that user wants to
+ // override standard delegation
+ if (op.type != providedIntf) {
+ op.createOwnedParameter(retParamName, providedIntf)
+ }
+ } else {
+ op = implementation.createOwnedOperation(opName, null, null, providedIntf)
+ val retParam = op.getOwnedParameters().get(0)
+ retParam.setName(retParamName)
+
+ val behavior = implementation.createOwnedBehavior(opName, UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+ op.getMethods().add(behavior)
+
+ val ce = ConnectorUtil.getDelegation(implementation, portInfo.getModelPort())
+
+ // if there is an delegation to an inner property, delegate to
+ // it
+ // Make distinction between delegation to component (with a
+ // port) or
+ // "normal" class (without).
+ var String body
+ if (ce != null) {
+ val part = ce.partWithPort
+ val role = ce.role
+
+ body = "return "
+ if (role instanceof Port) {
+
+ // check whether the part exists within the
+ // implementation (might not be the case
+ // due to partially copied composites).
+ // Check is based on names, since the connector points
+ // to elements within another
+ // model (copyClassifier does not make a proper
+ // connector copy)
+ // body += part.name + refOp(part) + opName + "();"
+ // TODO: this will NOT work for extended ports!
+ body += '''«part.name».«PrefixConstants.getP_Prefix»«role.name»();'''
+ } else {
+
+ // role is not a port: connector connects directly to a
+ // structural feature
+ // without passing via a port
+ // TODO: check whether structural feature exists
+ body += role.name
+ }
+ } else {
+
+ // no delegation, check whether port implements provided interface
+ var implementsIntf = implementation.getInterfaceRealization(null, providedIntf) != null
+ if (!implementsIntf) {
+
+ // The extended port itself is not copied to the target
+ // model (since referenced via a stereotype). Therefore,
+ // a port of an extended port still points to the
+ // original model. We try whether the providedIntf
+ // within
+ // the target model is within the interface
+ // realizations.
+ val providedIntfInCopy = copier.getCopy(providedIntf)
+ implementsIntf = implementation.getInterfaceRealization(null, providedIntfInCopy) != null
+ }
+ if (implementsIntf) {
+ body = "return this;"
+ } else {
+ throw new RuntimeException(
+ String.format(Messages.CompImplTrafos_IntfNotImplemented, providedIntf.name,
+ portInfo.port.name, implementation.name))
+ }
+ }
+ behavior.getLanguages().add(progLang)
+ behavior.getBodies().add(body)
+ }
+ }
+ }
+ }
+
+ /**
+ * Add a connect_<portName> operation for ports with a required interface.
+ * Whereas operation and a behavior is added for each owned port, a behavior
+ * (method) is needed for ports inherited from a component type (the
+ * behavior is implementation specific, as it needs to take delegation to
+ * parts into account)
+ *
+ * @param implementation
+ */
+ static def addConnectPortOperation(Class implementation) {
+ for (PortInfo portInfo : PortUtils.flattenExtendedPorts(PortUtils.getAllPorts2(implementation))) {
+ val requiredIntf = portInfo.getRequired()
+ if (requiredIntf != null) {
+
+ // port requires an interface, add "connect_p" operation &
+ // implementation
+ val opName = PrefixConstants.connectQ_Prefix + portInfo.name
+
+ if (implementation.getOwnedOperation(opName, null, null) != null) {
+ // do not add the operation, if it already exists. This means that the
+ // user wants to override it with custom behavior. In case of extended
+ // ports, we may have to do that.
+ } else {
+ var op = implementation.createOwnedOperation(opName, null, null)
+ val boolean multiPort = (portInfo.getUpper() > 1) || (portInfo.getUpper() == -1) // -1 indicates "*"
+ if (multiPort) {
+
+ // add index parameter
+ val eLong = Utils.getQualifiedElement(Utils.getTop(implementation),
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE)
+ if (eLong instanceof Type) {
+ op.createOwnedParameter("index", eLong as Type)
+ } else {
+ throw new RuntimeException(
+ String.format(Messages.CompImplTrafos_CannotFindType,
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE))
+ }
+ }
+ val refParam = op.createOwnedParameter("ref", requiredIntf)
+
+ val behavior = implementation.createOwnedBehavior(opName, UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+
+ op.getMethods().add(behavior)
+
+ val ConnectorEnd ce = ConnectorUtil.getDelegation(implementation, portInfo.getModelPort())
+
+ // if there is an delegation to an inner property, delegate to it
+ // Make distinction between delegation to component (with a port) or
+ // "normal" class (without).
+ var String body
+ if (ce != null) {
+ val part = ce.partWithPort
+ body = part.name
+ val role = ce.role
+ if (role instanceof Port) {
+ // in case of a delegation, use name of target port which might be different
+ val targetOpName = PrefixConstants.connectQ_Prefix + role.name
+ body = '''«part.name».«targetOpName»'''
+
+ // TODO: no check that multiplicity of both port matches
+ if ((portInfo.getUpper() > 1) || (portInfo.getUpper() == -1)) {
+ body += "(index, ref);";
+ }
+ else {
+ body += "(ref);";
+ }
+
+ } else {
+ // TODO: does this case make sense?
+ body += '''«part.name»;'''
+ }
+ } else {
+ // no delegation - create attribute for port
+ val attributeName = PrefixConstants.attributePrefix + portInfo.name
+ if (!Utils.hasNonPortOwnedAttribute(implementation, attributeName)) {
+ val attr = implementation.createOwnedAttribute(attributeName, requiredIntf)
+ LazyCopier.copyMultElemModifiers(portInfo.port, attr)
+
+ // is shared (should store a reference)
+ attr.setAggregation(AggregationKind.SHARED_LITERAL)
+ }
+ body = attributeName
+ if(multiPort) body += "[index]"
+ body += " = ref"
+ }
+
+ // TODO: defined by template
+ behavior.getLanguages().add(progLang)
+ behavior.getBodies().add(body)
+
+ // -------------------------
+ // add body to get-connection operation (which exists already if the port is also
+ // owned, since it is synchronized automatically during model edit)
+ // getConnQ prefix may be empty to indicate that the port is accessed directly
+ // TODO: reconsider optimization that delegated required ports do not have a
+ // local attribute & associated operation (an inner class may delegate, but the
+ // composite may be using it as well).
+ if ((PrefixConstants.getConnQ_Prefix.length() > 0) && (ce != null)) {
+ val getConnOpName = PrefixConstants.getConnQ_Prefix + portInfo.name
+ var getConnOp = implementation.getOwnedOperation(getConnOpName, null, null)
+ if (getConnOp == null) {
+ getConnOp = implementation.createOwnedOperation(getConnOpName, null, null, requiredIntf)
+ val retParam = op.getOwnedParameters().get(0)
+ retParam.setName(retParamName)
+ }
+ val getConnBehavior = implementation.createOwnedBehavior(getConnOpName,
+ UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+ getConnOp.getMethods().add(getConnBehavior)
+
+ // no delegation
+ val String name = PrefixConstants.attributePrefix + portInfo.name
+ body = '''return «name»;'''
+ behavior.getLanguages().add(progLang)
+ behavior.getBodies().add(body)
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Add an operation "createConnections" that implements the connections
+ * between composite parts. It only takes the assembly connections into
+ * account, since delegation connectors are handled by the get_ and connect_
+ * port operations above.
+ *
+ * @param implementation
+ */
+ override addConnectionOperation(Class compositeImplementation) throws TransformationException {
+ var createConnBody = ""
+ val Map<ConnectorEnd, Integer> indexMap = new HashMap<ConnectorEnd, Integer>()
+
+ for (Connector connector : compositeImplementation.getOwnedConnectors()) {
+ if (ConnectorUtil.isAssembly(connector)) {
+
+ // Boolean associationBased = false
+ if (connector.ends.size() != 2) {
+ throw new TransformationException(
+ '''Connector <«connector.name»> does not have two ends. This is currently not supported''')
+ }
+ val end1 = connector.ends.get(0)
+ val end2 = connector.ends.get(1)
+ var cmd = '''// realization of connector <«connector.name»>\n'''
+ if ((end1.role instanceof Port) && PortUtils.isExtendedPort(end1.role as Port)) {
+ val port = end1.role as Port
+ val EList<PortInfo> subPorts = PortUtils.flattenExtendedPort(port)
+ for (PortInfo subPort : subPorts) {
+ cmd += ''' // realization of connection for sub-port «subPort.port.name»\n'''
+ cmd += connectPorts(indexMap, connector, end1, end2, subPort.port)
+ cmd += connectPorts(indexMap, connector, end2, end1, subPort.port)
+ }
+ } else {
+ cmd += connectPorts(indexMap, connector, end1, end2, null)
+ cmd += connectPorts(indexMap, connector, end2, end1, null)
+ }
+ createConnBody += cmd + "\n"
+ }
+ }
+
+ // TODO: use template, as in bootloader
+ if (createConnBody.length() > 0) {
+ val operation = compositeImplementation.createOwnedOperation(CREATE_CONNECTIONS, null, null)
+
+ val behavior = compositeImplementation.createOwnedBehavior("b:" + operation.name,
+ UMLPackage.eINSTANCE.getOpaqueBehavior()) as OpaqueBehavior
+ behavior.getLanguages().add(progLang)
+ behavior.getBodies().add(createConnBody)
+ behavior.setSpecification(operation)
+ }
+ }
+
+ /**
+ * Create the body C++ code code that creates a connection between the two ends
+ * of a connector. This function checks whether the first end really is a receptacle
+ * and the second really is a facet.
+ * TODO: cleaner rewrite in xtend
+ *
+ * @param indexMap
+ * a map of indices that are used in case of multiplex
+ * receptacles
+ * @param connector
+ * a connector
+ * @param receptacleEnd
+ * an end of the connector that may point to a receptacle port
+ * @param facetEnd
+ * an end of the connector that may point to a facet port
+ * @param subPort
+ * a sub-port in case of extended ports
+ * @return
+ * @throws TransformationException
+ */
+ static def connectPorts(Map<ConnectorEnd, Integer> indexMap, Connector connector, ConnectorEnd receptacleEnd,
+ ConnectorEnd facetEnd, Port subPort) throws TransformationException {
+ val association = connector.type
+ if ((receptacleEnd.role instanceof Port) && (facetEnd.role instanceof Port)) {
+ val facetPort = facetEnd.role as Port
+ val receptaclePort = receptacleEnd.role as Port
+ val facetPI = PortInfo.fromSubPort(facetPort, subPort)
+ val receptaclePI = PortInfo.fromSubPort(receptaclePort, subPort)
+
+ if ((facetPI.getProvided() != null) && (receptaclePI.getRequired() != null)) {
+ val facetPart = facetEnd.partWithPort
+ val receptaclePart = receptacleEnd.partWithPort
+
+ var subPortName = ""
+ if(subPort != null) subPortName += "_" + subPort.name
+ val indexName = getIndexName(indexMap, receptaclePort, receptacleEnd)
+ val setter = '''«receptaclePart.name».connect_«receptaclePort.name» «subPortName»;'''
+ val getter = '''«facetPart.name».get_«facetPort.name» «subPortName»()'''
+ return '''«setter»(«indexName»«getter»);\n'''
+ }
+
+ } else if (receptacleEnd.role instanceof Port) {
+
+ // only the receptacle end is of type port.
+ val Port receptaclePort = receptacleEnd.role as Port
+ if (PortUtils.getRequired(receptaclePort) != null) {
+ val facetPart = facetEnd.role as Property
+ val receptaclePart = facetEnd.partWithPort
+
+ val indexName = getIndexName(indexMap, receptaclePort, receptacleEnd)
+ val setter = '''«receptaclePart.name».connect_«receptaclePort.name»'''
+ val getter = '''&«facetPart.name»'''
+ return '''«setter»(«indexName»«getter»);\n'''
+ }
+ } else if (facetEnd.role instanceof Port) {
+
+ // only the facet end is of type port. Unsupported combination
+ val facetPort = facetEnd.role as Port
+ if (PortUtils.getProvided(facetPort) != null) {
+ val facetPart = facetEnd.partWithPort
+ val receptaclePart = facetEnd.role as Property
+
+ val setter = receptaclePart.name
+ val getter = '''«facetPart.name».get_«facetPort.name»();'''
+ return '''«setter» = «getter»;\n'''
+ }
+ } else if (association != null) {
+
+ // both connector ends do not target ports. In this case, we require that the connector is typed
+ // with an association. We use this association to find out which end is navigable and assume that
+ // the part pointed to by the other end is a pointer that gets initialized with the part of the
+ // navigable end.
+ val facetPart = facetEnd.role as Property
+ val receptaclePart = receptacleEnd.role as Property
+
+ val assocProp1 = association.getMemberEnd(null, facetPart.type)
+
+ // Property assocProp2 = facetPart.getOtherEnd()
+ if ((assocProp1 != null) && assocProp1.isNavigable) {
+ val setter = '''«receptaclePart.name».«assocProp1.name»'''
+ val getter = '''&«facetPart.name»'''
+ return '''«setter» = «getter»;\n'''
+ }
+ } else {
+
+ // not handled (a connector not targeting a port must be typed)
+ throw new TransformationException(
+ "Connector <" + connector.name +
+ "> does not use ports, but it is not typed (only connectors between ports should not be typed)")
+ }
+ return ""
+ }
+
+ /**
+ * Handle ports with multiplicity > 1. The idea is that we could have
+ * multiple connections targeting a receptacle. The first connection would
+ * start with index 0. Implementations can make no assumption which
+ * connection is associated with a certain index. [want to avoid associative
+ * array in runtime].
+ *
+ * @param port
+ * @param end
+ * @return
+ */
+ static def getIndexName(Map<ConnectorEnd, Integer> indexMap, Port port, ConnectorEnd end) {
+ if ((port.getUpper() > 1) || (port.getUpper() == -1)) {
+
+ // index depends of combination of property and port, use connector
+ // end as key
+ var indexValue = indexMap.get(end)
+ if (indexValue == null) {
+ indexValue = 0
+ indexMap.put(end, indexValue)
+ }
+ var index = indexValue + ", "
+ indexValue++
+ indexMap.put(end, indexValue)
+ return index
+ }
+ return ""
+ }
+
+ /**
+ * Return true, if the bootloader is responsible for the instantiation of a
+ * part. [Structual difference: bootloader can decide instance based - and
+ * instances are deployed]
+ *
+ * If a part is a component type or an abstract implementation, it cannot be
+ * instantiated. Thus, a heir has to be selected in the deployment plan.
+ * Since the selection might be different for different instances of the
+ * composite, the instantiation is not done by the component itself, but by
+ * the bootloader. The bootloader also has to instantiate, if different
+ * allocation variants are required. (this is for instance the case for
+ * distribution connectors and for the system itself)
+ *
+ * If possible, we want to let composites instantiate sub-components, since
+ * this eases the transition to systems which support reconfiguration.
+ *
+ * [TODO: optimization: analyze whether the deployment plan selects a single
+ * implementation. If yes, let the composite instantiate]
+ *
+ * [TODO: elements within an assembly need to be instantiated by composite -
+ * if System - by bootloader. assembly also need to be instantiated by
+ * composite!!
+ *
+ * @param implementation
+ * @return
+ */
+ static def instantiateViaBootloader(Class implementation) {
+ return implementation.isAbstract() || Utils.isAssembly(implementation)
+ }
+
+ /**
+ * Return whether a part needs to be instantiated by the bootloader instead
+ * by the composite in which it is contained. The criteria is based on the
+ * question whether the containing composite is flattened, as it is the case
+ * for the system component and the interaction components for distribution.
+ *
+ * @param part
+ * @return
+ */
+ static def instantiateViaBootloader(StructuralFeature part) {
+ if (part != null) {
+ if (part.type instanceof Class) {
+ val implementation = part.type as Class
+
+ // TODO: wrong criteria? (must be shared or not?)
+ return instantiateViaBootloader(implementation)
+ } else {
+
+ // not a class, assume primitive type instantiated by composite
+ return false
+ }
+ }
+ return false
+ }
+
+ /**
+ * Transform parts if necessary.
+ *
+ * If the bootloader is responsible for creating an instance (if it is a
+ * abstract type), mark the associated part as a C++ pointer. We do not want
+ * to change the aggregation kind, since it remains logically a composition,
+ * it is merely an implementation issue that it must be a pointer for C++ if
+ * the concrete type is not yet known.
+ *
+ * @param compositeImplementation
+ * a (composite) component
+ */
+ override transformParts(Class compositeImplementation) {
+
+ // TODO
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/xtend-gen/org/eclipse/papyrus/qompass/designer/java/xtend/.JavaToOO.xtendbin b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/xtend-gen/org/eclipse/papyrus/qompass/designer/java/xtend/.JavaToOO.xtendbin
new file mode 100644
index 00000000000..0bd8c7af5b6
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/xtend-gen/org/eclipse/papyrus/qompass/designer/java/xtend/.JavaToOO.xtendbin
Binary files differ
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/xtend-gen/org/eclipse/papyrus/qompass/designer/java/xtend/.gitignore b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/xtend-gen/org/eclipse/papyrus/qompass/designer/java/xtend/.gitignore
new file mode 100644
index 00000000000..d9f2cb76de8
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/xtend-gen/org/eclipse/papyrus/qompass/designer/java/xtend/.gitignore
@@ -0,0 +1,2 @@
+/JavaCompToOO.java
+/.JavaToOO.java._trace
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/xtend-gen/org/eclipse/papyrus/qompass/designer/java/xtend/JavaToOO.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/xtend-gen/org/eclipse/papyrus/qompass/designer/java/xtend/JavaToOO.java
new file mode 100644
index 00000000000..62f063cbff7
--- /dev/null
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.java/xtend-gen/org/eclipse/papyrus/qompass/designer/java/xtend/JavaToOO.java
@@ -0,0 +1,761 @@
+/**
+ * Copyright (c) 2015 CEA LIST.
+ *
+ *
+ * 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:
+ * Ansgar Radermacher ansgar.radermacher@cea.fr
+ */
+package org.eclipse.papyrus.qompass.designer.java.xtend;
+
+import com.google.common.base.Objects;
+import java.util.HashMap;
+import java.util.Map;
+import org.eclipse.emf.common.util.EList;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.papyrus.qompass.designer.core.PortInfo;
+import org.eclipse.papyrus.qompass.designer.core.PortUtils;
+import org.eclipse.papyrus.qompass.designer.core.Utils;
+import org.eclipse.papyrus.qompass.designer.core.extensions.IOOTrafo;
+import org.eclipse.papyrus.qompass.designer.core.transformations.CompTypeTrafos;
+import org.eclipse.papyrus.qompass.designer.core.transformations.LazyCopier;
+import org.eclipse.papyrus.qompass.designer.core.transformations.PrefixConstants;
+import org.eclipse.papyrus.qompass.designer.core.transformations.TransformationException;
+import org.eclipse.papyrus.qompass.designer.java.Messages;
+import org.eclipse.papyrus.uml.tools.utils.ConnectorUtil;
+import org.eclipse.uml2.uml.AggregationKind;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.ConnectableElement;
+import org.eclipse.uml2.uml.Connector;
+import org.eclipse.uml2.uml.ConnectorEnd;
+import org.eclipse.uml2.uml.Interface;
+import org.eclipse.uml2.uml.InterfaceRealization;
+import org.eclipse.uml2.uml.NamedElement;
+import org.eclipse.uml2.uml.OpaqueBehavior;
+import org.eclipse.uml2.uml.Operation;
+import org.eclipse.uml2.uml.Parameter;
+import org.eclipse.uml2.uml.Port;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.StructuralFeature;
+import org.eclipse.uml2.uml.Type;
+import org.eclipse.uml2.uml.UMLPackage;
+import org.eclipse.xtend2.lib.StringConcatenation;
+
+/**
+ * This class realizes the transformation from component-based to object-oriented
+ * models. It includes the replacement of ports and connectors. Ports are
+ * replaced with attributes and access operations, connectors within a composite
+ * by an operation that creates the initial setup.
+ *
+ * 1. add an operation that allows to retrieve the reference to an interface provided
+ * by a port. This operation has a mapping specific name, e.g. get_<port_name>
+ * 2. add an operation that allows to connect a specific port.
+ * the connect_q operation (*including a
+ * storage attribute*) for a port with a required interface
+ * 3. add an implementation for the getcnx_q operation for a port
+ * with a required interface (the operation itself has been added before)
+ *
+ * TODO: C++ specific, support different "component to OO" mappings
+ *
+ * Problems: need to align bootloader creation with this mapping, since
+ * the bootloader may be responsible for instantiation
+ *
+ * Caveat: Assure that the folder derivedInterfaces already exists in a model.
+ * Otherwise the call to getProvided/getRequired interface might trigger its
+ * creation resulting in the corruption of list iterators (ConcurrentAccess
+ * exception)
+ */
+@SuppressWarnings("all")
+public class JavaToOO implements IOOTrafo {
+ public final static String CREATE_CONNECTIONS = "createConnections";
+
+ protected LazyCopier copier;
+
+ protected org.eclipse.uml2.uml.Class bootloader;
+
+ @Override
+ public void init(final LazyCopier copier, final org.eclipse.uml2.uml.Class bootloader) {
+ this.copier = copier;
+ this.bootloader = bootloader;
+ }
+
+ public final static String retParamName = "ret";
+
+ public final static String progLang = "JAVA";
+
+ @Override
+ public void addPortOperations(final org.eclipse.uml2.uml.Class implementation) {
+ this.addGetPortOperation(implementation);
+ JavaToOO.addConnectPortOperation(implementation);
+ }
+
+ /**
+ * Add the get_p operation for each port with a provided interface. It also
+ * adds a suitable implementation that evaluates delegation connectors from
+ * the port to a property within the composite. The delegation target could
+ * either be a normal class (no port) or an inner component.
+ *
+ * @param implementation
+ */
+ public void addGetPortOperation(final org.eclipse.uml2.uml.Class implementation) {
+ EList<Port> _allPorts2 = PortUtils.getAllPorts2(implementation);
+ EList<PortInfo> _flattenExtendedPorts = PortUtils.flattenExtendedPorts(_allPorts2);
+ for (final PortInfo portInfo : _flattenExtendedPorts) {
+ {
+ final Interface providedIntf = portInfo.getProvided();
+ boolean _notEquals = (!Objects.equal(providedIntf, null));
+ if (_notEquals) {
+ String _name = portInfo.getName();
+ final String opName = (PrefixConstants.getP_Prefix + _name);
+ Operation op = implementation.getOwnedOperation(opName, null, null);
+ boolean _notEquals_1 = (!Objects.equal(op, null));
+ if (_notEquals_1) {
+ Type _type = op.getType();
+ boolean _notEquals_2 = (!Objects.equal(_type, providedIntf));
+ if (_notEquals_2) {
+ op.createOwnedParameter(JavaToOO.retParamName, providedIntf);
+ }
+ } else {
+ Operation _createOwnedOperation = implementation.createOwnedOperation(opName, null, null, providedIntf);
+ op = _createOwnedOperation;
+ EList<Parameter> _ownedParameters = op.getOwnedParameters();
+ final Parameter retParam = _ownedParameters.get(0);
+ retParam.setName(JavaToOO.retParamName);
+ EClass _opaqueBehavior = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior = implementation.createOwnedBehavior(opName, _opaqueBehavior);
+ final OpaqueBehavior behavior = ((OpaqueBehavior) _createOwnedBehavior);
+ EList<Behavior> _methods = op.getMethods();
+ _methods.add(behavior);
+ Port _modelPort = portInfo.getModelPort();
+ final ConnectorEnd ce = ConnectorUtil.getDelegation(implementation, _modelPort);
+ String body = null;
+ boolean _notEquals_3 = (!Objects.equal(ce, null));
+ if (_notEquals_3) {
+ final Property part = ce.getPartWithPort();
+ final ConnectableElement role = ce.getRole();
+ body = "return ";
+ if ((role instanceof Port)) {
+ String _body = body;
+ StringConcatenation _builder = new StringConcatenation();
+ String _name_1 = part.getName();
+ _builder.append(_name_1, "");
+ _builder.append(".");
+ _builder.append(PrefixConstants.getP_Prefix, "");
+ String _name_2 = ((Port)role).getName();
+ _builder.append(_name_2, "");
+ _builder.append("();");
+ body = (_body + _builder);
+ } else {
+ String _body_1 = body;
+ String _name_3 = role.getName();
+ body = (_body_1 + _name_3);
+ }
+ } else {
+ InterfaceRealization _interfaceRealization = implementation.getInterfaceRealization(null, providedIntf);
+ boolean implementsIntf = (!Objects.equal(_interfaceRealization, null));
+ if ((!implementsIntf)) {
+ final Interface providedIntfInCopy = this.copier.<Interface>getCopy(providedIntf);
+ InterfaceRealization _interfaceRealization_1 = implementation.getInterfaceRealization(null, providedIntfInCopy);
+ boolean _notEquals_4 = (!Objects.equal(_interfaceRealization_1, null));
+ implementsIntf = _notEquals_4;
+ }
+ if (implementsIntf) {
+ body = "return this;";
+ } else {
+ String _name_4 = providedIntf.getName();
+ Port _port = portInfo.getPort();
+ String _name_5 = _port.getName();
+ String _name_6 = implementation.getName();
+ String _format = String.format(Messages.CompImplTrafos_IntfNotImplemented, _name_4, _name_5, _name_6);
+ throw new RuntimeException(_format);
+ }
+ }
+ EList<String> _languages = behavior.getLanguages();
+ _languages.add(JavaToOO.progLang);
+ EList<String> _bodies = behavior.getBodies();
+ _bodies.add(body);
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Add a connect_<portName> operation for ports with a required interface.
+ * Whereas operation and a behavior is added for each owned port, a behavior
+ * (method) is needed for ports inherited from a component type (the
+ * behavior is implementation specific, as it needs to take delegation to
+ * parts into account)
+ *
+ * @param implementation
+ */
+ public static void addConnectPortOperation(final org.eclipse.uml2.uml.Class implementation) {
+ EList<Port> _allPorts2 = PortUtils.getAllPorts2(implementation);
+ EList<PortInfo> _flattenExtendedPorts = PortUtils.flattenExtendedPorts(_allPorts2);
+ for (final PortInfo portInfo : _flattenExtendedPorts) {
+ {
+ final Interface requiredIntf = portInfo.getRequired();
+ boolean _notEquals = (!Objects.equal(requiredIntf, null));
+ if (_notEquals) {
+ String _name = portInfo.getName();
+ final String opName = (PrefixConstants.connectQ_Prefix + _name);
+ Operation _ownedOperation = implementation.getOwnedOperation(opName, null, null);
+ boolean _notEquals_1 = (!Objects.equal(_ownedOperation, null));
+ if (_notEquals_1) {
+ } else {
+ Operation op = implementation.createOwnedOperation(opName, null, null);
+ boolean _or = false;
+ int _upper = portInfo.getUpper();
+ boolean _greaterThan = (_upper > 1);
+ if (_greaterThan) {
+ _or = true;
+ } else {
+ int _upper_1 = portInfo.getUpper();
+ boolean _equals = (_upper_1 == (-1));
+ _or = _equals;
+ }
+ final boolean multiPort = _or;
+ if (multiPort) {
+ org.eclipse.uml2.uml.Package _top = Utils.getTop(implementation);
+ final NamedElement eLong = Utils.getQualifiedElement(_top,
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE);
+ if ((eLong instanceof Type)) {
+ op.createOwnedParameter("index", ((Type) eLong));
+ } else {
+ String _format = String.format(Messages.CompImplTrafos_CannotFindType,
+ CompTypeTrafos.INDEX_TYPE_FOR_MULTI_RECEPTACLE);
+ throw new RuntimeException(_format);
+ }
+ }
+ final Parameter refParam = op.createOwnedParameter("ref", requiredIntf);
+ EClass _opaqueBehavior = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior = implementation.createOwnedBehavior(opName, _opaqueBehavior);
+ final OpaqueBehavior behavior = ((OpaqueBehavior) _createOwnedBehavior);
+ EList<Behavior> _methods = op.getMethods();
+ _methods.add(behavior);
+ Port _modelPort = portInfo.getModelPort();
+ final ConnectorEnd ce = ConnectorUtil.getDelegation(implementation, _modelPort);
+ String body = null;
+ boolean _notEquals_2 = (!Objects.equal(ce, null));
+ if (_notEquals_2) {
+ final Property part = ce.getPartWithPort();
+ String _name_1 = part.getName();
+ body = _name_1;
+ final ConnectableElement role = ce.getRole();
+ if ((role instanceof Port)) {
+ String _name_2 = ((Port)role).getName();
+ final String targetOpName = (PrefixConstants.connectQ_Prefix + _name_2);
+ StringConcatenation _builder = new StringConcatenation();
+ String _name_3 = part.getName();
+ _builder.append(_name_3, "");
+ _builder.append(".");
+ _builder.append(targetOpName, "");
+ body = _builder.toString();
+ boolean _or_1 = false;
+ int _upper_2 = portInfo.getUpper();
+ boolean _greaterThan_1 = (_upper_2 > 1);
+ if (_greaterThan_1) {
+ _or_1 = true;
+ } else {
+ int _upper_3 = portInfo.getUpper();
+ boolean _equals_1 = (_upper_3 == (-1));
+ _or_1 = _equals_1;
+ }
+ if (_or_1) {
+ String _body = body;
+ body = (_body + "(index, ref);");
+ } else {
+ String _body_1 = body;
+ body = (_body_1 + "(ref);");
+ }
+ } else {
+ String _body_2 = body;
+ StringConcatenation _builder_1 = new StringConcatenation();
+ String _name_4 = part.getName();
+ _builder_1.append(_name_4, "");
+ _builder_1.append(";");
+ body = (_body_2 + _builder_1);
+ }
+ } else {
+ String _name_5 = portInfo.getName();
+ final String attributeName = (PrefixConstants.attributePrefix + _name_5);
+ boolean _hasNonPortOwnedAttribute = Utils.hasNonPortOwnedAttribute(implementation, attributeName);
+ boolean _not = (!_hasNonPortOwnedAttribute);
+ if (_not) {
+ final Property attr = implementation.createOwnedAttribute(attributeName, requiredIntf);
+ Port _port = portInfo.getPort();
+ LazyCopier.copyMultElemModifiers(_port, attr);
+ attr.setAggregation(AggregationKind.SHARED_LITERAL);
+ }
+ body = attributeName;
+ if (multiPort) {
+ String _body_3 = body;
+ body = (_body_3 + "[index]");
+ }
+ String _body_4 = body;
+ body = (_body_4 + " = ref");
+ }
+ EList<String> _languages = behavior.getLanguages();
+ _languages.add(JavaToOO.progLang);
+ EList<String> _bodies = behavior.getBodies();
+ _bodies.add(body);
+ boolean _and = false;
+ int _length = PrefixConstants.getConnQ_Prefix.length();
+ boolean _greaterThan_2 = (_length > 0);
+ if (!_greaterThan_2) {
+ _and = false;
+ } else {
+ boolean _notEquals_3 = (!Objects.equal(ce, null));
+ _and = _notEquals_3;
+ }
+ if (_and) {
+ String _name_6 = portInfo.getName();
+ final String getConnOpName = (PrefixConstants.getConnQ_Prefix + _name_6);
+ Operation getConnOp = implementation.getOwnedOperation(getConnOpName, null, null);
+ boolean _equals_2 = Objects.equal(getConnOp, null);
+ if (_equals_2) {
+ Operation _createOwnedOperation = implementation.createOwnedOperation(getConnOpName, null, null, requiredIntf);
+ getConnOp = _createOwnedOperation;
+ EList<Parameter> _ownedParameters = op.getOwnedParameters();
+ final Parameter retParam = _ownedParameters.get(0);
+ retParam.setName(JavaToOO.retParamName);
+ }
+ EClass _opaqueBehavior_1 = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior_1 = implementation.createOwnedBehavior(getConnOpName, _opaqueBehavior_1);
+ final OpaqueBehavior getConnBehavior = ((OpaqueBehavior) _createOwnedBehavior_1);
+ EList<Behavior> _methods_1 = getConnOp.getMethods();
+ _methods_1.add(getConnBehavior);
+ String _name_7 = portInfo.getName();
+ final String name = (PrefixConstants.attributePrefix + _name_7);
+ StringConcatenation _builder_2 = new StringConcatenation();
+ _builder_2.append("return ");
+ _builder_2.append(name, "");
+ _builder_2.append(";");
+ body = _builder_2.toString();
+ EList<String> _languages_1 = behavior.getLanguages();
+ _languages_1.add(JavaToOO.progLang);
+ EList<String> _bodies_1 = behavior.getBodies();
+ _bodies_1.add(body);
+ }
+ }
+ }
+ }
+ }
+ }
+
+ /**
+ * Add an operation "createConnections" that implements the connections
+ * between composite parts. It only takes the assembly connections into
+ * account, since delegation connectors are handled by the get_ and connect_
+ * port operations above.
+ *
+ * @param implementation
+ */
+ @Override
+ public void addConnectionOperation(final org.eclipse.uml2.uml.Class compositeImplementation) throws TransformationException {
+ String createConnBody = "";
+ final Map<ConnectorEnd, Integer> indexMap = new HashMap<ConnectorEnd, Integer>();
+ EList<Connector> _ownedConnectors = compositeImplementation.getOwnedConnectors();
+ for (final Connector connector : _ownedConnectors) {
+ boolean _isAssembly = ConnectorUtil.isAssembly(connector);
+ if (_isAssembly) {
+ EList<ConnectorEnd> _ends = connector.getEnds();
+ int _size = _ends.size();
+ boolean _notEquals = (_size != 2);
+ if (_notEquals) {
+ StringConcatenation _builder = new StringConcatenation();
+ _builder.append("Connector <");
+ String _name = connector.getName();
+ _builder.append(_name, "");
+ _builder.append("> does not have two ends. This is currently not supported");
+ throw new TransformationException(_builder.toString());
+ }
+ EList<ConnectorEnd> _ends_1 = connector.getEnds();
+ final ConnectorEnd end1 = _ends_1.get(0);
+ EList<ConnectorEnd> _ends_2 = connector.getEnds();
+ final ConnectorEnd end2 = _ends_2.get(1);
+ StringConcatenation _builder_1 = new StringConcatenation();
+ _builder_1.append("// realization of connector <");
+ String _name_1 = connector.getName();
+ _builder_1.append(_name_1, "");
+ _builder_1.append(">\\n");
+ String cmd = _builder_1.toString();
+ boolean _and = false;
+ ConnectableElement _role = end1.getRole();
+ if (!(_role instanceof Port)) {
+ _and = false;
+ } else {
+ ConnectableElement _role_1 = end1.getRole();
+ boolean _isExtendedPort = PortUtils.isExtendedPort(((Port) _role_1));
+ _and = _isExtendedPort;
+ }
+ if (_and) {
+ ConnectableElement _role_2 = end1.getRole();
+ final Port port = ((Port) _role_2);
+ final EList<PortInfo> subPorts = PortUtils.flattenExtendedPort(port);
+ for (final PortInfo subPort : subPorts) {
+ {
+ String _cmd = cmd;
+ StringConcatenation _builder_2 = new StringConcatenation();
+ _builder_2.append(" ");
+ _builder_2.append("// realization of connection for sub-port ");
+ Port _port = subPort.getPort();
+ String _name_2 = _port.getName();
+ _builder_2.append(_name_2, " ");
+ _builder_2.append("\\n");
+ cmd = (_cmd + _builder_2);
+ String _cmd_1 = cmd;
+ Port _port_1 = subPort.getPort();
+ String _connectPorts = JavaToOO.connectPorts(indexMap, connector, end1, end2, _port_1);
+ cmd = (_cmd_1 + _connectPorts);
+ String _cmd_2 = cmd;
+ Port _port_2 = subPort.getPort();
+ String _connectPorts_1 = JavaToOO.connectPorts(indexMap, connector, end2, end1, _port_2);
+ cmd = (_cmd_2 + _connectPorts_1);
+ }
+ }
+ } else {
+ String _cmd = cmd;
+ String _connectPorts = JavaToOO.connectPorts(indexMap, connector, end1, end2, null);
+ cmd = (_cmd + _connectPorts);
+ String _cmd_1 = cmd;
+ String _connectPorts_1 = JavaToOO.connectPorts(indexMap, connector, end2, end1, null);
+ cmd = (_cmd_1 + _connectPorts_1);
+ }
+ String _createConnBody = createConnBody;
+ createConnBody = (_createConnBody + (cmd + "\n"));
+ }
+ }
+ int _length = createConnBody.length();
+ boolean _greaterThan = (_length > 0);
+ if (_greaterThan) {
+ final Operation operation = compositeImplementation.createOwnedOperation(JavaToOO.CREATE_CONNECTIONS, null, null);
+ String _name_2 = operation.getName();
+ String _plus = ("b:" + _name_2);
+ EClass _opaqueBehavior = UMLPackage.eINSTANCE.getOpaqueBehavior();
+ Behavior _createOwnedBehavior = compositeImplementation.createOwnedBehavior(_plus, _opaqueBehavior);
+ final OpaqueBehavior behavior = ((OpaqueBehavior) _createOwnedBehavior);
+ EList<String> _languages = behavior.getLanguages();
+ _languages.add(JavaToOO.progLang);
+ EList<String> _bodies = behavior.getBodies();
+ _bodies.add(createConnBody);
+ behavior.setSpecification(operation);
+ }
+ }
+
+ /**
+ * Create the body C++ code code that creates a connection between the two ends
+ * of a connector. This function checks whether the first end really is a receptacle
+ * and the second really is a facet.
+ * TODO: cleaner rewrite in xtend
+ *
+ * @param indexMap
+ * a map of indices that are used in case of multiplex
+ * receptacles
+ * @param connector
+ * a connector
+ * @param receptacleEnd
+ * an end of the connector that may point to a receptacle port
+ * @param facetEnd
+ * an end of the connector that may point to a facet port
+ * @param subPort
+ * a sub-port in case of extended ports
+ * @return
+ * @throws TransformationException
+ */
+ public static String connectPorts(final Map<ConnectorEnd, Integer> indexMap, final Connector connector, final ConnectorEnd receptacleEnd, final ConnectorEnd facetEnd, final Port subPort) throws TransformationException {
+ final Association association = connector.getType();
+ boolean _and = false;
+ ConnectableElement _role = receptacleEnd.getRole();
+ if (!(_role instanceof Port)) {
+ _and = false;
+ } else {
+ ConnectableElement _role_1 = facetEnd.getRole();
+ _and = (_role_1 instanceof Port);
+ }
+ if (_and) {
+ ConnectableElement _role_2 = facetEnd.getRole();
+ final Port facetPort = ((Port) _role_2);
+ ConnectableElement _role_3 = receptacleEnd.getRole();
+ final Port receptaclePort = ((Port) _role_3);
+ final PortInfo facetPI = PortInfo.fromSubPort(facetPort, subPort);
+ final PortInfo receptaclePI = PortInfo.fromSubPort(receptaclePort, subPort);
+ boolean _and_1 = false;
+ Interface _provided = facetPI.getProvided();
+ boolean _notEquals = (!Objects.equal(_provided, null));
+ if (!_notEquals) {
+ _and_1 = false;
+ } else {
+ Interface _required = receptaclePI.getRequired();
+ boolean _notEquals_1 = (!Objects.equal(_required, null));
+ _and_1 = _notEquals_1;
+ }
+ if (_and_1) {
+ final Property facetPart = facetEnd.getPartWithPort();
+ final Property receptaclePart = receptacleEnd.getPartWithPort();
+ String subPortName = "";
+ boolean _notEquals_2 = (!Objects.equal(subPort, null));
+ if (_notEquals_2) {
+ String _subPortName = subPortName;
+ String _name = subPort.getName();
+ String _plus = ("_" + _name);
+ subPortName = (_subPortName + _plus);
+ }
+ final String indexName = JavaToOO.getIndexName(indexMap, receptaclePort, receptacleEnd);
+ StringConcatenation _builder = new StringConcatenation();
+ String _name_1 = receptaclePart.getName();
+ _builder.append(_name_1, "");
+ _builder.append(".connect_");
+ String _name_2 = receptaclePort.getName();
+ _builder.append(_name_2, "");
+ _builder.append(" ");
+ _builder.append(subPortName, "");
+ _builder.append(";");
+ final String setter = _builder.toString();
+ StringConcatenation _builder_1 = new StringConcatenation();
+ String _name_3 = facetPart.getName();
+ _builder_1.append(_name_3, "");
+ _builder_1.append(".get_");
+ String _name_4 = facetPort.getName();
+ _builder_1.append(_name_4, "");
+ _builder_1.append(" ");
+ _builder_1.append(subPortName, "");
+ _builder_1.append("()");
+ final String getter = _builder_1.toString();
+ StringConcatenation _builder_2 = new StringConcatenation();
+ _builder_2.append(setter, "");
+ _builder_2.append("(");
+ _builder_2.append(indexName, "");
+ _builder_2.append(getter, "");
+ _builder_2.append(");\\n");
+ return _builder_2.toString();
+ }
+ } else {
+ ConnectableElement _role_4 = receptacleEnd.getRole();
+ if ((_role_4 instanceof Port)) {
+ ConnectableElement _role_5 = receptacleEnd.getRole();
+ final Port receptaclePort_1 = ((Port) _role_5);
+ Interface _required_1 = PortUtils.getRequired(receptaclePort_1);
+ boolean _notEquals_3 = (!Objects.equal(_required_1, null));
+ if (_notEquals_3) {
+ ConnectableElement _role_6 = facetEnd.getRole();
+ final Property facetPart_1 = ((Property) _role_6);
+ final Property receptaclePart_1 = facetEnd.getPartWithPort();
+ final String indexName_1 = JavaToOO.getIndexName(indexMap, receptaclePort_1, receptacleEnd);
+ StringConcatenation _builder_3 = new StringConcatenation();
+ String _name_5 = receptaclePart_1.getName();
+ _builder_3.append(_name_5, "");
+ _builder_3.append(".connect_");
+ String _name_6 = receptaclePort_1.getName();
+ _builder_3.append(_name_6, "");
+ final String setter_1 = _builder_3.toString();
+ StringConcatenation _builder_4 = new StringConcatenation();
+ _builder_4.append("&");
+ String _name_7 = facetPart_1.getName();
+ _builder_4.append(_name_7, "");
+ final String getter_1 = _builder_4.toString();
+ StringConcatenation _builder_5 = new StringConcatenation();
+ _builder_5.append(setter_1, "");
+ _builder_5.append("(");
+ _builder_5.append(indexName_1, "");
+ _builder_5.append(getter_1, "");
+ _builder_5.append(");\\n");
+ return _builder_5.toString();
+ }
+ } else {
+ ConnectableElement _role_7 = facetEnd.getRole();
+ if ((_role_7 instanceof Port)) {
+ ConnectableElement _role_8 = facetEnd.getRole();
+ final Port facetPort_1 = ((Port) _role_8);
+ Interface _provided_1 = PortUtils.getProvided(facetPort_1);
+ boolean _notEquals_4 = (!Objects.equal(_provided_1, null));
+ if (_notEquals_4) {
+ final Property facetPart_2 = facetEnd.getPartWithPort();
+ ConnectableElement _role_9 = facetEnd.getRole();
+ final Property receptaclePart_2 = ((Property) _role_9);
+ final String setter_2 = receptaclePart_2.getName();
+ StringConcatenation _builder_6 = new StringConcatenation();
+ String _name_8 = facetPart_2.getName();
+ _builder_6.append(_name_8, "");
+ _builder_6.append(".get_");
+ String _name_9 = facetPort_1.getName();
+ _builder_6.append(_name_9, "");
+ _builder_6.append("();");
+ final String getter_2 = _builder_6.toString();
+ StringConcatenation _builder_7 = new StringConcatenation();
+ _builder_7.append(setter_2, "");
+ _builder_7.append(" = ");
+ _builder_7.append(getter_2, "");
+ _builder_7.append(";\\n");
+ return _builder_7.toString();
+ }
+ } else {
+ boolean _notEquals_5 = (!Objects.equal(association, null));
+ if (_notEquals_5) {
+ ConnectableElement _role_10 = facetEnd.getRole();
+ final Property facetPart_3 = ((Property) _role_10);
+ ConnectableElement _role_11 = receptacleEnd.getRole();
+ final Property receptaclePart_3 = ((Property) _role_11);
+ Type _type = facetPart_3.getType();
+ final Property assocProp1 = association.getMemberEnd(null, _type);
+ boolean _and_2 = false;
+ boolean _notEquals_6 = (!Objects.equal(assocProp1, null));
+ if (!_notEquals_6) {
+ _and_2 = false;
+ } else {
+ boolean _isNavigable = assocProp1.isNavigable();
+ _and_2 = _isNavigable;
+ }
+ if (_and_2) {
+ StringConcatenation _builder_8 = new StringConcatenation();
+ String _name_10 = receptaclePart_3.getName();
+ _builder_8.append(_name_10, "");
+ _builder_8.append(".");
+ String _name_11 = assocProp1.getName();
+ _builder_8.append(_name_11, "");
+ final String setter_3 = _builder_8.toString();
+ StringConcatenation _builder_9 = new StringConcatenation();
+ _builder_9.append("&");
+ String _name_12 = facetPart_3.getName();
+ _builder_9.append(_name_12, "");
+ final String getter_3 = _builder_9.toString();
+ StringConcatenation _builder_10 = new StringConcatenation();
+ _builder_10.append(setter_3, "");
+ _builder_10.append(" = ");
+ _builder_10.append(getter_3, "");
+ _builder_10.append(";\\n");
+ return _builder_10.toString();
+ }
+ } else {
+ String _name_13 = connector.getName();
+ String _plus_1 = ("Connector <" + _name_13);
+ String _plus_2 = (_plus_1 +
+ "> does not use ports, but it is not typed (only connectors between ports should not be typed)");
+ throw new TransformationException(_plus_2);
+ }
+ }
+ }
+ }
+ return "";
+ }
+
+ /**
+ * Handle ports with multiplicity > 1. The idea is that we could have
+ * multiple connections targeting a receptacle. The first connection would
+ * start with index 0. Implementations can make no assumption which
+ * connection is associated with a certain index. [want to avoid associative
+ * array in runtime].
+ *
+ * @param port
+ * @param end
+ * @return
+ */
+ public static String getIndexName(final Map<ConnectorEnd, Integer> indexMap, final Port port, final ConnectorEnd end) {
+ boolean _or = false;
+ int _upper = port.getUpper();
+ boolean _greaterThan = (_upper > 1);
+ if (_greaterThan) {
+ _or = true;
+ } else {
+ int _upper_1 = port.getUpper();
+ boolean _equals = (_upper_1 == (-1));
+ _or = _equals;
+ }
+ if (_or) {
+ Integer indexValue = indexMap.get(end);
+ boolean _equals_1 = Objects.equal(indexValue, null);
+ if (_equals_1) {
+ indexValue = Integer.valueOf(0);
+ indexMap.put(end, indexValue);
+ }
+ String index = (indexValue + ", ");
+ indexValue++;
+ indexMap.put(end, indexValue);
+ return index;
+ }
+ return "";
+ }
+
+ /**
+ * Return true, if the bootloader is responsible for the instantiation of a
+ * part. [Structual difference: bootloader can decide instance based - and
+ * instances are deployed]
+ *
+ * If a part is a component type or an abstract implementation, it cannot be
+ * instantiated. Thus, a heir has to be selected in the deployment plan.
+ * Since the selection might be different for different instances of the
+ * composite, the instantiation is not done by the component itself, but by
+ * the bootloader. The bootloader also has to instantiate, if different
+ * allocation variants are required. (this is for instance the case for
+ * distribution connectors and for the system itself)
+ *
+ * If possible, we want to let composites instantiate sub-components, since
+ * this eases the transition to systems which support reconfiguration.
+ *
+ * [TODO: optimization: analyze whether the deployment plan selects a single
+ * implementation. If yes, let the composite instantiate]
+ *
+ * [TODO: elements within an assembly need to be instantiated by composite -
+ * if System - by bootloader. assembly also need to be instantiated by
+ * composite!!
+ *
+ * @param implementation
+ * @return
+ */
+ public static boolean instantiateViaBootloader(final org.eclipse.uml2.uml.Class implementation) {
+ boolean _or = false;
+ boolean _isAbstract = implementation.isAbstract();
+ if (_isAbstract) {
+ _or = true;
+ } else {
+ boolean _isAssembly = Utils.isAssembly(implementation);
+ _or = _isAssembly;
+ }
+ return _or;
+ }
+
+ /**
+ * Return whether a part needs to be instantiated by the bootloader instead
+ * by the composite in which it is contained. The criteria is based on the
+ * question whether the containing composite is flattened, as it is the case
+ * for the system component and the interaction components for distribution.
+ *
+ * @param part
+ * @return
+ */
+ public static boolean instantiateViaBootloader(final StructuralFeature part) {
+ boolean _notEquals = (!Objects.equal(part, null));
+ if (_notEquals) {
+ Type _type = part.getType();
+ if ((_type instanceof org.eclipse.uml2.uml.Class)) {
+ Type _type_1 = part.getType();
+ final org.eclipse.uml2.uml.Class implementation = ((org.eclipse.uml2.uml.Class) _type_1);
+ return JavaToOO.instantiateViaBootloader(implementation);
+ } else {
+ return false;
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Transform parts if necessary.
+ *
+ * If the bootloader is responsible for creating an instance (if it is a
+ * abstract type), mark the associated part as a C++ pointer. We do not want
+ * to change the aggregation kind, since it remains logically a composition,
+ * it is merely an implementation issue that it must be a pointer for C++ if
+ * the concrete type is not yet known.
+ *
+ * @param compositeImplementation
+ * a (composite) component
+ */
+ @Override
+ public void transformParts(final org.eclipse.uml2.uml.Class compositeImplementation) {
+ }
+}
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.ui/.classpath b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.ui/.classpath
index ad32c83a788..098194ca4b7 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.ui/.classpath
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.ui/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.ui/.settings/org.eclipse.jdt.core.prefs b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.ui/.settings/org.eclipse.jdt.core.prefs
index c537b63063c..f42de363afa 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.ui/.settings/org.eclipse.jdt.core.prefs
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.ui/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,7 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.ui/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.ui/META-INF/MANIFEST.MF
index 67946f9bedd..d6927063a68 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.ui/META-INF/MANIFEST.MF
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.ui/META-INF/MANIFEST.MF
@@ -44,5 +44,5 @@ Bundle-Activator: org.eclipse.papyrus.qompass.designer.ui.Activator
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.papyrus.qompass.designer.ui;singleton
:=true
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ExecutorIsNotUsedAsPartName.java b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ExecutorIsNotUsedAsPartName.java
index 3458983aa79..a9fe37c6179 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ExecutorIsNotUsedAsPartName.java
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.validation/src/org/eclipse/papyrus/qompass/designer/validation/constraints/ExecutorIsNotUsedAsPartName.java
@@ -18,7 +18,7 @@ import org.eclipse.core.runtime.IStatus;
import org.eclipse.emf.validation.AbstractModelConstraint;
import org.eclipse.emf.validation.IValidationContext;
import org.eclipse.papyrus.FCM.RuleApplication;
-import org.eclipse.papyrus.qompass.designer.core.transformations.ContainerTrafo;
+import org.eclipse.papyrus.qompass.designer.core.transformations.container.ContainerTrafo;
import org.eclipse.papyrus.uml.tools.utils.StereotypeUtil;
import org.eclipse.uml2.uml.Class;
import org.eclipse.uml2.uml.Property;
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.classpath b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.classpath
index ad32c83a788..098194ca4b7 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.classpath
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.settings/org.eclipse.jdt.core.prefs b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.settings/org.eclipse.jdt.core.prefs
index c537b63063c..f42de363afa 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.settings/org.eclipse.jdt.core.prefs
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,7 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/META-INF/MANIFEST.MF
index 08f46149b88..270332e09ad 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/META-INF/MANIFEST.MF
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.designer.vsl/META-INF/MANIFEST.MF
@@ -13,5 +13,5 @@ Bundle-Name: %pluginName
Bundle-Activator: org.eclipse.papyrus.qompass.designer.vsl.Activator
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.papyrus.qompass.designer.vsl
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.notation
index 00866a49ece..6cef3afec90 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.notation
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.notation
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:C_Cpp="http://www.eclipse.org/papyrus/C_Cpp/1" 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/4.0.0/UML">
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:C_Cpp="http://www.eclipse.org/papyrus/C_Cpp/1" 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/5.0.0/UML">
<notation:Diagram xmi:id="_7kc7YM__Ed-TP80eVS-2Rg" type="CompositeStructure" name="HelloWorldComponent" measurementUnit="Pixel">
<children xmi:type="notation:Shape" xmi:id="_8LSR4M__Ed-TP80eVS-2Rg" type="2073" fontName="" fontHeight="10" fillColor="8905185" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_8LSR4s__Ed-TP80eVS-2Rg" source="ShadowFigure">
@@ -71,11 +71,11 @@
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_6UflIFWUEeKdxoQIVxFNNg" key="QualifiedNameDepth" value="1000"/>
</eAnnotations>
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_9gHMkFWUEeKdxoQIVxFNNg" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_90BnEFWUEeKdxoQIVxFNNg" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_90COIFWUEeKdxoQIVxFNNg" key="StereotypeList" value="FCM::Port"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_90COIVWUEeKdxoQIVxFNNg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_90COIlWUEeKdxoQIVxFNNg" key="PropStereoDisplay" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_90COI1WUEeKdxoQIVxFNNg" key="StereotypePropertyLocation" value="Compartment"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kH0ToLkXEeS7TYMQS2xzng" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kH0TobkXEeS7TYMQS2xzng" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kH0TorkXEeS7TYMQS2xzng" key="PropStereoDisplay" value="FCM::Port.kind"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kH0To7kXEeS7TYMQS2xzng" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kH0TpLkXEeS7TYMQS2xzng" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_6UflIVWUEeKdxoQIVxFNNg" type="5125">
<layoutConstraint xmi:type="notation:Location" xmi:id="_6UflIlWUEeKdxoQIVxFNNg" x="25" y="3"/>
@@ -83,11 +83,17 @@
<children xmi:type="notation:DecorationNode" xmi:id="_6UflI1WUEeKdxoQIVxFNNg" visible="false" type="6029">
<layoutConstraint xmi:type="notation:Location" xmi:id="_6UflJFWUEeKdxoQIVxFNNg" x="25" y="-10"/>
</children>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_fV6D0LkXEeS7TYMQS2xzng" name="maskLabel">
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>name</stringListValue>
+ <stringListValue>type</stringListValue>
+ <stringListValue>derived</stringListValue>
+ </styles>
<element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6UeXAVWUEeKdxoQIVxFNNg" x="-10" y="27"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_6UeXAVWUEeKdxoQIVxFNNg" y="31"/>
</children>
<element xmi:type="uml:Class" href="HelloWorld.uml#_tyiqsc__Ed-TP80eVS-2Rg"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8LSR4c__Ed-TP80eVS-2Rg" x="90" y="135" width="254" height="109"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8LSR4c__Ed-TP80eVS-2Rg" x="80" y="160" width="254" height="109"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_-HlK8DecEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-HlyADecEeGPyrZ5I3hMlA" source="ShadowFigure">
@@ -101,7 +107,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_-HlyBjecEeGPyrZ5I3hMlA" type="5192"/>
<element xmi:type="uml:Comment" href="HelloWorld.uml#_-Hd2MDecEeGPyrZ5I3hMlA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-HlK8TecEeGPyrZ5I3hMlA" x="423" y="135" width="295" height="55"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-HlK8TecEeGPyrZ5I3hMlA" x="420" y="135" width="301" height="55"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_0EFQQDedEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0EF3UDedEeGPyrZ5I3hMlA" source="ShadowFigure">
@@ -115,7 +121,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_0EF3VjedEeGPyrZ5I3hMlA" type="5192"/>
<element xmi:type="uml:Comment" href="HelloWorld.uml#_0D64MDedEeGPyrZ5I3hMlA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0EFQQTedEeGPyrZ5I3hMlA" x="423" y="18" width="295"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0EFQQTedEeGPyrZ5I3hMlA" x="420" y="18" width="301"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_SypoQFT0EeKvFeqt5Q_lqw" type="2109" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_SyqPUFT0EeKvFeqt5Q_lqw" source="ShadowFigure">
@@ -129,7 +135,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_SyqPVlT0EeKvFeqt5Q_lqw" type="5192"/>
<element xmi:type="uml:Comment" href="HelloWorld.uml#_SxvpUFT0EeKvFeqt5Q_lqw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SypoQVT0EeKvFeqt5Q_lqw" x="422" y="198" width="290" height="45"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_SypoQVT0EeKvFeqt5Q_lqw" x="420" y="220" width="301" height="45"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_rjTBsFWUEeKdxoQIVxFNNg" type="2073" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_rjTowFWUEeKdxoQIVxFNNg" source="ShadowFigure">
@@ -157,11 +163,11 @@
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_wd891VWUEeKdxoQIVxFNNg" key="QualifiedNameDepth" value="1000"/>
</eAnnotations>
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__0Ah0FWUEeKdxoQIVxFNNg" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AWUksFWVEeKdxoQIVxFNNg" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AWUksVWVEeKdxoQIVxFNNg" key="StereotypeList" value="FCM::Port"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AWUkslWVEeKdxoQIVxFNNg" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AWUks1WVEeKdxoQIVxFNNg" key="PropStereoDisplay" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_AWVLwFWVEeKdxoQIVxFNNg" key="StereotypePropertyLocation" value="Compartment"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jGDUoLkXEeS7TYMQS2xzng" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jGDUobkXEeS7TYMQS2xzng" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jGDUorkXEeS7TYMQS2xzng" key="PropStereoDisplay" value="FCM::Port.kind"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jGDUo7kXEeS7TYMQS2xzng" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_jGDUpLkXEeS7TYMQS2xzng" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_wd891lWUEeKdxoQIVxFNNg" type="5125">
<layoutConstraint xmi:type="notation:Location" xmi:id="_wd9k4FWUEeKdxoQIVxFNNg" x="25" y="3"/>
@@ -169,6 +175,12 @@
<children xmi:type="notation:DecorationNode" xmi:id="_wd9k4VWUEeKdxoQIVxFNNg" visible="false" type="6029">
<layoutConstraint xmi:type="notation:Location" xmi:id="_wd9k4lWUEeKdxoQIVxFNNg" x="25" y="-10"/>
</children>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_hG-_4LkXEeS7TYMQS2xzng" name="maskLabel">
+ <stringListValue>multiplicity</stringListValue>
+ <stringListValue>name</stringListValue>
+ <stringListValue>type</stringListValue>
+ <stringListValue>derived</stringListValue>
+ </styles>
<element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_wd8WwVWUEeKdxoQIVxFNNg" x="-10" y="27"/>
</children>
@@ -184,28 +196,29 @@
<styles xmi:type="notation:FontStyle" xmi:id="_uHz6kf8nEd-hWJO6cv3VJA" fontName="" fontHeight="10"/>
<element xmi:type="uml:Generalization" href="HelloWorld.uml#_tyiqss__Ed-TP80eVS-2Rg"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uHz6kv8nEd-hWJO6cv3VJA" points="[-103, -45, 204, 90]$[-307, -135, 0, 0]"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zpY_EFWUEeKdxoQIVxFNNg" id="(0.4782608695652174,0.8571428571428571)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_YcZOULkXEeS7TYMQS2xzng" id="(0.515748031496063,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zpY_EFWUEeKdxoQIVxFNNg" id="(0.4782608695652174,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_FOfGwDeeEeGPyrZ5I3hMlA" type="4002" source="_0EFQQDedEeGPyrZ5I3hMlA" target="_rjTBsFWUEeKdxoQIVxFNNg" routing="Rectilinear" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_FOfGwTeeEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FOfGwjeeEeGPyrZ5I3hMlA" points="[-6, -3, 83, 0]$[-62, -3, 27, 0]"/>
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FOwMgDeeEeGPyrZ5I3hMlA" id="(0.020338983050847456,0.4027777777777778)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FOwMgTeeEeGPyrZ5I3hMlA" id="(0.9644268774703557,0.32142857142857145)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FOwMgTeeEeGPyrZ5I3hMlA" id="(0.9881422924901185,0.5753424657534246)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_F4Ju0DeeEeGPyrZ5I3hMlA" type="4002" source="_-HlK8DecEeGPyrZ5I3hMlA" target="_8LSR4M__Ed-TP80eVS-2Rg" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_F4Ju0TeeEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F4Ju0jeeEeGPyrZ5I3hMlA" points="[-25, 3, 78, 0]$[-80, -2, 23, -5]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kDeeEeGPyrZ5I3hMlA" id="(0.006779661016949152,0.509090909090909)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kTeeEeGPyrZ5I3hMlA" id="(0.9921259842519685,0.26605504587155965)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kDeeEeGPyrZ5I3hMlA" id="(0.0,0.5125)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kTeeEeGPyrZ5I3hMlA" id="(0.9448818897637795,0.1834862385321101)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_YapykFT0EeKvFeqt5Q_lqw" type="4002" source="_SypoQFT0EeKvFeqt5Q_lqw" target="_8rDfAFTzEeKvFeqt5Q_lqw" routing="Rectilinear" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_YapykVT0EeKvFeqt5Q_lqw" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_YapyklT0EeKvFeqt5Q_lqw" points="[-19, -3, 177, 20]$[-188, -24, 8, -1]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ya7fYFT0EeKvFeqt5Q_lqw" id="(0.06551724137931035,0.38333333333333336)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ya7fYVT0EeKvFeqt5Q_lqw" id="(0.9693251533742331,0.65)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ya7fYFT0EeKvFeqt5Q_lqw" id="(0.0,0.3157894736842105)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Ya7fYVT0EeKvFeqt5Q_lqw" id="(1.0,0.65)"/>
</edges>
</notation:Diagram>
<notation:Diagram xmi:id="_o6ZisNCREd-hqYHBJe17_Q" type="CompositeStructure" name="System" measurementUnit="Pixel">
@@ -322,7 +335,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZQkTaFWjEeKOivupHOJ8Ew"/>
</children>
<element xmi:type="uml:InstanceSpecification" href="HelloWorld.uml#_ymErsFT2EeKvFeqt5Q_lqw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZQjFQVWjEeKOivupHOJ8Ew" x="10" y="12" width="235" height="46"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ZQjFQVWjEeKOivupHOJ8Ew" x="15" y="13" width="261" height="57"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_Z7T5gFWjEeKOivupHOJ8Ew" type="3020" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Z7UgkFWjEeKOivupHOJ8Ew" source="ShadowFigure">
@@ -350,7 +363,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z7Ugm1WjEeKOivupHOJ8Ew"/>
</children>
<element xmi:type="uml:InstanceSpecification" href="HelloWorld.uml#_ymQR4FT2EeKvFeqt5Q_lqw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z7T5gVWjEeKOivupHOJ8Ew" x="10" y="102" width="235" height="64"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Z7T5gVWjEeKOivupHOJ8Ew" x="15" y="133" width="261" height="64"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_85kMIFWjEeKOivupHOJ8Ew" type="3020" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_85kzMFWjEeKOivupHOJ8Ew" source="ShadowFigure">
@@ -374,7 +387,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_85laQ1WjEeKOivupHOJ8Ew"/>
</children>
<element xmi:type="uml:InstanceSpecification" href="HelloWorld.uml#_GQ1ekKwHEeCQX8uv_p0Q4A"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_85kMIVWjEeKOivupHOJ8Ew" x="352" y="12" width="163" height="46"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_85kMIVWjEeKOivupHOJ8Ew" x="375" y="13" width="163" height="46"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_wCUSAFZVEeKKZs15rvNNjA" type="3028" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_wCX8YFZVEeKKZs15rvNNjA" source="ShadowFigure">
@@ -388,13 +401,14 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_wCYjc1ZVEeKKZs15rvNNjA" type="5063"/>
<element xmi:type="uml:Comment" href="HelloWorld.uml#_wAbboFZVEeKKZs15rvNNjA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wCUSAVZVEeKKZs15rvNNjA" x="298" y="94" width="208" height="83"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_wCUSAVZVEeKKZs15rvNNjA" x="325" y="97" width="208" height="83"/>
</children>
<styles xmi:type="notation:TitleStyle" xmi:id="_-4lixFWREeKdxoQIVxFNNg"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_-4lixVWREeKdxoQIVxFNNg"/>
</children>
+ <styles xmi:type="notation:IntValueStyle" xmi:id="_u3oFQLkXEeS7TYMQS2xzng" name="shapeDirection" intValue="1"/>
<element xmi:type="uml:Package" href="HelloWorld.uml#_yl9-AFT2EeKvFeqt5Q_lqw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-4h4YVWREeKdxoQIVxFNNg" x="30" y="160" width="538" height="219"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-4h4YVWREeKdxoQIVxFNNg" x="20" y="200" width="571" height="254"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_obNuEFWiEeKOivupHOJ8Ew" type="2012" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_obQxYFWiEeKOivupHOJ8Ew" source="ShadowFigure">
@@ -422,26 +436,29 @@
<styles xmi:type="notation:FontStyle" xmi:id="_86CtQVWjEeKOivupHOJ8Ew" fontName="Sans Serif"/>
<element xmi:type="uml:Abstraction" href="HelloWorld.uml#_UPx34FWUEeKdxoQIVxFNNg"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_86CtQlWjEeKOivupHOJ8Ew" points="[-81, -23, 28, 8]$[-109, -31, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zrOXILkXEeS7TYMQS2xzng" id="(1.0,0.40350877192982454)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_zrOXIbkXEeS7TYMQS2xzng" id="(0.0,0.5)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_Sqs9MFWkEeKOivupHOJ8Ew" type="4013" source="_obNuEFWiEeKOivupHOJ8Ew" target="_-4h4YFWREeKdxoQIVxFNNg" routing="Rectilinear" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_Sqs9MVWkEeKOivupHOJ8Ew" fontName="Sans Serif"/>
<element xsi:nil="true"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Sqs9MlWkEeKOivupHOJ8Ew" points="[-3, 8, 0, -33]$[20, 29, 23, -12]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SrQW0FWkEeKOivupHOJ8Ew" id="(0.5913461538461539,0.8666666666666667)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SrQW0VWkEeKOivupHOJ8Ew" id="(0.7925636007827789,0.1461187214611872)"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_Sqs9MlWkEeKOivupHOJ8Ew" points="[113, 34, 301, -38]$[113, 93, 301, 21]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SrQW0FWkEeKOivupHOJ8Ew" id="(0.0,0.5277777777777778)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_SrQW0VWkEeKOivupHOJ8Ew" id="(0.18739054290718038,0.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_7O5fMFZVEeKKZs15rvNNjA" type="4013" source="_wCUSAFZVEeKKZs15rvNNjA" target="_ZQjFQFWjEeKOivupHOJ8Ew" routing="Rectilinear" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_7O5fMVZVEeKKZs15rvNNjA" fontName="Sans Serif"/>
<element xsi:nil="true"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7O5fMlZVEeKKZs15rvNNjA" points="[-12, 19, 179, 93]$[-56, 19, 135, 93]$[-56, -16, 135, 58]$[-245, -16, -54, 58]$[-245, -51, -54, 23]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7PO2YFZVEeKKZs15rvNNjA" id="(0.06382978723404255,0.18333333333333332)"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_7O5fMlZVEeKKZs15rvNNjA" points="[0, -15, 147, 39]$[-110, -15, 37, 39]$[-110, -54, 37, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_7PO2YFZVEeKKZs15rvNNjA" id="(0.0,0.11965811965811966)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_yzWT8LkXEeS7TYMQS2xzng" id="(0.7662835249042146,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_71Q7oFZVEeKKZs15rvNNjA" type="4013" source="_wCUSAFZVEeKKZs15rvNNjA" target="_Z7T5gFWjEeKOivupHOJ8Ew" routing="Rectilinear" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_71Q7oVZVEeKKZs15rvNNjA" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_71Q7olZVEeKKZs15rvNNjA" points="[-12, 8, 82, 0]$[-73, 9, 21, 1]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_71iBYFZVEeKKZs15rvNNjA" id="(0.06382978723404255,0.6166666666666667)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_71iBYVZVEeKKZs15rvNNjA" id="(0.9106382978723404,0.640625)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_71iBYFZVEeKKZs15rvNNjA" id="(0.0,0.6410256410256411)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_71iBYVZVEeKKZs15rvNNjA" id="(1.0,0.609375)"/>
</edges>
</notation:Diagram>
<notation:Diagram xmi:id="_0rwpYDefEeGPyrZ5I3hMlA" type="CompositeStructure" name="HWArchitecture" measurementUnit="Pixel">
@@ -487,6 +504,11 @@
<styles xmi:type="notation:TitleStyle" xmi:id="_4HMOeDefEeGPyrZ5I3hMlA" showTitle="true"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4HMOeTefEeGPyrZ5I3hMlA"/>
</children>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_DrFGELkYEeS7TYMQS2xzng" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>type</stringListValue>
+ <stringListValue>derived</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="HelloWorld.uml#_4HAoQDefEeGPyrZ5I3hMlA"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_4HLnYTefEeGPyrZ5I3hMlA" x="49" y="22" width="190"/>
</children>
@@ -494,7 +516,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w2pOTefEeGPyrZ5I3hMlA"/>
</children>
<element xmi:type="uml:Class" href="HelloWorld.uml#_tZvNQDefEeGPyrZ5I3hMlA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w2CITefEeGPyrZ5I3hMlA" x="81" y="63" width="300" height="154"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_1w2CITefEeGPyrZ5I3hMlA" x="80" y="63" width="301" height="154"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_7qMbIDefEeGPyrZ5I3hMlA" type="2072" fontName="" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7qNCMDefEeGPyrZ5I3hMlA" source="ShadowFigure">
@@ -519,7 +541,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_7qNCOTefEeGPyrZ5I3hMlA"/>
</children>
<element xmi:type="uml:Node" href="HelloWorld.uml#_zY9vMDLiEd2RVeNawwNNzg"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7qMbITefEeGPyrZ5I3hMlA" x="441" y="63" width="172" height="91"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7qMbITefEeGPyrZ5I3hMlA" x="440" y="63" width="181" height="91"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_jhQ20DegEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_jhQ20jegEeGPyrZ5I3hMlA" source="ShadowFigure">
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.uml
index 5bc65af96e8..3d3e0752b5c 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.uml
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/HelloWorld.uml
@@ -1,32 +1,32 @@
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Alloc="http://www.eclipse.org/papyrus/Alloc/1" xmlns:C_Cpp="http://www.eclipse.org/papyrus/C_Cpp/1" xmlns:FCM="http://www.eclipse.org/papyrus/FCM/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/Alloc/1 http://www.eclipse.org/papyrus/MARTE/1#//Alloc">
<uml:Model xmi:id="_O6TiIDLUEd26WNosUASSSw" name="HelloWorld">
- <packageImport xmi:id="_O6TiITLUEd26WNosUASSSw">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_O6TiITLUEd26WNosUASSSw">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
- <packageImport xmi:id="_Bc1WIFW4Ed63BrxiKsw-0Q">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_Bc1WIFW4Ed63BrxiKsw-0Q">
<importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/core.uml#_O6TiIDLUEd26WNosUASSSw"/>
</packageImport>
- <packageImport xmi:id="_rwBsMP7AEd6Zw96O-tCw7A">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_rwBsMP7AEd6Zw96O-tCw7A">
<importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
</packageImport>
<packagedElement xmi:type="uml:Package" xmi:id="_LOqIEDLaEd2qeKRLMdIx_A" name="components">
- <ownedComment xmi:id="_-Hd2MDecEeGPyrZ5I3hMlA" annotatedElement="_tyiqsc__Ed-TP80eVS-2Rg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_-Hd2MDecEeGPyrZ5I3hMlA" annotatedElement="_tyiqsc__Ed-TP80eVS-2Rg">
<body>Simple HelloWorld component that prints a message in its &quot;run&quot; operation that is provided via the &quot;start&quot; port
</body>
</ownedComment>
- <ownedComment xmi:id="_0D64MDedEeGPyrZ5I3hMlA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_0D64MDedEeGPyrZ5I3hMlA">
<annotatedElement xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
<body>Part of the Qompass core model library. Provides the specific port &quot;start&quot;. The &quot;run&quot; operation (defined within interface IStart) of this port is called by generated boot-code after instantiation and configuration of a component. </body>
</ownedComment>
<packagedElement xmi:type="uml:Class" xmi:id="_tyiqsc__Ed-TP80eVS-2Rg" name="HelloWorld">
- <ownedComment xmi:id="_SxvpUFT0EeKvFeqt5Q_lqw" annotatedElement="_8pupUFTzEeKvFeqt5Q_lqw">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_SxvpUFT0EeKvFeqt5Q_lqw" annotatedElement="_8pupUFTzEeKvFeqt5Q_lqw">
<body>Configuration attribute within the Hello World component. Its value is configured on the instance level.</body>
</ownedComment>
- <generalization xmi:id="_tyiqss__Ed-TP80eVS-2Rg">
+ <generalization xmi:type="uml:Generalization" xmi:id="_tyiqss__Ed-TP80eVS-2Rg">
<general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
</generalization>
- <ownedAttribute xmi:id="_8pupUFTzEeKvFeqt5Q_lqw" name="message" visibility="public" aggregation="composite">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_8pupUFTzEeKvFeqt5Q_lqw" name="message" visibility="public" aggregation="composite">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="__HwK8FTzEeKvFeqt5Q_lqw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__HwyAFTzEeKvFeqt5Q_lqw" value="1"/>
@@ -34,18 +34,18 @@
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
- <interfaceRealization xmi:id="_Us15gFTzEeKvFeqt5Q_lqw" name="derived realization of IStart" client="_tyiqsc__Ed-TP80eVS-2Rg">
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_Us15gFTzEeKvFeqt5Q_lqw" name="derived realization of IStart" client="_tyiqsc__Ed-TP80eVS-2Rg">
<supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
- <contract href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ <contract xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
</interfaceRealization>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_tyjRwc__Ed-TP80eVS-2Rg" name="run" specification="_UtCt0FTzEeKvFeqt5Q_lqw">
<language>C/C++</language>
<body>cout &lt;&lt; &quot;Hello world: &quot; &lt;&lt; message &lt;&lt; endl;</body>
</ownedBehavior>
- <ownedOperation xmi:id="_UtCt0FTzEeKvFeqt5Q_lqw" name="run" method="_tyjRwc__Ed-TP80eVS-2Rg"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_UtCt0FTzEeKvFeqt5Q_lqw" name="run" method="_tyjRwc__Ed-TP80eVS-2Rg"/>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_bYJagDLiEd2RVeNawwNNzg" name="System">
- <ownedAttribute xmi:id="_gV1cgDLiEd2RVeNawwNNzg" name="hello" visibility="public" type="_tyiqsc__Ed-TP80eVS-2Rg" isUnique="false" aggregation="composite">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_gV1cgDLiEd2RVeNawwNNzg" name="hello" visibility="public" type="_tyiqsc__Ed-TP80eVS-2Rg" isUnique="false" aggregation="composite">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dCT24G6JEeGqWMX2LwdLDw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dCUd8G6JEeGqWMX2LwdLDw" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_dCWTIG6JEeGqWMX2LwdLDw">
@@ -55,12 +55,12 @@
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_v3fMgDLiEd2RVeNawwNNzg" name="platform">
- <ownedComment xmi:id="_jhF3sDegEeGPyrZ5I3hMlA" annotatedElement="_zY9vMDLiEd2RVeNawwNNzg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_jhF3sDegEeGPyrZ5I3hMlA" annotatedElement="_zY9vMDLiEd2RVeNawwNNzg">
<body>Simple single node configuration. TargetOS is set to Linux, but will work on any OS, since this simple example does not use the OS abstraction layer</body>
</ownedComment>
<packagedElement xmi:type="uml:Node" xmi:id="_zY9vMDLiEd2RVeNawwNNzg" name="MonoNode"/>
<packagedElement xmi:type="uml:Class" xmi:id="_tZvNQDefEeGPyrZ5I3hMlA" name="Platform">
- <ownedAttribute xmi:id="_4HAoQDefEeGPyrZ5I3hMlA" name="monoNode" visibility="public" type="_zY9vMDLiEd2RVeNawwNNzg" aggregation="composite">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_4HAoQDefEeGPyrZ5I3hMlA" name="monoNode" visibility="public" type="_zY9vMDLiEd2RVeNawwNNzg" aggregation="composite">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6WEg0DefEeGPyrZ5I3hMlA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6WFu8DefEeGPyrZ5I3hMlA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_6WHkIDefEeGPyrZ5I3hMlA">
@@ -73,27 +73,27 @@
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_234GEDLiEd2RVeNawwNNzg" name="deployment">
- <ownedComment xmi:id="_VMRFgDOJEeC7y-fR3OSnFw">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_VMRFgDOJEeC7y-fR3OSnFw">
<body>This configuration requires the installation of the OTF trace library.&lt;br /></body>
</ownedComment>
- <ownedComment xmi:id="_gdeyMDefEeGPyrZ5I3hMlA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_gdeyMDefEeGPyrZ5I3hMlA">
<body>Cross references to composite diagram</body>
</ownedComment>
- <ownedComment xmi:id="_oZw8kFWiEeKOivupHOJ8Ew" annotatedElement="_yl9-AFT2EeKvFeqt5Q_lqw">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_oZw8kFWiEeKOivupHOJ8Ew" annotatedElement="_yl9-AFT2EeKvFeqt5Q_lqw">
<body>Deployment plan for system, i.e. set of instance specification along with configuration and allocation</body>
</ownedComment>
<packagedElement xmi:type="uml:Package" xmi:id="_yl9-AFT2EeKvFeqt5Q_lqw" name="SystemDepPlan">
- <ownedComment xmi:id="_wAbboFZVEeKKZs15rvNNjA" annotatedElement="_ymErsFT2EeKvFeqt5Q_lqw _ymQR4FT2EeKvFeqt5Q_lqw">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_wAbboFZVEeKKZs15rvNNjA" annotatedElement="_ymErsFT2EeKvFeqt5Q_lqw _ymQR4FT2EeKvFeqt5Q_lqw">
<body>Value mainInstance.hello is a UML instance-value, i.e. a reference to the instance specification on the left.
&quot;Test message&quot; is a StringValue initializing the message attribute</body>
</ownedComment>
<packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_ymErsFT2EeKvFeqt5Q_lqw" name="mainInstance" classifier="_bYJagDLiEd2RVeNawwNNzg">
- <slot xmi:id="_ymQ48FT2EeKvFeqt5Q_lqw" definingFeature="_gV1cgDLiEd2RVeNawwNNzg">
+ <slot xmi:type="uml:Slot" xmi:id="_ymQ48FT2EeKvFeqt5Q_lqw" definingFeature="_gV1cgDLiEd2RVeNawwNNzg">
<value xmi:type="uml:InstanceValue" xmi:id="_ymRgAFT2EeKvFeqt5Q_lqw" instance="_ymQR4FT2EeKvFeqt5Q_lqw"/>
</slot>
</packagedElement>
<packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_ymQR4FT2EeKvFeqt5Q_lqw" name="mainInstance.hello" classifier="_tyiqsc__Ed-TP80eVS-2Rg">
- <slot xmi:id="_tfj4gFUwEeKdxoQIVxFNNg" definingFeature="_8pupUFTzEeKvFeqt5Q_lqw">
+ <slot xmi:type="uml:Slot" xmi:id="_tfj4gFUwEeKdxoQIVxFNNg" definingFeature="_8pupUFTzEeKvFeqt5Q_lqw">
<value xmi:type="uml:LiteralString" xmi:id="_tfni4FUwEeKdxoQIVxFNNg" name="value for message" value="&quot;Test message&quot;">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
</value>
@@ -102,78 +102,48 @@
<packagedElement xmi:type="uml:Abstraction" xmi:id="_UPx34FWUEeKdxoQIVxFNNg" name="allocate mainInstance to monoNode" client="_ymErsFT2EeKvFeqt5Q_lqw" supplier="_GQ1ekKwHEeCQX8uv_p0Q4A"/>
</packagedElement>
</packagedElement>
- <profileApplication xmi:id="_O6TiIjLUEd26WNosUASSSw">
- <eAnnotations xmi:id="_O6TiIzLUEd26WNosUASSSw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_O6TiIjLUEd26WNosUASSSw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_O6TiIzLUEd26WNosUASSSw" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
</eAnnotations>
- <appliedProfile href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
</profileApplication>
- <profileApplication xmi:id="_GcC0cAHtEd6HSdiss9GQ0A">
- <eAnnotations xmi:id="_Gd1kMAHtEd6HSdiss9GQ0A" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_GcC0cAHtEd6HSdiss9GQ0A">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Gd1kMAHtEd6HSdiss9GQ0A" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/C_Cpp/1#/"/>
</eAnnotations>
- <appliedProfile href="pathmap://PapyrusC_Cpp_PROFILES/C_Cpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://PapyrusC_Cpp_PROFILES/C_Cpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
</profileApplication>
- <profileApplication xmi:id="_z1TwgFW3Ed63BrxiKsw-0Q">
- <eAnnotations xmi:id="_z2GasFW3Ed63BrxiKsw-0Q" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_z1TwgFW3Ed63BrxiKsw-0Q">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z2GasFW3Ed63BrxiKsw-0Q" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/FCM/1#/"/>
</eAnnotations>
- <appliedProfile href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
</profileApplication>
- <profileApplication xmi:id="_sfyAwEbjEd-l4NeVOJZDkA">
- <eAnnotations xmi:id="_siunEEbjEd-l4NeVOJZDkA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_sfyAwEbjEd-l4NeVOJZDkA">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_siunEEbjEd-l4NeVOJZDkA" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//GCM"/>
</eAnnotations>
- <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_YgAioAPMEdyuUt-4qHuVvQ"/>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_YgAioAPMEdyuUt-4qHuVvQ"/>
</profileApplication>
- <profileApplication xmi:id="_popJkKmqEeCxII-g1_Lmeg">
- <eAnnotations xmi:id="_p1PbIKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_popJkKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_p1PbIKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//HLAM"/>
</eAnnotations>
- <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_yNSZIAPMEdyuUt-4qHuVvQ"/>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_yNSZIAPMEdyuUt-4qHuVvQ"/>
</profileApplication>
- <profileApplication xmi:id="_tZuBwE0tEeG4IqgA7gSE6w">
- <eAnnotations xmi:id="_tisXkE0tEeG4IqgA7gSE6w" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_tZuBwE0tEeG4IqgA7gSE6w">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tisXkE0tEeG4IqgA7gSE6w" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//Alloc"/>
</eAnnotations>
- <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_ar8OsAPMEdyuUt-4qHuVvQ"/>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_ar8OsAPMEdyuUt-4qHuVvQ"/>
</profileApplication>
</uml:Model>
- <FCM:DerivedElement xmi:id="_RwGb8P6_Ed6Zw96O-tCw7A"/>
- <FCM:DerivedElement xmi:id="_RxVyEP6_Ed6Zw96O-tCw7A"/>
- <FCM:DerivedElement xmi:id="_RoIMoP94Ed6628OhKk_dpg"/>
- <FCM:DerivedElement xmi:id="_IFlIEARJEd--t-uhRn9OBA"/>
- <FCM:ContainerRule xmi:id="_b-TmAARJEd--t-uhRn9OBA">
- <portSet href="pathmap://QML_CORE/core.uml#__SL-kNtxEd6nqsBVkgJEEA"/>
- </FCM:ContainerRule>
- <FCM:DerivedElement xmi:id="_bmwhUARMEd-OidZzGKCpzg"/>
- <FCM:DerivedElement xmi:id="_xjNC4ATuEd-Zc_RSu20WjA"/>
- <FCM:DerivedElement xmi:id="_LZoQ4AVIEd-rcKh6R_xjRQ"/>
- <FCM:DerivedElement xmi:id="_oMpYkAWxEd-jrvNV_WQOlA"/>
- <FCM:DerivedElement xmi:id="_Fd6d0AnREd-co_m_wv4b6A"/>
- <FCM:DerivedElement xmi:id="_uLARMBGVEd-rfYlCjUOxJQ"/>
- <FCM:DerivedElement xmi:id="_qdjxQBGkEd-Jq_XWT8Mhpg"/>
- <FCM:DerivedElement xmi:id="_VOzfEBGlEd-Jq_XWT8Mhpg"/>
- <FCM:DerivedElement xmi:id="_N8BrMBI4Ed-3zOZ0RGapGA"/>
- <FCM:DerivedElement xmi:id="_jIS30BI8Ed-XjYZ05V-9-Q"/>
- <FCM:DerivedElement xmi:id="_E5UhUBJIEd-XjYZ05V-9-Q"/>
- <FCM:DerivedElement xmi:id="_THoRwBJWEd-QgZm_R1AKbA"/>
- <FCM:DerivedElement xmi:id="_z0CVcBQ2Ed-_dI0JopJMvQ"/>
- <FCM:DerivedElement xmi:id="_Ke_UsBb7Ed-u0pMEAnvpEQ"/>
- <FCM:DerivedElement xmi:id="_uOkD4D15Ed-qiK1VZWszhA">
- <source xmi:type="uml:Operation" href="pathmap://QML_CORE//sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
- </FCM:DerivedElement>
- <FCM:DerivedElement xmi:id="_a4LokD16Ed-qiK1VZWszhA">
- <source xmi:type="uml:Operation" href="pathmap://QML_CORE//sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
- </FCM:DerivedElement>
<C_Cpp:Include xmi:id="_11OtwPcaEd-KM6l7lmIPkw" body="#include &lt;iostream>&#xA;using namespace std;" base_class="_tyiqsc__Ed-TP80eVS-2Rg"/>
<FCM:Target xmi:id="_LD_uICr7EeCfcI_SvPT4lw" base_Node="_zY9vMDLiEd2RVeNawwNNzg">
- <targetArch href="pathmap://QML_CORE/core.uml#_FYOqwF0OEd-12d_h0i1xhQ"/>
- <usedOS href="pathmap://QML_CORE/core.uml#_1eULwF0NEd-12d_h0i1xhQ"/>
+ <targetArch xmi:type="FCM:TargetArchitecture" href="pathmap://QML_CORE/core.uml#_FYOqwF0OEd-12d_h0i1xhQ"/>
+ <usedOS xmi:type="FCM:OperatingSystem" href="pathmap://QML_CORE/core.uml#_1eULwF0NEd-12d_h0i1xhQ"/>
</FCM:Target>
- <FCM:Connector xmi:id="_iADdkE2rEeGl8qrc8BM7vA">
- <ic href="pathmap://QML_CORE/fifo.uml#_xQ_ccHUuEd6R5tffIPrlPg"/>
- </FCM:Connector>
<FCM:DerivedElement xmi:id="_UtTMgFTzEeKvFeqt5Q_lqw" base_Element="_UtCt0FTzEeKvFeqt5Q_lqw">
<source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
</FCM:DerivedElement>
@@ -181,6 +151,6 @@
<FCM:DeploymentPlan xmi:id="_ymC2gFT2EeKvFeqt5Q_lqw" mainInstance="_ymErsFT2EeKvFeqt5Q_lqw" base_Package="_yl9-AFT2EeKvFeqt5Q_lqw"/>
<Alloc:Allocate xmi:id="_UP7B0FWUEeKdxoQIVxFNNg" base_Abstraction="_UPx34FWUEeKdxoQIVxFNNg"/>
<FCM:CodeGenOptions xmi:id="_1uf4ENykEeKPWMO32vUmzw" base_Package="_LOqIEDLaEd2qeKRLMdIx_A">
- <progLanguage href="pathmap://QML_CORE/core.uml#_5WrSINzEEeKPWMO32vUmzw"/>
+ <progLanguage xmi:type="FCM:ProgLanguage" href="pathmap://QML_CORE/core.uml#_5WrSINzEEeKPWMO32vUmzw"/>
</FCM:CodeGenOptions>
</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.notation
index 95e172c27d2..31a33c6bfae 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.notation
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.notation
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI 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:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+<xmi:XMI 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:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
<notation:Diagram xmi:id="_UstOsM__Ed-TP80eVS-2Rg" type="CompositeStructure" name="PushConsumer" measurementUnit="Pixel">
<children xmi:type="notation:Shape" xmi:id="_VT2HMM__Ed-TP80eVS-2Rg" type="2073" fontName="" fontHeight="10" fillColor="8905185" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VT2HMs__Ed-TP80eVS-2Rg" source="ShadowFigure">
@@ -63,7 +63,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_Xgz5hjecEeGPyrZ5I3hMlA" type="5192"/>
<element xmi:type="uml:Comment" href="ProducerConsumer.uml#_XfnmsDecEeGPyrZ5I3hMlA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XfxXsTecEeGPyrZ5I3hMlA" x="378" y="27" width="217" height="55"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XfxXsTecEeGPyrZ5I3hMlA" x="376" y="9" width="217" height="55"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_gpzeUDecEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_gp0FYDecEeGPyrZ5I3hMlA" source="ShadowFigure">
@@ -77,7 +77,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_gp0FZjecEeGPyrZ5I3hMlA" type="5192"/>
<element xmi:type="uml:Comment" href="ProducerConsumer.uml#_gpptUDecEeGPyrZ5I3hMlA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gpzeUTecEeGPyrZ5I3hMlA" x="63" y="144" width="253"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_gpzeUTecEeGPyrZ5I3hMlA" x="61" y="168" width="253"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_KGUHgBo3EeONpa5JgejICQ" type="2068" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KGZAABo3EeONpa5JgejICQ" source="ShadowFigure">
@@ -103,7 +103,7 @@
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_KGaOKRo3EeONpa5JgejICQ"/>
</children>
<element xmi:type="uml:DataType" href="ProducerConsumer.uml#_wFJ3IP91Ed6Jt8e-UqrRdQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KGUHgRo3EeONpa5JgejICQ" x="378" y="90" width="118"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_KGUHgRo3EeONpa5JgejICQ" x="384" y="118" width="118"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_du3bcBo3EeONpa5JgejICQ" type="2109" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_du5QoBo3EeONpa5JgejICQ" source="ShadowFigure">
@@ -117,7 +117,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_du53tRo3EeONpa5JgejICQ" type="5192"/>
<element xmi:type="uml:Comment" href="ProducerConsumer.uml#_dufoABo3EeONpa5JgejICQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_du3bcRo3EeONpa5JgejICQ" x="333" y="144" width="172" height="64"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_du3bcRo3EeONpa5JgejICQ" x="337" y="172" width="172" height="64"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_UstOsc__Ed-TP80eVS-2Rg"/>
<element xmi:type="uml:Package" href="ProducerConsumer.uml#_OGM88DLaEd2qeKRLMdIx_A"/>
@@ -125,16 +125,17 @@
<styles xmi:type="notation:FontStyle" xmi:id="_fsWXkTecEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_fsWXkjecEeGPyrZ5I3hMlA" points="[-1, -3, 19, 74]$[4, -33, 24, 44]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fsndUDecEeGPyrZ5I3hMlA" id="(0.004608294930875576,0.6909090909090909)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_fsndUDecEeGPyrZ5I3hMlA" id="(0.0,0.6805555555555556)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_gO3VwKY3EeSQZvr8taS8TA" id="(1.0,0.3218390804597701)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_l-KT4DecEeGPyrZ5I3hMlA" type="4002" source="_gpzeUDecEeGPyrZ5I3hMlA" target="_XgvckM__Ed-TP80eVS-2Rg" routing="Rectilinear" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_l-KT4TecEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_l-KT4jecEeGPyrZ5I3hMlA" points="[-17, -2, -29, 63]$[-17, -62, -29, 3]$[9, -62, -3, 3]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l-cAsDecEeGPyrZ5I3hMlA" id="(0.14832535885167464,0.03333333333333333)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l-cAsTecEeGPyrZ5I3hMlA" id="(0.15,0.35)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l-cAsDecEeGPyrZ5I3hMlA" id="(0.13043478260869565,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_l-cAsTecEeGPyrZ5I3hMlA" id="(0.0,0.4)"/>
</edges>
- <edges xmi:type="notation:Connector" xmi:id="_LksxEBo3EeONpa5JgejICQ" type="4010" source="_VT2HMM__Ed-TP80eVS-2Rg" target="_KGUHgBo3EeONpa5JgejICQ" lineColor="0">
+ <edges xmi:type="notation:Connector" xmi:id="_LksxEBo3EeONpa5JgejICQ" type="4010" source="_VT2HMM__Ed-TP80eVS-2Rg" target="_KGUHgBo3EeONpa5JgejICQ" routing="Rectilinear" lineColor="0">
<children xmi:type="notation:DecorationNode" xmi:id="_Lkt_MBo3EeONpa5JgejICQ" visible="false" type="6009">
<layoutConstraint xmi:type="notation:Location" xmi:id="_Lkt_MRo3EeONpa5JgejICQ" y="60"/>
</children>
@@ -143,15 +144,15 @@
</children>
<styles xmi:type="notation:FontStyle" xmi:id="_LksxERo3EeONpa5JgejICQ" fontName="Sans Serif"/>
<element xmi:type="uml:Dependency" href="ProducerConsumer.uml#_LjkIoBo3EeONpa5JgejICQ"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LksxEho3EeONpa5JgejICQ" points="[14, 3, -322, -90]$[331, 78, -5, -15]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lk5lYBo3EeONpa5JgejICQ" id="(0.9186046511627907,0.7816091954022989)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lk5lYRo3EeONpa5JgejICQ" id="(0.36619718309859156,0.1724137931034483)"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_LksxEho3EeONpa5JgejICQ" points="[-20, 17, -79, 5]$[-20, 32, -79, 20]$[50, 32, -9, 20]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lk5lYBo3EeONpa5JgejICQ" id="(1.0,0.8045977011494253)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Lk5lYRo3EeONpa5JgejICQ" id="(0.07627118644067797,0.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_mz7igBo3EeONpa5JgejICQ" type="4002" source="_du3bcBo3EeONpa5JgejICQ" target="_LksxEBo3EeONpa5JgejICQ" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_mz7igRo3EeONpa5JgejICQ" fontName="Sans Serif"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_mz7igho3EeONpa5JgejICQ" points="[-11, -20, 25, 48]$[-39, -68, -3, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mz-l0Bo3EeONpa5JgejICQ" id="(0.1511627906976744,0.3125)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mz-l0Bo3EeONpa5JgejICQ" id="(0.09883720930232558,0.0)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_mz-l0Ro3EeONpa5JgejICQ" id="(0.45535714285714285,0.15306122448979592)"/>
</edges>
</notation:Diagram>
@@ -201,8 +202,13 @@
<layoutConstraint xmi:type="notation:Location" xmi:id="_ytMKQ_8nEd-hWJO6cv3VJA" x="25" y="3"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_ytMKRP8nEd-hWJO6cv3VJA" type="6029">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_ytMKRf8nEd-hWJO6cv3VJA" x="25" y="-10"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ytMKRf8nEd-hWJO6cv3VJA" x="-50" y="-7"/>
</children>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_ye3iYKY3EeSQZvr8taS8TA" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_ytK8If8nEd-hWJO6cv3VJA" x="-10" y="36"/>
</children>
@@ -230,13 +236,18 @@
<layoutConstraint xmi:type="notation:Location" xmi:id="_t6ZshZaMEeCbgbUO5qahhA" x="25" y="3"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_t6aTkJaMEeCbgbUO5qahhA" type="6029">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_t6aTkZaMEeCbgbUO5qahhA" x="-8" y="45"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_t6aTkZaMEeCbgbUO5qahhA" x="-110"/>
</children>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_zsNfQKY3EeSQZvr8taS8TA" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Port" href="ProducerConsumer.uml#_tyiqs8__Ed-TP80eVS-2Rg"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_t6X3UZaMEeCbgbUO5qahhA" x="-10" y="72"/>
</children>
<element xmi:type="uml:Class" href="ProducerConsumer.uml#_tyiqsc__Ed-TP80eVS-2Rg"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8LSR4c__Ed-TP80eVS-2Rg" x="162" y="162" width="254" height="109"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_8LSR4c__Ed-TP80eVS-2Rg" x="160" y="180" width="254" height="109"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_uHcuMP8nEd-hWJO6cv3VJA" type="2073" fontName="" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_uHdVQP8nEd-hWJO6cv3VJA" source="ShadowFigure">
@@ -263,11 +274,11 @@
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_xVn6YP8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
</eAnnotations>
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qnfyoFZWEeKKZs15rvNNjA" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3YBsFZWEeKKZs15rvNNjA" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3YBsVZWEeKKZs15rvNNjA" key="StereotypeList" value="FCM::Port"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3YowFZWEeKKZs15rvNNjA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3YowVZWEeKKZs15rvNNjA" key="PropStereoDisplay" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_q3YowlZWEeKKZs15rvNNjA" key="StereotypePropertyLocation" value="Compartment"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tKHrQKY3EeSQZvr8taS8TA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tKHrQaY3EeSQZvr8taS8TA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tKHrQqY3EeSQZvr8taS8TA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tKHrQ6Y3EeSQZvr8taS8TA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_tKHrRKY3EeSQZvr8taS8TA" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_xVn6Yf8nEd-hWJO6cv3VJA" type="5125">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="__hZeEFZ0EeK5f41mmHszag" source="CustomAppearance_Annotation">
@@ -276,13 +287,18 @@
<layoutConstraint xmi:type="notation:Location" xmi:id="_xVn6Yv8nEd-hWJO6cv3VJA" x="25" y="3"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_xVn6Y_8nEd-hWJO6cv3VJA" type="6029">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_xVn6ZP8nEd-hWJO6cv3VJA" x="25" y="-10"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_xVn6ZP8nEd-hWJO6cv3VJA" x="-50" y="1"/>
</children>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_w-8nwKY3EeSQZvr8taS8TA" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#__SLXgNtxEd6nqsBVkgJEEA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xVmsQf8nEd-hWJO6cv3VJA" x="-10" y="29"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_xVmsQf8nEd-hWJO6cv3VJA" y="48"/>
</children>
<element xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uHcuMf8nEd-hWJO6cv3VJA" x="162" y="36" width="253" height="73"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_uHcuMf8nEd-hWJO6cv3VJA" x="160" y="40" width="253" height="73"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_-HlK8DecEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_-HlyADecEeGPyrZ5I3hMlA" source="ShadowFigure">
@@ -296,7 +312,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_-HlyBjecEeGPyrZ5I3hMlA" type="5192"/>
<element xmi:type="uml:Comment" href="ProducerConsumer.uml#_-Hd2MDecEeGPyrZ5I3hMlA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-HlK8TecEeGPyrZ5I3hMlA" x="468" y="135" width="295"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_-HlK8TecEeGPyrZ5I3hMlA" x="480" y="160" width="339" height="157"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_0EFQQDedEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0EF3UDedEeGPyrZ5I3hMlA" source="ShadowFigure">
@@ -310,7 +326,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_0EF3VjedEeGPyrZ5I3hMlA" type="5192"/>
<element xmi:type="uml:Comment" href="ProducerConsumer.uml#_0D64MDedEeGPyrZ5I3hMlA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0EFQQTedEeGPyrZ5I3hMlA" x="468" y="36" width="295"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_0EFQQTedEeGPyrZ5I3hMlA" x="480" y="40" width="338"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_7kc7Yc__Ed-TP80eVS-2Rg"/>
<element xmi:type="uml:Package" href="ProducerConsumer.uml#_tyiqsM__Ed-TP80eVS-2Rg"/>
@@ -321,20 +337,22 @@
<styles xmi:type="notation:FontStyle" xmi:id="_uHz6kf8nEd-hWJO6cv3VJA" fontName="" fontHeight="10"/>
<element xmi:type="uml:Generalization" href="ProducerConsumer.uml#_tyiqss__Ed-TP80eVS-2Rg"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uHz6kv8nEd-hWJO6cv3VJA" points="[-103, -45, 204, 90]$[-307, -135, 0, 0]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_k2oLEKY3EeSQZvr8taS8TA" id="(0.49606299212598426,0.0)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_k2oLEaY3EeSQZvr8taS8TA" id="(0.4980237154150198,1.0)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_FOfGwDeeEeGPyrZ5I3hMlA" type="4002" source="_0EFQQDedEeGPyrZ5I3hMlA" target="_uHcuMP8nEd-hWJO6cv3VJA" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_FOfGwTeeEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_FOfGwjeeEeGPyrZ5I3hMlA" points="[-6, -3, 83, 0]$[-62, -3, 27, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FOwMgDeeEeGPyrZ5I3hMlA" id="(0.020338983050847456,0.4027777777777778)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FOwMgTeeEeGPyrZ5I3hMlA" id="(0.8932806324110671,0.5205479452054794)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FOwMgDeeEeGPyrZ5I3hMlA" id="(0.0,0.37254901960784315)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_FOwMgTeeEeGPyrZ5I3hMlA" id="(1.0,0.5205479452054794)"/>
</edges>
<edges xmi:type="notation:Connector" xmi:id="_F4Ju0DeeEeGPyrZ5I3hMlA" type="4002" source="_-HlK8DecEeGPyrZ5I3hMlA" target="_8LSR4M__Ed-TP80eVS-2Rg" routing="Rectilinear" lineColor="0">
<styles xmi:type="notation:FontStyle" xmi:id="_F4Ju0TeeEeGPyrZ5I3hMlA" fontName="" fontHeight="10"/>
<element xsi:nil="true"/>
<bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_F4Ju0jeeEeGPyrZ5I3hMlA" points="[-25, 21, 78, 0]$[-80, 21, 23, 0]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kDeeEeGPyrZ5I3hMlA" id="(0.01694915254237288,0.5681818181818182)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kTeeEeGPyrZ5I3hMlA" id="(0.9724409448818898,0.42201834862385323)"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kDeeEeGPyrZ5I3hMlA" id="(0.0,0.5536723163841808)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_F4a0kTeeEeGPyrZ5I3hMlA" id="(0.9448818897637795,0.7339449541284404)"/>
</edges>
</notation:Diagram>
<notation:Diagram xmi:id="_o6ZisNCREd-hqYHBJe17_Q" type="CompositeStructure" name="System Pull" measurementUnit="Pixel">
@@ -394,11 +412,21 @@
<children xmi:type="notation:DecorationNode" xmi:id="_0Xn0AjF1EeCpQdhNuFCtew" type="6029">
<layoutConstraint xmi:type="notation:Location" xmi:id="_0Xn0AzF1EeCpQdhNuFCtew" x="25" y="-10"/>
</children>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_UWeWAKY4EeSQZvr8taS8TA" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Port" href="ProducerConsumer.uml#_tyiqs8__Ed-TP80eVS-2Rg"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_0XlXwTF1EeCpQdhNuFCtew" x="-10" y="50"/>
</children>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_SRdKQKY4EeSQZvr8taS8TA" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="ProducerConsumer.uml#_gV1cgDLiEd2RVeNawwNNzg"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XsS70dHtEd-A1oPfP47IaQ" x="361" y="18" width="193" height="85"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_XsS70dHtEd-A1oPfP47IaQ" x="374" y="17" width="201" height="85"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_YNar4NHtEd-A1oPfP47IaQ" type="3070" fontName="" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_YNbS8NHtEd-A1oPfP47IaQ" source="ShadowFigure">
@@ -444,11 +472,21 @@
<children xmi:type="notation:DecorationNode" xmi:id="_zmsxMdHtEd-A1oPfP47IaQ" type="6029">
<layoutConstraint xmi:type="notation:Location" xmi:id="_zmsxMtHtEd-A1oPfP47IaQ" x="25" y="-10"/>
</children>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_WObWIKY4EeSQZvr8taS8TA" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Port" href="ProducerConsumer.uml#_DtWn4DLcEd2qeKRLMdIx_A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_zmq8AdHtEd-A1oPfP47IaQ" x="159" y="48"/>
</children>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_S5Ys8KY4EeSQZvr8taS8TA" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="ProducerConsumer.uml#_i-I7gDLiEd2RVeNawwNNzg"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YNar4dHtEd-A1oPfP47IaQ" x="22" y="18" width="169" height="85"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_YNar4dHtEd-A1oPfP47IaQ" x="14" y="17" width="169" height="85"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_JusbQDbdEeGdqp2YT1LwWw" type="2109" fontName="" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JutCUDbdEeGdqp2YT1LwWw" source="ShadowFigure">
@@ -462,7 +500,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_JutCVjbdEeGdqp2YT1LwWw" type="5192"/>
<element xmi:type="uml:Comment" href="ProducerConsumer.uml#_JuaHYDbdEeGdqp2YT1LwWw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JusbQTbdEeGdqp2YT1LwWw" x="355" y="121" width="199" height="44"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_JusbQTbdEeGdqp2YT1LwWw" x="374" y="117" width="199" height="44"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_lM7ZUDeeEeGPyrZ5I3hMlA" type="2109" fontName="" fontHeight="10" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_lM7ZUjeeEeGPyrZ5I3hMlA" source="ShadowFigure">
@@ -476,7 +514,7 @@
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_lM8AZDeeEeGPyrZ5I3hMlA" type="5192"/>
<element xmi:type="uml:Comment" href="ProducerConsumer.uml#_lMxBQDeeEeGPyrZ5I3hMlA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lM7ZUTeeEeGPyrZ5I3hMlA" x="4" y="121" width="343"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_lM7ZUTeeEeGPyrZ5I3hMlA" x="14" y="117" width="343"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_d2a9kBSoEeOUifYpcO0mcw" type="3070" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_d2a9khSoEeOUifYpcO0mcw" source="ShadowFigure">
@@ -497,8 +535,13 @@
<styles xmi:type="notation:TitleStyle" xmi:id="_d2bkoxSoEeOUifYpcO0mcw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_d2bkpBSoEeOUifYpcO0mcw"/>
</children>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_cMJ40KY4EeSQZvr8taS8TA" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="ProducerConsumer.uml#_d2B8ABSoEeOUifYpcO0mcw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d2a9kRSoEeOUifYpcO0mcw" x="22" y="219" width="172"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_d2a9kRSoEeOUifYpcO0mcw" x="14" y="237" width="172"/>
</children>
<children xmi:type="notation:Shape" xmi:id="_ejQ1cBSoEeOUifYpcO0mcw" type="3070" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_ejRcgBSoEeOUifYpcO0mcw" source="ShadowFigure">
@@ -519,13 +562,18 @@
<styles xmi:type="notation:TitleStyle" xmi:id="_ejSDkhSoEeOUifYpcO0mcw"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_ejSDkxSoEeOUifYpcO0mcw"/>
</children>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_bcQF4KY4EeSQZvr8taS8TA" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Property" href="ProducerConsumer.uml#_ei8sYBSoEeOUifYpcO0mcw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ejQ1cRSoEeOUifYpcO0mcw" x="363" y="222" width="191"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ejQ1cRSoEeOUifYpcO0mcw" x="374" y="237" width="201"/>
</children>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_VScvl9HtEd-A1oPfP47IaQ"/>
</children>
<element xmi:type="uml:Class" href="ProducerConsumer.uml#_bYJagDLiEd2RVeNawwNNzg"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VSa6YdHtEd-A1oPfP47IaQ" x="18" y="18" width="604" height="316"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VSa6YdHtEd-A1oPfP47IaQ" x="40" y="18" width="601" height="323"/>
</children>
<styles xmi:type="notation:DiagramStyle" xmi:id="_o6ZisdCREd-hqYHBJe17_Q"/>
<element xmi:type="uml:Package" href="ProducerConsumer.uml#_XLQjUDLiEd2RVeNawwNNzg"/>
@@ -694,7 +742,7 @@
<element xmi:type="uml:Package" href="ProducerConsumer.uml#_xBxwoDOFEeCldqx_51Yicg"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_91n2kTOFEeCldqx_51Yicg" x="36" y="144" width="199" height="109"/>
</children>
- <children xmi:type="notation:Shape" xmi:id="_1GDBwLGREeCfWNndpgPDWA" type="2007" fontName="Sans Serif" fillColor="8047085" transparency="100" lineColor="0">
+ <children xmi:type="notation:Shape" xmi:id="_1GDBwLGREeCfWNndpgPDWA" type="2007" fontName="Sans Serif" fillColor="8047085" transparency="0" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1GOA4LGREeCfWNndpgPDWA" source="ShadowFigure">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1GOA4bGREeCfWNndpgPDWA" key="ShadowFigure_Value" value="false"/>
</eAnnotations>
@@ -704,6 +752,9 @@
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1GOn8LGREeCfWNndpgPDWA" source="QualifiedName">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_1GOn8bGREeCfWNndpgPDWA" key="QualifiedNameDepth" value="1000"/>
</eAnnotations>
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_4DXjcLkUEeSU_ruUtH4m8A" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_4DYKgLkUEeSU_ruUtH4m8A" key="lineWidth" value="true"/>
+ </eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_1GOn8rGREeCfWNndpgPDWA" type="5026"/>
<children xmi:type="notation:DecorationNode" xmi:id="_1GOn87GREeCfWNndpgPDWA" type="7016">
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_1GOn9LGREeCfWNndpgPDWA"/>
@@ -769,6 +820,11 @@
<children xmi:type="notation:DecorationNode" xmi:id="_eCkVVv8nEd-hWJO6cv3VJA" type="6029">
<layoutConstraint xmi:type="notation:Location" xmi:id="_eCkVV_8nEd-hWJO6cv3VJA" x="25" y="-10"/>
</children>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_3sUesKY3EeSQZvr8taS8TA" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_eCjHMf8nEd-hWJO6cv3VJA" x="-10" y="36"/>
</children>
@@ -798,6 +854,11 @@
<children xmi:type="notation:DecorationNode" xmi:id="_fwpnxv8nEd-hWJO6cv3VJA" type="6029">
<layoutConstraint xmi:type="notation:Location" xmi:id="_fwpnx_8nEd-hWJO6cv3VJA" x="27" y="-18"/>
</children>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_5gZEYKY3EeSQZvr8taS8TA" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Port" href="ProducerConsumer.uml#_DtWn4DLcEd2qeKRLMdIx_A"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_fwpAsf8nEd-hWJO6cv3VJA" x="117" y="36"/>
</children>
@@ -829,11 +890,11 @@
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_euK3Ev8nEd-hWJO6cv3VJA" key="QualifiedNameDepth" value="1000"/>
</eAnnotations>
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_JVivMFWlEeKOivupHOJ8Ew" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Jve5MFWlEeKOivupHOJ8Ew" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JvfgQFWlEeKOivupHOJ8Ew" key="StereotypeList" value="FCM::Port"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JvfgQVWlEeKOivupHOJ8Ew" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JvfgQlWlEeKOivupHOJ8Ew" key="PropStereoDisplay" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_JvfgQ1WlEeKOivupHOJ8Ew" key="StereotypePropertyLocation" value="Compartment"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_97unQKY3EeSQZvr8taS8TA" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_97unQaY3EeSQZvr8taS8TA" key="StereotypeList" value="FCM::Port"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_97unQqY3EeSQZvr8taS8TA" key="Stereotype_Presentation_Kind" value="IconStereotype"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_97unQ6Y3EeSQZvr8taS8TA" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_97unRKY3EeSQZvr8taS8TA" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_euK3E_8nEd-hWJO6cv3VJA" type="5125">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_DRgOQFZXEeKKZs15rvNNjA" source="CustomAppearance_Annotation">
@@ -844,6 +905,11 @@
<children xmi:type="notation:DecorationNode" xmi:id="_euK3Ff8nEd-hWJO6cv3VJA" type="6029">
<layoutConstraint xmi:type="notation:Location" xmi:id="_euK3Fv8nEd-hWJO6cv3VJA" x="25" y="-10"/>
</children>
+ <styles xmi:type="notation:StringListValueStyle" xmi:id="_4rHpQKY3EeSQZvr8taS8TA" name="maskLabel">
+ <stringListValue>name</stringListValue>
+ <stringListValue>derived</stringListValue>
+ <stringListValue>type</stringListValue>
+ </styles>
<element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_euJo8f8nEd-hWJO6cv3VJA" x="-10" y="27"/>
</children>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.uml
index 8f0b876fe97..79663453c62 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.uml
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/examples/ProducerConsumer.uml
@@ -1,36 +1,36 @@
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Alloc="http://www.eclipse.org/papyrus/Alloc/1" xmlns:C_Cpp="http://www.eclipse.org/papyrus/C_Cpp/1" xmlns:FCM="http://www.eclipse.org/papyrus/FCM/1" xmlns:GCM="http://www.eclipse.org/papyrus/GCM/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/Alloc/1 http://www.eclipse.org/papyrus/MARTE/1#//Alloc http://www.eclipse.org/papyrus/GCM/1 http://www.eclipse.org/papyrus/MARTE/1#//GCM">
<uml:Model xmi:id="_O6TiIDLUEd26WNosUASSSw" name="ProducerConsumer">
- <packageImport xmi:id="_O6TiITLUEd26WNosUASSSw">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_O6TiITLUEd26WNosUASSSw">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
- <packageImport xmi:id="_Bc1WIFW4Ed63BrxiKsw-0Q">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_Bc1WIFW4Ed63BrxiKsw-0Q">
<importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/core.uml#_O6TiIDLUEd26WNosUASSSw"/>
</packageImport>
- <packageImport xmi:id="_rwBsMP7AEd6Zw96O-tCw7A">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_rwBsMP7AEd6Zw96O-tCw7A">
<importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
</packageImport>
- <packageImport xmi:id="_R8d6YP93Ed6628OhKk_dpg">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_R8d6YP93Ed6628OhKk_dpg">
<importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/fifo.uml#_ePwqkHLmEd6R5tffIPrlPg"/>
</packageImport>
<packagedElement xmi:type="uml:Package" xmi:id="_LOqIEDLaEd2qeKRLMdIx_A" name="components">
<packagedElement xmi:type="uml:Package" xmi:id="_tyiqsM__Ed-TP80eVS-2Rg" name="PullConsumer">
- <ownedComment xmi:id="_-Hd2MDecEeGPyrZ5I3hMlA" annotatedElement="_tyiqsc__Ed-TP80eVS-2Rg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_-Hd2MDecEeGPyrZ5I3hMlA" annotatedElement="_tyiqsc__Ed-TP80eVS-2Rg">
<body>Variant of the consumper component that uses a &quot;pull style&quot;, i.e. actively demands whether new data is available. Since the component is active, it needs to have its own thread. This is realized by the combination of the lifecycle port with a container rule that intercepts the lifecycle operations and executes the activation operation in its own thread.
Use the context menu to find out that the PullConsumer supports the &quot;runStartThread&quot; interceptor which intercepts the lifecycle port.</body>
</ownedComment>
- <ownedComment xmi:id="_0D64MDedEeGPyrZ5I3hMlA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_0D64MDedEeGPyrZ5I3hMlA">
<annotatedElement xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
<body>Part of the Qompass model library. Provides the specific port &quot;lc&quot; (short for lifecycle). The &quot;activate&quot; operation of this port is called by generated boot-code after instantiation and configuration of a component. The deactivation is called before disposing a component</body>
</ownedComment>
<packagedElement xmi:type="uml:Class" xmi:id="_tyiqsc__Ed-TP80eVS-2Rg" name="PullConsumer_impl">
- <generalization xmi:id="_tyiqss__Ed-TP80eVS-2Rg">
+ <generalization xmi:type="uml:Generalization" xmi:id="_tyiqss__Ed-TP80eVS-2Rg">
<general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
</generalization>
<ownedAttribute xmi:type="uml:Port" xmi:id="_tyiqs8__Ed-TP80eVS-2Rg" name="p" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" aggregation="composite"/>
- <interfaceRealization xmi:id="_DHTiQDF7EeCpQdhNuFCtew" name="derived realization of ILifeCycle" client="_tyiqsc__Ed-TP80eVS-2Rg">
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_DHTiQDF7EeCpQdhNuFCtew" name="derived realization of ILifeCycle" client="_tyiqsc__Ed-TP80eVS-2Rg">
<supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
- <contract href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ <contract xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
</interfaceRealization>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_tyjRwc__Ed-TP80eVS-2Rg" name="activate" specification="_tyjRy8__Ed-TP80eVS-2Rg">
<language>C/C++</language>
@@ -45,80 +45,80 @@ for (int i = 0; i&lt;25; i++) {
cout &lt;&lt; &quot;finished waiting&quot; &lt;&lt; endl;
</body>
</ownedBehavior>
- <ownedOperation xmi:id="_tyjRy8__Ed-TP80eVS-2Rg" name="activate" method="_tyjRwc__Ed-TP80eVS-2Rg"/>
- <ownedOperation xmi:id="_tyjRzM__Ed-TP80eVS-2Rg" name="deactivate"/>
- <ownedOperation xmi:id="_FJPu4CxyEeOMQpc6Y-MAJw" name="configuration_complete"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_tyjRy8__Ed-TP80eVS-2Rg" name="activate" method="_tyjRwc__Ed-TP80eVS-2Rg"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_tyjRzM__Ed-TP80eVS-2Rg" name="deactivate"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_FJPu4CxyEeOMQpc6Y-MAJw" name="configuration_complete"/>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_OGM88DLaEd2qeKRLMdIx_A" name="PushConsumer">
- <ownedComment xmi:id="_XfnmsDecEeGPyrZ5I3hMlA" annotatedElement="_oqZNUDLaEd2qeKRLMdIx_A">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_XfnmsDecEeGPyrZ5I3hMlA" annotatedElement="_oqZNUDLaEd2qeKRLMdIx_A">
<body>Push variant of a consumer, i.e. the consumer is called whenever new data is availble. It is not itself active.</body>
</ownedComment>
- <ownedComment xmi:id="_gpptUDecEeGPyrZ5I3hMlA" annotatedElement="_4KiE8DLbEd2qeKRLMdIx_A">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_gpptUDecEeGPyrZ5I3hMlA" annotatedElement="_4KiE8DLbEd2qeKRLMdIx_A">
<body>A MARTE flow port. The synchronisation between MARTE and FCM stereotype is automatic, yet it is possible to refine on FCM level, whether the port uses a push or pull style. In this case, the port uses a push style by setting the port kind to &quot;PushConsumer&quot;.</body>
</ownedComment>
- <ownedComment xmi:id="_dufoABo3EeONpa5JgejICQ" annotatedElement="_LjkIoBo3EeONpa5JgejICQ">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_dufoABo3EeONpa5JgejICQ" annotatedElement="_LjkIoBo3EeONpa5JgejICQ">
<body>The dependency assures that the type PubData is known within the generated code for PushConsumer_impl</body>
</ownedComment>
<packagedElement xmi:type="uml:Class" xmi:id="_oqZNUDLaEd2qeKRLMdIx_A" name="PushConsumer_impl">
- <generalization xmi:id="_NItbAP94Ed6628OhKk_dpg">
+ <generalization xmi:type="uml:Generalization" xmi:id="_NItbAP94Ed6628OhKk_dpg">
<general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_-WNegNtxEd6nqsBVkgJEEA"/>
</generalization>
<ownedAttribute xmi:type="uml:Port" xmi:id="_4KiE8DLbEd2qeKRLMdIx_A" name="p" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" aggregation="composite"/>
- <interfaceRealization xmi:id="_Z16ywDF8EeCpQdhNuFCtew" name="derived realization of ILifeCycle" client="_oqZNUDLaEd2qeKRLMdIx_A">
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_Z16ywDF8EeCpQdhNuFCtew" name="derived realization of ILifeCycle" client="_oqZNUDLaEd2qeKRLMdIx_A">
<supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
- <contract href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
+ <contract xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_T3li0Dz6Ed-v9PxuTj6Elw"/>
</interfaceRealization>
- <interfaceRealization xmi:id="_jzyZMBphEeONpa5JgejICQ" name="derived realization of D_Push_PubData" client="_oqZNUDLaEd2qeKRLMdIx_A" supplier="_EdXskBo4EeONpa5JgejICQ" contract="_EdXskBo4EeONpa5JgejICQ"/>
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_jzyZMBphEeONpa5JgejICQ" name="derived realization of D_Push_PubData" client="_oqZNUDLaEd2qeKRLMdIx_A" supplier="_EdXskBo4EeONpa5JgejICQ" contract="_EdXskBo4EeONpa5JgejICQ"/>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_RoXdMP94Ed6628OhKk_dpg" name="activate" specification="_uOmgID15Ed-qiK1VZWszhA">
<language>C/C++</language>
<body>cout &lt;&lt; &quot;initialization of push consumer&quot; &lt;&lt; endl;
</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_qUSHYPdMEd-KM6l7lmIPkw" name="push" specification="_j0ZdMBphEeONpa5JgejICQ">
- <ownedParameter xmi:id="_Fnm7UCxxEeOMQpc6Y-MAJw" name="data" type="_wFJ3IP91Ed6Jt8e-UqrRdQ">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_Fnm7UCxxEeOMQpc6Y-MAJw" name="data" type="_wFJ3IP91Ed6Jt8e-UqrRdQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FoK8ACxxEeOMQpc6Y-MAJw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FoWiMCxxEeOMQpc6Y-MAJw" value="1"/>
</ownedParameter>
<language>C/C++</language>
<body>cout &lt;&lt; &quot;received data: x = &quot; &lt;&lt; data.x &lt;&lt; &quot; y = &quot; &lt;&lt; data.y &lt;&lt; endl;</body>
</ownedBehavior>
- <ownedOperation xmi:id="_uOmgID15Ed-qiK1VZWszhA" name="activate" method="_RoXdMP94Ed6628OhKk_dpg"/>
- <ownedOperation xmi:id="_uOtN0D15Ed-qiK1VZWszhA" name="deactivate"/>
- <ownedOperation xmi:id="_j0ZdMBphEeONpa5JgejICQ" name="push" method="_qUSHYPdMEd-KM6l7lmIPkw">
- <ownedParameter xmi:id="_j1XGgBphEeONpa5JgejICQ" name="data" type="_wFJ3IP91Ed6Jt8e-UqrRdQ">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_uOmgID15Ed-qiK1VZWszhA" name="activate" method="_RoXdMP94Ed6628OhKk_dpg"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_uOtN0D15Ed-qiK1VZWszhA" name="deactivate"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_j0ZdMBphEeONpa5JgejICQ" name="push" method="_qUSHYPdMEd-KM6l7lmIPkw">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_j1XGgBphEeONpa5JgejICQ" name="data" type="_wFJ3IP91Ed6Jt8e-UqrRdQ">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_j2FfQBphEeONpa5JgejICQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_j2Uv0BphEeONpa5JgejICQ" value="1"/>
</ownedParameter>
</ownedOperation>
- <ownedOperation xmi:id="_FemwUCxxEeOMQpc6Y-MAJw" name="configuration_complete"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_FemwUCxxEeOMQpc6Y-MAJw" name="configuration_complete"/>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_LjkIoBo3EeONpa5JgejICQ" name="Dependency1" client="_oqZNUDLaEd2qeKRLMdIx_A" supplier="_wFJ3IP91Ed6Jt8e-UqrRdQ"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_Tp4n8DLaEd2qeKRLMdIx_A" name="interfaces">
<packagedElement xmi:type="uml:DataType" xmi:id="_wFJ3IP91Ed6Jt8e-UqrRdQ" name="PubData">
- <ownedAttribute xmi:id="_yywF0P91Ed6Jt8e-UqrRdQ" name="y" isUnique="false" aggregation="composite">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_yywF0P91Ed6Jt8e-UqrRdQ" name="y" isUnique="false" aggregation="composite">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
</ownedAttribute>
- <ownedAttribute xmi:id="_zUgvEP91Ed6Jt8e-UqrRdQ" name="x" isUnique="false" aggregation="composite">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_zUgvEP91Ed6Jt8e-UqrRdQ" name="x" isUnique="false" aggregation="composite">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
</ownedAttribute>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_etOZkDLaEd2qeKRLMdIx_A" name="Producer">
- <ownedComment xmi:id="_GzyJQDehEeGPyrZ5I3hMlA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_GzyJQDehEeGPyrZ5I3hMlA">
<annotatedElement xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
<body>Let the producer instance execute by the main thread by realising the specific port &quot;start&quot;, inherited from CStart (part of the Qompass &quot;core&quot; model library).
</body>
</ownedComment>
<packagedElement xmi:type="uml:Class" xmi:id="_IfjoETLbEd2qeKRLMdIx_A" name="Producer_impl">
- <generalization xmi:id="_34FjAPx3Ed6O2oOTPfeAMA">
+ <generalization xmi:type="uml:Generalization" xmi:id="_34FjAPx3Ed6O2oOTPfeAMA">
<general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
</generalization>
<ownedAttribute xmi:type="uml:Port" xmi:id="_DtWn4DLcEd2qeKRLMdIx_A" name="q" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" aggregation="composite"/>
- <interfaceRealization xmi:id="_jkNdADF8EeCpQdhNuFCtew" name="derived realization of IStart" client="_IfjoETLbEd2qeKRLMdIx_A">
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_jkNdADF8EeCpQdhNuFCtew" name="derived realization of IStart" client="_IfjoETLbEd2qeKRLMdIx_A">
<supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
- <contract href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ <contract xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
</interfaceRealization>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_yXNVoKF4Ed6FqJCjEUrkqQ" name="run" specification="_dH4RIKF4Ed6FqJCjEUrkqQ">
<language>C/C++</language>
@@ -134,34 +134,34 @@ for (int i = 0; i&lt;20; i++) {
}
</body>
</ownedBehavior>
- <ownedOperation xmi:id="_dH4RIKF4Ed6FqJCjEUrkqQ" name="run" method="_yXNVoKF4Ed6FqJCjEUrkqQ"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_dH4RIKF4Ed6FqJCjEUrkqQ" name="run" method="_yXNVoKF4Ed6FqJCjEUrkqQ"/>
</packagedElement>
<packagedElement xmi:type="uml:Dependency" xmi:id="_dNpvUBo4EeONpa5JgejICQ" name="Dependency1" client="_IfjoETLbEd2qeKRLMdIx_A" supplier="_wFJ3IP91Ed6Jt8e-UqrRdQ"/>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_XLQjUDLiEd2RVeNawwNNzg" name="System">
<packagedElement xmi:type="uml:Class" xmi:id="_bYJagDLiEd2RVeNawwNNzg" name="SystemPull_impl">
- <ownedComment xmi:id="_JuaHYDbdEeGdqp2YT1LwWw" annotatedElement="_gV1cgDLiEd2RVeNawwNNzg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_JuaHYDbdEeGdqp2YT1LwWw" annotatedElement="_gV1cgDLiEd2RVeNawwNNzg">
<body>Pull consumer is executed by its own thread. This is specified via a container service (runStartThread)</body>
</ownedComment>
- <ownedComment xmi:id="_lMxBQDeeEeGPyrZ5I3hMlA" annotatedElement="_efVI0E2rEeGl8qrc8BM7vA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_lMxBQDeeEeGPyrZ5I3hMlA" annotatedElement="_efVI0E2rEeGl8qrc8BM7vA">
<body>Since producer and consumer call operations (the latter to actively retrieve data), the two ports would be incompatible without using a specific interaction component, in this case. a FIFO.
Use the context menu on a selected connector to specify the interaction component.</body>
</ownedComment>
- <ownedAttribute xmi:id="_gV1cgDLiEd2RVeNawwNNzg" name="con" visibility="public" type="_tyiqsc__Ed-TP80eVS-2Rg" isUnique="false" aggregation="composite">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_gV1cgDLiEd2RVeNawwNNzg" name="con" visibility="public" type="_tyiqsc__Ed-TP80eVS-2Rg" isUnique="false" aggregation="composite">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dCT24G6JEeGqWMX2LwdLDw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dCUd8G6JEeGqWMX2LwdLDw" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_dCWTIG6JEeGqWMX2LwdLDw">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
- <ownedAttribute xmi:id="_i-I7gDLiEd2RVeNawwNNzg" name="prod" visibility="public" type="_IfjoETLbEd2qeKRLMdIx_A" isUnique="false" aggregation="composite">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_i-I7gDLiEd2RVeNawwNNzg" name="prod" visibility="public" type="_IfjoETLbEd2qeKRLMdIx_A" isUnique="false" aggregation="composite">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_esReUG6JEeGqWMX2LwdLDw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_esSscG6JEeGqWMX2LwdLDw" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_esUhoG6JEeGqWMX2LwdLDw">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
- <ownedAttribute xmi:id="_d2B8ABSoEeOUifYpcO0mcw" name="main" visibility="public" aggregation="composite">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_d2B8ABSoEeOUifYpcO0mcw" name="main" visibility="public" aggregation="composite">
<type xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_SiY_AP-EEd6628OhKk_dpg"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_jrf6kBSoEeOUifYpcO0mcw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_jrtV8BSoEeOUifYpcO0mcw" value="1"/>
@@ -169,7 +169,7 @@ Use the context menu on a selected connector to specify the interaction componen
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
- <ownedAttribute xmi:id="_ei8sYBSoEeOUifYpcO0mcw" name="pullConThread" visibility="public" aggregation="composite">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_ei8sYBSoEeOUifYpcO0mcw" name="pullConThread" visibility="public" aggregation="composite">
<type xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_SiY_AP-EEd6628OhKk_dpg"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_mx3OkBSoEeOUifYpcO0mcw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_myNz4BSoEeOUifYpcO0mcw" value="1"/>
@@ -177,38 +177,38 @@ Use the context menu on a selected connector to specify the interaction componen
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
- <ownedConnector xmi:id="_efVI0E2rEeGl8qrc8BM7vA" name="fifoconnector">
- <end xmi:id="_efVv4E2rEeGl8qrc8BM7vA" partWithPort="_i-I7gDLiEd2RVeNawwNNzg" role="_DtWn4DLcEd2qeKRLMdIx_A">
+ <ownedConnector xmi:type="uml:Connector" xmi:id="_efVI0E2rEeGl8qrc8BM7vA" name="fifoconnector">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="_efVv4E2rEeGl8qrc8BM7vA" partWithPort="_i-I7gDLiEd2RVeNawwNNzg" role="_DtWn4DLcEd2qeKRLMdIx_A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_efVv4k2rEeGl8qrc8BM7vA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_efVv4U2rEeGl8qrc8BM7vA" value="1"/>
</end>
- <end xmi:id="_efWW8E2rEeGl8qrc8BM7vA" partWithPort="_gV1cgDLiEd2RVeNawwNNzg" role="_tyiqs8__Ed-TP80eVS-2Rg">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="_efWW8E2rEeGl8qrc8BM7vA" partWithPort="_gV1cgDLiEd2RVeNawwNNzg" role="_tyiqs8__Ed-TP80eVS-2Rg">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_efWW8k2rEeGl8qrc8BM7vA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_efWW8U2rEeGl8qrc8BM7vA" value="1"/>
</end>
</ownedConnector>
</packagedElement>
<packagedElement xmi:type="uml:Class" xmi:id="_iP8c4NCREd-hqYHBJe17_Q" name="SystemPush_impl">
- <ownedComment xmi:id="_KOEwwDefEeGPyrZ5I3hMlA" annotatedElement="_iP8c49CREd-hqYHBJe17_Q">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_KOEwwDefEeGPyrZ5I3hMlA" annotatedElement="_iP8c49CREd-hqYHBJe17_Q">
<body>The push consumer provides the interface that the producer uses (requires), no specific connector is required</body>
</ownedComment>
- <ownedAttribute xmi:id="_iP8c4dCREd-hqYHBJe17_Q" name="con" visibility="public" type="_oqZNUDLaEd2qeKRLMdIx_A" isUnique="false" aggregation="composite">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_iP8c4dCREd-hqYHBJe17_Q" name="con" visibility="public" type="_oqZNUDLaEd2qeKRLMdIx_A" isUnique="false" aggregation="composite">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_d0HHQG6JEeGqWMX2LwdLDw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_d0HuUG6JEeGqWMX2LwdLDw" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_d0I8cG6JEeGqWMX2LwdLDw">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
- <ownedAttribute xmi:id="_iP8c4tCREd-hqYHBJe17_Q" name="prod" visibility="public" type="_IfjoETLbEd2qeKRLMdIx_A" isUnique="false" aggregation="composite">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_iP8c4tCREd-hqYHBJe17_Q" name="prod" visibility="public" type="_IfjoETLbEd2qeKRLMdIx_A" isUnique="false" aggregation="composite">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_fbEeAG6JEeGqWMX2LwdLDw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_fbFFEG6JEeGqWMX2LwdLDw" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_fbGTMG6JEeGqWMX2LwdLDw">
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
- <ownedConnector xmi:id="_iP8c49CREd-hqYHBJe17_Q" name="qpconnector">
- <end xmi:id="_iP8c5NCREd-hqYHBJe17_Q" partWithPort="_iP8c4tCREd-hqYHBJe17_Q" role="_DtWn4DLcEd2qeKRLMdIx_A"/>
- <end xmi:id="_iP8c5dCREd-hqYHBJe17_Q" partWithPort="_iP8c4dCREd-hqYHBJe17_Q" role="_4KiE8DLbEd2qeKRLMdIx_A"/>
+ <ownedConnector xmi:type="uml:Connector" xmi:id="_iP8c49CREd-hqYHBJe17_Q" name="qpconnector">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="_iP8c5NCREd-hqYHBJe17_Q" partWithPort="_iP8c4tCREd-hqYHBJe17_Q" role="_DtWn4DLcEd2qeKRLMdIx_A"/>
+ <end xmi:type="uml:ConnectorEnd" xmi:id="_iP8c5dCREd-hqYHBJe17_Q" partWithPort="_iP8c4dCREd-hqYHBJe17_Q" role="_4KiE8DLbEd2qeKRLMdIx_A"/>
</ownedConnector>
</packagedElement>
<packagedElement xmi:type="uml:Abstraction" xmi:id="_9dY5YBSqEeOUifYpcO0mcw" name="Allocate" client="_gV1cgDLiEd2RVeNawwNNzg" supplier="_ei8sYBSoEeOUifYpcO0mcw"/>
@@ -216,12 +216,12 @@ Use the context menu on a selected connector to specify the interaction componen
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_v3fMgDLiEd2RVeNawwNNzg" name="platform">
- <ownedComment xmi:id="_jhF3sDegEeGPyrZ5I3hMlA" annotatedElement="_zY9vMDLiEd2RVeNawwNNzg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_jhF3sDegEeGPyrZ5I3hMlA" annotatedElement="_zY9vMDLiEd2RVeNawwNNzg">
<body>Simple single node configuration. TargetOS is set to Linux, but will work on other OS (supporting POSIX threads)</body>
</ownedComment>
<packagedElement xmi:type="uml:Node" xmi:id="_zY9vMDLiEd2RVeNawwNNzg" name="MonoNode"/>
<packagedElement xmi:type="uml:Class" xmi:id="_tZvNQDefEeGPyrZ5I3hMlA" name="Platform">
- <ownedAttribute xmi:id="_4HAoQDefEeGPyrZ5I3hMlA" name="monoNode" visibility="public" type="_zY9vMDLiEd2RVeNawwNNzg" aggregation="composite">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_4HAoQDefEeGPyrZ5I3hMlA" name="monoNode" visibility="public" type="_zY9vMDLiEd2RVeNawwNNzg" aggregation="composite">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_6WEg0DefEeGPyrZ5I3hMlA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_6WFu8DefEeGPyrZ5I3hMlA" value="1"/>
<defaultValue xmi:type="uml:LiteralString" xmi:id="_6WHkIDefEeGPyrZ5I3hMlA">
@@ -234,18 +234,18 @@ Use the context menu on a selected connector to specify the interaction componen
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_234GEDLiEd2RVeNawwNNzg" name="deployment">
- <ownedComment xmi:id="_VMRFgDOJEeC7y-fR3OSnFw">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_VMRFgDOJEeC7y-fR3OSnFw">
<body>This configuration requires the installation of the OTF trace library.&lt;br /></body>
</ownedComment>
- <ownedComment xmi:id="_gdeyMDefEeGPyrZ5I3hMlA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_gdeyMDefEeGPyrZ5I3hMlA">
<body>Cross references to diagrams</body>
</ownedComment>
<packagedElement xmi:type="uml:Package" xmi:id="_xBxwoDOFEeCldqx_51Yicg" name="monoPush">
<packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_xB3QMDOFEeCldqx_51Yicg" name="mainInstance" classifier="_iP8c4NCREd-hqYHBJe17_Q">
- <slot xmi:id="_xB6TgDOFEeCldqx_51Yicg" definingFeature="_iP8c4dCREd-hqYHBJe17_Q">
+ <slot xmi:type="uml:Slot" xmi:id="_xB6TgDOFEeCldqx_51Yicg" definingFeature="_iP8c4dCREd-hqYHBJe17_Q">
<value xmi:type="uml:InstanceValue" xmi:id="_xB66kDOFEeCldqx_51Yicg" instance="_xB5scDOFEeCldqx_51Yicg"/>
</slot>
- <slot xmi:id="_xB8IsDOFEeCldqx_51Yicg" definingFeature="_iP8c4tCREd-hqYHBJe17_Q">
+ <slot xmi:type="uml:Slot" xmi:id="_xB8IsDOFEeCldqx_51Yicg" definingFeature="_iP8c4tCREd-hqYHBJe17_Q">
<value xmi:type="uml:InstanceValue" xmi:id="_xB8IsTOFEeCldqx_51Yicg" instance="_xB7hoDOFEeCldqx_51Yicg"/>
</slot>
</packagedElement>
@@ -255,22 +255,22 @@ Use the context menu on a selected connector to specify the interaction componen
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_zwMLcLF4EeC9yscvWqW-eg" name="monoPull">
<packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_zwQc4bF4EeC9yscvWqW-eg" name="mainInstance" classifier="_bYJagDLiEd2RVeNawwNNzg">
- <slot xmi:id="_zwY_wLF4EeC9yscvWqW-eg" definingFeature="_gV1cgDLiEd2RVeNawwNNzg">
+ <slot xmi:type="uml:Slot" xmi:id="_zwY_wLF4EeC9yscvWqW-eg" definingFeature="_gV1cgDLiEd2RVeNawwNNzg">
<value xmi:type="uml:InstanceValue" xmi:id="_zwZm0LF4EeC9yscvWqW-eg" instance="_zwUuUbF4EeC9yscvWqW-eg"/>
</slot>
- <slot xmi:id="_zwaN4LF4EeC9yscvWqW-eg" definingFeature="_i-I7gDLiEd2RVeNawwNNzg">
+ <slot xmi:type="uml:Slot" xmi:id="_zwaN4LF4EeC9yscvWqW-eg" definingFeature="_i-I7gDLiEd2RVeNawwNNzg">
<value xmi:type="uml:InstanceValue" xmi:id="_zwaN4bF4EeC9yscvWqW-eg" instance="_zwZm0bF4EeC9yscvWqW-eg"/>
</slot>
- <slot xmi:id="_RgZwMBmXEeOKbZGMG408tQ" definingFeature="_d2B8ABSoEeOUifYpcO0mcw">
+ <slot xmi:type="uml:Slot" xmi:id="_RgZwMBmXEeOKbZGMG408tQ" definingFeature="_d2B8ABSoEeOUifYpcO0mcw">
<value xmi:type="uml:InstanceValue" xmi:id="_Rgl9cBmXEeOKbZGMG408tQ" instance="_RgG1QBmXEeOKbZGMG408tQ"/>
</slot>
- <slot xmi:id="_RhD3gBmXEeOKbZGMG408tQ" definingFeature="_ei8sYBSoEeOUifYpcO0mcw">
+ <slot xmi:type="uml:Slot" xmi:id="_RhD3gBmXEeOKbZGMG408tQ" definingFeature="_ei8sYBSoEeOUifYpcO0mcw">
<value xmi:type="uml:InstanceValue" xmi:id="_RhPdsBmXEeOKbZGMG408tQ" instance="_RgyKsBmXEeOKbZGMG408tQ"/>
</slot>
</packagedElement>
<packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_zwUHQLF4EeC9yscvWqW-eg" name="mainInstance.fifoconnector">
<classifier xmi:type="uml:Class" href="pathmap://QML_CORE/fifo.uml#_Y1jF8HPpEd6R5tffIPrlPg"/>
- <slot xmi:id="_zwUHQbF4EeC9yscvWqW-eg">
+ <slot xmi:type="uml:Slot" xmi:id="_zwUHQbF4EeC9yscvWqW-eg">
<definingFeature xmi:type="uml:Property" href="pathmap://QML_CORE/fifo.uml#_XDRnoHUIEd6R5tffIPrlPg"/>
<value xmi:type="uml:LiteralInteger" xmi:id="_zwUuULF4EeC9yscvWqW-eg" name="value for m_size" value="30">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
@@ -285,7 +285,7 @@ Use the context menu on a selected connector to specify the interaction componen
</packagedElement>
<packagedElement xmi:type="uml:InstanceSpecification" xmi:id="_RgyKsBmXEeOKbZGMG408tQ" name="mainInstance.pullConThread">
<classifier xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_SiY_AP-EEd6628OhKk_dpg"/>
- <slot xmi:id="_XHDoQBqrEeOeNvEu6098mA">
+ <slot xmi:type="uml:Slot" xmi:id="_XHDoQBqrEeOeNvEu6098mA">
<definingFeature xmi:type="uml:Property" href="pathmap://QML_CORE/core.uml#_rVfYoMGJEd-Mveea1W_olA"/>
<value xmi:type="uml:LiteralInteger" xmi:id="_XHWjMBqrEeOeNvEu6098mA" name="value for priority" value="5">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
@@ -299,96 +299,72 @@ Use the context menu on a selected connector to specify the interaction componen
<packagedElement xmi:type="uml:Package" xmi:id="_-Kv-IBoaEeONpa5JgejICQ" name="components">
<packagedElement xmi:type="uml:Package" xmi:id="_-LBD4BoaEeONpa5JgejICQ" name="interfaces">
<packagedElement xmi:type="uml:Interface" xmi:id="_-LSwsBoaEeONpa5JgejICQ" name="D_PullConsumer_PubData">
- <ownedOperation xmi:id="_-Lyf8BoaEeONpa5JgejICQ" name="pull">
- <ownedParameter xmi:id="_-MGpABoaEeONpa5JgejICQ" name="ret" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" direction="return"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_-Lyf8BoaEeONpa5JgejICQ" name="pull">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_-MGpABoaEeONpa5JgejICQ" name="ret" type="_wFJ3IP91Ed6Jt8e-UqrRdQ" direction="return"/>
</ownedOperation>
- <ownedOperation xmi:id="_-Md1YBoaEeONpa5JgejICQ" name="hasData">
- <ownedParameter xmi:id="_-MqCoBoaEeONpa5JgejICQ" name="ret" direction="return">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_-Md1YBoaEeONpa5JgejICQ" name="hasData">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_-MqCoBoaEeONpa5JgejICQ" name="ret" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_Bv7l0B-VEd6nGq8wpI2tjg"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:Interface" xmi:id="_EdXskBo4EeONpa5JgejICQ" name="D_Push_PubData">
- <ownedOperation xmi:id="_EeDpEBo4EeONpa5JgejICQ" name="push">
- <ownedParameter xmi:id="_Eeef0Bo4EeONpa5JgejICQ" name="data" type="_wFJ3IP91Ed6Jt8e-UqrRdQ"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_EeDpEBo4EeONpa5JgejICQ" name="push">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_Eeef0Bo4EeONpa5JgejICQ" name="data" type="_wFJ3IP91Ed6Jt8e-UqrRdQ"/>
</ownedOperation>
</packagedElement>
</packagedElement>
</packagedElement>
</packagedElement>
</packagedElement>
- <profileApplication xmi:id="_O6TiIjLUEd26WNosUASSSw">
- <eAnnotations xmi:id="_O6TiIzLUEd26WNosUASSSw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_O6TiIjLUEd26WNosUASSSw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_O6TiIzLUEd26WNosUASSSw" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
</eAnnotations>
- <appliedProfile href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://UML_PROFILES/Standard.profile.uml#_0"/>
</profileApplication>
- <profileApplication xmi:id="_GcC0cAHtEd6HSdiss9GQ0A">
- <eAnnotations xmi:id="_Gd1kMAHtEd6HSdiss9GQ0A" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_GcC0cAHtEd6HSdiss9GQ0A">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Gd1kMAHtEd6HSdiss9GQ0A" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/C_Cpp/1#/"/>
</eAnnotations>
- <appliedProfile href="pathmap://PapyrusC_Cpp_PROFILES/C_Cpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://PapyrusC_Cpp_PROFILES/C_Cpp.profile.uml#_j9REUByGEduN1bTiWJ0lyw"/>
</profileApplication>
- <profileApplication xmi:id="_z1TwgFW3Ed63BrxiKsw-0Q">
- <eAnnotations xmi:id="_z2GasFW3Ed63BrxiKsw-0Q" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_z1TwgFW3Ed63BrxiKsw-0Q">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_z2GasFW3Ed63BrxiKsw-0Q" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/FCM/1#/"/>
</eAnnotations>
- <appliedProfile href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://FCM_PROFILES/FCM.profile.uml#_5mvT0MtjEd2H_o0jIC6qDQ"/>
</profileApplication>
- <profileApplication xmi:id="_sfyAwEbjEd-l4NeVOJZDkA">
- <eAnnotations xmi:id="_siunEEbjEd-l4NeVOJZDkA" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_sfyAwEbjEd-l4NeVOJZDkA">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_siunEEbjEd-l4NeVOJZDkA" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//GCM"/>
</eAnnotations>
- <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_YgAioAPMEdyuUt-4qHuVvQ"/>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_YgAioAPMEdyuUt-4qHuVvQ"/>
</profileApplication>
- <profileApplication xmi:id="_popJkKmqEeCxII-g1_Lmeg">
- <eAnnotations xmi:id="_p1PbIKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_popJkKmqEeCxII-g1_Lmeg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_p1PbIKmqEeCxII-g1_Lmeg" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//HLAM"/>
</eAnnotations>
- <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_yNSZIAPMEdyuUt-4qHuVvQ"/>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_yNSZIAPMEdyuUt-4qHuVvQ"/>
</profileApplication>
- <profileApplication xmi:id="_tZuBwE0tEeG4IqgA7gSE6w">
- <eAnnotations xmi:id="_tisXkE0tEeG4IqgA7gSE6w" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_tZuBwE0tEeG4IqgA7gSE6w">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_tisXkE0tEeG4IqgA7gSE6w" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/papyrus/MARTE/1#//Alloc"/>
</eAnnotations>
- <appliedProfile href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_ar8OsAPMEdyuUt-4qHuVvQ"/>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://Papyrus_PROFILES/MARTE.profile.uml#_ar8OsAPMEdyuUt-4qHuVvQ"/>
</profileApplication>
</uml:Model>
<FCM:DerivedElement xmi:id="_B9o7sP6yEd6Ie_kieu_3CQ" base_Element="_dH4RIKF4Ed6FqJCjEUrkqQ">
<source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
</FCM:DerivedElement>
<FCM:Port xmi:id="_GofhQP6yEd6Ie_kieu_3CQ" base_Port="_4KiE8DLbEd2qeKRLMdIx_A">
- <kind href="pathmap://QML_CORE/core.uml#_pE6GUFR1Ed6GqrP6fkWBoQ"/>
+ <kind xmi:type="FCM:PortKind" href="pathmap://QML_CORE/core.uml#_pE6GUFR1Ed6GqrP6fkWBoQ"/>
</FCM:Port>
<FCM:Port xmi:id="_IWQqoP6yEd6Ie_kieu_3CQ" base_Port="_DtWn4DLcEd2qeKRLMdIx_A">
- <kind href="pathmap://QML_CORE/core.uml#_qOK0cFR1Ed6GqrP6fkWBoQ"/>
+ <kind xmi:type="FCM:PortKind" href="pathmap://QML_CORE/core.uml#_qOK0cFR1Ed6GqrP6fkWBoQ"/>
</FCM:Port>
- <FCM:DerivedElement xmi:id="_RwGb8P6_Ed6Zw96O-tCw7A"/>
- <FCM:DerivedElement xmi:id="_RxVyEP6_Ed6Zw96O-tCw7A"/>
<C_Cpp:Include xmi:id="_7SAnAP76Ed6Zw96O-tCw7A" body="#include &lt;unistd.h>&#xA;#include &lt;iostream>&#xA;using namespace std;" base_class="_IfjoETLbEd2qeKRLMdIx_A"/>
<C_Cpp:Include xmi:id="_Sa4nEP77Ed6Zw96O-tCw7A" body="#include &lt;iostream>&#xA;using namespace std;" base_class="_oqZNUDLaEd2qeKRLMdIx_A"/>
- <FCM:DerivedElement xmi:id="_RoIMoP94Ed6628OhKk_dpg"/>
- <FCM:DerivedElement xmi:id="_IFlIEARJEd--t-uhRn9OBA"/>
- <FCM:ContainerRule xmi:id="_b-TmAARJEd--t-uhRn9OBA">
- <portSet href="pathmap://QML_CORE/core.uml#__SL-kNtxEd6nqsBVkgJEEA"/>
- </FCM:ContainerRule>
- <FCM:DerivedElement xmi:id="_bmwhUARMEd-OidZzGKCpzg"/>
- <FCM:DerivedElement xmi:id="_xjNC4ATuEd-Zc_RSu20WjA"/>
- <FCM:DerivedElement xmi:id="_LZoQ4AVIEd-rcKh6R_xjRQ"/>
- <FCM:DerivedElement xmi:id="_oMpYkAWxEd-jrvNV_WQOlA"/>
- <FCM:DerivedElement xmi:id="_Fd6d0AnREd-co_m_wv4b6A"/>
- <FCM:DerivedElement xmi:id="_uLARMBGVEd-rfYlCjUOxJQ"/>
- <FCM:DerivedElement xmi:id="_qdjxQBGkEd-Jq_XWT8Mhpg"/>
- <FCM:DerivedElement xmi:id="_VOzfEBGlEd-Jq_XWT8Mhpg"/>
- <FCM:DerivedElement xmi:id="_N8BrMBI4Ed-3zOZ0RGapGA"/>
- <FCM:DerivedElement xmi:id="_jIS30BI8Ed-XjYZ05V-9-Q"/>
- <FCM:DerivedElement xmi:id="_E5UhUBJIEd-XjYZ05V-9-Q"/>
- <FCM:DerivedElement xmi:id="_THoRwBJWEd-QgZm_R1AKbA"/>
- <FCM:DerivedElement xmi:id="_z0CVcBQ2Ed-_dI0JopJMvQ"/>
- <FCM:DerivedElement xmi:id="_Ke_UsBb7Ed-u0pMEAnvpEQ"/>
- <FCM:DerivedElement xmi:id="_uOkD4D15Ed-qiK1VZWszhA">
- <source xmi:type="uml:Operation" href="pathmap://QML_CORE//sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
- </FCM:DerivedElement>
<FCM:DerivedElement xmi:id="_uOqKgD15Ed-qiK1VZWszhA" base_Element="_uOmgID15Ed-qiK1VZWszhA">
<source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_WHyq4Dz6Ed-v9PxuTj6Elw"/>
</FCM:DerivedElement>
@@ -396,9 +372,6 @@ Use the context menu on a selected connector to specify the interaction componen
<source xmi:type="uml:Operation" href="pathmap://QML_CORE/sysinterfaces.uml#_W7YrADz6Ed-v9PxuTj6Elw"/>
</FCM:DerivedElement>
<C_Cpp:Visibility xmi:id="_0VnhsD15Ed-qiK1VZWszhA" value="public" base_generalization="_NItbAP94Ed6628OhKk_dpg"/>
- <FCM:DerivedElement xmi:id="_a4LokD16Ed-qiK1VZWszhA">
- <source xmi:type="uml:Operation" href="pathmap://QML_CORE//sysinterfaces.uml#_C9IK4JsqEd61Eo3nmu3JhQ"/>
- </FCM:DerivedElement>
<FCM:DerivedElement xmi:id="_a4RvMD16Ed-qiK1VZWszhA" base_Element="_uOmgID15Ed-qiK1VZWszhA"/>
<FCM:DerivedElement xmi:id="_a4VZkD16Ed-qiK1VZWszhA" base_Element="_uOtN0D15Ed-qiK1VZWszhA"/>
<FCM:DerivedElement xmi:id="_cdXBMD17Ed-qiK1VZWszhA" base_Element="_uOmgID15Ed-qiK1VZWszhA"/>
@@ -413,21 +386,21 @@ Use the context menu on a selected connector to specify the interaction componen
</FCM:DerivedElement>
<C_Cpp:Include xmi:id="_11OtwPcaEd-KM6l7lmIPkw" body="#include &lt;unistd.h>&#xA;#include &lt;iostream>&#xA;using namespace std;" base_class="_tyiqsc__Ed-TP80eVS-2Rg"/>
<FCM:Target xmi:id="_LD_uICr7EeCfcI_SvPT4lw" base_Node="_zY9vMDLiEd2RVeNawwNNzg">
- <targetArch href="pathmap://QML_CORE/core.uml#_FYOqwF0OEd-12d_h0i1xhQ"/>
- <usedOS href="pathmap://QML_CORE/core.uml#_1eULwF0NEd-12d_h0i1xhQ"/>
+ <targetArch xmi:type="FCM:TargetArchitecture" href="pathmap://QML_CORE/core.uml#_FYOqwF0OEd-12d_h0i1xhQ"/>
+ <usedOS xmi:type="FCM:OperatingSystem" href="pathmap://QML_CORE/core.uml#_1eULwF0NEd-12d_h0i1xhQ"/>
</FCM:Target>
<FCM:DeploymentPlan xmi:id="_xB2CEDOFEeCldqx_51Yicg" mainInstance="_xB3QMDOFEeCldqx_51Yicg" base_Package="_xBxwoDOFEeCldqx_51Yicg"/>
<GCM:FlowPort xmi:id="_DwpFMJZ7EeCiU5xXzp1cKQ" direction="in" base_Port="_4KiE8DLbEd2qeKRLMdIx_A"/>
<GCM:FlowPort xmi:id="_NWXCQJZ7EeCiU5xXzp1cKQ" direction="in" base_Port="_tyiqs8__Ed-TP80eVS-2Rg"/>
<FCM:Port xmi:id="_tyjRzc__Ed-TP80eVS-2Rg" base_Port="_tyiqs8__Ed-TP80eVS-2Rg">
- <kind href="pathmap://QML_CORE/core.uml#_x5mL4FRxEd6GqrP6fkWBoQ"/>
+ <kind xmi:type="FCM:PortKind" href="pathmap://QML_CORE/core.uml#_x5mL4FRxEd6GqrP6fkWBoQ"/>
</FCM:Port>
<GCM:FlowPort xmi:id="_ow3PkJZ7EeCiU5xXzp1cKQ" direction="out" base_Port="_DtWn4DLcEd2qeKRLMdIx_A"/>
<FCM:DeploymentPlan xmi:id="_zwQc4LF4EeC9yscvWqW-eg" mainInstance="_zwQc4bF4EeC9yscvWqW-eg" base_Package="_zwMLcLF4EeC9yscvWqW-eg"/>
<Alloc:Allocate xmi:id="_vccHcE0tEeG4IqgA7gSE6w" base_Abstraction="_vcX2AE0tEeG4IqgA7gSE6w"/>
<Alloc:Allocate xmi:id="_wq1NME0tEeG4IqgA7gSE6w" base_Abstraction="_wqyJ4E0tEeG4IqgA7gSE6w"/>
<FCM:Connector xmi:id="_iADdkE2rEeGl8qrc8BM7vA" base_Connector="_efVI0E2rEeGl8qrc8BM7vA">
- <ic href="pathmap://QML_CORE/fifo.uml#_xQ_ccHUuEd6R5tffIPrlPg"/>
+ <ic xmi:type="FCM:InteractionComponent" href="pathmap://QML_CORE/fifo.uml#_xQ_ccHUuEd6R5tffIPrlPg"/>
</FCM:Connector>
<Alloc:Allocate xmi:id="_9fYdcBSqEeOUifYpcO0mcw" base_Abstraction="_9dY5YBSqEeOUifYpcO0mcw"/>
<Alloc:Allocate xmi:id="__ACX4BSqEeOUifYpcO0mcw" base_Abstraction="_--_2EBSqEeOUifYpcO0mcw"/>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.di b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.di
index 0469e9bbff3..99bf73ecb23 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.di
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.di
@@ -63,6 +63,9 @@
<children>
<emfPageIdentifier href="core.notation#_zCsUsHI3EeOCrdvV8oxOKA"/>
</children>
+ <children>
+ <emfPageIdentifier href="core.notation#_ljiPEKLvEeSBiP8ZTcBQrQ"/>
+ </children>
</children>
</windows>
</sashModel>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.notation b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.notation
index ccf01734912..a51afdbcfae 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.notation
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.notation
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:C_Cpp="http://www.eclipse.org/papyrus/C_Cpp/1" xmlns:FCM="http://www.eclipse.org/papyrus/FCM/1" xmlns:SW_Concurrency="http://www.eclipse.org/papyrus/SW_Concurrency/1" 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/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/SW_Concurrency/1 http://www.eclipse.org/papyrus/MARTE/1#//SRM/SW_Concurrency">
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:C_Cpp="http://www.eclipse.org/papyrus/C_Cpp/1" xmlns:FCM="http://www.eclipse.org/papyrus/FCM/1" xmlns:SW_Concurrency="http://www.eclipse.org/papyrus/SW_Concurrency/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:style="http://www.eclipse.org/papyrus/infra/viewpoints/policy/style" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/SW_Concurrency/1 http://www.eclipse.org/papyrus/MARTE/1#//SRM/SW_Concurrency">
<notation:Diagram xmi:id="_FYAkIG4sEd-0rs2VEGIwsA" type="CompositeStructure" name="Composite Async &amp; sync call hierarchy" measurementUnit="Pixel">
<children xmi:type="notation:Shape" xmi:id="_FYAkIW4sEd-0rs2VEGIwsA" type="2073" fontName="Sans Serif" fontHeight="10" lineColor="0">
<children xmi:type="notation:DecorationNode" xmi:id="_FYAkIm4sEd-0rs2VEGIwsA" type="5156"/>
@@ -4501,4 +4501,111 @@
<styles xmi:type="notation:DiagramStyle" xmi:id="_zCs7wHI3EeOCrdvV8oxOKA"/>
<element xmi:type="uml:Package" href="core.uml#_tkiC4HI3EeOCrdvV8oxOKA"/>
</notation:Diagram>
+ <notation:Diagram xmi:id="_ljiPEKLvEeSBiP8ZTcBQrQ" type="PapyrusUMLClassDiagram" name="OOtransformations" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_mhOmYKLvEeSBiP8ZTcBQrQ" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5zUiIKLvEeSBiP8ZTcBQrQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5zVJMKLvEeSBiP8ZTcBQrQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5zVJMaLvEeSBiP8ZTcBQrQ" key="StereotypeList" value="FCM::CompToOOmapping"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5zVJMqLvEeSBiP8ZTcBQrQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5zVJM6LvEeSBiP8ZTcBQrQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5zVJNKLvEeSBiP8ZTcBQrQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mhP0gKLvEeSBiP8ZTcBQrQ" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_mhP0gaLvEeSBiP8ZTcBQrQ" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_mhP0gqLvEeSBiP8ZTcBQrQ" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mhQbkKLvEeSBiP8ZTcBQrQ" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_mhQbkaLvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mhQbkqLvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mhQbk6LvEeSBiP8ZTcBQrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mhQblKLvEeSBiP8ZTcBQrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mhQblaLvEeSBiP8ZTcBQrQ" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_mhQblqLvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mhQbl6LvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mhQbmKLvEeSBiP8ZTcBQrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mhQbmaLvEeSBiP8ZTcBQrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_mhQbmqLvEeSBiP8ZTcBQrQ" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_mhQbm6LvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_mhQbnKLvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_mhQbnaLvEeSBiP8ZTcBQrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mhQbnqLvEeSBiP8ZTcBQrQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_mgbVIKLvEeSBiP8ZTcBQrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_mhOmYaLvEeSBiP8ZTcBQrQ" x="40" y="40" width="161" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_nRtBEKLvEeSBiP8ZTcBQrQ" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_66zHkKLvEeSBiP8ZTcBQrQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_660VsKLvEeSBiP8ZTcBQrQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_660VsaLvEeSBiP8ZTcBQrQ" key="StereotypeList" value="FCM::CompToOOmapping"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_660VsqLvEeSBiP8ZTcBQrQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_660Vs6LvEeSBiP8ZTcBQrQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_660VtKLvEeSBiP8ZTcBQrQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nRtoIKLvEeSBiP8ZTcBQrQ" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_nRtoIaLvEeSBiP8ZTcBQrQ" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_nRtoIqLvEeSBiP8ZTcBQrQ" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nRtoI6LvEeSBiP8ZTcBQrQ" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_nRtoJKLvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nRtoJaLvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nRtoJqLvEeSBiP8ZTcBQrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nRtoJ6LvEeSBiP8ZTcBQrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nRtoKKLvEeSBiP8ZTcBQrQ" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_nRtoKaLvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nRtoKqLvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nRtoK6LvEeSBiP8ZTcBQrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nRtoLKLvEeSBiP8ZTcBQrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_nRtoLaLvEeSBiP8ZTcBQrQ" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_nRtoLqLvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_nRtoL6LvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_nRtoMKLvEeSBiP8ZTcBQrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nRtoMaLvEeSBiP8ZTcBQrQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_nRnhgKLvEeSBiP8ZTcBQrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_nRtBEaLvEeSBiP8ZTcBQrQ" x="240" y="40" width="161" height="61"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_pu_i4KLvEeSBiP8ZTcBQrQ" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_45q9UKLvEeSBiP8ZTcBQrQ" source="Stereotype_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_45sLcKLvEeSBiP8ZTcBQrQ" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_45sLcaLvEeSBiP8ZTcBQrQ" key="StereotypeList" value="FCM::CompToOOmapping"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_45sLcqLvEeSBiP8ZTcBQrQ" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_45sLc6LvEeSBiP8ZTcBQrQ" key="PropStereoDisplay" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_45sLdKLvEeSBiP8ZTcBQrQ" key="StereotypePropertyLocation" value="Compartment"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pvAJ8KLvEeSBiP8ZTcBQrQ" type="5029"/>
+ <children xmi:type="notation:DecorationNode" xmi:id="_pvAJ8aLvEeSBiP8ZTcBQrQ" type="8510">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pvAJ8qLvEeSBiP8ZTcBQrQ" y="5"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pvAJ86LvEeSBiP8ZTcBQrQ" visible="false" type="7017">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pvAJ9KLvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_pvAJ9aLvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_pvAJ9qLvEeSBiP8ZTcBQrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pvAJ96LvEeSBiP8ZTcBQrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pvAJ-KLvEeSBiP8ZTcBQrQ" visible="false" type="7018">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pvAJ-aLvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_pvAJ-qLvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_pvAJ-6LvEeSBiP8ZTcBQrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pvAJ_KLvEeSBiP8ZTcBQrQ"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_pvAJ_aLvEeSBiP8ZTcBQrQ" visible="false" type="7019">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_pvAJ_qLvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_pvAJ_6LvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_pvAKAKLvEeSBiP8ZTcBQrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pvAKAaLvEeSBiP8ZTcBQrQ"/>
+ </children>
+ <element xmi:type="uml:Class" href="core.uml#_pu1x4KLvEeSBiP8ZTcBQrQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_pu_i4aLvEeSBiP8ZTcBQrQ" x="40" y="140" width="161" height="61"/>
+ </children>
+ <styles xmi:type="notation:StringValueStyle" xmi:id="_ljiPEaLvEeSBiP8ZTcBQrQ" name="diagram_compatibility_version" stringValue="1.0.0"/>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_ljiPEqLvEeSBiP8ZTcBQrQ"/>
+ <styles xmi:type="style:PapyrusViewStyle" xmi:id="_ljiPE6LvEeSBiP8ZTcBQrQ">
+ <owner xmi:type="uml:Package" href="core.uml#_B_a2UKLvEeSBiP8ZTcBQrQ"/>
+ </styles>
+ <element xmi:type="uml:Package" href="core.uml#_B_a2UKLvEeSBiP8ZTcBQrQ"/>
+ </notation:Diagram>
</xmi:XMI>
diff --git a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.uml b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.uml
index 49391c6e196..b21ccd6558d 100644
--- a/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.uml
+++ b/extraplugins/qompass-designer/org.eclipse.papyrus.qompass.modellibs.core/models/library/core.uml
@@ -1327,6 +1327,11 @@ Be aware that the number of instantiated template packages will be considerably
<packagedElement xmi:type="uml:Class" xmi:id="_4H-ZoHkgEeOCpqruXGWNPw" name="BindOperation"/>
<packagedElement xmi:type="uml:Class" xmi:id="_g8oe8LsMEeO0n5elMxN1LQ" name="BindCppIncludeToFirstActual"/>
</packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_B_a2UKLvEeSBiP8ZTcBQrQ" name="OOtransformations">
+ <packagedElement xmi:type="uml:Class" xmi:id="_mgbVIKLvEeSBiP8ZTcBQrQ" name="StaticCpp"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_nRnhgKLvEeSBiP8ZTcBQrQ" name="DynamicCpp"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="_pu1x4KLvEeSBiP8ZTcBQrQ" name="StaticJava"/>
+ </packagedElement>
<profileApplication xmi:type="uml:ProfileApplication" xmi:id="_O6TiIjLUEd26WNosUASSSw">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_O6TiIzLUEd26WNosUASSSw" source="http://www.eclipse.org/uml2/2.0.0/UML">
<references xmi:type="ecore:EPackage" href="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard#/"/>
@@ -1550,4 +1555,7 @@ Be aware that the number of instantiated template packages will be considerably
<FCM:BindingHelper xmi:id="_nLe_sHJDEeOMF7YEvnQt5g" base_Class="_z2tyoHI3EeOCrdvV8oxOKA"/>
<FCM:BindingHelper xmi:id="_7qhTUHkgEeOCpqruXGWNPw" base_Class="_4H-ZoHkgEeOCpqruXGWNPw"/>
<FCM:BindingHelper xmi:id="_mFUQALsMEeO0n5elMxN1LQ" base_Class="_g8oe8LsMEeO0n5elMxN1LQ"/>
+ <FCM:CompToOOmapping xmi:id="_45ldwKLvEeSBiP8ZTcBQrQ" base_Class="_pu1x4KLvEeSBiP8ZTcBQrQ"/>
+ <FCM:CompToOOmapping xmi:id="_5zQ3wKLvEeSBiP8ZTcBQrQ" base_Class="_mgbVIKLvEeSBiP8ZTcBQrQ"/>
+ <FCM:CompToOOmapping xmi:id="_66vdMKLvEeSBiP8ZTcBQrQ" base_Class="_nRnhgKLvEeSBiP8ZTcBQrQ"/>
</xmi:XMI>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.classpath b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.classpath
index ad32c83a788..098194ca4b7 100644
--- a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.classpath
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.settings/org.eclipse.jdt.core.prefs b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.settings/org.eclipse.jdt.core.prefs
index c537b63063c..f42de363afa 100644
--- a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.settings/org.eclipse.jdt.core.prefs
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,7 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/META-INF/MANIFEST.MF
index 162e983c615..79941bdb3e9 100644
--- a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/META-INF/MANIFEST.MF
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.infra.services.tracepoints/META-INF/MANIFEST.MF
@@ -29,5 +29,5 @@ Bundle-Activator: org.eclipse.papyrus.infra.services.tracepoints.Activ
ator
Bundle-SymbolicName: org.eclipse.papyrus.infra.services.tracepoints;si
ngleton:=true
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.classpath b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.classpath
index ad32c83a788..098194ca4b7 100644
--- a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.classpath
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.classpath
@@ -1,6 +1,6 @@
<?xml version="1.0" encoding="UTF-8"?>
<classpath>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.7"/>
<classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
<classpathentry kind="src" path="src"/>
<classpathentry kind="output" path="bin"/>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.settings/org.eclipse.jdt.core.prefs b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.settings/org.eclipse.jdt.core.prefs
index c537b63063c..f42de363afa 100644
--- a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.settings/org.eclipse.jdt.core.prefs
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/.settings/org.eclipse.jdt.core.prefs
@@ -1,7 +1,7 @@
eclipse.preferences.version=1
org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.6
-org.eclipse.jdt.core.compiler.compliance=1.6
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7
+org.eclipse.jdt.core.compiler.compliance=1.7
org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
-org.eclipse.jdt.core.compiler.source=1.6
+org.eclipse.jdt.core.compiler.source=1.7
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/META-INF/MANIFEST.MF b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/META-INF/MANIFEST.MF
index 8742b5cc44d..1c0318d52c1 100644
--- a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/META-INF/MANIFEST.MF
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/META-INF/MANIFEST.MF
@@ -23,5 +23,5 @@ Bundle-Activator: org.eclipse.papyrus.qompass.modellibs.tracing.Activa
Bundle-ManifestVersion: 2
Bundle-SymbolicName: org.eclipse.papyrus.qompass.modellibs.tracing;sin
gleton:=true
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Bundle-RequiredExecutionEnvironment: JavaSE-1.7
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.notation b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.notation
index 554ce289e82..333d8c71e4f 100644
--- a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.notation
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.notation
@@ -1,5 +1,5 @@
<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI 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:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML">
+<xmi:XMI 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:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML">
<notation:Diagram xmi:id="_XSHWMF36Ed-UvNEDwY5GNg" type="PapyrusUMLClassDiagram" name="Interfaces" measurementUnit="Pixel">
<children xmi:type="notation:Shape" xmi:id="_Pj6oUDeEEeGPyrZ5I3hMlA" type="2004" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Pj6oUjeEEeGPyrZ5I3hMlA" source="ShadowFigure">
@@ -389,10 +389,10 @@
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_UypUUJ0lEeKBzo5ONT8mrA" source="CustomAppearance_Annotation">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_U4NJwJ0lEeKBzo5ONT8mrA" key="CustomAppearance_MaskValue" value="28"/>
</eAnnotations>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_TLJ7gwcCEeGnrLqQ0OQeAg" x="25" y="-6"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TLJ7gwcCEeGnrLqQ0OQeAg" x="23"/>
</children>
<children xmi:type="notation:DecorationNode" xmi:id="_TLKikAcCEeGnrLqQ0OQeAg" type="6029">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_TLKikQcCEeGnrLqQ0OQeAg" x="25" y="-10"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_TLKikQcCEeGnrLqQ0OQeAg" x="24" y="-17"/>
</children>
<element xmi:type="uml:Port" href="pathmap://QML_CORE/core.uml#_OfiosJsrEd61Eo3nmu3JhQ"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_TLHfQQcCEeGnrLqQ0OQeAg" x="-10" y="51"/>
@@ -517,11 +517,11 @@
</edges>
<edges xmi:type="notation:Connector" xmi:id="_QRrXUE2rEeGl8qrc8BM7vA" type="4013" source="_RUoqEDrcEeGgAdAmWw4pyQ" target="_SZhOgDrcEeGgAdAmWw4pyQ" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VPgjQE2rEeGl8qrc8BM7vA" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VPmC0E2rEeGl8qrc8BM7vA" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VPmC0U2rEeGl8qrc8BM7vA" key="StereotypeList" value="FCM::Connector"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VPmC0k2rEeGl8qrc8BM7vA" key="PropStereoDisplay" value="FCM::Connector.ic"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VPmC002rEeGl8qrc8BM7vA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VPmC1E2rEeGl8qrc8BM7vA" key="StereotypePropertyLocation" value="Compartment"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kAPj0Jv-EeSlvLlfn0fV6A" key="StereotypeWithQualifiedNameList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kAPj0Zv-EeSlvLlfn0fV6A" key="StereotypeList" value=""/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kAQK4Jv-EeSlvLlfn0fV6A" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kAQK4Zv-EeSlvLlfn0fV6A" key="PropStereoDisplay" value="FCM::Connector.ic"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_kAQK4pv-EeSlvLlfn0fV6A" key="StereotypePropertyLocation" value="Compartment"/>
</eAnnotations>
<children xmi:type="notation:DecorationNode" xmi:id="_QRslcE2rEeGl8qrc8BM7vA" type="6025">
<layoutConstraint xmi:type="notation:Location" xmi:id="_QRslcU2rEeGl8qrc8BM7vA" x="6" y="-30"/>
@@ -575,31 +575,6 @@
<element xmi:type="uml:Package" href="ClientServerTraceTest.uml#_5Z7MEDLiEd2RVeNawwNNzg"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_7FtP8WONEd-seu3qyZgHfg" x="77" y="38"/>
</children>
- <children xmi:type="notation:Shape" xmi:id="_7zJkwGONEd-seu3qyZgHfg" type="2007" fontName="Sans Serif" fontHeight="10" transparency="0" gradient="8047085, 16777215, 0" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7zKL0mONEd-seu3qyZgHfg" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7zKL02ONEd-seu3qyZgHfg" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_7zKL1GONEd-seu3qyZgHfg" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_7zKL1WONEd-seu3qyZgHfg" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5T0rAGTfEd-rCOWJcspHOA" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5T0rAWTfEd-rCOWJcspHOA" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_0jgjwDeIEeGPyrZ5I3hMlA" source="Stereotype_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0jgjwTeIEeGPyrZ5I3hMlA" key="StereotypeWithQualifiedNameList" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0jgjwjeIEeGPyrZ5I3hMlA" key="StereotypeList" value="FCM::DeploymentPlan"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0jhK0DeIEeGPyrZ5I3hMlA" key="Stereotype_Presentation_Kind" value="HorizontalStereo"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0jhK0TeIEeGPyrZ5I3hMlA" key="PropStereoDisplay" value=""/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_0jhK0jeIEeGPyrZ5I3hMlA" key="StereotypePropertyLocation" value="Compartment"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_7zKL1mONEd-seu3qyZgHfg" type="5026"/>
- <children xmi:type="notation:DecorationNode" xmi:id="_7zKL12ONEd-seu3qyZgHfg" type="7016">
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7zKL2GONEd-seu3qyZgHfg"/>
- </children>
- <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_7zJkwWONEd-seu3qyZgHfg"/>
- <element xmi:type="uml:Package" href="ClientServerTraceTest.uml#_bBSxQP_BEd6628OhKk_dpg"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_7zJkwmONEd-seu3qyZgHfg" x="77" y="284"/>
- </children>
<children xmi:type="notation:Shape" xmi:id="_TooeIDeIEeGPyrZ5I3hMlA" type="2012" fontName="Sans Serif" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_TooeIjeIEeGPyrZ5I3hMlA" source="ShadowFigure">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_TooeIzeIEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
@@ -628,20 +603,6 @@
<element xmi:type="uml:Comment" href="ClientServerTraceTest.uml#_f3lHQDeIEeGPyrZ5I3hMlA"/>
<layoutConstraint xmi:type="notation:Bounds" xmi:id="_f33bITeIEeGPyrZ5I3hMlA" x="76" y="153" width="357"/>
</children>
- <children xmi:type="notation:Shape" xmi:id="_L1JeQDeJEeGPyrZ5I3hMlA" type="2012" fontName="Sans Serif" lineColor="0">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_L1JeQjeJEeGPyrZ5I3hMlA" source="ShadowFigure">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_L1JeQzeJEeGPyrZ5I3hMlA" key="ShadowFigure_Value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_L1KFUDeJEeGPyrZ5I3hMlA" source="displayNameLabelIcon">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_L1KFUTeJEeGPyrZ5I3hMlA" key="displayNameLabelIcon_value" value="false"/>
- </eAnnotations>
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_L1KFUjeJEeGPyrZ5I3hMlA" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_L1KFUzeJEeGPyrZ5I3hMlA" key="QualifiedNameDepth" value="1000"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_L1KFVDeJEeGPyrZ5I3hMlA" type="5038"/>
- <element xmi:type="uml:Comment" href="ClientServerTraceTest.uml#_L01VMDeJEeGPyrZ5I3hMlA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_L1JeQTeJEeGPyrZ5I3hMlA" x="74" y="402" width="494"/>
- </children>
<children xmi:type="notation:Shape" xmi:id="_FQOkoDWxEeKGAYOVxzQeAg" type="2008" fontName="Sans Serif" fillColor="8905185" gradient="16777215, 16777215, 0" lineColor="0">
<eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_FQPywDWxEeKGAYOVxzQeAg" source="ShadowFigure">
<details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_FQPywTWxEeKGAYOVxzQeAg" key="ShadowFigure_Value" value="false"/>
@@ -697,13 +658,6 @@
<sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_JTc_cEehEeGg-ceBj4Cxaw" id="(0.43977591036414565,0.047619047619047616)"/>
<targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_KMooUDeJEeGPyrZ5I3hMlA" id="(0.76,0.77)"/>
</edges>
- <edges xmi:type="notation:Connector" xmi:id="_NvdQsEehEeGg-ceBj4Cxaw" type="4013" source="_L1JeQDeJEeGPyrZ5I3hMlA" target="_7zJkwGONEd-seu3qyZgHfg" lineColor="0">
- <styles xmi:type="notation:FontStyle" xmi:id="_NvdQsUehEeGg-ceBj4Cxaw" fontName="Sans Serif"/>
- <element xsi:nil="true"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_NvdQskehEeGg-ceBj4Cxaw" points="[2, -5, 0, 26]$[15, -23, 13, 8]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nv1rMEehEeGg-ceBj4Cxaw" id="(0.34615384615384615,0.08333333333333333)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_Nv1rMUehEeGg-ceBj4Cxaw" id="(0.85,0.92)"/>
- </edges>
</notation:Diagram>
<notation:Diagram xmi:id="_HoscYMniEeCMCo5Ox2CNmg" type="CompositeStructure" name="HWArchitecture" measurementUnit="Pixel">
<children xmi:type="notation:Shape" xmi:id="_IKW_AMniEeCMCo5Ox2CNmg" type="2073" fontName="" fontHeight="10" fillColor="10011046" gradient="16777215, 16777215, 0" lineColor="0">
@@ -973,10 +927,6 @@
<element xmi:type="uml:Operation" href="ClientServerTraceTest.uml#_Qzp7gDclEeKAhIrFXfR8zQ"/>
<layoutConstraint xmi:type="notation:Location" xmi:id="_Q07G0TclEeKAhIrFXfR8zQ"/>
</children>
- <children xmi:type="notation:Shape" xmi:id="_cssnQDc_EeKPle9CbXIcpQ" type="3013" fontName="Sans Serif" lineColor="0">
- <element xmi:type="uml:Operation" href="ClientServerTraceTest.uml#_ZnGj0EdDEeGxo4rn9hBAOQ"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_cssnQTc_EeKPle9CbXIcpQ" x="15" y="21"/>
- </children>
<styles xmi:type="notation:TitleStyle" xmi:id="_t61G9zeFEeGPyrZ5I3hMlA"/>
<styles xmi:type="notation:SortingStyle" xmi:id="_t61G-DeFEeGPyrZ5I3hMlA"/>
<styles xmi:type="notation:FilteringStyle" xmi:id="_t61G-TeFEeGPyrZ5I3hMlA"/>
diff --git a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.uml b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.uml
index b14f69f2b81..b2c54956ec5 100644
--- a/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.uml
+++ b/extraplugins/qompass-designer/tracing/org.eclipse.papyrus.qompass.modellibs.tracing/models/examples/ClientServerTraceTest.uml
@@ -1,38 +1,35 @@
<?xml version="1.0" encoding="UTF-8"?>
<xmi:XMI xmi:version="20131001" xmlns:xmi="http://www.omg.org/spec/XMI/20131001" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:Alloc="http://www.eclipse.org/papyrus/Alloc/1" xmlns:C_Cpp="http://www.eclipse.org/papyrus/C_Cpp/1" xmlns:FCM="http://www.eclipse.org/papyrus/FCM/1" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.eclipse.org/papyrus/Alloc/1 http://www.eclipse.org/papyrus/MARTE/1#//Alloc">
<uml:Model xmi:id="_O6TiIDLUEd26WNosUASSSw" name="ClientServerTraceTest">
- <packageImport xmi:id="_O6TiITLUEd26WNosUASSSw">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_O6TiITLUEd26WNosUASSSw">
<importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
</packageImport>
- <packageImport xmi:id="_Bc1WIFW4Ed63BrxiKsw-0Q">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_Bc1WIFW4Ed63BrxiKsw-0Q">
<importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/core.uml#_O6TiIDLUEd26WNosUASSSw"/>
</packageImport>
- <packageImport xmi:id="_rwBsMP7AEd6Zw96O-tCw7A">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_rwBsMP7AEd6Zw96O-tCw7A">
<importedPackage xmi:type="uml:Model" href="pathmap://QML_CORE/corba.uml#_DtQEwDLdEd2_U4efLnjQIw"/>
</packageImport>
- <packageImport xmi:id="_7K0UkACUEd-PD8FdFs7bpA">
- <importedPackage xmi:type="uml:Model" href="pathmap://QML_DISTRIBUTION/distribution.uml#_O6TiIDLUEd26WNosUASSSw"/>
- </packageImport>
- <packageImport xmi:id="__D5MwE2WEeGzNbfAXPgNLA">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="__D5MwE2WEeGzNbfAXPgNLA">
<importedPackage xmi:type="uml:Model" href="pathmap://QML_TRACE/tracing.uml#_H-ZqYDKeEd-WprEKTCaiMA"/>
</packageImport>
<packagedElement xmi:type="uml:Package" xmi:id="_LOqIEDLaEd2qeKRLMdIx_A" name="components">
<packagedElement xmi:type="uml:Package" xmi:id="_OGM88DLaEd2qeKRLMdIx_A" name="Server">
<packagedElement xmi:type="uml:Class" xmi:id="_oqZNUDLaEd2qeKRLMdIx_A" name="CServer_impl" classifierBehavior="_5Vd9UDclEeKAhIrFXfR8zQ">
<ownedAttribute xmi:type="uml:Port" xmi:id="_4KiE8DLbEd2qeKRLMdIx_A" name="p" type="_cn-H0DLbEd2qeKRLMdIx_A" aggregation="composite"/>
- <interfaceRealization xmi:id="_YQqH0JYlEd6G9q9hwr11bw" name="derived realization of ICompute" client="_oqZNUDLaEd2qeKRLMdIx_A" supplier="_cn-H0DLbEd2qeKRLMdIx_A" contract="_cn-H0DLbEd2qeKRLMdIx_A"/>
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_YQqH0JYlEd6G9q9hwr11bw" name="derived realization of ICompute" client="_oqZNUDLaEd2qeKRLMdIx_A" supplier="_cn-H0DLbEd2qeKRLMdIx_A" contract="_cn-H0DLbEd2qeKRLMdIx_A"/>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_ML-4AKI5Ed6FqJCjEUrkqQ" name="add" specification="_TbIjUJYlEd6G9q9hwr11bw">
- <ownedParameter xmi:id="_xOQMoC7NEeOY-cM3M1mqKw" name="a">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_xOQMoC7NEeOY-cM3M1mqKw" name="a">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xOzmQC7NEeOY-cM3M1mqKw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xO_zgC7NEeOY-cM3M1mqKw" value="1"/>
</ownedParameter>
- <ownedParameter xmi:id="_xPLZsC7NEeOY-cM3M1mqKw" name="b">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_xPLZsC7NEeOY-cM3M1mqKw" name="b">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xPuzUC7NEeOY-cM3M1mqKw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xP6ZgC7NEeOY-cM3M1mqKw" value="1"/>
</ownedParameter>
- <ownedParameter xmi:id="_xQF_sC7NEeOY-cM3M1mqKw" name="res" direction="return">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_xQF_sC7NEeOY-cM3M1mqKw" name="res" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xQvf8C7NEeOY-cM3M1mqKw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xQ7GIC7NEeOY-cM3M1mqKw" value="1"/>
@@ -42,17 +39,17 @@
return a+b;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_I1R3YAcDEeGnrLqQ0OQeAg" name="mult" specification="_4ZEZwHecEd6r18stFZxmFQ">
- <ownedParameter xmi:id="_xRMy8C7NEeOY-cM3M1mqKw" name="a">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_xRMy8C7NEeOY-cM3M1mqKw" name="a">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_qgMSAB6SEd6ITtm_FH3jRw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xRwzoC7NEeOY-cM3M1mqKw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xR8Z0C7NEeOY-cM3M1mqKw" value="1"/>
</ownedParameter>
- <ownedParameter xmi:id="_xSInEC7NEeOY-cM3M1mqKw" name="b">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_xSInEC7NEeOY-cM3M1mqKw" name="b">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_wbw4kB6SEd6ITtm_FH3jRw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xStO0C7NEeOY-cM3M1mqKw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xS41AC7NEeOY-cM3M1mqKw" value="1"/>
</ownedParameter>
- <ownedParameter xmi:id="_xTFCQC7NEeOY-cM3M1mqKw" name="res" direction="return">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_xTFCQC7NEeOY-cM3M1mqKw" name="res" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_xTn00C7NEeOY-cM3M1mqKw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_xT0CEC7NEeOY-cM3M1mqKw" value="1"/>
@@ -62,55 +59,55 @@ return a+b;</body>
return a*b;</body>
</ownedBehavior>
<ownedBehavior xmi:type="uml:StateMachine" xmi:id="_5Vd9UDclEeKAhIrFXfR8zQ" name="ServerStateMachine">
- <region xmi:id="_57WRkDclEeKAhIrFXfR8zQ" name="Region1">
- <transition xmi:id="_8ZB08DclEeKAhIrFXfR8zQ" name="Transition0" source="_66D8kDclEeKAhIrFXfR8zQ" target="_66D8kDclEeKAhIrFXfR8zQ"/>
- <transition xmi:id="_-v4XkDclEeKAhIrFXfR8zQ" name="Transition1" source="_9f6kgDclEeKAhIrFXfR8zQ" target="_66D8kDclEeKAhIrFXfR8zQ"/>
+ <region xmi:type="uml:Region" xmi:id="_57WRkDclEeKAhIrFXfR8zQ" name="Region1">
+ <transition xmi:type="uml:Transition" xmi:id="_8ZB08DclEeKAhIrFXfR8zQ" name="Transition0" source="_66D8kDclEeKAhIrFXfR8zQ" target="_66D8kDclEeKAhIrFXfR8zQ"/>
+ <transition xmi:type="uml:Transition" xmi:id="_-v4XkDclEeKAhIrFXfR8zQ" name="Transition1" source="_9f6kgDclEeKAhIrFXfR8zQ" target="_66D8kDclEeKAhIrFXfR8zQ"/>
<subvertex xmi:type="uml:State" xmi:id="_66D8kDclEeKAhIrFXfR8zQ" name="State0"/>
<subvertex xmi:type="uml:Pseudostate" xmi:id="_9f6kgDclEeKAhIrFXfR8zQ" name="Initial0"/>
</region>
</ownedBehavior>
- <ownedOperation xmi:id="_4ZEZwHecEd6r18stFZxmFQ" name="mult" method="_I1R3YAcDEeGnrLqQ0OQeAg">
- <ownedParameter xmi:id="_nvpKUDVdEeKoYLVLZgpRiw" name="a">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_4ZEZwHecEd6r18stFZxmFQ" name="mult" method="_I1R3YAcDEeGnrLqQ0OQeAg">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_nvpKUDVdEeKoYLVLZgpRiw" name="a">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_qgMSAB6SEd6ITtm_FH3jRw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nvup4DVdEeKoYLVLZgpRiw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nvvQ8DVdEeKoYLVLZgpRiw" value="1"/>
</ownedParameter>
- <ownedParameter xmi:id="_nvwfEDVdEeKoYLVLZgpRiw" name="b">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_nvwfEDVdEeKoYLVLZgpRiw" name="b">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_wbw4kB6SEd6ITtm_FH3jRw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nvy7UDVdEeKoYLVLZgpRiw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nvziYDVdEeKoYLVLZgpRiw" value="1"/>
</ownedParameter>
- <ownedParameter xmi:id="_nv1XkDVdEeKoYLVLZgpRiw" name="res" direction="return">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_nv1XkDVdEeKoYLVLZgpRiw" name="res" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nv3z0DVdEeKoYLVLZgpRiw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nv4a4DVdEeKoYLVLZgpRiw" value="1"/>
</ownedParameter>
</ownedOperation>
- <ownedOperation xmi:id="_TbIjUJYlEd6G9q9hwr11bw" name="add" method="_ML-4AKI5Ed6FqJCjEUrkqQ">
- <ownedParameter xmi:id="_TbZCAJYlEd6G9q9hwr11bw" name="a">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_TbIjUJYlEd6G9q9hwr11bw" name="add" method="_ML-4AKI5Ed6FqJCjEUrkqQ">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_TbZCAJYlEd6G9q9hwr11bw" name="a">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
</ownedParameter>
- <ownedParameter xmi:id="_TbdTcJYlEd6G9q9hwr11bw" name="b">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_TbdTcJYlEd6G9q9hwr11bw" name="b">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
</ownedParameter>
- <ownedParameter xmi:id="_TbkoMJYlEd6G9q9hwr11bw" name="res" direction="return">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_TbkoMJYlEd6G9q9hwr11bw" name="res" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
</ownedParameter>
</ownedOperation>
- <ownedOperation xmi:id="_rrf74DVdEeKoYLVLZgpRiw" name="check">
- <ownedParameter xmi:id="_4UNv4DVdEeKoYLVLZgpRiw" name="write">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_rrf74DVdEeKoYLVLZgpRiw" name="check">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_4UNv4DVdEeKoYLVLZgpRiw" name="write">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_4UO-ADVdEeKoYLVLZgpRiw" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_4UPlEDVdEeKoYLVLZgpRiw" value="1"/>
</ownedParameter>
</ownedOperation>
- <ownedOperation xmi:id="_9OJPEDVkEeKoYLVLZgpRiw" name="testOp">
- <ownedParameter xmi:id="_Br-FQDVlEeKoYLVLZgpRiw" name="testPar">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_9OJPEDVkEeKoYLVLZgpRiw" name="testOp">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_Br-FQDVlEeKoYLVLZgpRiw" name="testPar">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_9XvcQB6REd6ITtm_FH3jRw"/>
</ownedParameter>
</ownedOperation>
- <ownedOperation xmi:id="_6ERa0DW2EeKyT6LlKoWJIA" name="length">
- <ownedParameter xmi:id="_FfLX4DW3EeKyT6LlKoWJIA" name="p1" type="_krMkcDW2EeKyT6LlKoWJIA">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_6ERa0DW2EeKyT6LlKoWJIA" name="length">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_FfLX4DW3EeKyT6LlKoWJIA" name="p1" type="_krMkcDW2EeKyT6LlKoWJIA">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_FfN0IDW3EeKyT6LlKoWJIA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_FfObMDW3EeKyT6LlKoWJIA" value="1"/>
</ownedParameter>
@@ -118,55 +115,55 @@ return a*b;</body>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_Tp4n8DLaEd2qeKRLMdIx_A" name="Interfaces">
- <ownedComment xmi:id="_TDDBoDeEEeGPyrZ5I3hMlA" annotatedElement="_cn-H0DLbEd2qeKRLMdIx_A">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_TDDBoDeEEeGPyrZ5I3hMlA" annotatedElement="_cn-H0DLbEd2qeKRLMdIx_A">
<body>This interface contains services that are used by the client and provided by the server component</body>
</ownedComment>
<packagedElement xmi:type="uml:Interface" xmi:id="_cn-H0DLbEd2qeKRLMdIx_A" name="ICompute">
- <ownedOperation xmi:id="_DGs6wDLgEd28fJKJJnUaeQ" name="add">
- <ownedParameter xmi:id="_DGs6wTLgEd28fJKJJnUaeQ" name="a">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_DGs6wDLgEd28fJKJJnUaeQ" name="add">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_DGs6wTLgEd28fJKJJnUaeQ" name="a">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DGs6wzLgEd28fJKJJnUaeQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DGs6wjLgEd28fJKJJnUaeQ" value="1"/>
</ownedParameter>
- <ownedParameter xmi:id="_DGs6xTLgEd28fJKJJnUaeQ" name="b">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_DGs6xTLgEd28fJKJJnUaeQ" name="b">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DGs6xzLgEd28fJKJJnUaeQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DGs6xjLgEd28fJKJJnUaeQ" value="1"/>
</ownedParameter>
- <ownedParameter xmi:id="_DGs6yTLgEd28fJKJJnUaeQ" name="res" direction="return">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_DGs6yTLgEd28fJKJJnUaeQ" name="res" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_DGs6yzLgEd28fJKJJnUaeQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_DGs6yjLgEd28fJKJJnUaeQ" value="1"/>
</ownedParameter>
</ownedOperation>
- <ownedOperation xmi:id="_L8EY8DLgEd28fJKJJnUaeQ" name="mult" isAbstract="true">
- <ownedParameter xmi:id="_L8EY8TLgEd28fJKJJnUaeQ" name="a">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_L8EY8DLgEd28fJKJJnUaeQ" name="mult" isAbstract="true">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_L8EY8TLgEd28fJKJJnUaeQ" name="a">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_qgMSAB6SEd6ITtm_FH3jRw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_L8EY8zLgEd28fJKJJnUaeQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_L8EY8jLgEd28fJKJJnUaeQ" value="1"/>
</ownedParameter>
- <ownedParameter xmi:id="_L8EY9TLgEd28fJKJJnUaeQ" name="b">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_L8EY9TLgEd28fJKJJnUaeQ" name="b">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_wbw4kB6SEd6ITtm_FH3jRw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_L8EY9zLgEd28fJKJJnUaeQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_L8EY9jLgEd28fJKJJnUaeQ" value="1"/>
</ownedParameter>
- <ownedParameter xmi:id="_L8EY-TLgEd28fJKJJnUaeQ" name="res" direction="return">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_L8EY-TLgEd28fJKJJnUaeQ" name="res" direction="return">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_FxVBkB6LEd6Nj_33Eb_pxw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_L8EY-zLgEd28fJKJJnUaeQ" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_L8EY-jLgEd28fJKJJnUaeQ" value="1"/>
</ownedParameter>
</ownedOperation>
- <ownedOperation xmi:id="_rrbqcDVdEeKoYLVLZgpRiw" name="check" isAbstract="true">
- <ownedParameter xmi:id="_0xTp0DVdEeKoYLVLZgpRiw" name="write">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_rrbqcDVdEeKoYLVLZgpRiw" name="check" isAbstract="true">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_0xTp0DVdEeKoYLVLZgpRiw" name="write">
<type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
</ownedParameter>
</ownedOperation>
- <ownedOperation xmi:id="_6DewoDW2EeKyT6LlKoWJIA" name="length">
- <ownedParameter xmi:id="_AP4BcDW3EeKyT6LlKoWJIA" name="p1" type="_krMkcDW2EeKyT6LlKoWJIA"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_6DewoDW2EeKyT6LlKoWJIA" name="length">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_AP4BcDW3EeKyT6LlKoWJIA" name="p1" type="_krMkcDW2EeKyT6LlKoWJIA"/>
</ownedOperation>
</packagedElement>
<packagedElement xmi:type="uml:DataType" xmi:id="_krMkcDW2EeKyT6LlKoWJIA" name="Point">
- <ownedAttribute xmi:id="_m0WCQDW2EeKyT6LlKoWJIA" name="x" visibility="public">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_m0WCQDW2EeKyT6LlKoWJIA" name="x" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_-5FTMB6REd6ITtm_FH3jRw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pOAoUDW2EeKyT6LlKoWJIA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pOB2cDW2EeKyT6LlKoWJIA" value="1"/>
@@ -174,7 +171,7 @@ return a*b;</body>
<value xsi:nil="true"/>
</defaultValue>
</ownedAttribute>
- <ownedAttribute xmi:id="_yJIJMDW2EeKyT6LlKoWJIA" name="y" visibility="public">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_yJIJMDW2EeKyT6LlKoWJIA" name="y" visibility="public">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_-5FTMB6REd6ITtm_FH3jRw"/>
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_yd44QDW2EeKyT6LlKoWJIA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_yd6GYDW2EeKyT6LlKoWJIA" value="1"/>
@@ -185,30 +182,30 @@ return a*b;</body>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_etOZkDLaEd2qeKRLMdIx_A" name="Client">
- <ownedComment xmi:id="_b5cakDeEEeGPyrZ5I3hMlA" annotatedElement="_34FjAPx3Ed6O2oOTPfeAMA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_b5cakDeEEeGPyrZ5I3hMlA" annotatedElement="_34FjAPx3Ed6O2oOTPfeAMA">
<body>The client component inherits a specific port from the Cstart componen type: the port &quot;start&quot; which provides interface IRunnable containing a single operation &quot;run&quot;. By implementing this operation, the client gets initial control, comparable to a function &quot;main&quot; in classificla programming languages. </body>
</ownedComment>
- <ownedComment xmi:id="_H2U_oDeGEeGPyrZ5I3hMlA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_H2U_oDeGEeGPyrZ5I3hMlA">
<body>This realization relationship has been added automatically by Qompass, it is derived from the fact that class CClient_impl implements the port &quot;start&quot; which provides the interface &quot;IStart&quot;</body>
</ownedComment>
- <ownedComment xmi:id="_fBRcQDeGEeGPyrZ5I3hMlA" annotatedElement="_IfjoETLbEd2qeKRLMdIx_A">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_fBRcQDeGEeGPyrZ5I3hMlA" annotatedElement="_IfjoETLbEd2qeKRLMdIx_A">
<body>The operation &quot;run&quot; (not the associated behavior) has been added automatically by Qompass in order to implement the operations of interfaces provided by ports, in this case of the operations of the &quot;IStart&quot; interface. It would be tedious to manually copy operations from an interface, as it would imply copying the complete signature with all parameters. The component developper has to provide a suitable behavior. A validation rule verifies if operations without behavior exist.</body>
</ownedComment>
- <ownedComment xmi:id="_kStEMDeHEeGPyrZ5I3hMlA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_kStEMDeHEeGPyrZ5I3hMlA">
<annotatedElement xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
<annotatedElement xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_BHFPQJsqEd61Eo3nmu3JhQ"/>
<body>These two interface are part of the &quot;BasicCalls&quot; Qompass model library. The IStart interface is &quot;special&quot;, since the Qompass model transformations check for it existance in order to pass the &quot;main&quot; control to this component. A validation rule checks, if exactly one component instance provides this interface via the &quot;start&quot; port.</body>
</ownedComment>
<packagedElement xmi:type="uml:Class" xmi:id="_IfjoETLbEd2qeKRLMdIx_A" name="CClient_impl">
- <generalization xmi:id="_34FjAPx3Ed6O2oOTPfeAMA">
+ <generalization xmi:type="uml:Generalization" xmi:id="_34FjAPx3Ed6O2oOTPfeAMA">
<general xmi:type="uml:Class" href="pathmap://QML_CORE/core.uml#_N6fa4JsrEd61Eo3nmu3JhQ"/>
</generalization>
<ownedAttribute xmi:type="uml:Port" xmi:id="_DtWn4DLcEd2qeKRLMdIx_A" name="q" type="_cn-H0DLbEd2qeKRLMdIx_A" aggregation="composite"/>
- <interfaceRealization xmi:id="_ZmdDkEdDEeGxo4rn9hBAOQ" name="derived realization of IStart" client="_IfjoETLbEd2qeKRLMdIx_A">
+ <interfaceRealization xmi:type="uml:InterfaceRealization" xmi:id="_ZmdDkEdDEeGxo4rn9hBAOQ" name="derived realization of IStart" client="_IfjoETLbEd2qeKRLMdIx_A">
<supplier xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
- <contract href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
+ <contract xmi:type="uml:Interface" href="pathmap://QML_CORE/sysinterfaces.uml#_PTWzwCS-Ed-A_I32T0fkaA"/>
</interfaceRealization>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_yXNVoKF4Ed6FqJCjEUrkqQ" name="run" specification="_ZnGj0EdDEeGxo4rn9hBAOQ">
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_yXNVoKF4Ed6FqJCjEUrkqQ" name="run">
<language>C/C++</language>
<body>cout &lt;&lt; &quot;call via port q: add (2, 3);&quot; &lt;&lt; endl;
for (int i=0; i&lt;20; i++) {
@@ -224,31 +221,30 @@ for (int i=0; i&lt;20; i++) {
<language>C/C++</language>
<body>cout &lt;&lt; &quot;This is a test operation&quot; &lt;&lt; endl;</body>
</ownedBehavior>
- <ownedOperation xmi:id="_ZnGj0EdDEeGxo4rn9hBAOQ" name="run" method="_yXNVoKF4Ed6FqJCjEUrkqQ"/>
- <ownedOperation xmi:id="_Qzp7gDclEeKAhIrFXfR8zQ" name="testOp" method="_yVALQDclEeKAhIrFXfR8zQ">
- <ownedParameter xmi:id="_rXu4UDc_EeKPle9CbXIcpQ" name="j">
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_Qzp7gDclEeKAhIrFXfR8zQ" name="testOp" method="_yVALQDclEeKAhIrFXfR8zQ">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_rXu4UDc_EeKPle9CbXIcpQ" name="j">
<type xmi:type="uml:PrimitiveType" href="pathmap://QML_CORE/corba.uml#_9XvcQB6REd6ITtm_FH3jRw"/>
</ownedParameter>
</ownedOperation>
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_XLQjUDLiEd2RVeNawwNNzg" name="System">
- <ownedComment xmi:id="_s5iFMDeJEeGPyrZ5I3hMlA" annotatedElement="_bYJagDLiEd2RVeNawwNNzg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_s5iFMDeJEeGPyrZ5I3hMlA" annotatedElement="_bYJagDLiEd2RVeNawwNNzg">
<body>A composite class in which two attributes represent the component instances client and server, respectively. The assembly between ports is done on this level.
A single class represents the complete application, typically called &quot;System&quot; or &quot;System_impl&quot;. Such a class provides the information to calculate a tree of instance specifications, a so-called deployment plan. Check out the context menu. can be generated from the </body>
</ownedComment>
- <ownedComment xmi:id="_Vcf9kDeKEeGPyrZ5I3hMlA" annotatedElement="_QO2s0E2rEeGl8qrc8BM7vA">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_Vcf9kDeKEeGPyrZ5I3hMlA" annotatedElement="_QO2s0E2rEeGl8qrc8BM7vA">
<body>This connection between ports is stereotyped. The &quot;connector&quot; provides information which specific interaction component is responsible for realising this connection. The interaction component is part of an Qompass model library. Select the connection and check out the Qompass pop &quot;Show/choose connector type or implementation&quot;. In this case an group of implementations has been chosen, which contains a socket connection in case of distribution and a direct connection, if co-localized</body>
</ownedComment>
<packagedElement xmi:type="uml:Class" xmi:id="_bYJagDLiEd2RVeNawwNNzg" name="System_impl">
- <ownedAttribute xmi:id="_gV1cgDLiEd2RVeNawwNNzg" name="server" type="_oqZNUDLaEd2qeKRLMdIx_A" isUnique="false" aggregation="composite"/>
- <ownedAttribute xmi:id="_i-I7gDLiEd2RVeNawwNNzg" name="client" type="_IfjoETLbEd2qeKRLMdIx_A" isUnique="false" aggregation="composite"/>
- <ownedConnector xmi:id="_QO2s0E2rEeGl8qrc8BM7vA" name="qp_connector">
- <end xmi:id="_QO3T4E2rEeGl8qrc8BM7vA" partWithPort="_i-I7gDLiEd2RVeNawwNNzg" role="_DtWn4DLcEd2qeKRLMdIx_A">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_gV1cgDLiEd2RVeNawwNNzg" name="server" type="_oqZNUDLaEd2qeKRLMdIx_A" isUnique="false" aggregation="composite"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_i-I7gDLiEd2RVeNawwNNzg" name="client" type="_IfjoETLbEd2qeKRLMdIx_A" isUnique="false" aggregation="composite"/>
+ <ownedConnector xmi:type="uml:Connector" xmi:id="_QO2s0E2rEeGl8qrc8BM7vA" name="qp_connector">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="_QO3T4E2rEeGl8qrc8BM7vA" partWithPort="_i-I7gDLiEd2RVeNawwNNzg" role="_DtWn4DLcEd2qeKRLMdIx_A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QO3T4k2rEeGl8qrc8BM7vA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QO3T4U2rEeGl8qrc8BM7vA" value="1"/>
</end>
- <end xmi:id="_QO5wIE2rEeGl8qrc8BM7vA" partWithPort="_gV1cgDLiEd2RVeNawwNNzg" role="_4KiE8DLbEd2qeKRLMdIx_A">
+ <end xmi:type="uml:ConnectorEnd" xmi:id="_QO5wIE2rEeGl8qrc8BM7vA" partWithPort="_gV1cgDLiEd2RVeNawwNNzg" role="_4KiE8DLbEd2qeKRLMdIx_A">
<lowerValue xmi:type="uml:LiteralInteger" xmi:id="_QO5wIk2rEeGl8qrc8BM7vA" value="1"/>
<upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_QO5wIU2rEeGl8qrc8BM7vA" value="1"/>
</end>
@@ -257,37 +253,37 @@ A single class represents the complete application, typically called &quot;Syste
</packagedElement>
</packagedElement>
<packagedElement xmi:type="uml:Package" xmi:id="_v3fMgDLiEd2RVeNawwNNzg" name="platform">
- <ownedComment xmi:id="_ZWJ6QDeLEeGPyrZ5I3hMlA" annotatedElement="__1PHIMnhEeCMCo5Ox2CNmg">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_ZWJ6QDeLEeGPyrZ5I3hMlA" annotatedElement="__1PHIMnhEeCMCo5Ox2CNmg">
<body>The hardware architecture is also defined by means of a composite class (comparable to the software architecture). The types (NodeA and NodeB) can be stereotyped with information about the used target platform (FCM stereotype target). As for software architecture, instances specification for nodes are derived from this class. Use &quot;Qompass: create platform definition&quot; in the context menu.</body>
</ownedComment>
- <ownedComment xmi:id="_2vkEQDeLEeGPyrZ5I3hMlA" annotatedElement="_eFh10MniEeCMCo5Ox2CNmg">
+