Enable maven compilation
Change-Id: Ib95ae8aced225719459a86c4039bf82b45a9ff8b
Signed-off-by: jeremie.tatibouet <jeremie.tatibouet@cea.fr>
Signed-off-by: Francois Le Fevre - CEA <francois.le-fevre@cea.fr>
diff --git a/.gitignore b/.gitignore
index f6c8b77..0b4ce75 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,11 +1,11 @@
-# ignore all class files
-*.class
-
-# ignore OSGI-INF directories
-OSGI-INF/
-
-# ignore target directories
-target/
-
-# ignore .settings directories
+# ignore all class files
+*.class
+
+# ignore OSGI-INF directories
+OSGI-INF/
+
+# ignore target directories
+target/
+
+# ignore .settings directories
.settings/
\ No newline at end of file
diff --git a/.project b/.project
index f819ae9..97b2d34 100644
--- a/.project
+++ b/.project
@@ -1,11 +1,11 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.papyrus-moka</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- </buildSpec>
- <natures>
- </natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus-moka</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ </buildSpec>
+ <natures>
+ </natures>
+</projectDescription>
diff --git a/README.txt b/README.md
similarity index 99%
rename from README.txt
rename to README.md
index 9de6016..796eff6 100644
--- a/README.txt
+++ b/README.md
@@ -1,14 +1,14 @@
---------------------------------------------------------
- Moka
---------------------------------------------------------
-Moka is a Papyrus module for execution of UML models,
-which natively includes an execution engine complying
-with OMG standards foundational UML (fUML) and Precise
-Semantics of UML Composite Structures (PSCS). These
-standards deal with execution semantics of UML. Moka
-is integrated with the Eclipse debug framework to
-provide control, observation and animation facilities
-over executions. Moka can be easily extended to support
-alternative execution semantics, and thereby be adapted
-to multiple usage scenarios and domains.
+--------------------------------------------------------
+ Moka
+--------------------------------------------------------
+Moka is a Papyrus module for execution of UML models,
+which natively includes an execution engine complying
+with OMG standards foundational UML (fUML) and Precise
+Semantics of UML Composite Structures (PSCS). These
+standards deal with execution semantics of UML. Moka
+is integrated with the Eclipse debug framework to
+provide control, observation and animation facilities
+over executions. Moka can be easily extended to support
+alternative execution semantics, and thereby be adapted
+to multiple usage scenarios and domains.
--------------------------------------------------------
\ No newline at end of file
diff --git a/org.eclipse.papyrus.moka.async.fuml/.classpath b/org.eclipse.papyrus.moka.async.fuml/.classpath
index 2d1a430..64c5e31 100644
--- a/org.eclipse.papyrus.moka.async.fuml/.classpath
+++ b/org.eclipse.papyrus.moka.async.fuml/.classpath
@@ -1,7 +1,7 @@
-<?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/J2SE-1.5"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?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/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.papyrus.moka.async.fuml/.project b/org.eclipse.papyrus.moka.async.fuml/.project
index 423ccaa..66588cc 100644
--- a/org.eclipse.papyrus.moka.async.fuml/.project
+++ b/org.eclipse.papyrus.moka.async.fuml/.project
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.papyrus.moka.async.fuml</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <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>
- </natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.moka.async.fuml</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <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>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.papyrus.moka.async.fuml/META-INF/MANIFEST.MF b/org.eclipse.papyrus.moka.async.fuml/META-INF/MANIFEST.MF
index b727232..eef2e44 100644
--- a/org.eclipse.papyrus.moka.async.fuml/META-INF/MANIFEST.MF
+++ b/org.eclipse.papyrus.moka.async.fuml/META-INF/MANIFEST.MF
@@ -1,28 +1,28 @@
-Manifest-Version: 1.0
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.uml2.uml;bundle-version="4.0.1",
- org.eclipse.papyrus.moka;bundle-version="1.2.0",
- org.eclipse.papyrus.moka.fuml;bundle-version="1.2.0",
- org.eclipse.debug.core;bundle-version="3.8.0",
- org.eclipse.papyrus.moka.ui;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
- org.eclipse.papyrus.moka.composites;bundle-version="1.2.0",
- org.eclipse.papyrus.moka.fuml.standardlibrary;bundle-version="1.2.0",
- org.eclipse.ui.console,
- org.apache.commons.lang,
- org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.2.0"
-Export-Package: org.eclipse.papyrus.moka.async.fuml,
- org.eclipse.papyrus.moka.async.fuml.Semantics.Classes.Kernel,
- org.eclipse.papyrus.moka.async.fuml.Semantics.CommonBehaviors.Communications,
- org.eclipse.papyrus.moka.async.fuml.Semantics.Loci.LociL1,
- org.eclipse.papyrus.moka.async.fuml.debug
-Bundle-Vendor: Eclipse Modeling Project
-Bundle-ActivationPolicy: lazy
-Bundle-Version: 1.2.0.qualifier
-Bundle-Name: Moka Async Runner (Incubation)
-Bundle-ManifestVersion: 2
-Bundle-Activator: org.eclipse.papyrus.moka.async.fuml.Activator
-Bundle-SymbolicName: org.eclipse.papyrus.moka.async.fuml;singleton:=true
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.uml2.uml;bundle-version="4.0.1",
+ org.eclipse.papyrus.moka;bundle-version="1.2.0",
+ org.eclipse.papyrus.moka.fuml;bundle-version="1.2.0",
+ org.eclipse.debug.core;bundle-version="3.8.0",
+ org.eclipse.papyrus.moka.ui;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.papyrus.moka.composites;bundle-version="1.2.0",
+ org.eclipse.papyrus.moka.fuml.standardlibrary;bundle-version="1.2.0",
+ org.eclipse.ui.console,
+ org.apache.commons.lang,
+ org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.2.0"
+Export-Package: org.eclipse.papyrus.moka.async.fuml,
+ org.eclipse.papyrus.moka.async.fuml.Semantics.Classes.Kernel,
+ org.eclipse.papyrus.moka.async.fuml.Semantics.CommonBehaviors.Communications,
+ org.eclipse.papyrus.moka.async.fuml.Semantics.Loci.LociL1,
+ org.eclipse.papyrus.moka.async.fuml.debug
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: Moka Async Runner (Incubation)
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.moka.async.fuml.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.moka.async.fuml;singleton:=true
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.papyrus.moka.async.fuml/about.html b/org.eclipse.papyrus.moka.async.fuml/about.html
index 82d49bf..d35d5ae 100644
--- a/org.eclipse.papyrus.moka.async.fuml/about.html
+++ b/org.eclipse.papyrus.moka.async.fuml/about.html
@@ -1,28 +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>June 5, 2007</p>
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
+<!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>June 5, 2007</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
diff --git a/org.eclipse.papyrus.moka.async.fuml/build.properties b/org.eclipse.papyrus.moka.async.fuml/build.properties
index 8e80c8f..7bb9518 100644
--- a/org.eclipse.papyrus.moka.async.fuml/build.properties
+++ b/org.eclipse.papyrus.moka.async.fuml/build.properties
@@ -1,8 +1,8 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- resources/,\
- about.html
-src.includes = about.html
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ resources/,\
+ about.html
+src.includes = about.html
diff --git a/org.eclipse.papyrus.moka.async.fuml/plugin.xml b/org.eclipse.papyrus.moka.async.fuml/plugin.xml
index 392372f..5843f88 100644
--- a/org.eclipse.papyrus.moka.async.fuml/plugin.xml
+++ b/org.eclipse.papyrus.moka.async.fuml/plugin.xml
@@ -1,30 +1,30 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
- <extension
- point="org.eclipse.papyrus.moka.engine">
- <engine
- class="org.eclipse.papyrus.moka.async.fuml.FUMLAsyncExecutionEngine"
- description="PSCS Execution Engine (multi-threaded implementation)"
- >
- </engine>
- </extension>
- <extension
- point="org.eclipse.emf.ecore.uri_mapping">
- <mapping
- source="pathmap://PAPYRUS_MOKA_FUML_ASYNC_TYPES/"
- target="platform:/plugin/org.eclipse.papyrus.moka.async.fuml/resources/">
- </mapping>
- </extension>
- <extension
- point="org.eclipse.papyrus.uml.extensionpoints.UMLLibrary">
- <library
- description="fUML Asynchronous (Java Threads) Semantics"
- iconpath="resources/icons/moka_icon.png"
- name="fUMLAsyncSemantics"
- path="pathmap://PAPYRUS_MOKA_FUML_ASYNC_TYPES/fUML_Async_Semantics.uml"
- provider="CEA LIST - 2013">
- </library>
- </extension>
-
-</plugin>
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.papyrus.moka.engine">
+ <engine
+ class="org.eclipse.papyrus.moka.async.fuml.FUMLAsyncExecutionEngine"
+ description="PSCS Execution Engine (multi-threaded implementation)"
+ >
+ </engine>
+ </extension>
+ <extension
+ point="org.eclipse.emf.ecore.uri_mapping">
+ <mapping
+ source="pathmap://PAPYRUS_MOKA_FUML_ASYNC_TYPES/"
+ target="platform:/plugin/org.eclipse.papyrus.moka.async.fuml/resources/">
+ </mapping>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.uml.extensionpoints.UMLLibrary">
+ <library
+ description="fUML Asynchronous (Java Threads) Semantics"
+ iconpath="resources/icons/moka_icon.png"
+ name="fUMLAsyncSemantics"
+ path="pathmap://PAPYRUS_MOKA_FUML_ASYNC_TYPES/fUML_Async_Semantics.uml"
+ provider="CEA LIST - 2013">
+ </library>
+ </extension>
+
+</plugin>
diff --git a/org.eclipse.papyrus.moka.async.fuml/pom.xml b/org.eclipse.papyrus.moka.async.fuml/pom.xml
index 43e476c..d8f22dd 100644
--- a/org.eclipse.papyrus.moka.async.fuml/pom.xml
+++ b/org.eclipse.papyrus.moka.async.fuml/pom.xml
@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>org.eclipse.papyrus.extra.releng</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.moka.parent</artifactId>
+ <groupId>org.eclipse.papyrus.moka</groupId>
<version>1.2.0-SNAPSHOT</version>
- <relativePath>../../../releng/extra</relativePath>
</parent>
<artifactId>org.eclipse.papyrus.moka.async.fuml</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
- <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
+ <name>org.eclipse.papyrus.moka.async.fuml</name>
</project>
\ No newline at end of file
diff --git a/org.eclipse.papyrus.moka.async.fuml/resources/fUML_Async_Semantics.di b/org.eclipse.papyrus.moka.async.fuml/resources/fUML_Async_Semantics.di
index 14629c8..5dcfbcb 100644
--- a/org.eclipse.papyrus.moka.async.fuml/resources/fUML_Async_Semantics.di
+++ b/org.eclipse.papyrus.moka.async.fuml/resources/fUML_Async_Semantics.di
@@ -1,29 +1,29 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
- <pageList>
- <availablePage>
- <emfPageIdentifier href="fUML_Async_Semantics.notation#_Nkzs4F29EeOTf6IB0t4cAA"/>
- </availablePage>
- <availablePage>
- <emfPageIdentifier href="fUML_Async_Semantics.notation#_5LpwgF2-EeOTf6IB0t4cAA"/>
- </availablePage>
- <availablePage>
- <emfPageIdentifier href="fUML_Async_Semantics.notation#_UUgtkF5WEeOQDp6f49za_g"/>
- </availablePage>
- </pageList>
- <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
- <windows>
- <children xsi:type="di:TabFolder">
- <children>
- <emfPageIdentifier href="fUML_Async_Semantics.notation#_Nkzs4F29EeOTf6IB0t4cAA"/>
- </children>
- <children>
- <emfPageIdentifier href="fUML_Async_Semantics.notation#_5LpwgF2-EeOTf6IB0t4cAA"/>
- </children>
- <children>
- <emfPageIdentifier href="fUML_Async_Semantics.notation#_UUgtkF5WEeOQDp6f49za_g"/>
- </children>
- </children>
- </windows>
- </sashModel>
-</di:SashWindowsMngr>
+<?xml version="1.0" encoding="UTF-8"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+ <pageList>
+ <availablePage>
+ <emfPageIdentifier href="fUML_Async_Semantics.notation#_Nkzs4F29EeOTf6IB0t4cAA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="fUML_Async_Semantics.notation#_5LpwgF2-EeOTf6IB0t4cAA"/>
+ </availablePage>
+ <availablePage>
+ <emfPageIdentifier href="fUML_Async_Semantics.notation#_UUgtkF5WEeOQDp6f49za_g"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="fUML_Async_Semantics.notation#_Nkzs4F29EeOTf6IB0t4cAA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="fUML_Async_Semantics.notation#_5LpwgF2-EeOTf6IB0t4cAA"/>
+ </children>
+ <children>
+ <emfPageIdentifier href="fUML_Async_Semantics.notation#_UUgtkF5WEeOQDp6f49za_g"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/org.eclipse.papyrus.moka.async.fuml/resources/fUML_Async_Semantics.notation b/org.eclipse.papyrus.moka.async.fuml/resources/fUML_Async_Semantics.notation
index fc18f34..60f789d 100644
--- a/org.eclipse.papyrus.moka.async.fuml/resources/fUML_Async_Semantics.notation
+++ b/org.eclipse.papyrus.moka.async.fuml/resources/fUML_Async_Semantics.notation
@@ -1,323 +1,323 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" 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">
- <notation:Diagram xmi:id="_Nkzs4F29EeOTf6IB0t4cAA" type="PapyrusUMLClassDiagram" name="Kernel Extension" measurementUnit="Pixel">
- <children xmi:type="notation:Shape" xmi:id="_PHb9QF29EeOTf6IB0t4cAA" type="2008" fillColor="8047085">
- <children xmi:type="notation:DecorationNode" xmi:id="_PHgOsF29EeOTf6IB0t4cAA" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_PHg1wF29EeOTf6IB0t4cAA" type="7017">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PHiD4F29EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PHiq8F29EeOTf6IB0t4cAA" key="showTitle" value="true"/>
- </eAnnotations>
- <children xmi:type="notation:Shape" xmi:id="_l4y1MF29EeOTf6IB0t4cAA" type="3012">
- <element xmi:type="uml:Property" href="fUML_Async_Semantics.uml#_l4RQwF29EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_l4y1MV29EeOTf6IB0t4cAA"/>
- </children>
- <styles xmi:type="notation:TitleStyle" xmi:id="_PHg1wV29EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_PHg1wl29EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_PHg1w129EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PHg1xF29EeOTf6IB0t4cAA"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_PHg1xV29EeOTf6IB0t4cAA" type="7018">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PHiq8V29EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PHiq8l29EeOTf6IB0t4cAA" key="showTitle" value="true"/>
- </eAnnotations>
- <children xmi:type="notation:Shape" xmi:id="_j23ZsF29EeOTf6IB0t4cAA" type="3013">
- <element xmi:type="uml:Operation" href="fUML_Async_Semantics.uml#_j2VOMF29EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_j23ZsV29EeOTf6IB0t4cAA"/>
- </children>
- <styles xmi:type="notation:TitleStyle" xmi:id="_PHg1xl29EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_PHg1x129EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_PHg1yF29EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PHg1yV29EeOTf6IB0t4cAA"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_PHhc0F29EeOTf6IB0t4cAA" visible="false" type="7019">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PHjSAF29EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PHjSAV29EeOTf6IB0t4cAA" key="showTitle" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_PHhc0V29EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_PHhc0l29EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_PHhc0129EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PHhc1F29EeOTf6IB0t4cAA"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_PHwtYF29EeOTf6IB0t4cAA" visible="false" type="compartment_shape_display">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PHxUcF29EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PHxUcV29EeOTf6IB0t4cAA" key="mutable" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_PHwtYV29EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PHwtYl29EeOTf6IB0t4cAA"/>
- </children>
- <element xmi:type="uml:Class" href="fUML_Async_Semantics.uml#__2jNIF28EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PHb9QV29EeOTf6IB0t4cAA" x="325" y="395" width="481"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_BcK0IF6OEeOTX_efpbGI-w" type="2008">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Gi7SkF6OEeOTX_efpbGI-w" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Gi7SkV6OEeOTX_efpbGI-w" key="QualifiedNameDepth" value="0"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_BcNQYF6OEeOTX_efpbGI-w" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_BcNQYV6OEeOTX_efpbGI-w" visible="false" type="7017">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BcOegF6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BcOegV6OEeOTX_efpbGI-w" key="showTitle" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_BcNQYl6OEeOTX_efpbGI-w"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_BcNQY16OEeOTX_efpbGI-w"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_BcNQZF6OEeOTX_efpbGI-w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BcNQZV6OEeOTX_efpbGI-w"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_BcN3cF6OEeOTX_efpbGI-w" visible="false" type="7018">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BcPFkF6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BcPFkV6OEeOTX_efpbGI-w" key="showTitle" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_BcN3cV6OEeOTX_efpbGI-w"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_BcN3cl6OEeOTX_efpbGI-w"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_BcN3c16OEeOTX_efpbGI-w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BcN3dF6OEeOTX_efpbGI-w"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_BcN3dV6OEeOTX_efpbGI-w" visible="false" type="7019">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BcPFkl6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BcPFk16OEeOTX_efpbGI-w" key="showTitle" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_BcN3dl6OEeOTX_efpbGI-w"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_BcN3d16OEeOTX_efpbGI-w"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_BcN3eF6OEeOTX_efpbGI-w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BcN3eV6OEeOTX_efpbGI-w"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_BcgLUF6OEeOTX_efpbGI-w" visible="false" type="compartment_shape_display">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BcgyYF6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BcgyYV6OEeOTX_efpbGI-w" key="mutable" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_BcgLUV6OEeOTX_efpbGI-w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BcgLUl6OEeOTX_efpbGI-w"/>
- </children>
- <element xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_CS_TYPES/PreciseSemanticsOfComposites.uml#_wUwzPd2JEeGnO-TF_1T_iQ"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BcK0IV6OEeOTX_efpbGI-w" x="325" y="249" width="481" height="62"/>
- </children>
- <styles xmi:type="notation:DiagramStyle" xmi:id="_Nkzs4V29EeOTf6IB0t4cAA"/>
- <element xmi:type="uml:Package" href="fUML_Async_Semantics.uml#_JVY7kF28EeOTf6IB0t4cAA"/>
- <edges xmi:type="notation:Connector" xmi:id="_E0L40F6OEeOTX_efpbGI-w" type="4002" source="_PHb9QF29EeOTf6IB0t4cAA" target="_BcK0IF6OEeOTX_efpbGI-w">
- <children xmi:type="notation:DecorationNode" xmi:id="_E0L4016OEeOTX_efpbGI-w" type="6007">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_E0L41F6OEeOTX_efpbGI-w" y="40"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_E0L40V6OEeOTX_efpbGI-w"/>
- <element xmi:type="uml:Generalization" href="fUML_Async_Semantics.uml#_EzEegF6OEeOTX_efpbGI-w"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_E0L40l6OEeOTX_efpbGI-w" points="[8, -11, 3, 115]$[8, -95, 3, 31]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_E0TNkF6OEeOTX_efpbGI-w" id="(0.48693586698337293,0.11)"/>
- </edges>
- </notation:Diagram>
- <notation:Diagram xmi:id="_5LpwgF2-EeOTf6IB0t4cAA" type="PapyrusUMLClassDiagram" name="Communications Extension" measurementUnit="Pixel">
- <children xmi:type="notation:Shape" xmi:id="_5uZ4QF2-EeOTf6IB0t4cAA" type="2008" fillColor="8047085">
- <children xmi:type="notation:DecorationNode" xmi:id="_5uafUF2-EeOTf6IB0t4cAA" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_5uafUV2-EeOTf6IB0t4cAA" type="7017">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5ubGYF2-EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5ubGYV2-EeOTf6IB0t4cAA" key="showTitle" value="true"/>
- </eAnnotations>
- <children xmi:type="notation:Shape" xmi:id="_6raoMF3AEeOTf6IB0t4cAA" type="3012">
- <element xmi:type="uml:Property" href="fUML_Async_Semantics.uml#_6q0LQF3AEeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_6raoMV3AEeOTf6IB0t4cAA"/>
- </children>
- <styles xmi:type="notation:TitleStyle" xmi:id="_5uafUl2-EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_5uafU12-EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_5uafVF2-EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5uafVV2-EeOTf6IB0t4cAA"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_5uafVl2-EeOTf6IB0t4cAA" type="7018">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5ubGYl2-EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5ubGY12-EeOTf6IB0t4cAA" key="showTitle" value="true"/>
- </eAnnotations>
- <children xmi:type="notation:Shape" xmi:id="_7l5I4F2_EeOTf6IB0t4cAA" type="3013">
- <element xmi:type="uml:Operation" href="fUML_Async_Semantics.uml#_7lKwIF2_EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_7l5I4V2_EeOTf6IB0t4cAA"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_74nQkF2_EeOTf6IB0t4cAA" type="3013">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qrtNwF3BEeOTf6IB0t4cAA" source="CustomAppearance_Annotation">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qrtNwV3BEeOTf6IB0t4cAA" key="CustomAppearance_MaskValue" value="7050"/>
- </eAnnotations>
- <element xmi:type="uml:Operation" href="fUML_Async_Semantics.uml#_74BasF2_EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_74nQkV2_EeOTf6IB0t4cAA"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_221jUF3AEeOTf6IB0t4cAA" type="3013">
- <element xmi:type="uml:Operation" href="fUML_Async_Semantics.uml#_22F8cF3AEeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_221jUV3AEeOTf6IB0t4cAA"/>
- </children>
- <styles xmi:type="notation:TitleStyle" xmi:id="_5uafV12-EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_5uafWF2-EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_5uafWV2-EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5uafWl2-EeOTf6IB0t4cAA"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_5uafW12-EeOTf6IB0t4cAA" type="7019">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5ubGZF2-EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5ubGZV2-EeOTf6IB0t4cAA" key="showTitle" value="true"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pH_qMF2_EeOTf6IB0t4cAA" key="visible" value="true"/>
- </eAnnotations>
- <children xmi:type="notation:Shape" xmi:id="_qSa18F2_EeOTf6IB0t4cAA" type="3052">
- <element xmi:type="uml:Enumeration" href="fUML_Async_Semantics.uml#_qRzx8F2_EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_qSa18V2_EeOTf6IB0t4cAA"/>
- </children>
- <styles xmi:type="notation:TitleStyle" xmi:id="_5uafXF2-EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_5uafXV2-EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_5uafXl2-EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5uafX12-EeOTf6IB0t4cAA"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_5umskF2-EeOTf6IB0t4cAA" visible="false" type="compartment_shape_display">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5umsk12-EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5umslF2-EeOTf6IB0t4cAA" key="mutable" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_5umskV2-EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5umskl2-EeOTf6IB0t4cAA"/>
- </children>
- <element xmi:type="uml:Class" href="fUML_Async_Semantics.uml#_wWXx4F2-EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5uZ4QV2-EeOTf6IB0t4cAA" x="521" y="374" width="390"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_S-66QF2_EeOTf6IB0t4cAA" type="2008">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_X9-1QF2_EeOTf6IB0t4cAA" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_X9_cUF2_EeOTf6IB0t4cAA" key="QualifiedNameDepth" value="0"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_S-7hUF2_EeOTf6IB0t4cAA" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_S-7hUV2_EeOTf6IB0t4cAA" visible="false" type="7017">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_S-8IYF2_EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_S-8IYV2_EeOTf6IB0t4cAA" key="showTitle" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_S-7hUl2_EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_S-7hU12_EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_S-7hVF2_EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S-7hVV2_EeOTf6IB0t4cAA"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_S-7hVl2_EeOTf6IB0t4cAA" visible="false" type="7018">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_S-8IYl2_EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_S-8IY12_EeOTf6IB0t4cAA" key="showTitle" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_S-7hV12_EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_S-7hWF2_EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_S-7hWV2_EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S-7hWl2_EeOTf6IB0t4cAA"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_S-7hW12_EeOTf6IB0t4cAA" visible="false" type="7019">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_S-8vcF2_EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_S-8vcV2_EeOTf6IB0t4cAA" key="showTitle" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_S-7hXF2_EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_S-7hXV2_EeOTf6IB0t4cAA"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_S-7hXl2_EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S-7hX12_EeOTf6IB0t4cAA"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_S_KK0F2_EeOTf6IB0t4cAA" visible="false" type="compartment_shape_display">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_S_Kx4F2_EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_S_Kx4V2_EeOTf6IB0t4cAA" key="mutable" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_S_KK0V2_EeOTf6IB0t4cAA"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S_KK0l2_EeOTf6IB0t4cAA"/>
- </children>
- <element xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-CommonBehaviors-Communications-ObjectActivation"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S-66QV2_EeOTf6IB0t4cAA" x="520" y="210" width="386" height="60"/>
- </children>
- <styles xmi:type="notation:DiagramStyle" xmi:id="_5LpwgV2-EeOTf6IB0t4cAA"/>
- <element xmi:type="uml:Package" href="fUML_Async_Semantics.uml#_s2RvQF2-EeOTf6IB0t4cAA"/>
- <edges xmi:type="notation:Connector" xmi:id="_acBlAF2_EeOTf6IB0t4cAA" type="4002" source="_5uZ4QF2-EeOTf6IB0t4cAA" target="_S-66QF2_EeOTf6IB0t4cAA">
- <children xmi:type="notation:DecorationNode" xmi:id="_acCMEF2_EeOTf6IB0t4cAA" type="6007">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_acCMEV2_EeOTf6IB0t4cAA" y="40"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_acBlAV2_EeOTf6IB0t4cAA"/>
- <element xmi:type="uml:Generalization" href="fUML_Async_Semantics.uml#_abc9QF2_EeOTf6IB0t4cAA"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_acBlAl2_EeOTf6IB0t4cAA" points="[3, -3, 0, 160]$[6, -167, 3, -4]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_acHroF2_EeOTf6IB0t4cAA" id="(0.5358974358974359,0.03)"/>
- <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_acHroV2_EeOTf6IB0t4cAA" id="(0.5518134715025906,0.06666666666666667)"/>
- </edges>
- </notation:Diagram>
- <notation:Diagram xmi:id="_UUgtkF5WEeOQDp6f49za_g" type="PapyrusUMLClassDiagram" name="LociL1 Extension" measurementUnit="Pixel">
- <children xmi:type="notation:Shape" xmi:id="_UzqHsF5WEeOQDp6f49za_g" type="2008" fillColor="8047085">
- <children xmi:type="notation:DecorationNode" xmi:id="_UzrV0F5WEeOQDp6f49za_g" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_UzrV0V5WEeOQDp6f49za_g" visible="false" type="7017">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uzsj8F5WEeOQDp6f49za_g" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uzsj8V5WEeOQDp6f49za_g" key="showTitle" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_UzrV0l5WEeOQDp6f49za_g"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_UzrV015WEeOQDp6f49za_g"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_UzrV1F5WEeOQDp6f49za_g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UzrV1V5WEeOQDp6f49za_g"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_Uzr84F5WEeOQDp6f49za_g" type="7018">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uzsj8l5WEeOQDp6f49za_g" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uzsj815WEeOQDp6f49za_g" key="showTitle" value="true"/>
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nW4Q0F6OEeOTX_efpbGI-w" key="visible" value="true"/>
- </eAnnotations>
- <children xmi:type="notation:Shape" xmi:id="_kdMt8F6OEeOTX_efpbGI-w" type="3013">
- <element xmi:type="uml:Operation" href="fUML_Async_Semantics.uml#_kcPEoF6OEeOTX_efpbGI-w"/>
- <layoutConstraint xmi:type="notation:Location" xmi:id="_kdMt8V6OEeOTX_efpbGI-w"/>
- </children>
- <styles xmi:type="notation:TitleStyle" xmi:id="_Uzr84V5WEeOQDp6f49za_g"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_Uzr84l5WEeOQDp6f49za_g"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_Uzr8415WEeOQDp6f49za_g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uzr85F5WEeOQDp6f49za_g"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_Uzr85V5WEeOQDp6f49za_g" visible="false" type="7019">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uzsj9F5WEeOQDp6f49za_g" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UztLAF5WEeOQDp6f49za_g" key="showTitle" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_Uzr85l5WEeOQDp6f49za_g"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_Uzr8515WEeOQDp6f49za_g"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_Uzr86F5WEeOQDp6f49za_g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uzr86V5WEeOQDp6f49za_g"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_Uz5YQF5WEeOQDp6f49za_g" visible="false" type="compartment_shape_display">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uz5YQ15WEeOQDp6f49za_g" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uz5YRF5WEeOQDp6f49za_g" key="mutable" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_Uz5YQV5WEeOQDp6f49za_g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uz5YQl5WEeOQDp6f49za_g"/>
- </children>
- <element xmi:type="uml:Class" href="fUML_Async_Semantics.uml#_ILvk8F5WEeOQDp6f49za_g"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UzqHsV5WEeOQDp6f49za_g" x="385" y="430" width="401"/>
- </children>
- <children xmi:type="notation:Shape" xmi:id="_VIxhoF6OEeOTX_efpbGI-w" type="2008">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_an5cwF6OEeOTX_efpbGI-w" source="QualifiedName">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_an6D0F6OEeOTX_efpbGI-w" key="QualifiedNameDepth" value="0"/>
- </eAnnotations>
- <children xmi:type="notation:DecorationNode" xmi:id="_VIyIsF6OEeOTX_efpbGI-w" type="5029"/>
- <children xmi:type="notation:BasicCompartment" xmi:id="_VIyvwF6OEeOTX_efpbGI-w" visible="false" type="7017">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VI0k8F6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VI0k8V6OEeOTX_efpbGI-w" key="showTitle" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_VIyvwV6OEeOTX_efpbGI-w"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_VIyvwl6OEeOTX_efpbGI-w"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_VIyvw16OEeOTX_efpbGI-w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VIyvxF6OEeOTX_efpbGI-w"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_VIyvxV6OEeOTX_efpbGI-w" visible="false" type="7018">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VI1MAF6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VI1MAV6OEeOTX_efpbGI-w" key="showTitle" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_VIyvxl6OEeOTX_efpbGI-w"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_VIyvx16OEeOTX_efpbGI-w"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_VIyvyF6OEeOTX_efpbGI-w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VIyvyV6OEeOTX_efpbGI-w"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_VIzW0F6OEeOTX_efpbGI-w" visible="false" type="7019">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VI1zEF6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VI2aIF6OEeOTX_efpbGI-w" key="showTitle" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_VIzW0V6OEeOTX_efpbGI-w"/>
- <styles xmi:type="notation:SortingStyle" xmi:id="_VIzW0l6OEeOTX_efpbGI-w"/>
- <styles xmi:type="notation:FilteringStyle" xmi:id="_VIzW016OEeOTX_efpbGI-w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VIzW1F6OEeOTX_efpbGI-w"/>
- </children>
- <children xmi:type="notation:BasicCompartment" xmi:id="_VJQp0F6OEeOTX_efpbGI-w" visible="false" type="compartment_shape_display">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VJRQ4F6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
- <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VJRQ4V6OEeOTX_efpbGI-w" key="mutable" value="true"/>
- </eAnnotations>
- <styles xmi:type="notation:TitleStyle" xmi:id="_VJQp0V6OEeOTX_efpbGI-w"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VJQp0l6OEeOTX_efpbGI-w"/>
- </children>
- <element xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_CS_TYPES/PreciseSemanticsOfComposites.uml#_m8YmQOYdEeGYZqnbU6eCYw"/>
- <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VIxhoV6OEeOTX_efpbGI-w" x="385" y="253" width="401" height="63"/>
- </children>
- <styles xmi:type="notation:DiagramStyle" xmi:id="_UUgtkV5WEeOQDp6f49za_g"/>
- <element xmi:type="uml:Package" href="fUML_Async_Semantics.uml#_D1WzgF5WEeOQDp6f49za_g"/>
- <edges xmi:type="notation:Connector" xmi:id="_bx9cIF6OEeOTX_efpbGI-w" type="4002" source="_UzqHsF5WEeOQDp6f49za_g" target="_VIxhoF6OEeOTX_efpbGI-w">
- <children xmi:type="notation:DecorationNode" xmi:id="_bx9cI16OEeOTX_efpbGI-w" type="6007">
- <layoutConstraint xmi:type="notation:Location" xmi:id="_bx9cJF6OEeOTX_efpbGI-w" y="40"/>
- </children>
- <styles xmi:type="notation:FontStyle" xmi:id="_bx9cIV6OEeOTX_efpbGI-w"/>
- <element xmi:type="uml:Generalization" href="fUML_Async_Semantics.uml#_bxOcUF6OEeOTX_efpbGI-w"/>
- <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bx9cIl6OEeOTX_efpbGI-w" points="[5, -10, 7, 146]$[5, -124, 7, 32]"/>
- <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_byC7sF6OEeOTX_efpbGI-w" id="(0.4975369458128079,0.1)"/>
- </edges>
- </notation:Diagram>
-</xmi:XMI>
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" 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">
+ <notation:Diagram xmi:id="_Nkzs4F29EeOTf6IB0t4cAA" type="PapyrusUMLClassDiagram" name="Kernel Extension" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_PHb9QF29EeOTf6IB0t4cAA" type="2008" fillColor="8047085">
+ <children xmi:type="notation:DecorationNode" xmi:id="_PHgOsF29EeOTf6IB0t4cAA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PHg1wF29EeOTf6IB0t4cAA" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PHiD4F29EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PHiq8F29EeOTf6IB0t4cAA" key="showTitle" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_l4y1MF29EeOTf6IB0t4cAA" type="3012">
+ <element xmi:type="uml:Property" href="fUML_Async_Semantics.uml#_l4RQwF29EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_l4y1MV29EeOTf6IB0t4cAA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PHg1wV29EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_PHg1wl29EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_PHg1w129EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PHg1xF29EeOTf6IB0t4cAA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PHg1xV29EeOTf6IB0t4cAA" type="7018">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PHiq8V29EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PHiq8l29EeOTf6IB0t4cAA" key="showTitle" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_j23ZsF29EeOTf6IB0t4cAA" type="3013">
+ <element xmi:type="uml:Operation" href="fUML_Async_Semantics.uml#_j2VOMF29EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_j23ZsV29EeOTf6IB0t4cAA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PHg1xl29EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_PHg1x129EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_PHg1yF29EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PHg1yV29EeOTf6IB0t4cAA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PHhc0F29EeOTf6IB0t4cAA" visible="false" type="7019">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PHjSAF29EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PHjSAV29EeOTf6IB0t4cAA" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PHhc0V29EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_PHhc0l29EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_PHhc0129EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PHhc1F29EeOTf6IB0t4cAA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_PHwtYF29EeOTf6IB0t4cAA" visible="false" type="compartment_shape_display">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_PHxUcF29EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_PHxUcV29EeOTf6IB0t4cAA" key="mutable" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_PHwtYV29EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PHwtYl29EeOTf6IB0t4cAA"/>
+ </children>
+ <element xmi:type="uml:Class" href="fUML_Async_Semantics.uml#__2jNIF28EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_PHb9QV29EeOTf6IB0t4cAA" x="325" y="395" width="481"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_BcK0IF6OEeOTX_efpbGI-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Gi7SkF6OEeOTX_efpbGI-w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Gi7SkV6OEeOTX_efpbGI-w" key="QualifiedNameDepth" value="0"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_BcNQYF6OEeOTX_efpbGI-w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BcNQYV6OEeOTX_efpbGI-w" visible="false" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BcOegF6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BcOegV6OEeOTX_efpbGI-w" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BcNQYl6OEeOTX_efpbGI-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BcNQY16OEeOTX_efpbGI-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BcNQZF6OEeOTX_efpbGI-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BcNQZV6OEeOTX_efpbGI-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BcN3cF6OEeOTX_efpbGI-w" visible="false" type="7018">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BcPFkF6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BcPFkV6OEeOTX_efpbGI-w" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BcN3cV6OEeOTX_efpbGI-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BcN3cl6OEeOTX_efpbGI-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BcN3c16OEeOTX_efpbGI-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BcN3dF6OEeOTX_efpbGI-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BcN3dV6OEeOTX_efpbGI-w" visible="false" type="7019">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BcPFkl6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BcPFk16OEeOTX_efpbGI-w" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BcN3dl6OEeOTX_efpbGI-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_BcN3d16OEeOTX_efpbGI-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_BcN3eF6OEeOTX_efpbGI-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BcN3eV6OEeOTX_efpbGI-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_BcgLUF6OEeOTX_efpbGI-w" visible="false" type="compartment_shape_display">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_BcgyYF6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_BcgyYV6OEeOTX_efpbGI-w" key="mutable" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_BcgLUV6OEeOTX_efpbGI-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BcgLUl6OEeOTX_efpbGI-w"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_CS_TYPES/PreciseSemanticsOfComposites.uml#_wUwzPd2JEeGnO-TF_1T_iQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_BcK0IV6OEeOTX_efpbGI-w" x="325" y="249" width="481" height="62"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Nkzs4V29EeOTf6IB0t4cAA"/>
+ <element xmi:type="uml:Package" href="fUML_Async_Semantics.uml#_JVY7kF28EeOTf6IB0t4cAA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_E0L40F6OEeOTX_efpbGI-w" type="4002" source="_PHb9QF29EeOTf6IB0t4cAA" target="_BcK0IF6OEeOTX_efpbGI-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_E0L4016OEeOTX_efpbGI-w" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_E0L41F6OEeOTX_efpbGI-w" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_E0L40V6OEeOTX_efpbGI-w"/>
+ <element xmi:type="uml:Generalization" href="fUML_Async_Semantics.uml#_EzEegF6OEeOTX_efpbGI-w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_E0L40l6OEeOTX_efpbGI-w" points="[8, -11, 3, 115]$[8, -95, 3, 31]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_E0TNkF6OEeOTX_efpbGI-w" id="(0.48693586698337293,0.11)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_5LpwgF2-EeOTf6IB0t4cAA" type="PapyrusUMLClassDiagram" name="Communications Extension" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_5uZ4QF2-EeOTf6IB0t4cAA" type="2008" fillColor="8047085">
+ <children xmi:type="notation:DecorationNode" xmi:id="_5uafUF2-EeOTf6IB0t4cAA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5uafUV2-EeOTf6IB0t4cAA" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5ubGYF2-EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5ubGYV2-EeOTf6IB0t4cAA" key="showTitle" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_6raoMF3AEeOTf6IB0t4cAA" type="3012">
+ <element xmi:type="uml:Property" href="fUML_Async_Semantics.uml#_6q0LQF3AEeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_6raoMV3AEeOTf6IB0t4cAA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5uafUl2-EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5uafU12-EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5uafVF2-EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5uafVV2-EeOTf6IB0t4cAA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5uafVl2-EeOTf6IB0t4cAA" type="7018">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5ubGYl2-EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5ubGY12-EeOTf6IB0t4cAA" key="showTitle" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_7l5I4F2_EeOTf6IB0t4cAA" type="3013">
+ <element xmi:type="uml:Operation" href="fUML_Async_Semantics.uml#_7lKwIF2_EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_7l5I4V2_EeOTf6IB0t4cAA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_74nQkF2_EeOTf6IB0t4cAA" type="3013">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_qrtNwF3BEeOTf6IB0t4cAA" source="CustomAppearance_Annotation">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_qrtNwV3BEeOTf6IB0t4cAA" key="CustomAppearance_MaskValue" value="7050"/>
+ </eAnnotations>
+ <element xmi:type="uml:Operation" href="fUML_Async_Semantics.uml#_74BasF2_EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_74nQkV2_EeOTf6IB0t4cAA"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_221jUF3AEeOTf6IB0t4cAA" type="3013">
+ <element xmi:type="uml:Operation" href="fUML_Async_Semantics.uml#_22F8cF3AEeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_221jUV3AEeOTf6IB0t4cAA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5uafV12-EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5uafWF2-EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5uafWV2-EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5uafWl2-EeOTf6IB0t4cAA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5uafW12-EeOTf6IB0t4cAA" type="7019">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5ubGZF2-EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5ubGZV2-EeOTf6IB0t4cAA" key="showTitle" value="true"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_pH_qMF2_EeOTf6IB0t4cAA" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_qSa18F2_EeOTf6IB0t4cAA" type="3052">
+ <element xmi:type="uml:Enumeration" href="fUML_Async_Semantics.uml#_qRzx8F2_EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_qSa18V2_EeOTf6IB0t4cAA"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5uafXF2-EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_5uafXV2-EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_5uafXl2-EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5uafX12-EeOTf6IB0t4cAA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_5umskF2-EeOTf6IB0t4cAA" visible="false" type="compartment_shape_display">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_5umsk12-EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_5umslF2-EeOTf6IB0t4cAA" key="mutable" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_5umskV2-EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5umskl2-EeOTf6IB0t4cAA"/>
+ </children>
+ <element xmi:type="uml:Class" href="fUML_Async_Semantics.uml#_wWXx4F2-EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_5uZ4QV2-EeOTf6IB0t4cAA" x="521" y="374" width="390"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_S-66QF2_EeOTf6IB0t4cAA" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_X9-1QF2_EeOTf6IB0t4cAA" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_X9_cUF2_EeOTf6IB0t4cAA" key="QualifiedNameDepth" value="0"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_S-7hUF2_EeOTf6IB0t4cAA" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_S-7hUV2_EeOTf6IB0t4cAA" visible="false" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_S-8IYF2_EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_S-8IYV2_EeOTf6IB0t4cAA" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_S-7hUl2_EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_S-7hU12_EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_S-7hVF2_EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S-7hVV2_EeOTf6IB0t4cAA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_S-7hVl2_EeOTf6IB0t4cAA" visible="false" type="7018">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_S-8IYl2_EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_S-8IY12_EeOTf6IB0t4cAA" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_S-7hV12_EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_S-7hWF2_EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_S-7hWV2_EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S-7hWl2_EeOTf6IB0t4cAA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_S-7hW12_EeOTf6IB0t4cAA" visible="false" type="7019">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_S-8vcF2_EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_S-8vcV2_EeOTf6IB0t4cAA" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_S-7hXF2_EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_S-7hXV2_EeOTf6IB0t4cAA"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_S-7hXl2_EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S-7hX12_EeOTf6IB0t4cAA"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_S_KK0F2_EeOTf6IB0t4cAA" visible="false" type="compartment_shape_display">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_S_Kx4F2_EeOTf6IB0t4cAA" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_S_Kx4V2_EeOTf6IB0t4cAA" key="mutable" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_S_KK0V2_EeOTf6IB0t4cAA"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S_KK0l2_EeOTf6IB0t4cAA"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-CommonBehaviors-Communications-ObjectActivation"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_S-66QV2_EeOTf6IB0t4cAA" x="520" y="210" width="386" height="60"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_5LpwgV2-EeOTf6IB0t4cAA"/>
+ <element xmi:type="uml:Package" href="fUML_Async_Semantics.uml#_s2RvQF2-EeOTf6IB0t4cAA"/>
+ <edges xmi:type="notation:Connector" xmi:id="_acBlAF2_EeOTf6IB0t4cAA" type="4002" source="_5uZ4QF2-EeOTf6IB0t4cAA" target="_S-66QF2_EeOTf6IB0t4cAA">
+ <children xmi:type="notation:DecorationNode" xmi:id="_acCMEF2_EeOTf6IB0t4cAA" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_acCMEV2_EeOTf6IB0t4cAA" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_acBlAV2_EeOTf6IB0t4cAA"/>
+ <element xmi:type="uml:Generalization" href="fUML_Async_Semantics.uml#_abc9QF2_EeOTf6IB0t4cAA"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_acBlAl2_EeOTf6IB0t4cAA" points="[3, -3, 0, 160]$[6, -167, 3, -4]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_acHroF2_EeOTf6IB0t4cAA" id="(0.5358974358974359,0.03)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_acHroV2_EeOTf6IB0t4cAA" id="(0.5518134715025906,0.06666666666666667)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_UUgtkF5WEeOQDp6f49za_g" type="PapyrusUMLClassDiagram" name="LociL1 Extension" measurementUnit="Pixel">
+ <children xmi:type="notation:Shape" xmi:id="_UzqHsF5WEeOQDp6f49za_g" type="2008" fillColor="8047085">
+ <children xmi:type="notation:DecorationNode" xmi:id="_UzrV0F5WEeOQDp6f49za_g" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_UzrV0V5WEeOQDp6f49za_g" visible="false" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uzsj8F5WEeOQDp6f49za_g" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uzsj8V5WEeOQDp6f49za_g" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_UzrV0l5WEeOQDp6f49za_g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_UzrV015WEeOQDp6f49za_g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_UzrV1F5WEeOQDp6f49za_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UzrV1V5WEeOQDp6f49za_g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uzr84F5WEeOQDp6f49za_g" type="7018">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uzsj8l5WEeOQDp6f49za_g" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uzsj815WEeOQDp6f49za_g" key="showTitle" value="true"/>
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_nW4Q0F6OEeOTX_efpbGI-w" key="visible" value="true"/>
+ </eAnnotations>
+ <children xmi:type="notation:Shape" xmi:id="_kdMt8F6OEeOTX_efpbGI-w" type="3013">
+ <element xmi:type="uml:Operation" href="fUML_Async_Semantics.uml#_kcPEoF6OEeOTX_efpbGI-w"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_kdMt8V6OEeOTX_efpbGI-w"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uzr84V5WEeOQDp6f49za_g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Uzr84l5WEeOQDp6f49za_g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uzr8415WEeOQDp6f49za_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uzr85F5WEeOQDp6f49za_g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uzr85V5WEeOQDp6f49za_g" visible="false" type="7019">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uzsj9F5WEeOQDp6f49za_g" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_UztLAF5WEeOQDp6f49za_g" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uzr85l5WEeOQDp6f49za_g"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_Uzr8515WEeOQDp6f49za_g"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_Uzr86F5WEeOQDp6f49za_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uzr86V5WEeOQDp6f49za_g"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_Uz5YQF5WEeOQDp6f49za_g" visible="false" type="compartment_shape_display">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_Uz5YQ15WEeOQDp6f49za_g" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_Uz5YRF5WEeOQDp6f49za_g" key="mutable" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_Uz5YQV5WEeOQDp6f49za_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_Uz5YQl5WEeOQDp6f49za_g"/>
+ </children>
+ <element xmi:type="uml:Class" href="fUML_Async_Semantics.uml#_ILvk8F5WEeOQDp6f49za_g"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_UzqHsV5WEeOQDp6f49za_g" x="385" y="430" width="401"/>
+ </children>
+ <children xmi:type="notation:Shape" xmi:id="_VIxhoF6OEeOTX_efpbGI-w" type="2008">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_an5cwF6OEeOTX_efpbGI-w" source="QualifiedName">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_an6D0F6OEeOTX_efpbGI-w" key="QualifiedNameDepth" value="0"/>
+ </eAnnotations>
+ <children xmi:type="notation:DecorationNode" xmi:id="_VIyIsF6OEeOTX_efpbGI-w" type="5029"/>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VIyvwF6OEeOTX_efpbGI-w" visible="false" type="7017">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VI0k8F6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VI0k8V6OEeOTX_efpbGI-w" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VIyvwV6OEeOTX_efpbGI-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VIyvwl6OEeOTX_efpbGI-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VIyvw16OEeOTX_efpbGI-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VIyvxF6OEeOTX_efpbGI-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VIyvxV6OEeOTX_efpbGI-w" visible="false" type="7018">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VI1MAF6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VI1MAV6OEeOTX_efpbGI-w" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VIyvxl6OEeOTX_efpbGI-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VIyvx16OEeOTX_efpbGI-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VIyvyF6OEeOTX_efpbGI-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VIyvyV6OEeOTX_efpbGI-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VIzW0F6OEeOTX_efpbGI-w" visible="false" type="7019">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VI1zEF6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VI2aIF6OEeOTX_efpbGI-w" key="showTitle" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VIzW0V6OEeOTX_efpbGI-w"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_VIzW0l6OEeOTX_efpbGI-w"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_VIzW016OEeOTX_efpbGI-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VIzW1F6OEeOTX_efpbGI-w"/>
+ </children>
+ <children xmi:type="notation:BasicCompartment" xmi:id="_VJQp0F6OEeOTX_efpbGI-w" visible="false" type="compartment_shape_display">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_VJRQ4F6OEeOTX_efpbGI-w" source="PapyrusCSSForceValue">
+ <details xmi:type="ecore:EStringToStringMapEntry" xmi:id="_VJRQ4V6OEeOTX_efpbGI-w" key="mutable" value="true"/>
+ </eAnnotations>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_VJQp0V6OEeOTX_efpbGI-w"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VJQp0l6OEeOTX_efpbGI-w"/>
+ </children>
+ <element xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_CS_TYPES/PreciseSemanticsOfComposites.uml#_m8YmQOYdEeGYZqnbU6eCYw"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_VIxhoV6OEeOTX_efpbGI-w" x="385" y="253" width="401" height="63"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_UUgtkV5WEeOQDp6f49za_g"/>
+ <element xmi:type="uml:Package" href="fUML_Async_Semantics.uml#_D1WzgF5WEeOQDp6f49za_g"/>
+ <edges xmi:type="notation:Connector" xmi:id="_bx9cIF6OEeOTX_efpbGI-w" type="4002" source="_UzqHsF5WEeOQDp6f49za_g" target="_VIxhoF6OEeOTX_efpbGI-w">
+ <children xmi:type="notation:DecorationNode" xmi:id="_bx9cI16OEeOTX_efpbGI-w" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_bx9cJF6OEeOTX_efpbGI-w" y="40"/>
+ </children>
+ <styles xmi:type="notation:FontStyle" xmi:id="_bx9cIV6OEeOTX_efpbGI-w"/>
+ <element xmi:type="uml:Generalization" href="fUML_Async_Semantics.uml#_bxOcUF6OEeOTX_efpbGI-w"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_bx9cIl6OEeOTX_efpbGI-w" points="[5, -10, 7, 146]$[5, -124, 7, 32]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_byC7sF6OEeOTX_efpbGI-w" id="(0.4975369458128079,0.1)"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/org.eclipse.papyrus.moka.async.fuml/resources/fUML_Async_Semantics.uml b/org.eclipse.papyrus.moka.async.fuml/resources/fUML_Async_Semantics.uml
index e9bc7dd..92d18d5 100644
--- a/org.eclipse.papyrus.moka.async.fuml/resources/fUML_Async_Semantics.uml
+++ b/org.eclipse.papyrus.moka.async.fuml/resources/fUML_Async_Semantics.uml
@@ -1,104 +1,104 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<uml:Model xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_AVyjUF28EeOTf6IB0t4cAA" name="fUMLAsync">
- <packageImport xmi:type="uml:PackageImport" xmi:id="_mghSgFzLEeOyfYQ3OSvhhA">
- <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_0"/>
- </packageImport>
- <packageImport xmi:type="uml:PackageImport" xmi:id="_AVyjUV28EeOTf6IB0t4cAA">
- <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
- </packageImport>
- <packageImport xmi:type="uml:PackageImport" xmi:id="_EbNrIF29EeOTf6IB0t4cAA">
- <importedPackage xmi:type="uml:Model" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#_0"/>
- </packageImport>
- <packageImport xmi:type="uml:PackageImport" xmi:id="_5yiwUF6NEeOTX_efpbGI-w">
- <importedPackage xmi:type="uml:Model" href="pathmap://PAPYRUS_MOKA_FUML_CS_TYPES/PreciseSemanticsOfComposites.uml#_rP7eQNyJEeGru4CffneBug"/>
- </packageImport>
- <packagedElement xmi:type="uml:Package" xmi:id="_EhegoF28EeOTf6IB0t4cAA" name="Semantics">
- <packagedElement xmi:type="uml:Package" xmi:id="_G78_AF28EeOTf6IB0t4cAA" name="Classes">
- <packagedElement xmi:type="uml:Package" xmi:id="_JVY7kF28EeOTf6IB0t4cAA" name="Kernel">
- <packagedElement xmi:type="uml:Class" xmi:id="__2jNIF28EeOTf6IB0t4cAA" name="AsyncObject_">
- <generalization xmi:type="uml:Generalization" xmi:id="_EzEegF6OEeOTX_efpbGI-w">
- <general xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_CS_TYPES/PreciseSemanticsOfComposites.uml#_wUwzPd2JEeGnO-TF_1T_iQ"/>
- </generalization>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_l4RQwF29EeOTf6IB0t4cAA" name="objectactivationThread" visibility="protected">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_o1KfsF29EeOTf6IB0t4cAA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o1mkkF29EeOTf6IB0t4cAA" value="1"/>
- </ownedAttribute>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_j2VOMF29EeOTf6IB0t4cAA" name="startBehavior">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_dUaj4F2-EeOTf6IB0t4cAA" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dUaj4V2-EeOTf6IB0t4cAA"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_dUCwcF2-EeOTf6IB0t4cAA" name="inputs" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-CommonBehaviors-BasicBehaviors-ParameterValue"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dUCwcV2-EeOTf6IB0t4cAA"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dUDXgF2-EeOTf6IB0t4cAA" value="*"/>
- </ownedParameter>
- <redefinedOperation xmi:type="uml:Operation" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-Classes-Kernel-Object-startBehavior.1"/>
- </ownedOperation>
- </packagedElement>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="_piitoF2-EeOTf6IB0t4cAA" name="CommonBehaviors">
- <packagedElement xmi:type="uml:Package" xmi:id="_s2RvQF2-EeOTf6IB0t4cAA" name="Communications">
- <packagedElement xmi:type="uml:Class" xmi:id="_wWXx4F2-EeOTf6IB0t4cAA" name="AsyncObjectActivation">
- <generalization xmi:type="uml:Generalization" xmi:id="_abc9QF2_EeOTf6IB0t4cAA">
- <general xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-CommonBehaviors-Communications-ObjectActivation"/>
- </generalization>
- <ownedAttribute xmi:type="uml:Property" xmi:id="_6q0LQF3AEeOTf6IB0t4cAA" name="currentState" visibility="public" type="_qRzx8F2_EeOTf6IB0t4cAA" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__E5w8F3AEeOTf6IB0t4cAA" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__Ffm0F3AEeOTf6IB0t4cAA" value="1"/>
- <defaultValue xmi:type="uml:LiteralString" xmi:id="__Hej0F3AEeOTf6IB0t4cAA">
- <value xsi:nil="true"/>
- </defaultValue>
- </ownedAttribute>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_7lKwIF2_EeOTf6IB0t4cAA" name="send">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_JtayUF3CEeOTf6IB0t4cAA" name="signalInstance" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-CommonBehaviors-Communications-SignalInstance"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_74BasF2_EeOTf6IB0t4cAA" name="getNextEvent">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_jZbS8F3BEeOTf6IB0t4cAA" name="returnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-CommonBehaviors-Communications-SignalInstance"/>
- </ownedParameter>
- <redefinedOperation xmi:type="uml:Operation" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-CommonBehaviors-Communications-ObjectActivation-getNextEvent.1"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_22F8cF3AEeOTf6IB0t4cAA" name="startBehavior">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_-aRqIF3BEeOTf6IB0t4cAA" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-aRqIV3BEeOTf6IB0t4cAA"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_-alMIF3BEeOTf6IB0t4cAA" name="inputs" visibility="public">
- <type xmi:type="uml:Class" href="fUML_Semantics.uml#Semantics-CommonBehaviors-BasicBehaviors-ParameterValue"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-alMIV3BEeOTf6IB0t4cAA"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-alMIl3BEeOTf6IB0t4cAA" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <nestedClassifier xmi:type="uml:Enumeration" xmi:id="_qRzx8F2_EeOTf6IB0t4cAA" name="ObjectActivationState">
- <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_wtgDAF2_EeOTf6IB0t4cAA" name="RUNNING"/>
- <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_zOicYF2_EeOTf6IB0t4cAA" name="STOPPED"/>
- <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_1WuQ4F2_EeOTf6IB0t4cAA" name="WAITING"/>
- </nestedClassifier>
- </packagedElement>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="__upc0F5VEeOQDp6f49za_g" name="Loci">
- <packagedElement xmi:type="uml:Package" xmi:id="_D1WzgF5WEeOQDp6f49za_g" name="LociL1">
- <packagedElement xmi:type="uml:Class" xmi:id="_ILvk8F5WEeOQDp6f49za_g" name="AsyncLocus">
- <generalization xmi:type="uml:Generalization" xmi:id="_bxOcUF6OEeOTX_efpbGI-w">
- <general xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_CS_TYPES/PreciseSemanticsOfComposites.uml#_m8YmQOYdEeGYZqnbU6eCYw"/>
- </generalization>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_d2OYoJNBEeOZv5vArj9pvw" name="instantiate_method" specification="_kcPEoF6OEeOTX_efpbGI-w"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_kcPEoF6OEeOTX_efpbGI-w" name="instantiate" method="_d2OYoJNBEeOZv5vArj9pvw">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_WU2SwI_cEeO0CoHvchsUDA" name="type">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_WUgUgI_cEeO0CoHvchsUDA" name="result" direction="return">
- <type xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-Classes-Kernel-Object"/>
- </ownedParameter>
- <redefinedOperation xmi:type="uml:Operation" href="pathmap://PAPYRUS_MOKA_FUML_CS_TYPES/PreciseSemanticsOfComposites.uml#_v1ptAOYdEeGYZqnbU6eCYw"/>
- </ownedOperation>
- </packagedElement>
- </packagedElement>
- </packagedElement>
- </packagedElement>
-</uml:Model>
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_AVyjUF28EeOTf6IB0t4cAA" name="fUMLAsync">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_mghSgFzLEeOyfYQ3OSvhhA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_AVyjUV28EeOTf6IB0t4cAA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_EbNrIF29EeOTf6IB0t4cAA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_5yiwUF6NEeOTX_efpbGI-w">
+ <importedPackage xmi:type="uml:Model" href="pathmap://PAPYRUS_MOKA_FUML_CS_TYPES/PreciseSemanticsOfComposites.uml#_rP7eQNyJEeGru4CffneBug"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="_EhegoF28EeOTf6IB0t4cAA" name="Semantics">
+ <packagedElement xmi:type="uml:Package" xmi:id="_G78_AF28EeOTf6IB0t4cAA" name="Classes">
+ <packagedElement xmi:type="uml:Package" xmi:id="_JVY7kF28EeOTf6IB0t4cAA" name="Kernel">
+ <packagedElement xmi:type="uml:Class" xmi:id="__2jNIF28EeOTf6IB0t4cAA" name="AsyncObject_">
+ <generalization xmi:type="uml:Generalization" xmi:id="_EzEegF6OEeOTX_efpbGI-w">
+ <general xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_CS_TYPES/PreciseSemanticsOfComposites.uml#_wUwzPd2JEeGnO-TF_1T_iQ"/>
+ </generalization>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_l4RQwF29EeOTf6IB0t4cAA" name="objectactivationThread" visibility="protected">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_o1KfsF29EeOTf6IB0t4cAA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_o1mkkF29EeOTf6IB0t4cAA" value="1"/>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_j2VOMF29EeOTf6IB0t4cAA" name="startBehavior">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_dUaj4F2-EeOTf6IB0t4cAA" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dUaj4V2-EeOTf6IB0t4cAA"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_dUCwcF2-EeOTf6IB0t4cAA" name="inputs" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-CommonBehaviors-BasicBehaviors-ParameterValue"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_dUCwcV2-EeOTf6IB0t4cAA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_dUDXgF2-EeOTf6IB0t4cAA" value="*"/>
+ </ownedParameter>
+ <redefinedOperation xmi:type="uml:Operation" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-Classes-Kernel-Object-startBehavior.1"/>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_piitoF2-EeOTf6IB0t4cAA" name="CommonBehaviors">
+ <packagedElement xmi:type="uml:Package" xmi:id="_s2RvQF2-EeOTf6IB0t4cAA" name="Communications">
+ <packagedElement xmi:type="uml:Class" xmi:id="_wWXx4F2-EeOTf6IB0t4cAA" name="AsyncObjectActivation">
+ <generalization xmi:type="uml:Generalization" xmi:id="_abc9QF2_EeOTf6IB0t4cAA">
+ <general xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-CommonBehaviors-Communications-ObjectActivation"/>
+ </generalization>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="_6q0LQF3AEeOTf6IB0t4cAA" name="currentState" visibility="public" type="_qRzx8F2_EeOTf6IB0t4cAA" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__E5w8F3AEeOTf6IB0t4cAA" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__Ffm0F3AEeOTf6IB0t4cAA" value="1"/>
+ <defaultValue xmi:type="uml:LiteralString" xmi:id="__Hej0F3AEeOTf6IB0t4cAA">
+ <value xsi:nil="true"/>
+ </defaultValue>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_7lKwIF2_EeOTf6IB0t4cAA" name="send">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_JtayUF3CEeOTf6IB0t4cAA" name="signalInstance" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_74BasF2_EeOTf6IB0t4cAA" name="getNextEvent">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_jZbS8F3BEeOTf6IB0t4cAA" name="returnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ </ownedParameter>
+ <redefinedOperation xmi:type="uml:Operation" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-CommonBehaviors-Communications-ObjectActivation-getNextEvent.1"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_22F8cF3AEeOTf6IB0t4cAA" name="startBehavior">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_-aRqIF3BEeOTf6IB0t4cAA" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-aRqIV3BEeOTf6IB0t4cAA"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_-alMIF3BEeOTf6IB0t4cAA" name="inputs" visibility="public">
+ <type xmi:type="uml:Class" href="fUML_Semantics.uml#Semantics-CommonBehaviors-BasicBehaviors-ParameterValue"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-alMIV3BEeOTf6IB0t4cAA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-alMIl3BEeOTf6IB0t4cAA" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <nestedClassifier xmi:type="uml:Enumeration" xmi:id="_qRzx8F2_EeOTf6IB0t4cAA" name="ObjectActivationState">
+ <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_wtgDAF2_EeOTf6IB0t4cAA" name="RUNNING"/>
+ <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_zOicYF2_EeOTf6IB0t4cAA" name="STOPPED"/>
+ <ownedLiteral xmi:type="uml:EnumerationLiteral" xmi:id="_1WuQ4F2_EeOTf6IB0t4cAA" name="WAITING"/>
+ </nestedClassifier>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="__upc0F5VEeOQDp6f49za_g" name="Loci">
+ <packagedElement xmi:type="uml:Package" xmi:id="_D1WzgF5WEeOQDp6f49za_g" name="LociL1">
+ <packagedElement xmi:type="uml:Class" xmi:id="_ILvk8F5WEeOQDp6f49za_g" name="AsyncLocus">
+ <generalization xmi:type="uml:Generalization" xmi:id="_bxOcUF6OEeOTX_efpbGI-w">
+ <general xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_CS_TYPES/PreciseSemanticsOfComposites.uml#_m8YmQOYdEeGYZqnbU6eCYw"/>
+ </generalization>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="_d2OYoJNBEeOZv5vArj9pvw" name="instantiate_method" specification="_kcPEoF6OEeOTX_efpbGI-w"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_kcPEoF6OEeOTX_efpbGI-w" name="instantiate" method="_d2OYoJNBEeOZv5vArj9pvw">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_WU2SwI_cEeO0CoHvchsUDA" name="type">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_WUgUgI_cEeO0CoHvchsUDA" name="result" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml#Semantics-Classes-Kernel-Object"/>
+ </ownedParameter>
+ <redefinedOperation xmi:type="uml:Operation" href="pathmap://PAPYRUS_MOKA_FUML_CS_TYPES/PreciseSemanticsOfComposites.uml#_v1ptAOYdEeGYZqnbU6eCYw"/>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+</uml:Model>
diff --git a/org.eclipse.papyrus.moka.async.fuml/src/org/eclipse/papyrus/moka/async/fuml/Semantics/Classes/Kernel/AsyncObject_.java b/org.eclipse.papyrus.moka.async.fuml/src/org/eclipse/papyrus/moka/async/fuml/Semantics/Classes/Kernel/AsyncObject_.java
index 0a8e360..1aac215 100644
--- a/org.eclipse.papyrus.moka.async.fuml/src/org/eclipse/papyrus/moka/async/fuml/Semantics/Classes/Kernel/AsyncObject_.java
+++ b/org.eclipse.papyrus.moka.async.fuml/src/org/eclipse/papyrus/moka/async/fuml/Semantics/Classes/Kernel/AsyncObject_.java
@@ -1,79 +1,79 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.async.fuml.Semantics.Classes.Kernel;
-
-import java.util.Iterator;
-import java.util.List;
-
-import org.eclipse.papyrus.moka.async.fuml.Activator;
-import org.eclipse.papyrus.moka.async.fuml.Semantics.CommonBehaviors.Communications.AsyncObjectActivation;
-import org.eclipse.papyrus.moka.async.fuml.debug.AsyncControlDelegate;
-import org.eclipse.papyrus.moka.async.fuml.debug.AsyncDebug;
-import org.eclipse.papyrus.moka.composites.Semantics.CompositeStructures.StructuredClasses.CS_Object;
-import org.eclipse.papyrus.moka.fuml.FUMLExecutionEngine;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
-import org.eclipse.uml2.uml.Class;
-
-/**
- * Object_ class is slightly modified in order to enable creation and starting of its
- * object activation on a new thread. This override the previous behavior that was limited
- * the call of the startBehavior(...) method
- *
- */
-public class AsyncObject_ extends CS_Object {
-
- /** The objectactivation thread. */
- protected Thread objectactivationThread;
-
- /**
- * Create and start the Java Thread required to execute its owning objectActivation.
- *
- * @param classifier
- * @param inputs
- */
- @Override
- public void startBehavior(Class classifier, List<ParameterValue> inputs) {
- if (this.objectActivation == null) {
- this.objectActivation = new AsyncObjectActivation(classifier, inputs);
- this.objectActivation.object = this;
- }
- /* 1. Create Thread Name */
- String threadName = "Thread_";
- Iterator<Class> classes = this.types.iterator();
- while (classes.hasNext()) {
- threadName += classes.next().getName();
- if (classes.hasNext()) {
- threadName += "|";
- }
- }
- /* 2. Pattern to start the Runnable corresponding to the AsyncObjectActivation */
- // Thread objectactivationThread = new Thread((AsyncObjectActivation)this.objectActivation, threadName);
- objectactivationThread = new Thread((AsyncObjectActivation) this.objectActivation, threadName);
-
- ((AsyncControlDelegate) FUMLExecutionEngine.eInstance.getControlDelegate()).registerObjectActivation(this.objectActivation, threadName); // Added for connection with debug api
-
- objectactivationThread.start();
-
- AsyncDebug.println("[NEW THREAD] Active object instance started on a new thread");
- }
-
- /**
- * TODO write Javadoc
- */
- public void join() {
- try {
- objectactivationThread.join();
- } catch (InterruptedException e) {
- Activator.log.error(e);
- }
- }
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.async.fuml.Semantics.Classes.Kernel;
+
+import java.util.Iterator;
+import java.util.List;
+
+import org.eclipse.papyrus.moka.async.fuml.Activator;
+import org.eclipse.papyrus.moka.async.fuml.Semantics.CommonBehaviors.Communications.AsyncObjectActivation;
+import org.eclipse.papyrus.moka.async.fuml.debug.AsyncControlDelegate;
+import org.eclipse.papyrus.moka.async.fuml.debug.AsyncDebug;
+import org.eclipse.papyrus.moka.composites.Semantics.CompositeStructures.StructuredClasses.CS_Object;
+import org.eclipse.papyrus.moka.fuml.FUMLExecutionEngine;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
+import org.eclipse.uml2.uml.Class;
+
+/**
+ * Object_ class is slightly modified in order to enable creation and starting of its
+ * object activation on a new thread. This override the previous behavior that was limited
+ * the call of the startBehavior(...) method
+ *
+ */
+public class AsyncObject_ extends CS_Object {
+
+ /** The objectactivation thread. */
+ protected Thread objectactivationThread;
+
+ /**
+ * Create and start the Java Thread required to execute its owning objectActivation.
+ *
+ * @param classifier
+ * @param inputs
+ */
+ @Override
+ public void startBehavior(Class classifier, List<ParameterValue> inputs) {
+ if (this.objectActivation == null) {
+ this.objectActivation = new AsyncObjectActivation(classifier, inputs);
+ this.objectActivation.object = this;
+ }
+ /* 1. Create Thread Name */
+ String threadName = "Thread_";
+ Iterator<Class> classes = this.types.iterator();
+ while (classes.hasNext()) {
+ threadName += classes.next().getName();
+ if (classes.hasNext()) {
+ threadName += "|";
+ }
+ }
+ /* 2. Pattern to start the Runnable corresponding to the AsyncObjectActivation */
+ // Thread objectactivationThread = new Thread((AsyncObjectActivation)this.objectActivation, threadName);
+ objectactivationThread = new Thread((AsyncObjectActivation) this.objectActivation, threadName);
+
+ ((AsyncControlDelegate) FUMLExecutionEngine.eInstance.getControlDelegate()).registerObjectActivation(this.objectActivation, threadName); // Added for connection with debug api
+
+ objectactivationThread.start();
+
+ AsyncDebug.println("[NEW THREAD] Active object instance started on a new thread");
+ }
+
+ /**
+ * TODO write Javadoc
+ */
+ public void join() {
+ try {
+ objectactivationThread.join();
+ } catch (InterruptedException e) {
+ Activator.log.error(e);
+ }
+ }
+}
diff --git a/org.eclipse.papyrus.moka.async.fuml/src/org/eclipse/papyrus/moka/async/fuml/Semantics/CommonBehaviors/Communications/AsyncFIFOGetNextEventStrategy.java b/org.eclipse.papyrus.moka.async.fuml/src/org/eclipse/papyrus/moka/async/fuml/Semantics/CommonBehaviors/Communications/AsyncFIFOGetNextEventStrategy.java
index e81d38d..8bf1390 100644
--- a/org.eclipse.papyrus.moka.async.fuml/src/org/eclipse/papyrus/moka/async/fuml/Semantics/CommonBehaviors/Communications/AsyncFIFOGetNextEventStrategy.java
+++ b/org.eclipse.papyrus.moka.async.fuml/src/org/eclipse/papyrus/moka/async/fuml/Semantics/CommonBehaviors/Communications/AsyncFIFOGetNextEventStrategy.java
@@ -1,45 +1,45 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.async.fuml.Semantics.CommonBehaviors.Communications;
-
-import org.eclipse.papyrus.moka.async.fuml.Activator;
-import org.eclipse.papyrus.moka.async.fuml.debug.AsyncDebug;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.SignalInstance;
-
-/**
- * FIFO strategy that retrieve the oldest SignalInstance owned by the EventPool object.
- */
-public class AsyncFIFOGetNextEventStrategy extends AsyncGetNextEventStrategy {
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.papyrus.moka.async.fuml.Semantics.CommonBehaviors.Communications.AsyncGetNextEventStrategy#getNextEvent(org.eclipse.papyrus.moka
- * .async.fuml.Semantics.CommonBehaviors.Communications.AsyncEventPool)
- */
- @Override
- /**
- * This method is always called by the object activation owning the event pool.
- * The call is blocking if no SignalInstance can be retrieved from the event pool.
- */
- public SignalInstance getNextEvent(AsyncEventPool eventPool) {
- SignalInstance nextEvent = null;
- try {
- nextEvent = eventPool.take();
- } catch (InterruptedException e) {
- AsyncDebug.println("getNextEvent interrupted while waiting");
- Activator.log.error(e);
- }
- return nextEvent;
- }
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.async.fuml.Semantics.CommonBehaviors.Communications;
+
+import org.eclipse.papyrus.moka.async.fuml.Activator;
+import org.eclipse.papyrus.moka.async.fuml.debug.AsyncDebug;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications.SignalInstance;
+
+/**
+ * FIFO strategy that retrieve the oldest SignalInstance owned by the EventPool object.
+ */
+public class AsyncFIFOGetNextEventStrategy extends AsyncGetNextEventStrategy {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.papyrus.moka.async.fuml.Semantics.CommonBehaviors.Communications.AsyncGetNextEventStrategy#getNextEvent(org.eclipse.papyrus.moka
+ * .async.fuml.Semantics.CommonBehaviors.Communications.AsyncEventPool)
+ */
+ @Override
+ /**
+ * This method is always called by the object activation owning the event pool.
+ * The call is blocking if no SignalInstance can be retrieved from the event pool.
+ */
+ public SignalInstance getNextEvent(AsyncEventPool eventPool) {
+ SignalInstance nextEvent = null;
+ try {
+ nextEvent = eventPool.take();
+ } catch (InterruptedException e) {
+ AsyncDebug.println("getNextEvent interrupted while waiting");
+ Activator.log.error(e);
+ }
+ return nextEvent;
+ }
+}
diff --git a/org.eclipse.papyrus.moka.composites.utils/META-INF/MANIFEST.MF b/org.eclipse.papyrus.moka.composites.utils/META-INF/MANIFEST.MF
index 97e9779..716ed9b 100644
--- a/org.eclipse.papyrus.moka.composites.utils/META-INF/MANIFEST.MF
+++ b/org.eclipse.papyrus.moka.composites.utils/META-INF/MANIFEST.MF
@@ -1,25 +1,25 @@
-Manifest-Version: 1.0
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.emf;bundle-version="2.6.0",
- org.eclipse.uml2.uml;bundle-version="4.0.1",
- org.junit,
- org.eclipse.emf.transaction;bundle-version="1.4.0",
- org.eclipse.papyrus.uml.tools.utils;bundle-version="1.2.0",
- org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.emf;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
- org.eclipse.papyrus.moka.fuml;bundle-version="1.2.0",
- org.eclipse.ui;bundle-version="3.106.0",
- org.eclipse.gmf.runtime.diagram.ui,
- org.eclipse.papyrus.uml.icons;bundle-version="1.2.0",
- org.eclipse.papyrus.editor;bundle-version="1.2.0",
- org.eclipse.papyrus.moka.composites;bundle-version="1.2.0"
-Export-Package: org.eclipse.papyrus.moka.composites.utils.handlers
-Bundle-Vendor: Eclipse Modeling Project
-Bundle-ActivationPolicy: lazy
-Bundle-Version: 1.2.0.qualifier
-Bundle-Name: Moka Composite Utils (Incubation)
-Bundle-ManifestVersion: 2
-Bundle-Activator: org.eclipse.papyrus.moka.composites.utils.Activator
-Bundle-SymbolicName: org.eclipse.papyrus.moka.composites.utils;singleton:=true
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.emf;bundle-version="2.6.0",
+ org.eclipse.uml2.uml;bundle-version="4.0.1",
+ org.junit,
+ org.eclipse.emf.transaction;bundle-version="1.4.0",
+ org.eclipse.papyrus.uml.tools.utils;bundle-version="1.2.0",
+ org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.emf;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.papyrus.moka.fuml;bundle-version="1.2.0",
+ org.eclipse.ui;bundle-version="3.106.0",
+ org.eclipse.gmf.runtime.diagram.ui,
+ org.eclipse.papyrus.uml.icons;bundle-version="1.2.0",
+ org.eclipse.papyrus.editor;bundle-version="1.2.0",
+ org.eclipse.papyrus.moka.composites;bundle-version="1.2.0"
+Export-Package: org.eclipse.papyrus.moka.composites.utils.handlers
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: Moka Composite Utils (Incubation)
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.moka.composites.utils.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.moka.composites.utils;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/org.eclipse.papyrus.moka.composites.utils/about.html b/org.eclipse.papyrus.moka.composites.utils/about.html
index 2091030..dd3c089 100644
--- a/org.eclipse.papyrus.moka.composites.utils/about.html
+++ b/org.eclipse.papyrus.moka.composites.utils/about.html
@@ -1,28 +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 ("Content"). Unless otherwise
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
+<!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 ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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/org.eclipse.papyrus.moka.composites.utils/pom.xml b/org.eclipse.papyrus.moka.composites.utils/pom.xml
index ae77b31..e66542b 100644
--- a/org.eclipse.papyrus.moka.composites.utils/pom.xml
+++ b/org.eclipse.papyrus.moka.composites.utils/pom.xml
@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>org.eclipse.papyrus.extra.releng</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.moka.parent</artifactId>
+ <groupId>org.eclipse.papyrus.moka</groupId>
<version>1.2.0-SNAPSHOT</version>
- <relativePath>../../../releng/extra</relativePath>
</parent>
<artifactId>org.eclipse.papyrus.moka.composites.utils</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
- <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
+ <name>org.eclipse.papyrus.moka.composites.utils</name>
</project>
\ No newline at end of file
diff --git a/org.eclipse.papyrus.moka.composites/.classpath b/org.eclipse.papyrus.moka.composites/.classpath
index dbc112b..9a34df0 100644
--- a/org.eclipse.papyrus.moka.composites/.classpath
+++ b/org.eclipse.papyrus.moka.composites/.classpath
@@ -1,8 +1,8 @@
-<?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.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="generated"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?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.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="generated"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.papyrus.moka.composites/.project b/org.eclipse.papyrus.moka.composites/.project
index 3faccde..5b7e4ef 100644
--- a/org.eclipse.papyrus.moka.composites/.project
+++ b/org.eclipse.papyrus.moka.composites/.project
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.papyrus.moka.composites</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <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>
- </natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.moka.composites</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <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>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.papyrus.moka.composites/META-INF/MANIFEST.MF b/org.eclipse.papyrus.moka.composites/META-INF/MANIFEST.MF
index 87cd75a..7776878 100644
--- a/org.eclipse.papyrus.moka.composites/META-INF/MANIFEST.MF
+++ b/org.eclipse.papyrus.moka.composites/META-INF/MANIFEST.MF
@@ -1,23 +1,23 @@
-Manifest-Version: 1.0
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.uml2.uml;bundle-version="4.0.1",
- org.eclipse.papyrus.moka.fuml;bundle-version="1.2.0",
- org.eclipse.papyrus.moka;bundle-version="1.2.0",
- org.eclipse.debug.core;bundle-version="3.8.0"
-Export-Package: org.eclipse.papyrus.moka.composites,
- org.eclipse.papyrus.moka.composites.Semantics.Actions.CompleteActions,
- org.eclipse.papyrus.moka.composites.Semantics.Actions.IntermediateActions,
- org.eclipse.papyrus.moka.composites.Semantics.Classes.Kernel,
- org.eclipse.papyrus.moka.composites.Semantics.CommonBehaviors.Communications,
- org.eclipse.papyrus.moka.composites.Semantics.CompositeStructures.InvocationActions,
- org.eclipse.papyrus.moka.composites.Semantics.CompositeStructures.StructuredClasses,
- org.eclipse.papyrus.moka.composites.Semantics.Loci.LociL3
-Bundle-Vendor: Eclipse Modeling Project
-Bundle-ActivationPolicy: lazy
-Bundle-Version: 1.2.0.qualifier
-Bundle-Name: Moka Composites Extension (Incubation)
-Bundle-ManifestVersion: 2
-Bundle-Activator: org.eclipse.papyrus.moka.composites.Activator
-Bundle-SymbolicName: org.eclipse.papyrus.moka.composites;singleton:=true
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.uml2.uml;bundle-version="4.0.1",
+ org.eclipse.papyrus.moka.fuml;bundle-version="1.2.0",
+ org.eclipse.papyrus.moka;bundle-version="1.2.0",
+ org.eclipse.debug.core;bundle-version="3.8.0"
+Export-Package: org.eclipse.papyrus.moka.composites,
+ org.eclipse.papyrus.moka.composites.Semantics.Actions.CompleteActions,
+ org.eclipse.papyrus.moka.composites.Semantics.Actions.IntermediateActions,
+ org.eclipse.papyrus.moka.composites.Semantics.Classes.Kernel,
+ org.eclipse.papyrus.moka.composites.Semantics.CommonBehaviors.Communications,
+ org.eclipse.papyrus.moka.composites.Semantics.CompositeStructures.InvocationActions,
+ org.eclipse.papyrus.moka.composites.Semantics.CompositeStructures.StructuredClasses,
+ org.eclipse.papyrus.moka.composites.Semantics.Loci.LociL3
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: Moka Composites Extension (Incubation)
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.moka.composites.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.moka.composites;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/org.eclipse.papyrus.moka.composites/about.html b/org.eclipse.papyrus.moka.composites/about.html
index 82d49bf..d35d5ae 100644
--- a/org.eclipse.papyrus.moka.composites/about.html
+++ b/org.eclipse.papyrus.moka.composites/about.html
@@ -1,28 +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>June 5, 2007</p>
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
+<!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>June 5, 2007</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
diff --git a/org.eclipse.papyrus.moka.composites/build.properties b/org.eclipse.papyrus.moka.composites/build.properties
index f0c577a..3fd8200 100644
--- a/org.eclipse.papyrus.moka.composites/build.properties
+++ b/org.eclipse.papyrus.moka.composites/build.properties
@@ -1,8 +1,8 @@
-source.. = src/,\
- generated/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- about.html
-src.includes = about.html
+source.. = src/,\
+ generated/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ about.html
+src.includes = about.html
diff --git a/org.eclipse.papyrus.moka.composites/plugin.xml b/org.eclipse.papyrus.moka.composites/plugin.xml
index f20bf8d..f2bb15a 100644
--- a/org.eclipse.papyrus.moka.composites/plugin.xml
+++ b/org.eclipse.papyrus.moka.composites/plugin.xml
@@ -1,13 +1,13 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
- <extension
- point="org.eclipse.papyrus.moka.engine">
- <engine
- class="org.eclipse.papyrus.moka.composites.CompositeStructuresExecutionEngine"
- description="PSCS Execution Engine (single-threaded implementation)"
- >
- </engine>
- </extension>
-
-</plugin>
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.papyrus.moka.engine">
+ <engine
+ class="org.eclipse.papyrus.moka.composites.CompositeStructuresExecutionEngine"
+ description="PSCS Execution Engine (single-threaded implementation)"
+ >
+ </engine>
+ </extension>
+
+</plugin>
diff --git a/org.eclipse.papyrus.moka.composites/pom.xml b/org.eclipse.papyrus.moka.composites/pom.xml
index 7c58471..7ca7c75 100644
--- a/org.eclipse.papyrus.moka.composites/pom.xml
+++ b/org.eclipse.papyrus.moka.composites/pom.xml
@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>org.eclipse.papyrus.extra.releng</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.moka.parent</artifactId>
+ <groupId>org.eclipse.papyrus.moka</groupId>
<version>1.2.0-SNAPSHOT</version>
- <relativePath>../../../releng/extra</relativePath>
</parent>
<artifactId>org.eclipse.papyrus.moka.composites</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
- <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
+ <name>org.eclipse.papyrus.moka.composites</name>
</project>
\ No newline at end of file
diff --git a/org.eclipse.papyrus.moka.composites/src/org/eclipse/papyrus/moka/composites/CompositeStructuresExecutionEngine.java b/org.eclipse.papyrus.moka.composites/src/org/eclipse/papyrus/moka/composites/CompositeStructuresExecutionEngine.java
index f39fa4c..b34c115 100644
--- a/org.eclipse.papyrus.moka.composites/src/org/eclipse/papyrus/moka/composites/CompositeStructuresExecutionEngine.java
+++ b/org.eclipse.papyrus.moka.composites/src/org/eclipse/papyrus/moka/composites/CompositeStructuresExecutionEngine.java
@@ -1,73 +1,73 @@
-/*****************************************************************************
- * 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
- *
- *****************************************************************************/
-package org.eclipse.papyrus.moka.composites;
-
-import org.eclipse.papyrus.moka.composites.Semantics.CommonBehaviors.Communications.CS_DispatchOperationOfInterfaceStrategy;
-import org.eclipse.papyrus.moka.composites.Semantics.CommonBehaviors.Communications.CS_NameBased_StructuralFeatureOfInterfaceAccessStrategy;
-import org.eclipse.papyrus.moka.composites.Semantics.CompositeStructures.InvocationActions.CS_DefaultConstructStrategy;
-import org.eclipse.papyrus.moka.composites.Semantics.CompositeStructures.InvocationActions.CS_DefaultRequestPropagationStrategy;
-import org.eclipse.papyrus.moka.composites.Semantics.Loci.LociL3.CS_ExecutionFactory;
-import org.eclipse.papyrus.moka.composites.Semantics.Loci.LociL3.CS_Executor;
-import org.eclipse.papyrus.moka.composites.Semantics.Loci.LociL3.CS_Locus;
-import org.eclipse.papyrus.moka.fuml.FUMLExecutionEngineForMoka;
-import org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1.Locus;
-import org.eclipse.uml2.uml.Behavior;
-
-public class CompositeStructuresExecutionEngine extends FUMLExecutionEngineForMoka {
-
- // Starts the execution of the given behavior
- @Override
- public void start(Behavior behavior) {
- if (behavior != null) {
-
- main = behavior;
-
- // creates the locus, executor and execution factory
- this.locus = new CS_Locus();
- locus.setExecutor(new CS_Executor());
- locus.setFactory(new CS_ExecutionFactory());
-
- // initializes built-in primitive types
- this.initializeBuiltInPrimitiveTypes(locus);
-
- // Initializes opaque behavior executions
- this.registerOpaqueBehaviorExecutions(locus);
-
- // Initializes semantic strategies
- this.registerSemanticStrategies(locus);
-
- // Initializes system services
- this.registerSystemServices(locus);
-
- // Initializes arguments
- this.initializeArguments(this.args);
-
- // Finally launches the execution
- this.started = true;
-
- // Finally launches the execution
- locus.executor.execute(main, null, this.arguments);
- }
- }
-
- // Register semantic strategies available in the environment
- @Override
- protected void registerSemanticStrategies(Locus locus) {
- super.registerSemanticStrategies(locus);
- locus.factory.setStrategy(new CS_DispatchOperationOfInterfaceStrategy());
- locus.factory.setStrategy(new CS_NameBased_StructuralFeatureOfInterfaceAccessStrategy());
- locus.factory.setStrategy(new CS_DefaultRequestPropagationStrategy());
- locus.factory.setStrategy(new CS_DefaultConstructStrategy());
- }
-}
+/*****************************************************************************
+ * 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
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.moka.composites;
+
+import org.eclipse.papyrus.moka.composites.Semantics.CommonBehaviors.Communications.CS_DispatchOperationOfInterfaceStrategy;
+import org.eclipse.papyrus.moka.composites.Semantics.CommonBehaviors.Communications.CS_NameBased_StructuralFeatureOfInterfaceAccessStrategy;
+import org.eclipse.papyrus.moka.composites.Semantics.CompositeStructures.InvocationActions.CS_DefaultConstructStrategy;
+import org.eclipse.papyrus.moka.composites.Semantics.CompositeStructures.InvocationActions.CS_DefaultRequestPropagationStrategy;
+import org.eclipse.papyrus.moka.composites.Semantics.Loci.LociL3.CS_ExecutionFactory;
+import org.eclipse.papyrus.moka.composites.Semantics.Loci.LociL3.CS_Executor;
+import org.eclipse.papyrus.moka.composites.Semantics.Loci.LociL3.CS_Locus;
+import org.eclipse.papyrus.moka.fuml.FUMLExecutionEngineForMoka;
+import org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1.Locus;
+import org.eclipse.uml2.uml.Behavior;
+
+public class CompositeStructuresExecutionEngine extends FUMLExecutionEngineForMoka {
+
+ // Starts the execution of the given behavior
+ @Override
+ public void start(Behavior behavior) {
+ if (behavior != null) {
+
+ main = behavior;
+
+ // creates the locus, executor and execution factory
+ this.locus = new CS_Locus();
+ locus.setExecutor(new CS_Executor());
+ locus.setFactory(new CS_ExecutionFactory());
+
+ // initializes built-in primitive types
+ this.initializeBuiltInPrimitiveTypes(locus);
+
+ // Initializes opaque behavior executions
+ this.registerOpaqueBehaviorExecutions(locus);
+
+ // Initializes semantic strategies
+ this.registerSemanticStrategies(locus);
+
+ // Initializes system services
+ this.registerSystemServices(locus);
+
+ // Initializes arguments
+ this.initializeArguments(this.args);
+
+ // Finally launches the execution
+ this.started = true;
+
+ // Finally launches the execution
+ locus.executor.execute(main, null, this.arguments);
+ }
+ }
+
+ // Register semantic strategies available in the environment
+ @Override
+ protected void registerSemanticStrategies(Locus locus) {
+ super.registerSemanticStrategies(locus);
+ locus.factory.setStrategy(new CS_DispatchOperationOfInterfaceStrategy());
+ locus.factory.setStrategy(new CS_NameBased_StructuralFeatureOfInterfaceAccessStrategy());
+ locus.factory.setStrategy(new CS_DefaultRequestPropagationStrategy());
+ locus.factory.setStrategy(new CS_DefaultConstructStrategy());
+ }
+}
diff --git a/org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary/META-INF/MANIFEST.MF b/org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary/META-INF/MANIFEST.MF
index 78a8e88..97a3c62 100644
--- a/org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary/META-INF/MANIFEST.MF
+++ b/org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary/META-INF/MANIFEST.MF
@@ -1,24 +1,24 @@
-Manifest-Version: 1.0
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.papyrus.moka.fuml;bundle-version="1.2.0",
- org.eclipse.uml2.uml;bundle-version="5.0.0",
- org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.2.0",
- org.eclipse.papyrus.moka.ui;bundle-version="1.2.0",
- org.eclipse.papyrus.moka.composites;bundle-version="1.2.0",
- org.eclipse.papyrus.moka.async.fuml;bundle-version="1.2.0",
- org.eclipse.gmf.runtime.emf.type.core;bundle-version="1.7.0",
- org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
- org.eclipse.debug.ui
-Export-Package: org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary,
- org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary.proxy,
- org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary.proxy.executions,
- org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary.ui
-Bundle-Vendor: Eclipse Modeling Project
-Bundle-ActivationPolicy: lazy
-Bundle-Version: 1.2.0.qualifier
-Bundle-Name: Moka Active Object Controller Library (Incubation)
-Bundle-ManifestVersion: 2
-Bundle-Activator: org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary.Activator
-Bundle-SymbolicName: org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary;singleton:=true
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.moka.fuml;bundle-version="1.2.0",
+ org.eclipse.uml2.uml;bundle-version="5.0.0",
+ org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.2.0",
+ org.eclipse.papyrus.moka.ui;bundle-version="1.2.0",
+ org.eclipse.papyrus.moka.composites;bundle-version="1.2.0",
+ org.eclipse.papyrus.moka.async.fuml;bundle-version="1.2.0",
+ org.eclipse.gmf.runtime.emf.type.core;bundle-version="1.7.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.debug.ui
+Export-Package: org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary,
+ org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary.proxy,
+ org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary.proxy.executions,
+ org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary.ui
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: Moka Active Object Controller Library (Incubation)
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary/pom.xml b/org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary/pom.xml
index 894ccc9..7187215 100644
--- a/org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary/pom.xml
+++ b/org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary/pom.xml
@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>org.eclipse.papyrus.extra.releng</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.moka.parent</artifactId>
+ <groupId>org.eclipse.papyrus.moka</groupId>
<version>1.2.0-SNAPSHOT</version>
- <relativePath>../../../releng/extra</relativePath>
</parent>
<artifactId>org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
- <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
+ <name>org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary</name>
</project>
\ No newline at end of file
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/.classpath b/org.eclipse.papyrus.moka.fuml.assertionlibrary/.classpath
index 8a8f166..ad32c83 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/.classpath
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/.classpath
@@ -1,7 +1,7 @@
-<?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.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?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.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/.project b/org.eclipse.papyrus.moka.fuml.assertionlibrary/.project
index 305b79c..8b5f701 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/.project
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/.project
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.papyrus.moka.fuml.assertionlibrary</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <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>
- </natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.moka.fuml.assertionlibrary</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <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>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/META-INF/MANIFEST.MF b/org.eclipse.papyrus.moka.fuml.assertionlibrary/META-INF/MANIFEST.MF
index fb9b8f5..100c07c 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/META-INF/MANIFEST.MF
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/META-INF/MANIFEST.MF
@@ -1,16 +1,16 @@
-Manifest-Version: 1.0
-Require-Bundle: org.eclipse.core.runtime,
- org.eclipse.papyrus.moka.fuml;bundle-version="1.2.0",
- org.eclipse.uml2.uml;bundle-version="5.0.0",
- org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.2.0",
- org.eclipse.ui.workbench,
- org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0"
-Export-Package: org.eclipse.papyrus.moka.fuml.assertionlibrary.utils
-Bundle-Vendor: Eclipse Modeling Project
-Bundle-ActivationPolicy: lazy
-Bundle-Version: 1.2.0.qualifier
-Bundle-Name: Moka Assertion Library (Incubation)
-Bundle-ManifestVersion: 2
-Bundle-Activator: org.eclipse.papyrus.moka.fuml.assertionlibrary.Activator
-Bundle-SymbolicName: org.eclipse.papyrus.moka.fuml.assertionlibrary;singleton:=true
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.papyrus.moka.fuml;bundle-version="1.2.0",
+ org.eclipse.uml2.uml;bundle-version="5.0.0",
+ org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.2.0",
+ org.eclipse.ui.workbench,
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0"
+Export-Package: org.eclipse.papyrus.moka.fuml.assertionlibrary.utils
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: Moka Assertion Library (Incubation)
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.moka.fuml.assertionlibrary.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.moka.fuml.assertionlibrary;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/about.html b/org.eclipse.papyrus.moka.fuml.assertionlibrary/about.html
index 82d49bf..d35d5ae 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/about.html
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/about.html
@@ -1,28 +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>June 5, 2007</p>
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
+<!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>June 5, 2007</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/build.properties b/org.eclipse.papyrus.moka.fuml.assertionlibrary/build.properties
index 8e80c8f..7bb9518 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/build.properties
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/build.properties
@@ -1,8 +1,8 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- resources/,\
- about.html
-src.includes = about.html
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ resources/,\
+ about.html
+src.includes = about.html
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/plugin.xml b/org.eclipse.papyrus.moka.fuml.assertionlibrary/plugin.xml
index 2f62b5c..4b0de74 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/plugin.xml
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/plugin.xml
@@ -1,27 +1,27 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
- <extension
- name="Assert Library"
- point="org.eclipse.papyrus.moka.fuml.library">
- <library
- class="org.eclipse.papyrus.moka.fuml.assertionlibrary.AssertionLibraryRegistery"></library>
- </extension>
- <extension
- point="org.eclipse.emf.ecore.uri_mapping">
- <mapping
- source="pathmap://PAPYRUS_ASSERTION_LIBRARY/"
- target="platform:/plugin/org.eclipse.papyrus.moka.fuml.assertionlibrary/resources/">
- </mapping>
- </extension>
- <extension
- point="org.eclipse.papyrus.uml.extensionpoints.UMLLibrary">
- <library
- description="Assertions specified with fUML"
- name="AssertionLibrary"
- path="pathmap://PAPYRUS_ASSERTION_LIBRARY/AssertionLibrary.uml"
- provider="CEA LIST">
- </library>
- </extension>
-
-</plugin>
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ name="Assert Library"
+ point="org.eclipse.papyrus.moka.fuml.library">
+ <library
+ class="org.eclipse.papyrus.moka.fuml.assertionlibrary.AssertionLibraryRegistery"></library>
+ </extension>
+ <extension
+ point="org.eclipse.emf.ecore.uri_mapping">
+ <mapping
+ source="pathmap://PAPYRUS_ASSERTION_LIBRARY/"
+ target="platform:/plugin/org.eclipse.papyrus.moka.fuml.assertionlibrary/resources/">
+ </mapping>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.uml.extensionpoints.UMLLibrary">
+ <library
+ description="Assertions specified with fUML"
+ name="AssertionLibrary"
+ path="pathmap://PAPYRUS_ASSERTION_LIBRARY/AssertionLibrary.uml"
+ provider="CEA LIST">
+ </library>
+ </extension>
+
+</plugin>
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/pom.xml b/org.eclipse.papyrus.moka.fuml.assertionlibrary/pom.xml
index f9a8f40..5c8bfb4 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/pom.xml
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/pom.xml
@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>org.eclipse.papyrus.extra.releng</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.moka.parent</artifactId>
+ <groupId>org.eclipse.papyrus.moka</groupId>
<version>1.2.0-SNAPSHOT</version>
- <relativePath>../../../releng/extra</relativePath>
</parent>
<artifactId>org.eclipse.papyrus.moka.fuml.assertionlibrary</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
- <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
+ <name>org.eclipse.papyrus.moka.fuml.assertionlibrary</name>
</project>
\ No newline at end of file
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/resources/AssertionLibrary.di b/org.eclipse.papyrus.moka.fuml.assertionlibrary/resources/AssertionLibrary.di
index f871b8e..ba7a1f4 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/resources/AssertionLibrary.di
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/resources/AssertionLibrary.di
@@ -1,17 +1,17 @@
-<?xml version="1.0" encoding="ASCII"?>
-<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
- <pageList>
- <availablePage>
- <emfPageIdentifier href="AssertionLibrary.notation#_Z8Cg0JAQEeKOcoNL9j-ZWA"/>
- </availablePage>
- </pageList>
- <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
- <windows>
- <children xsi:type="di:TabFolder">
- <children>
- <emfPageIdentifier href="AssertionLibrary.notation#_Z8Cg0JAQEeKOcoNL9j-ZWA"/>
- </children>
- </children>
- </windows>
- </sashModel>
-</di:SashWindowsMngr>
+<?xml version="1.0" encoding="ASCII"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+ <pageList>
+ <availablePage>
+ <emfPageIdentifier href="AssertionLibrary.notation#_Z8Cg0JAQEeKOcoNL9j-ZWA"/>
+ </availablePage>
+ </pageList>
+ <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder">
+ <children>
+ <emfPageIdentifier href="AssertionLibrary.notation#_Z8Cg0JAQEeKOcoNL9j-ZWA"/>
+ </children>
+ </children>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/resources/AssertionLibrary.notation b/org.eclipse.papyrus.moka.fuml.assertionlibrary/resources/AssertionLibrary.notation
index 08be260..73578ab 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/resources/AssertionLibrary.notation
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/resources/AssertionLibrary.notation
@@ -1,5 +1,5 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_Z8Cg0JAQEeKOcoNL9j-ZWA" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
- <styles xmi:type="notation:DiagramStyle" xmi:id="_Z8Cg0ZAQEeKOcoNL9j-ZWA"/>
- <element xmi:type="uml:Model" href="AssertionLibrary.uml#_62lbEIgUEeKtquXykzQHVw"/>
-</notation:Diagram>
+<?xml version="1.0" encoding="UTF-8"?>
+<notation:Diagram xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.2/notation" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_Z8Cg0JAQEeKOcoNL9j-ZWA" type="PapyrusUMLClassDiagram" name="ClassDiagram" measurementUnit="Pixel">
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_Z8Cg0ZAQEeKOcoNL9j-ZWA"/>
+ <element xmi:type="uml:Model" href="AssertionLibrary.uml#_62lbEIgUEeKtquXykzQHVw"/>
+</notation:Diagram>
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/resources/AssertionLibrary.uml b/org.eclipse.papyrus.moka.fuml.assertionlibrary/resources/AssertionLibrary.uml
index dff3232..9d19274 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/resources/AssertionLibrary.uml
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/resources/AssertionLibrary.uml
@@ -1,2791 +1,2791 @@
-<?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:ActionLanguage="http://www.omg.org/spec/ALF/20120827/ActionLanguage-Profile" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.omg.org/spec/ALF/20120827/ActionLanguage-Profile platform:/plugin/org.eclipse.papyrus.alf/resources/ActionLanguage-Profile.profile.uml">
- <uml:Model xmi:id="_62lbEIgUEeKtquXykzQHVw" name="AssertionLibrary">
- <packageImport xmi:id="_LU_3YI19EeK7gYOtibANUw">
- <importedPackage xmi:type="uml:Model" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#_0"/>
- </packageImport>
- <packageImport xmi:id="_NEk-oI19EeK7gYOtibANUw" visibility="private">
- <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
- </packageImport>
- <packageImport xmi:id="_X-RygJGjEeKappQpCeg6XA">
- <importedPackage xmi:type="uml:Model" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf"/>
- </packageImport>
- <packagedElement xmi:type="uml:OpaqueBehavior" xmi:id="_8kE3oIgUEeKtquXykzQHVw" name="AssertEquals" group="_Q75UxpMrEeKsOLt3X9dUzg" node="_Q75UwJMrEeKsOLt3X9dUzg _Q75UwZMrEeKsOLt3X9dUzg _Q75UwpMrEeKsOLt3X9dUzg _Q75Uw5MrEeKsOLt3X9dUzg _Q75UxJMrEeKsOLt3X9dUzg _Q75UxZMrEeKsOLt3X9dUzg _Q75UxpMrEeKsOLt3X9dUzg">
- <ownedComment xmi:id="_PWUOoIgVEeKtquXykzQHVw">
- <body>namespace AssertionLibrary ;
-
-private import Alf::Library::CollectionFunctions::size ;
-
-activity AssertEqual(in label: String, in value1: any, in value2: any) {
- Write(label + "==");
- Write(value2 instanceof String? "\"" + (String)value2 + "\"": value2);
- AssertTrue("", value1==value2);
-}</body>
- </ownedComment>
- <ownedParameter xmi:id="_ERzsCY1-EeK7gYOtibANUw" name="label" visibility="package">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ERzsCo1-EeK7gYOtibANUw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ERzsC41-EeK7gYOtibANUw" value="1"/>
- </ownedParameter>
- <ownedParameter xmi:id="_ERzsDI1-EeK7gYOtibANUw" name="value1" visibility="package">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ERzsDY1-EeK7gYOtibANUw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ERzsDo1-EeK7gYOtibANUw" value="1"/>
- </ownedParameter>
- <ownedParameter xmi:id="_ERzsD41-EeK7gYOtibANUw" name="value2" visibility="package">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ERzsEI1-EeK7gYOtibANUw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ERzsEY1-EeK7gYOtibANUw" value="1"/>
- </ownedParameter>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bYJMrEeKsOLt3X9dUzg" target="_Q75UwZMrEeKsOLt3X9dUzg" source="_Q75UwJMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bYZMrEeKsOLt3X9dUzg" target="_Q75Uw5MrEeKsOLt3X9dUzg" source="_Q75UwpMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bYpMrEeKsOLt3X9dUzg" target="_Q75UxZMrEeKsOLt3X9dUzg" source="_Q75UxJMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bY5MrEeKsOLt3X9dUzg" target="_Q75U05MrEeKsOLt3X9dUzg" source="_Q75UwZMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bZJMrEeKsOLt3X9dUzg" target="_Q75U5pMrEeKsOLt3X9dUzg" source="_Q75UxZMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bZZMrEeKsOLt3X9dUzg" target="_Q75VBJMrEeKsOLt3X9dUzg" source="_Q75UxZMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bZpMrEeKsOLt3X9dUzg" target="_Q75VKJMrEeKsOLt3X9dUzg" source="_Q75UxZMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bZ5MrEeKsOLt3X9dUzg" target="_Q75VSZMrEeKsOLt3X9dUzg" source="_Q75Uw5MrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_baJMrEeKsOLt3X9dUzg" target="_Q75VT5MrEeKsOLt3X9dUzg" source="_Q75UxZMrEeKsOLt3X9dUzg"/>
- <structuredNode xmi:id="_Q75UxpMrEeKsOLt3X9dUzg" name="Body(AssertEqual)">
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75Ux5MrEeKsOLt3X9dUzg" name="ExpressionStatement@aeca99" outgoing="_Q75VVZMrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75U3ZMrEeKsOLt3X9dUzg" target="_Q75UyZMrEeKsOLt3X9dUzg" source="_Q75U2ZMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_Q75U3pMrEeKsOLt3X9dUzg" target="_Q75UyJMrEeKsOLt3X9dUzg" source="_Q75UzJMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_Q75UyJMrEeKsOLt3X9dUzg" name="Call(Write)" incoming="_Q75U3pMrEeKsOLt3X9dUzg" behavior="_Tz8bEIgWEeKtquXykzQHVw">
- <argument xmi:id="_Q75UyZMrEeKsOLt3X9dUzg" name="Call(Write).argument(value)" incoming="_Q75U3ZMrEeKsOLt3X9dUzg">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75UypMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75Uy5MrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75UzJMrEeKsOLt3X9dUzg" name="Tuple@11dc721" outgoing="_Q75U3pMrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75U3JMrEeKsOLt3X9dUzg" target="_Q75U1pMrEeKsOLt3X9dUzg" source="_Q75UzpMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Q75UzZMrEeKsOLt3X9dUzg" name="Value("==")">
- <result xmi:id="_Q75UzpMrEeKsOLt3X9dUzg" name="Value("==").result" outgoing="_Q75U3JMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75Uz5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U0JMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_Q75U0ZMrEeKsOLt3X9dUzg" value="==">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_Q75U0pMrEeKsOLt3X9dUzg" name="Call(Concat)">
- <argument xmi:id="_Q75U05MrEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_Q7_bY5MrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U1JMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U1ZMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_Q75U1pMrEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_Q75U3JMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U15MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U2JMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <result xmi:id="_Q75U2ZMrEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_Q75U3ZMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U2pMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U25MrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75U35MrEeKsOLt3X9dUzg" name="ExpressionStatement@fc6a34" incoming="_Q75VVZMrEeKsOLt3X9dUzg" outgoing="_Q75VVpMrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VOJMrEeKsOLt3X9dUzg" target="_Q75U4ZMrEeKsOLt3X9dUzg" source="_Q75VL5MrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_Q75VOZMrEeKsOLt3X9dUzg" target="_Q75U4JMrEeKsOLt3X9dUzg" source="_Q75U5JMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_Q75U4JMrEeKsOLt3X9dUzg" name="Call(Write)" incoming="_Q75VOZMrEeKsOLt3X9dUzg" behavior="_Tz8bEIgWEeKtquXykzQHVw">
- <argument xmi:id="_Q75U4ZMrEeKsOLt3X9dUzg" name="Call(Write).argument(value)" incoming="_Q75VOJMrEeKsOLt3X9dUzg">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U4pMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U45MrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75U5JMrEeKsOLt3X9dUzg" name="Tuple@646e1b" outgoing="_Q75VOZMrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ControlFlow" xmi:id="_Q75VMJMrEeKsOLt3X9dUzg" target="_Q75VLpMrEeKsOLt3X9dUzg" source="_Q75VLZMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VMZMrEeKsOLt3X9dUzg" target="_Q75VLpMrEeKsOLt3X9dUzg" source="_Q75U6ZMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_Q75VMpMrEeKsOLt3X9dUzg" target="_Q75U7JMrEeKsOLt3X9dUzg" source="_Q75VLpMrEeKsOLt3X9dUzg">
- <guard xmi:type="uml:LiteralBoolean" xmi:id="_Q75VM5MrEeKsOLt3X9dUzg" name="Value(true)" value="true"/>
- </edge>
- <edge xmi:type="uml:ControlFlow" xmi:id="_Q75VNJMrEeKsOLt3X9dUzg" target="_Q75VJ5MrEeKsOLt3X9dUzg" source="_Q75VLpMrEeKsOLt3X9dUzg">
- <guard xmi:type="uml:LiteralBoolean" xmi:id="_Q75VNZMrEeKsOLt3X9dUzg" name="Value(false)"/>
- </edge>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VNpMrEeKsOLt3X9dUzg" target="_Q75VL5MrEeKsOLt3X9dUzg" source="_Q75VH5MrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VN5MrEeKsOLt3X9dUzg" target="_Q75VL5MrEeKsOLt3X9dUzg" source="_Q75VKZMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:ReadIsClassifiedObjectAction" xmi:id="_Q75U5ZMrEeKsOLt3X9dUzg" name="ReadIsClassifiedObject(String)">
- <classifier xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <object xmi:id="_Q75U5pMrEeKsOLt3X9dUzg" name="ReadIsClassifiedObject(String).object" incoming="_Q7_bZJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U55MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U6JMrEeKsOLt3X9dUzg" value="1"/>
- </object>
- <result xmi:id="_Q75U6ZMrEeKsOLt3X9dUzg" name="ReadIsClassifiedObject(String).result" outgoing="_Q75VMZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U6pMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U65MrEeKsOLt3X9dUzg" value="1"/>
- </result>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75U7JMrEeKsOLt3X9dUzg" name="ConditionalTestExpression@10500b1.operand2" incoming="_Q75VMpMrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VIpMrEeKsOLt3X9dUzg" target="_Q75VB5MrEeKsOLt3X9dUzg" source="_Q75U7pMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VI5MrEeKsOLt3X9dUzg" target="_Q75VCpMrEeKsOLt3X9dUzg" source="_Q75VBZMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VJJMrEeKsOLt3X9dUzg" target="_Q75VFpMrEeKsOLt3X9dUzg" source="_Q75VDZMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VJZMrEeKsOLt3X9dUzg" target="_Q75VGZMrEeKsOLt3X9dUzg" source="_Q75VEZMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VJpMrEeKsOLt3X9dUzg" target="_Q75VH5MrEeKsOLt3X9dUzg" source="_Q75VHJMrEeKsOLt3X9dUzg"/>
- <structuredNodeOutput xmi:id="_Q75VH5MrEeKsOLt3X9dUzg" name="ConditionalTestExpression@10500b1.operand2.result" incoming="_Q75VJpMrEeKsOLt3X9dUzg" outgoing="_Q75VNpMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VIJMrEeKsOLt3X9dUzg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VIZMrEeKsOLt3X9dUzg" value="*"/>
- </structuredNodeOutput>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Q75U7ZMrEeKsOLt3X9dUzg" name="Value(""")">
- <result xmi:id="_Q75U7pMrEeKsOLt3X9dUzg" name="Value(""").result" outgoing="_Q75VIpMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U75MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U8JMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_Q75U8ZMrEeKsOLt3X9dUzg" value=""">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:ExpansionRegion" xmi:id="_Q75U8pMrEeKsOLt3X9dUzg" name="CastExpression@1bee7e" mode="parallel" outputElement="_Q75VBZMrEeKsOLt3X9dUzg" inputElement="_Q75VBJMrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75U_ZMrEeKsOLt3X9dUzg" target="_Q75U9ZMrEeKsOLt3X9dUzg" source="_Q75U-5MrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75U_pMrEeKsOLt3X9dUzg" target="_Q75U_JMrEeKsOLt3X9dUzg" source="_Q75U-5MrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75U_5MrEeKsOLt3X9dUzg" target="_Q75U_JMrEeKsOLt3X9dUzg" source="_Q75U-JMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VAJMrEeKsOLt3X9dUzg" target="_Q75U85MrEeKsOLt3X9dUzg" source="_Q75U_JMrEeKsOLt3X9dUzg">
- <guard xmi:type="uml:LiteralBoolean" xmi:id="_Q75VAZMrEeKsOLt3X9dUzg" name="Value(true)" value="true"/>
- </edge>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VApMrEeKsOLt3X9dUzg" target="_Q75U-5MrEeKsOLt3X9dUzg" source="_Q75VBJMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VA5MrEeKsOLt3X9dUzg" target="_Q75VBZMrEeKsOLt3X9dUzg" source="_Q75U85MrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:MergeNode" xmi:id="_Q75U85MrEeKsOLt3X9dUzg" name="Merge(CastExpression@1bee7e.operand)" incoming="_Q75VAJMrEeKsOLt3X9dUzg" outgoing="_Q75VA5MrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:ReadIsClassifiedObjectAction" xmi:id="_Q75U9JMrEeKsOLt3X9dUzg" name="ReadIsClassifiedObject(String)">
- <classifier xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <object xmi:id="_Q75U9ZMrEeKsOLt3X9dUzg" name="ReadIsClassifiedObject(String).object" incoming="_Q75U_ZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U9pMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U95MrEeKsOLt3X9dUzg" value="1"/>
- </object>
- <result xmi:id="_Q75U-JMrEeKsOLt3X9dUzg" name="ReadIsClassifiedObject(String).result" outgoing="_Q75U_5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U-ZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U-pMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- </node>
- <node xmi:type="uml:ForkNode" xmi:id="_Q75U-5MrEeKsOLt3X9dUzg" name="Fork(ReadIsClassifiedObject(String).object)" incoming="_Q75VApMrEeKsOLt3X9dUzg" outgoing="_Q75U_ZMrEeKsOLt3X9dUzg _Q75U_pMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:DecisionNode" xmi:id="_Q75U_JMrEeKsOLt3X9dUzg" name="Decision(ReadIsClassifiedObject(String).result)" incoming="_Q75U_pMrEeKsOLt3X9dUzg _Q75U_5MrEeKsOLt3X9dUzg" outgoing="_Q75VAJMrEeKsOLt3X9dUzg" decisionInputFlow="_Q75U_5MrEeKsOLt3X9dUzg"/>
- </node>
- <node xmi:type="uml:ExpansionNode" xmi:id="_Q75VBJMrEeKsOLt3X9dUzg" name="CastExpression@1bee7e.inputElement" incoming="_Q7_bZZMrEeKsOLt3X9dUzg" outgoing="_Q75VApMrEeKsOLt3X9dUzg" regionAsInput="_Q75U8pMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:ExpansionNode" xmi:id="_Q75VBZMrEeKsOLt3X9dUzg" name="CastExpression@1bee7e.outputElement" incoming="_Q75VA5MrEeKsOLt3X9dUzg" outgoing="_Q75VI5MrEeKsOLt3X9dUzg" regionAsOutput="_Q75U8pMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_Q75VBpMrEeKsOLt3X9dUzg" name="Call(Concat)">
- <argument xmi:id="_Q75VB5MrEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_Q75VIpMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VCJMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VCZMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_Q75VCpMrEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_Q75VI5MrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VC5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VDJMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <result xmi:id="_Q75VDZMrEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_Q75VJJMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VDpMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VD5MrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Q75VEJMrEeKsOLt3X9dUzg" name="Value(""")">
- <result xmi:id="_Q75VEZMrEeKsOLt3X9dUzg" name="Value(""").result" outgoing="_Q75VJZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VEpMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VE5MrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_Q75VFJMrEeKsOLt3X9dUzg" value=""">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_Q75VFZMrEeKsOLt3X9dUzg" name="Call(Concat)">
- <argument xmi:id="_Q75VFpMrEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_Q75VJJMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VF5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VGJMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_Q75VGZMrEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_Q75VJZMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VGpMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VG5MrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <result xmi:id="_Q75VHJMrEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_Q75VJpMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VHZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VHpMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75VJ5MrEeKsOLt3X9dUzg" name="ConditionalTestExpression@10500b1.operand3" incoming="_Q75VNJMrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VLJMrEeKsOLt3X9dUzg" target="_Q75VKZMrEeKsOLt3X9dUzg" source="_Q75VKJMrEeKsOLt3X9dUzg"/>
- <structuredNodeOutput xmi:id="_Q75VKZMrEeKsOLt3X9dUzg" name="ConditionalTestExpression@10500b1.operand3.result" incoming="_Q75VLJMrEeKsOLt3X9dUzg" outgoing="_Q75VN5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VKpMrEeKsOLt3X9dUzg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VK5MrEeKsOLt3X9dUzg" value="*"/>
- </structuredNodeOutput>
- <node xmi:type="uml:MergeNode" xmi:id="_Q75VKJMrEeKsOLt3X9dUzg" name="Merge(Fork(value2))" incoming="_Q7_bZpMrEeKsOLt3X9dUzg" outgoing="_Q75VLJMrEeKsOLt3X9dUzg"/>
- </node>
- <node xmi:type="uml:InitialNode" xmi:id="_Q75VLZMrEeKsOLt3X9dUzg" name="Initial(ConditionalTestExpression@10500b1)" outgoing="_Q75VMJMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:DecisionNode" xmi:id="_Q75VLpMrEeKsOLt3X9dUzg" name="Decision(ConditionalTestExpression@10500b1)" incoming="_Q75VMJMrEeKsOLt3X9dUzg _Q75VMZMrEeKsOLt3X9dUzg" outgoing="_Q75VMpMrEeKsOLt3X9dUzg _Q75VNJMrEeKsOLt3X9dUzg" decisionInputFlow="_Q75VMZMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:MergeNode" xmi:id="_Q75VL5MrEeKsOLt3X9dUzg" name="Merge(ConditionalTestExpression@10500b1.result)" incoming="_Q75VNpMrEeKsOLt3X9dUzg _Q75VN5MrEeKsOLt3X9dUzg" outgoing="_Q75VOJMrEeKsOLt3X9dUzg"/>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75VOpMrEeKsOLt3X9dUzg" name="ExpressionStatement@15e504b" incoming="_Q75VVpMrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VUpMrEeKsOLt3X9dUzg" target="_Q75VPJMrEeKsOLt3X9dUzg" source="_Q75VRJMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VU5MrEeKsOLt3X9dUzg" target="_Q75VP5MrEeKsOLt3X9dUzg" source="_Q75VTJMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_Q75VVJMrEeKsOLt3X9dUzg" target="_Q75VO5MrEeKsOLt3X9dUzg" source="_Q75VQpMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_Q75VO5MrEeKsOLt3X9dUzg" name="Call(AssertTrue)" incoming="_Q75VVJMrEeKsOLt3X9dUzg" behavior="_9FjNAIgUEeKtquXykzQHVw">
- <argument xmi:id="_Q75VPJMrEeKsOLt3X9dUzg" name="Call(AssertTrue).argument(label)" incoming="_Q75VUpMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VPZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VPpMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_Q75VP5MrEeKsOLt3X9dUzg" name="Call(AssertTrue).argument(condition)" incoming="_Q75VU5MrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VQJMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VQZMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75VQpMrEeKsOLt3X9dUzg" name="Tuple@123d3ca" outgoing="_Q75VVJMrEeKsOLt3X9dUzg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Q75VQ5MrEeKsOLt3X9dUzg" name="Value("")">
- <result xmi:id="_Q75VRJMrEeKsOLt3X9dUzg" name="Value("").result" outgoing="_Q75VUpMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VRZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VRpMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_Q75VR5MrEeKsOLt3X9dUzg" value="">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:TestIdentityAction" xmi:id="_Q75VSJMrEeKsOLt3X9dUzg" name="Test(==)">
- <first xmi:id="_Q75VSZMrEeKsOLt3X9dUzg" name="Test(==).first" incoming="_Q7_bZ5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VSpMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VS5MrEeKsOLt3X9dUzg" value="1"/>
- </first>
- <result xmi:id="_Q75VTJMrEeKsOLt3X9dUzg" name="Test(==).result" outgoing="_Q75VU5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VTZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VTpMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <second xmi:id="_Q75VT5MrEeKsOLt3X9dUzg" name="Test(==).second" incoming="_Q7_baJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VUJMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VUZMrEeKsOLt3X9dUzg" value="1"/>
- </second>
- </node>
- </node>
- </node>
- <edge xmi:type="uml:ControlFlow" xmi:id="_Q75VVZMrEeKsOLt3X9dUzg" target="_Q75U35MrEeKsOLt3X9dUzg" source="_Q75Ux5MrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_Q75VVpMrEeKsOLt3X9dUzg" target="_Q75VOpMrEeKsOLt3X9dUzg" source="_Q75U35MrEeKsOLt3X9dUzg"/>
- </structuredNode>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="_Q75UwJMrEeKsOLt3X9dUzg" name="Input(label)" outgoing="_Q7_bYJMrEeKsOLt3X9dUzg" parameter="_ERzsCY1-EeK7gYOtibANUw"/>
- <node xmi:type="uml:ForkNode" xmi:id="_Q75UwZMrEeKsOLt3X9dUzg" name="Fork(label)" incoming="_Q7_bYJMrEeKsOLt3X9dUzg" outgoing="_Q7_bY5MrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="_Q75UwpMrEeKsOLt3X9dUzg" name="Input(value1)" outgoing="_Q7_bYZMrEeKsOLt3X9dUzg" parameter="_ERzsDI1-EeK7gYOtibANUw"/>
- <node xmi:type="uml:ForkNode" xmi:id="_Q75Uw5MrEeKsOLt3X9dUzg" name="Fork(value1)" incoming="_Q7_bYZMrEeKsOLt3X9dUzg" outgoing="_Q7_bZ5MrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="_Q75UxJMrEeKsOLt3X9dUzg" name="Input(value2)" outgoing="_Q7_bYpMrEeKsOLt3X9dUzg" parameter="_ERzsD41-EeK7gYOtibANUw"/>
- <node xmi:type="uml:ForkNode" xmi:id="_Q75UxZMrEeKsOLt3X9dUzg" name="Fork(value2)" incoming="_Q7_bYpMrEeKsOLt3X9dUzg" outgoing="_Q7_bZJMrEeKsOLt3X9dUzg _Q7_bZZMrEeKsOLt3X9dUzg _Q7_bZpMrEeKsOLt3X9dUzg _Q7_baJMrEeKsOLt3X9dUzg"/>
- </packagedElement>
- <packagedElement xmi:type="uml:OpaqueBehavior" xmi:id="_9FjNAIgUEeKtquXykzQHVw" name="AssertTrue" group="_-JHLNJMqEeKsOLt3X9dUzg" node="_-JHLMJMqEeKsOLt3X9dUzg _-JHLMZMqEeKsOLt3X9dUzg _-JHLMpMqEeKsOLt3X9dUzg _-JHLM5MqEeKsOLt3X9dUzg _-JHLNJMqEeKsOLt3X9dUzg">
- <ownedComment xmi:id="_cKvjYIgVEeKtquXykzQHVw">
- <body>namespace AssertionLibrary ;
-
-private import Alf::Library::PrimitiveBehaviors::BooleanFunctions::ToString;
-private import Alf::Library::BasicInputOutput::WriteLine ;
-
-activity AssertTrue(in label: String, in condition: Boolean) {
- WriteLine(label + ": " + ToString(condition));
-}</body>
- </ownedComment>
- <ownedParameter xmi:id="_l17_do19EeK7gYOtibANUw" name="label" visibility="package">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l17_d419EeK7gYOtibANUw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_l17_eI19EeK7gYOtibANUw" value="1"/>
- </ownedParameter>
- <ownedParameter xmi:id="_l17_eY19EeK7gYOtibANUw" name="condition" visibility="package">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l17_eo19EeK7gYOtibANUw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_l17_e419EeK7gYOtibANUw" value="1"/>
- </ownedParameter>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_-JNR0JMqEeKsOLt3X9dUzg" target="_-JHLMZMqEeKsOLt3X9dUzg" source="_-JHLMJMqEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_-JNR0ZMqEeKsOLt3X9dUzg" target="_-JHLM5MqEeKsOLt3X9dUzg" source="_-JHLMpMqEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_-JNR0pMqEeKsOLt3X9dUzg" target="_-JHLRJMqEeKsOLt3X9dUzg" source="_-JHLMZMqEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_-JNR05MqEeKsOLt3X9dUzg" target="_-JHLTpMqEeKsOLt3X9dUzg" source="_-JHLM5MqEeKsOLt3X9dUzg"/>
- <structuredNode xmi:id="_-JHLNJMqEeKsOLt3X9dUzg" name="Body(AssertTrue)">
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_-JHLNZMqEeKsOLt3X9dUzg" name="ExpressionStatement@d828b2">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_-JHLYZMqEeKsOLt3X9dUzg" target="_-JHLN5MqEeKsOLt3X9dUzg" source="_-JHLW5MqEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_-JHLYpMqEeKsOLt3X9dUzg" target="_-JHLNpMqEeKsOLt3X9dUzg" source="_-JHLPZMqEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_-JHLNpMqEeKsOLt3X9dUzg" name="Call(WriteLine)" incoming="_-JHLYpMqEeKsOLt3X9dUzg">
- <argument xmi:id="_-JHLN5MqEeKsOLt3X9dUzg" name="Call(WriteLine).argument(value)" incoming="_-JHLYZMqEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLOJMqEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLOZMqEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <result xmi:id="_-JHLOpMqEeKsOLt3X9dUzg" name="Call(WriteLine).result(errorStatus)">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLO5MqEeKsOLt3X9dUzg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLPJMqEeKsOLt3X9dUzg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_-JHLPZMqEeKsOLt3X9dUzg" name="Tuple@16e3ee8" outgoing="_-JHLYpMqEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_-JHLXpMqEeKsOLt3X9dUzg" target="_-JHLR5MqEeKsOLt3X9dUzg" source="_-JHLP5MqEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_-JHLX5MqEeKsOLt3X9dUzg" target="_-JHLVZMqEeKsOLt3X9dUzg" source="_-JHLSpMqEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_-JHLYJMqEeKsOLt3X9dUzg" target="_-JHLWJMqEeKsOLt3X9dUzg" source="_-JHLUZMqEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_-JHLPpMqEeKsOLt3X9dUzg" name="Value(": ")">
- <result xmi:id="_-JHLP5MqEeKsOLt3X9dUzg" name="Value(": ").result" outgoing="_-JHLXpMqEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLQJMqEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLQZMqEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_-JHLQpMqEeKsOLt3X9dUzg" value=": ">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_-JHLQ5MqEeKsOLt3X9dUzg" name="Call(Concat)">
- <argument xmi:id="_-JHLRJMqEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_-JNR0pMqEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLRZMqEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLRpMqEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_-JHLR5MqEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_-JHLXpMqEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLSJMqEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLSZMqEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <result xmi:id="_-JHLSpMqEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_-JHLX5MqEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLS5MqEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLTJMqEeKsOLt3X9dUzg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_-JHLTZMqEeKsOLt3X9dUzg" name="Call(ToString)">
- <argument xmi:id="_-JHLTpMqEeKsOLt3X9dUzg" name="Call(ToString).argument(x)" incoming="_-JNR05MqEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLT5MqEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLUJMqEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <result xmi:id="_-JHLUZMqEeKsOLt3X9dUzg" name="Call(ToString).result(result)" outgoing="_-JHLYJMqEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLUpMqEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLU5MqEeKsOLt3X9dUzg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-BooleanFunctions-ToString"/>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_-JHLVJMqEeKsOLt3X9dUzg" name="Call(Concat)">
- <argument xmi:id="_-JHLVZMqEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_-JHLX5MqEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLVpMqEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLV5MqEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_-JHLWJMqEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_-JHLYJMqEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLWZMqEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLWpMqEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <result xmi:id="_-JHLW5MqEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_-JHLYZMqEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLXJMqEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLXZMqEeKsOLt3X9dUzg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- </node>
- </node>
- </structuredNode>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="_-JHLMJMqEeKsOLt3X9dUzg" name="Input(label)" outgoing="_-JNR0JMqEeKsOLt3X9dUzg" parameter="_l17_do19EeK7gYOtibANUw"/>
- <node xmi:type="uml:ForkNode" xmi:id="_-JHLMZMqEeKsOLt3X9dUzg" name="Fork(label)" incoming="_-JNR0JMqEeKsOLt3X9dUzg" outgoing="_-JNR0pMqEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="_-JHLMpMqEeKsOLt3X9dUzg" name="Input(condition)" outgoing="_-JNR0ZMqEeKsOLt3X9dUzg" parameter="_l17_eY19EeK7gYOtibANUw"/>
- <node xmi:type="uml:ForkNode" xmi:id="_-JHLM5MqEeKsOLt3X9dUzg" name="Fork(condition)" incoming="_-JNR0ZMqEeKsOLt3X9dUzg" outgoing="_-JNR05MqEeKsOLt3X9dUzg"/>
- </packagedElement>
- <packagedElement xmi:type="uml:OpaqueBehavior" xmi:id="_9tk2UIgUEeKtquXykzQHVw" name="AssertFalse" group="_JXnrBJMrEeKsOLt3X9dUzg" node="_JXnrAJMrEeKsOLt3X9dUzg _JXnrAZMrEeKsOLt3X9dUzg _JXnrApMrEeKsOLt3X9dUzg _JXnrA5MrEeKsOLt3X9dUzg _JXnrBJMrEeKsOLt3X9dUzg">
- <ownedComment xmi:id="_qGNYsIgVEeKtquXykzQHVw">
- <body>namespace AssertionLibrary ;
-
-private import Alf::Library::PrimitiveBehaviors::BooleanFunctions::ToString;
-private import Alf::Library::BasicInputOutput::WriteLine ;
-
-activity AssertFalse(in label: String, in condition: Boolean) {
- WriteLine("! " + label + ": " + ToString(!condition));
-}</body>
- </ownedComment>
- <ownedParameter xmi:id="_wKWOho19EeK7gYOtibANUw" name="label" visibility="package">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wKWOh419EeK7gYOtibANUw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wKWOiI19EeK7gYOtibANUw" value="1"/>
- </ownedParameter>
- <ownedParameter xmi:id="_wKWOiY19EeK7gYOtibANUw" name="condition" visibility="package">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wKWOio19EeK7gYOtibANUw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wKWOi419EeK7gYOtibANUw" value="1"/>
- </ownedParameter>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrTpMrEeKsOLt3X9dUzg" target="_JXnrAZMrEeKsOLt3X9dUzg" source="_JXnrAJMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrT5MrEeKsOLt3X9dUzg" target="_JXnrA5MrEeKsOLt3X9dUzg" source="_JXnrApMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_JXtxoJMrEeKsOLt3X9dUzg" target="_JXnrF5MrEeKsOLt3X9dUzg" source="_JXnrAZMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_JXtxoZMrEeKsOLt3X9dUzg" target="_JXnrNZMrEeKsOLt3X9dUzg" source="_JXnrA5MrEeKsOLt3X9dUzg"/>
- <structuredNode xmi:id="_JXnrBJMrEeKsOLt3X9dUzg" name="Body(AssertFalse)">
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_JXnrBZMrEeKsOLt3X9dUzg" name="ExpressionStatement@162d7d6">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrTJMrEeKsOLt3X9dUzg" target="_JXnrB5MrEeKsOLt3X9dUzg" source="_JXnrQpMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_JXnrTZMrEeKsOLt3X9dUzg" target="_JXnrBpMrEeKsOLt3X9dUzg" source="_JXnrDZMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_JXnrBpMrEeKsOLt3X9dUzg" name="Call(WriteLine)" incoming="_JXnrTZMrEeKsOLt3X9dUzg">
- <argument xmi:id="_JXnrB5MrEeKsOLt3X9dUzg" name="Call(WriteLine).argument(value)" incoming="_JXnrTJMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrCJMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrCZMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <result xmi:id="_JXnrCpMrEeKsOLt3X9dUzg" name="Call(WriteLine).result(errorStatus)">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrC5MrEeKsOLt3X9dUzg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrDJMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_JXnrDZMrEeKsOLt3X9dUzg" name="Tuple@fd6256" outgoing="_JXnrTZMrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrRZMrEeKsOLt3X9dUzg" target="_JXnrFJMrEeKsOLt3X9dUzg" source="_JXnrD5MrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrRpMrEeKsOLt3X9dUzg" target="_JXnrI5MrEeKsOLt3X9dUzg" source="_JXnrGpMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrR5MrEeKsOLt3X9dUzg" target="_JXnrJpMrEeKsOLt3X9dUzg" source="_JXnrHpMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrSJMrEeKsOLt3X9dUzg" target="_JXnrLZMrEeKsOLt3X9dUzg" source="_JXnrOJMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_JXnrSZMrEeKsOLt3X9dUzg" target="_JXnrLJMrEeKsOLt3X9dUzg" source="_JXnrM5MrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrSpMrEeKsOLt3X9dUzg" target="_JXnrPJMrEeKsOLt3X9dUzg" source="_JXnrKZMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrS5MrEeKsOLt3X9dUzg" target="_JXnrP5MrEeKsOLt3X9dUzg" source="_JXnrMJMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_JXnrDpMrEeKsOLt3X9dUzg" name="Value("! ")">
- <result xmi:id="_JXnrD5MrEeKsOLt3X9dUzg" name="Value("! ").result" outgoing="_JXnrRZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrEJMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrEZMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_JXnrEpMrEeKsOLt3X9dUzg" value="! ">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_JXnrE5MrEeKsOLt3X9dUzg" name="Call(Concat)">
- <argument xmi:id="_JXnrFJMrEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_JXnrRZMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrFZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrFpMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_JXnrF5MrEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_JXtxoJMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrGJMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrGZMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <result xmi:id="_JXnrGpMrEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_JXnrRpMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrG5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrHJMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_JXnrHZMrEeKsOLt3X9dUzg" name="Value(": ")">
- <result xmi:id="_JXnrHpMrEeKsOLt3X9dUzg" name="Value(": ").result" outgoing="_JXnrR5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrH5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrIJMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_JXnrIZMrEeKsOLt3X9dUzg" value=": ">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_JXnrIpMrEeKsOLt3X9dUzg" name="Call(Concat)">
- <argument xmi:id="_JXnrI5MrEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_JXnrRpMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrJJMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrJZMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_JXnrJpMrEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_JXnrR5MrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrJ5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrKJMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <result xmi:id="_JXnrKZMrEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_JXnrSpMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrKpMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrK5MrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_JXnrLJMrEeKsOLt3X9dUzg" name="Call(ToString)" incoming="_JXnrSZMrEeKsOLt3X9dUzg">
- <argument xmi:id="_JXnrLZMrEeKsOLt3X9dUzg" name="Call(ToString).argument(x)" incoming="_JXnrSJMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrLpMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrL5MrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <result xmi:id="_JXnrMJMrEeKsOLt3X9dUzg" name="Call(ToString).result(result)" outgoing="_JXnrS5MrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrMZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrMpMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-BooleanFunctions-ToString"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_JXnrM5MrEeKsOLt3X9dUzg" name="Tuple@1ab3429" outgoing="_JXnrSZMrEeKsOLt3X9dUzg">
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_JXnrNJMrEeKsOLt3X9dUzg" name="Call(Not)">
- <argument xmi:id="_JXnrNZMrEeKsOLt3X9dUzg" name="Call(Not).argument(x)" incoming="_JXtxoZMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrNpMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrN5MrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <result xmi:id="_JXnrOJMrEeKsOLt3X9dUzg" name="Call(Not).result(result)" outgoing="_JXnrSJMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrOZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrOpMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-BooleanFunctions-Not"/>
- </node>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_JXnrO5MrEeKsOLt3X9dUzg" name="Call(Concat)">
- <argument xmi:id="_JXnrPJMrEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_JXnrSpMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrPZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrPpMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_JXnrP5MrEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_JXnrS5MrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrQJMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrQZMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <result xmi:id="_JXnrQpMrEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_JXnrTJMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrQ5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrRJMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- </node>
- </node>
- </structuredNode>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="_JXnrAJMrEeKsOLt3X9dUzg" name="Input(label)" outgoing="_JXnrTpMrEeKsOLt3X9dUzg" parameter="_wKWOho19EeK7gYOtibANUw"/>
- <node xmi:type="uml:ForkNode" xmi:id="_JXnrAZMrEeKsOLt3X9dUzg" name="Fork(label)" incoming="_JXnrTpMrEeKsOLt3X9dUzg" outgoing="_JXtxoJMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="_JXnrApMrEeKsOLt3X9dUzg" name="Input(condition)" outgoing="_JXnrT5MrEeKsOLt3X9dUzg" parameter="_wKWOiY19EeK7gYOtibANUw"/>
- <node xmi:type="uml:ForkNode" xmi:id="_JXnrA5MrEeKsOLt3X9dUzg" name="Fork(condition)" incoming="_JXnrT5MrEeKsOLt3X9dUzg" outgoing="_JXtxoZMrEeKsOLt3X9dUzg"/>
- </packagedElement>
- <packagedElement xmi:type="uml:OpaqueBehavior" xmi:id="_-Y3PAIgUEeKtquXykzQHVw" name="AssertList" group="_iQsVtpcCEeKVudOPtQ6VQg" node="_iQsVsJcCEeKVudOPtQ6VQg _iQsVsZcCEeKVudOPtQ6VQg _iQsVspcCEeKVudOPtQ6VQg _iQsVs5cCEeKVudOPtQ6VQg _iQsVtJcCEeKVudOPtQ6VQg _iQsVtZcCEeKVudOPtQ6VQg _iQsVtpcCEeKVudOPtQ6VQg">
- <ownedComment xmi:id="_2i470IgVEeKtquXykzQHVw">
- <body>namespace AssertionLibrary::AssertList ;
-
-private import Alf::Library::CollectionFunctions::size ;
-private import Alf::Library::PrimitiveBehaviors::* ;
-
-activity AssertList(in label: String, in list: any[*] sequence, in expected: any[*] sequence) {
- AssertEquals(label + "->size()", list->size(), expected->size());
- for (i in 1..IntegerFunctions::Min(list->size(),expected->size())) {
- AssertEquals(label + "[" + IntegerFunctions::ToString(i) + "]", list[i], expected[i]);
- }
-}</body>
- </ownedComment>
- <ownedParameter xmi:id="_AserUJF0EeKLspnMdnbsRA" name="label">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:id="_Bqqx4JF0EeKLspnMdnbsRA" name="list" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KncfoJF0EeKLspnMdnbsRA"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KnmQoJF0EeKLspnMdnbsRA" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:id="_BxEU0JF0EeKLspnMdnbsRA" name="expected" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NEZqQJF0EeKLspnMdnbsRA"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NEZqQZF0EeKLspnMdnbsRA" value="*"/>
- </ownedParameter>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1foJcCEeKVudOPtQ6VQg" target="_iQsVsZcCEeKVudOPtQ6VQg" source="_iQsVsJcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1foZcCEeKVudOPtQ6VQg" target="_iQsVs5cCEeKVudOPtQ6VQg" source="_iQsVspcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fopcCEeKVudOPtQ6VQg" target="_iQsVtZcCEeKVudOPtQ6VQg" source="_iQsVtJcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fo5cCEeKVudOPtQ6VQg" target="_iQsVyZcCEeKVudOPtQ6VQg" source="_iQsVsZcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fpJcCEeKVudOPtQ6VQg" target="_iQsV05cCEeKVudOPtQ6VQg" source="_iQsVs5cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fpZcCEeKVudOPtQ6VQg" target="_iQsV2pcCEeKVudOPtQ6VQg" source="_iQsVtZcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fppcCEeKVudOPtQ6VQg" target="_iQsWuJcCEeKVudOPtQ6VQg" source="_iQsVtZcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fp5cCEeKVudOPtQ6VQg" target="_iQsWu5cCEeKVudOPtQ6VQg" source="_iQsVs5cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fqJcCEeKVudOPtQ6VQg" target="_iQsWvpcCEeKVudOPtQ6VQg" source="_iQsVsZcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fqZcCEeKVudOPtQ6VQg" target="_iQsXAJcCEeKVudOPtQ6VQg" source="_iQsVs5cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fqpcCEeKVudOPtQ6VQg" target="_iQsXB5cCEeKVudOPtQ6VQg" source="_iQsVtZcCEeKVudOPtQ6VQg"/>
- <structuredNode xmi:id="_iQsVtpcCEeKVudOPtQ6VQg" name="Body(AssertList)">
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsVt5cCEeKVudOPtQ6VQg" name="ExpressionStatement@909f34" outgoing="_iQsXOJcCEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsV4ZcCEeKVudOPtQ6VQg" target="_iQsVuZcCEeKVudOPtQ6VQg" source="_iQsVz5cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsV4pcCEeKVudOPtQ6VQg" target="_iQsVvJcCEeKVudOPtQ6VQg" source="_iQsV1pcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsV45cCEeKVudOPtQ6VQg" target="_iQsVv5cCEeKVudOPtQ6VQg" source="_iQsV3ZcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_iQsV5JcCEeKVudOPtQ6VQg" target="_iQsVuJcCEeKVudOPtQ6VQg" source="_iQsVwpcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsVuJcCEeKVudOPtQ6VQg" name="Call(AssertEquals)" incoming="_iQsV5JcCEeKVudOPtQ6VQg" behavior="_8kE3oIgUEeKtquXykzQHVw">
- <argument xmi:id="_iQsVuZcCEeKVudOPtQ6VQg" name="Call(AssertEquals).argument(label)" incoming="_iQsV4ZcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsVupcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsVu5cCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_iQsVvJcCEeKVudOPtQ6VQg" name="Call(AssertEquals).argument(value1)" incoming="_iQsV4pcCEeKVudOPtQ6VQg">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsVvZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsVvpcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_iQsVv5cCEeKVudOPtQ6VQg" name="Call(AssertEquals).argument(value2)" incoming="_iQsV45cCEeKVudOPtQ6VQg">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsVwJcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsVwZcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsVwpcCEeKVudOPtQ6VQg" name="Tuple@313837" outgoing="_iQsV5JcCEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsV4JcCEeKVudOPtQ6VQg" target="_iQsVzJcCEeKVudOPtQ6VQg" source="_iQsVxJcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsVw5cCEeKVudOPtQ6VQg" name="Value("->size()")">
- <result xmi:id="_iQsVxJcCEeKVudOPtQ6VQg" name="Value("->size()").result" outgoing="_iQsV4JcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsVxZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsVxpcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_iQsVx5cCEeKVudOPtQ6VQg" value="->size()">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsVyJcCEeKVudOPtQ6VQg" name="Call(Concat)">
- <argument xmi:id="_iQsVyZcCEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="_iQ1fo5cCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsVypcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsVy5cCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_iQsVzJcCEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="_iQsV4JcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsVzZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsVzpcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="_iQsVz5cCEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="_iQsV4ZcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV0JcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV0ZcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsV0pcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__)" behavior="_iPgC4JcCEeKVudOPtQ6VQg">
- <argument xmi:id="_iQsV05cCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).argument(seq)" incoming="_iQ1fpJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV1JcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV1ZcCEeKVudOPtQ6VQg" value="*"/>
- </argument>
- <result xmi:id="_iQsV1pcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).result()" outgoing="_iQsV4pcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV15cCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV2JcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsV2ZcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__)" behavior="_iPgC4JcCEeKVudOPtQ6VQg">
- <argument xmi:id="_iQsV2pcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).argument(seq)" incoming="_iQ1fpZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV25cCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV3JcCEeKVudOPtQ6VQg" value="*"/>
- </argument>
- <result xmi:id="_iQsV3ZcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).result()" outgoing="_iQsV45cCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV3pcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV35cCEeKVudOPtQ6VQg" value="1"/>
- </result>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsV5ZcCEeKVudOPtQ6VQg" name="ForStatement@6b305d" incoming="_iQsXOJcCEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXM5cCEeKVudOPtQ6VQg" target="_iQsXDZcCEeKVudOPtQ6VQg" source="_iQsW8JcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXNJcCEeKVudOPtQ6VQg" target="_iQsWxJcCEeKVudOPtQ6VQg" source="_iQsXKJcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXNZcCEeKVudOPtQ6VQg" target="_iQsWx5cCEeKVudOPtQ6VQg" source="_iQsXJJcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXNpcCEeKVudOPtQ6VQg" target="_iQsWwZcCEeKVudOPtQ6VQg" source="_iQsXDZcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_iQsXN5cCEeKVudOPtQ6VQg" target="_iQsV5pcCEeKVudOPtQ6VQg" source="_iQsW7pcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:LoopNode" xmi:id="_iQsV5pcCEeKVudOPtQ6VQg" name="Loop(ForStatement@6b305d)" incoming="_iQsXN5cCEeKVudOPtQ6VQg" bodyOutput="_iQsWbpcCEeKVudOPtQ6VQg _iQsWcZcCEeKVudOPtQ6VQg _iQsWdJcCEeKVudOPtQ6VQg _iQsWgZcCEeKVudOPtQ6VQg _iQsWkJcCEeKVudOPtQ6VQg _iQsWnJcCEeKVudOPtQ6VQg" bodyPart="_iQsV95cCEeKVudOPtQ6VQg _iQsV-ZcCEeKVudOPtQ6VQg _iQsWepcCEeKVudOPtQ6VQg _iQsWhJcCEeKVudOPtQ6VQg _iQsWiZcCEeKVudOPtQ6VQg _iQsWk5cCEeKVudOPtQ6VQg _iQsWmJcCEeKVudOPtQ6VQg" decider="_iQsV9JcCEeKVudOPtQ6VQg" isTestedFirst="true" test="_iQsV7ZcCEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWoJcCEeKVudOPtQ6VQg" target="_iQsV55cCEeKVudOPtQ6VQg" source="_iQsWypcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWoZcCEeKVudOPtQ6VQg" target="_iQsV6JcCEeKVudOPtQ6VQg" source="_iQsW0JcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWopcCEeKVudOPtQ6VQg" target="_iQsV6ZcCEeKVudOPtQ6VQg" source="_iQsW1pcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWo5cCEeKVudOPtQ6VQg" target="_iQsV6pcCEeKVudOPtQ6VQg" source="_iQsW3JcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWpJcCEeKVudOPtQ6VQg" target="_iQsV65cCEeKVudOPtQ6VQg" source="_iQsW4pcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWpZcCEeKVudOPtQ6VQg" target="_iQsV7JcCEeKVudOPtQ6VQg" source="_iQsW6JcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWppcCEeKVudOPtQ6VQg" target="_iQsV7pcCEeKVudOPtQ6VQg" source="_iQsV65cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWp5cCEeKVudOPtQ6VQg" target="_iQsV8ZcCEeKVudOPtQ6VQg" source="_iQsV7JcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWqJcCEeKVudOPtQ6VQg" target="_iQsV-JcCEeKVudOPtQ6VQg" source="_iQsW3JcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_iQsWqZcCEeKVudOPtQ6VQg" target="_iQsV-ZcCEeKVudOPtQ6VQg" source="_iQsV95cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWqpcCEeKVudOPtQ6VQg" target="_iQsWFpcCEeKVudOPtQ6VQg" source="_iQsV-JcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWq5cCEeKVudOPtQ6VQg" target="_iQsWP5cCEeKVudOPtQ6VQg" source="_iQsV-JcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWrJcCEeKVudOPtQ6VQg" target="_iQsWSpcCEeKVudOPtQ6VQg" source="_iQsV-JcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWrZcCEeKVudOPtQ6VQg" target="_iQsWe5cCEeKVudOPtQ6VQg" source="_iQsV6pcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWrpcCEeKVudOPtQ6VQg" target="_iQsWfpcCEeKVudOPtQ6VQg" source="_iQsWhZcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWr5cCEeKVudOPtQ6VQg" target="_iQsWipcCEeKVudOPtQ6VQg" source="_iQsV65cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWsJcCEeKVudOPtQ6VQg" target="_iQsWjZcCEeKVudOPtQ6VQg" source="_iQsWlJcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWsZcCEeKVudOPtQ6VQg" target="_iQsWmZcCEeKVudOPtQ6VQg" source="_iQsV7JcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWspcCEeKVudOPtQ6VQg" target="_iQsWDJcCEeKVudOPtQ6VQg" source="_iQsV6ZcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWs5cCEeKVudOPtQ6VQg" target="_iQsWNpcCEeKVudOPtQ6VQg" source="_iQsV6JcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWtJcCEeKVudOPtQ6VQg" target="_iQsWQZcCEeKVudOPtQ6VQg" source="_iQsV55cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWtZcCEeKVudOPtQ6VQg" target="_iQsWV5cCEeKVudOPtQ6VQg" source="_iQsV55cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWtpcCEeKVudOPtQ6VQg" target="_iQsWX5cCEeKVudOPtQ6VQg" source="_iQsV6JcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWt5cCEeKVudOPtQ6VQg" target="_iQsWZ5cCEeKVudOPtQ6VQg" source="_iQsV6ZcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="_iQsV55cCEeKVudOPtQ6VQg" name="Fork(ForStatement@6b305d.loopVariable(expected))" incoming="_iQsWoJcCEeKVudOPtQ6VQg" outgoing="_iQsWtJcCEeKVudOPtQ6VQg _iQsWtZcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="_iQsV6JcCEeKVudOPtQ6VQg" name="Fork(ForStatement@6b305d.loopVariable(list))" incoming="_iQsWoZcCEeKVudOPtQ6VQg" outgoing="_iQsWs5cCEeKVudOPtQ6VQg _iQsWtpcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="_iQsV6ZcCEeKVudOPtQ6VQg" name="Fork(ForStatement@6b305d.loopVariable(label))" incoming="_iQsWopcCEeKVudOPtQ6VQg" outgoing="_iQsWspcCEeKVudOPtQ6VQg _iQsWt5cCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="_iQsV6pcCEeKVudOPtQ6VQg" name="Fork(ForStatement@6b305d.loopVariable(i))" incoming="_iQsWo5cCEeKVudOPtQ6VQg" outgoing="_iQsWrZcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="_iQsV65cCEeKVudOPtQ6VQg" name="Fork(ForStatement@6b305d.loopVariable(counter))" incoming="_iQsWpJcCEeKVudOPtQ6VQg" outgoing="_iQsWppcCEeKVudOPtQ6VQg _iQsWr5cCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="_iQsV7JcCEeKVudOPtQ6VQg" name="Fork(ForStatement@6b305d.loopVariable(upper))" incoming="_iQsWpZcCEeKVudOPtQ6VQg" outgoing="_iQsWp5cCEeKVudOPtQ6VQg _iQsWsZcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsV7ZcCEeKVudOPtQ6VQg" name="Call(<=)">
- <argument xmi:id="_iQsV7pcCEeKVudOPtQ6VQg" name="Call(<=).argument(x)" incoming="_iQsWppcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV75cCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV8JcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_iQsV8ZcCEeKVudOPtQ6VQg" name="Call(<=).argument(y)" incoming="_iQsWp5cCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV8pcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV85cCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="_iQsV9JcCEeKVudOPtQ6VQg" name="Call(<=).result(result)">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV9ZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV9pcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-le"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsV95cCEeKVudOPtQ6VQg" name="Values(ForStatement@6b305d)" outgoing="_iQsWqZcCEeKVudOPtQ6VQg">
- <node xmi:type="uml:ForkNode" xmi:id="_iQsV-JcCEeKVudOPtQ6VQg" name="Fork(i)" incoming="_iQsWqJcCEeKVudOPtQ6VQg" outgoing="_iQsWqpcCEeKVudOPtQ6VQg _iQsWq5cCEeKVudOPtQ6VQg _iQsWrJcCEeKVudOPtQ6VQg"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsV-ZcCEeKVudOPtQ6VQg" name="Body(ForStatement@6b305d)" incoming="_iQsWqZcCEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWd5cCEeKVudOPtQ6VQg" target="_iQsWbpcCEeKVudOPtQ6VQg" source="_iQsWWpcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWeJcCEeKVudOPtQ6VQg" target="_iQsWcZcCEeKVudOPtQ6VQg" source="_iQsWYpcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWeZcCEeKVudOPtQ6VQg" target="_iQsWdJcCEeKVudOPtQ6VQg" source="_iQsWapcCEeKVudOPtQ6VQg"/>
- <structuredNodeOutput xmi:id="_iQsWbpcCEeKVudOPtQ6VQg" name="expected" incoming="_iQsWd5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWb5cCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWcJcCEeKVudOPtQ6VQg" value="*"/>
- </structuredNodeOutput>
- <structuredNodeOutput xmi:id="_iQsWcZcCEeKVudOPtQ6VQg" name="list" incoming="_iQsWeJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWcpcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWc5cCEeKVudOPtQ6VQg" value="*"/>
- </structuredNodeOutput>
- <structuredNodeOutput xmi:id="_iQsWdJcCEeKVudOPtQ6VQg" name="label" incoming="_iQsWeZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWdZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWdpcCEeKVudOPtQ6VQg" value="1"/>
- </structuredNodeOutput>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsV-pcCEeKVudOPtQ6VQg" name="ExpressionStatement@1efbdc9">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWUpcCEeKVudOPtQ6VQg" target="_iQsV_JcCEeKVudOPtQ6VQg" source="_iQsWMpcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWU5cCEeKVudOPtQ6VQg" target="_iQsV_5cCEeKVudOPtQ6VQg" source="_iQsWPJcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWVJcCEeKVudOPtQ6VQg" target="_iQsWApcCEeKVudOPtQ6VQg" source="_iQsWR5cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_iQsWVZcCEeKVudOPtQ6VQg" target="_iQsV-5cCEeKVudOPtQ6VQg" source="_iQsWBZcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsV-5cCEeKVudOPtQ6VQg" name="Call(AssertEquals)" incoming="_iQsWVZcCEeKVudOPtQ6VQg" behavior="_8kE3oIgUEeKtquXykzQHVw">
- <argument xmi:id="_iQsV_JcCEeKVudOPtQ6VQg" name="Call(AssertEquals).argument(label)" incoming="_iQsWUpcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV_ZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV_pcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_iQsV_5cCEeKVudOPtQ6VQg" name="Call(AssertEquals).argument(value1)" incoming="_iQsWU5cCEeKVudOPtQ6VQg">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWAJcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWAZcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_iQsWApcCEeKVudOPtQ6VQg" name="Call(AssertEquals).argument(value2)" incoming="_iQsWVJcCEeKVudOPtQ6VQg">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWA5cCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWBJcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsWBZcCEeKVudOPtQ6VQg" name="Tuple@6d8cc8" outgoing="_iQsWVZcCEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWS5cCEeKVudOPtQ6VQg" target="_iQsWD5cCEeKVudOPtQ6VQg" source="_iQsWB5cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWTJcCEeKVudOPtQ6VQg" target="_iQsWHZcCEeKVudOPtQ6VQg" source="_iQsWEpcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWTZcCEeKVudOPtQ6VQg" target="_iQsWIJcCEeKVudOPtQ6VQg" source="_iQsWGZcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWTpcCEeKVudOPtQ6VQg" target="_iQsWLJcCEeKVudOPtQ6VQg" source="_iQsWI5cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWT5cCEeKVudOPtQ6VQg" target="_iQsWL5cCEeKVudOPtQ6VQg" source="_iQsWJ5cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWUJcCEeKVudOPtQ6VQg" target="_iQsWOZcCEeKVudOPtQ6VQg" source="_iQsWP5cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWUZcCEeKVudOPtQ6VQg" target="_iQsWRJcCEeKVudOPtQ6VQg" source="_iQsWSpcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsWBpcCEeKVudOPtQ6VQg" name="Value("[")">
- <result xmi:id="_iQsWB5cCEeKVudOPtQ6VQg" name="Value("[").result" outgoing="_iQsWS5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWCJcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWCZcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_iQsWCpcCEeKVudOPtQ6VQg" value="[">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWC5cCEeKVudOPtQ6VQg" name="Call(Concat)">
- <argument xmi:id="_iQsWDJcCEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="_iQsWspcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWDZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWDpcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_iQsWD5cCEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="_iQsWS5cCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWEJcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWEZcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="_iQsWEpcCEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="_iQsWTJcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWE5cCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWFJcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWFZcCEeKVudOPtQ6VQg" name="Call(ToString)">
- <argument xmi:id="_iQsWFpcCEeKVudOPtQ6VQg" name="Call(ToString).argument(x)" incoming="_iQsWqpcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWF5cCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWGJcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="_iQsWGZcCEeKVudOPtQ6VQg" name="Call(ToString).result(result)" outgoing="_iQsWTZcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWGpcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWG5cCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-ToString"/>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWHJcCEeKVudOPtQ6VQg" name="Call(Concat)">
- <argument xmi:id="_iQsWHZcCEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="_iQsWTJcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWHpcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWH5cCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_iQsWIJcCEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="_iQsWTZcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWIZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWIpcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="_iQsWI5cCEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="_iQsWTpcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWJJcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWJZcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsWJpcCEeKVudOPtQ6VQg" name="Value("]")">
- <result xmi:id="_iQsWJ5cCEeKVudOPtQ6VQg" name="Value("]").result" outgoing="_iQsWT5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWKJcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWKZcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_iQsWKpcCEeKVudOPtQ6VQg" value="]">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWK5cCEeKVudOPtQ6VQg" name="Call(Concat)">
- <argument xmi:id="_iQsWLJcCEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="_iQsWTpcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWLZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWLpcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_iQsWL5cCEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="_iQsWT5cCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWMJcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWMZcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="_iQsWMpcCEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="_iQsWUpcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWM5cCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWNJcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWNZcCEeKVudOPtQ6VQg" name="Call(At)">
- <argument xmi:id="_iQsWNpcCEeKVudOPtQ6VQg" name="Call(At).argument(seq)" incoming="_iQsWs5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWN5cCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWOJcCEeKVudOPtQ6VQg" value="*"/>
- </argument>
- <argument xmi:id="_iQsWOZcCEeKVudOPtQ6VQg" name="Call(At).argument(index)" incoming="_iQsWUJcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWOpcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWO5cCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="_iQsWPJcCEeKVudOPtQ6VQg" name="Call(At).result()" outgoing="_iQsWU5cCEeKVudOPtQ6VQg">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWPZcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWPpcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveBehaviors-SequenceFunctions-At"/>
- </node>
- <node xmi:type="uml:ForkNode" xmi:id="_iQsWP5cCEeKVudOPtQ6VQg" name="Fork(Call(At).argument(index))" incoming="_iQsWq5cCEeKVudOPtQ6VQg" outgoing="_iQsWUJcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWQJcCEeKVudOPtQ6VQg" name="Call(At)">
- <argument xmi:id="_iQsWQZcCEeKVudOPtQ6VQg" name="Call(At).argument(seq)" incoming="_iQsWtJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWQpcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWQ5cCEeKVudOPtQ6VQg" value="*"/>
- </argument>
- <argument xmi:id="_iQsWRJcCEeKVudOPtQ6VQg" name="Call(At).argument(index)" incoming="_iQsWUZcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWRZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWRpcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="_iQsWR5cCEeKVudOPtQ6VQg" name="Call(At).result()" outgoing="_iQsWVJcCEeKVudOPtQ6VQg">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWSJcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWSZcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveBehaviors-SequenceFunctions-At"/>
- </node>
- <node xmi:type="uml:ForkNode" xmi:id="_iQsWSpcCEeKVudOPtQ6VQg" name="Fork(Call(At).argument(index))" incoming="_iQsWrJcCEeKVudOPtQ6VQg" outgoing="_iQsWUZcCEeKVudOPtQ6VQg"/>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsWVpcCEeKVudOPtQ6VQg" name="Passthru(Fork(expected))">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWXZcCEeKVudOPtQ6VQg" target="_iQsWWpcCEeKVudOPtQ6VQg" source="_iQsWV5cCEeKVudOPtQ6VQg"/>
- <structuredNodeInput xmi:id="_iQsWV5cCEeKVudOPtQ6VQg" name="Passthru(Fork(expected)).input" incoming="_iQsWtZcCEeKVudOPtQ6VQg" outgoing="_iQsWXZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWWJcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWWZcCEeKVudOPtQ6VQg" value="*"/>
- </structuredNodeInput>
- <structuredNodeOutput xmi:id="_iQsWWpcCEeKVudOPtQ6VQg" name="Passthru(Fork(expected)).output" incoming="_iQsWXZcCEeKVudOPtQ6VQg" outgoing="_iQsWd5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWW5cCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWXJcCEeKVudOPtQ6VQg" value="*"/>
- </structuredNodeOutput>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsWXpcCEeKVudOPtQ6VQg" name="Passthru(Fork(list))">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWZZcCEeKVudOPtQ6VQg" target="_iQsWYpcCEeKVudOPtQ6VQg" source="_iQsWX5cCEeKVudOPtQ6VQg"/>
- <structuredNodeInput xmi:id="_iQsWX5cCEeKVudOPtQ6VQg" name="Passthru(Fork(list)).input" incoming="_iQsWtpcCEeKVudOPtQ6VQg" outgoing="_iQsWZZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWYJcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWYZcCEeKVudOPtQ6VQg" value="*"/>
- </structuredNodeInput>
- <structuredNodeOutput xmi:id="_iQsWYpcCEeKVudOPtQ6VQg" name="Passthru(Fork(list)).output" incoming="_iQsWZZcCEeKVudOPtQ6VQg" outgoing="_iQsWeJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWY5cCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWZJcCEeKVudOPtQ6VQg" value="*"/>
- </structuredNodeOutput>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsWZpcCEeKVudOPtQ6VQg" name="Passthru(Fork(label))">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWbZcCEeKVudOPtQ6VQg" target="_iQsWapcCEeKVudOPtQ6VQg" source="_iQsWZ5cCEeKVudOPtQ6VQg"/>
- <structuredNodeInput xmi:id="_iQsWZ5cCEeKVudOPtQ6VQg" name="Passthru(Fork(label)).input" incoming="_iQsWt5cCEeKVudOPtQ6VQg" outgoing="_iQsWbZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWaJcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWaZcCEeKVudOPtQ6VQg" value="1"/>
- </structuredNodeInput>
- <structuredNodeOutput xmi:id="_iQsWapcCEeKVudOPtQ6VQg" name="Passthru(Fork(label)).output" incoming="_iQsWbZcCEeKVudOPtQ6VQg" outgoing="_iQsWeZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWa5cCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWbJcCEeKVudOPtQ6VQg" value="1"/>
- </structuredNodeOutput>
- </node>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWepcCEeKVudOPtQ6VQg" name="Call(+)">
- <argument xmi:id="_iQsWe5cCEeKVudOPtQ6VQg" name="Call(+).argument(x)" incoming="_iQsWrZcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWfJcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWfZcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_iQsWfpcCEeKVudOPtQ6VQg" name="Call(+).argument(y)" incoming="_iQsWrpcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWf5cCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWgJcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="_iQsWgZcCEeKVudOPtQ6VQg" name="Call(+).result(result)">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWgpcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWg5cCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-plus"/>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsWhJcCEeKVudOPtQ6VQg" name="Value(1)">
- <result xmi:id="_iQsWhZcCEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_iQsWrpcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWhpcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWh5cCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_iQsWiJcCEeKVudOPtQ6VQg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWiZcCEeKVudOPtQ6VQg" name="Call(+)">
- <argument xmi:id="_iQsWipcCEeKVudOPtQ6VQg" name="Call(+).argument(x)" incoming="_iQsWr5cCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWi5cCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWjJcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_iQsWjZcCEeKVudOPtQ6VQg" name="Call(+).argument(y)" incoming="_iQsWsJcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWjpcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWj5cCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="_iQsWkJcCEeKVudOPtQ6VQg" name="Call(+).result(result)">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWkZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWkpcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-plus"/>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsWk5cCEeKVudOPtQ6VQg" name="Value(1)">
- <result xmi:id="_iQsWlJcCEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_iQsWsJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWlZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWlpcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_iQsWl5cCEeKVudOPtQ6VQg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsWmJcCEeKVudOPtQ6VQg" name="Passthru(Passthru(upper))">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWn5cCEeKVudOPtQ6VQg" target="_iQsWnJcCEeKVudOPtQ6VQg" source="_iQsWmZcCEeKVudOPtQ6VQg"/>
- <structuredNodeInput xmi:id="_iQsWmZcCEeKVudOPtQ6VQg" name="Passthru(Passthru(upper)).input" incoming="_iQsWsZcCEeKVudOPtQ6VQg" outgoing="_iQsWn5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWmpcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWm5cCEeKVudOPtQ6VQg" value="1"/>
- </structuredNodeInput>
- <structuredNodeOutput xmi:id="_iQsWnJcCEeKVudOPtQ6VQg" name="Passthru(Passthru(upper)).output" incoming="_iQsWn5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWnZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWnpcCEeKVudOPtQ6VQg" value="1"/>
- </structuredNodeOutput>
- </node>
- <loopVariable xmi:id="_iQsWypcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariable(expected)" outgoing="_iQsWoJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWy5cCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWzJcCEeKVudOPtQ6VQg" value="*"/>
- </loopVariable>
- <loopVariable xmi:id="_iQsW0JcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariable(list)" outgoing="_iQsWoZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW0ZcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW0pcCEeKVudOPtQ6VQg" value="*"/>
- </loopVariable>
- <loopVariable xmi:id="_iQsW1pcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariable(label)" outgoing="_iQsWopcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW15cCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW2JcCEeKVudOPtQ6VQg" value="1"/>
- </loopVariable>
- <loopVariable xmi:id="_iQsW3JcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariable(i)" outgoing="_iQsWo5cCEeKVudOPtQ6VQg _iQsWqJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW3ZcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW3pcCEeKVudOPtQ6VQg" value="*"/>
- </loopVariable>
- <loopVariable xmi:id="_iQsW4pcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariable(counter)" outgoing="_iQsWpJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW45cCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW5JcCEeKVudOPtQ6VQg" value="1"/>
- </loopVariable>
- <loopVariable xmi:id="_iQsW6JcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariable(upper)" outgoing="_iQsWpZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW6ZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW6pcCEeKVudOPtQ6VQg" value="1"/>
- </loopVariable>
- <loopVariableInput xmi:id="_iQsWuJcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariableInput(expected)" incoming="_iQ1fppcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWuZcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWupcCEeKVudOPtQ6VQg" value="*"/>
- </loopVariableInput>
- <loopVariableInput xmi:id="_iQsWu5cCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariableInput(list)" incoming="_iQ1fp5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWvJcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWvZcCEeKVudOPtQ6VQg" value="*"/>
- </loopVariableInput>
- <loopVariableInput xmi:id="_iQsWvpcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariableInput(label)" incoming="_iQ1fqJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWv5cCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWwJcCEeKVudOPtQ6VQg" value="1"/>
- </loopVariableInput>
- <loopVariableInput xmi:id="_iQsWwZcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariableInput(i)" incoming="_iQsXNpcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWwpcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWw5cCEeKVudOPtQ6VQg" value="1"/>
- </loopVariableInput>
- <loopVariableInput xmi:id="_iQsWxJcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariableInput(counter)" incoming="_iQsXNJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWxZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWxpcCEeKVudOPtQ6VQg" value="1"/>
- </loopVariableInput>
- <loopVariableInput xmi:id="_iQsWx5cCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariableInput(upper)" incoming="_iQsXNZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWyJcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWyZcCEeKVudOPtQ6VQg" value="1"/>
- </loopVariableInput>
- <result xmi:id="_iQsWzZcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.result(expected)" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWzpcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWz5cCEeKVudOPtQ6VQg" value="*"/>
- </result>
- <result xmi:id="_iQsW05cCEeKVudOPtQ6VQg" name="ForStatement@6b305d.result(list)" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW1JcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW1ZcCEeKVudOPtQ6VQg" value="*"/>
- </result>
- <result xmi:id="_iQsW2ZcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.result(label)" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW2pcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW25cCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <result xmi:id="_iQsW35cCEeKVudOPtQ6VQg" name="ForStatement@6b305d.result(i)" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW4JcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW4ZcCEeKVudOPtQ6VQg" value="*"/>
- </result>
- <result xmi:id="_iQsW5ZcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.result(counter)" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW5pcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW55cCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <result xmi:id="_iQsW65cCEeKVudOPtQ6VQg" name="ForStatement@6b305d.result(upper)" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW7JcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW7ZcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsW7pcCEeKVudOPtQ6VQg" name="LoopVariables(ForStatement@6b305d)" outgoing="_iQsXN5cCEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXLJcCEeKVudOPtQ6VQg" target="_iQsW9ZcCEeKVudOPtQ6VQg" source="_iQsXA5cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXLZcCEeKVudOPtQ6VQg" target="_iQsW-JcCEeKVudOPtQ6VQg" source="_iQsXCpcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_iQsXLpcCEeKVudOPtQ6VQg" target="_iQsW9JcCEeKVudOPtQ6VQg" source="_iQsW_pcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXL5cCEeKVudOPtQ6VQg" target="_iQsXD5cCEeKVudOPtQ6VQg" source="_iQsW-5cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXMJcCEeKVudOPtQ6VQg" target="_iQsXEpcCEeKVudOPtQ6VQg" source="_iQsXDZcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXMZcCEeKVudOPtQ6VQg" target="_iQsXHpcCEeKVudOPtQ6VQg" source="_iQsXFZcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXMpcCEeKVudOPtQ6VQg" target="_iQsXIZcCEeKVudOPtQ6VQg" source="_iQsXGZcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsW75cCEeKVudOPtQ6VQg" name="Value(1)">
- <result xmi:id="_iQsW8JcCEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_iQsXM5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW8ZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW8pcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_iQsW85cCEeKVudOPtQ6VQg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsW9JcCEeKVudOPtQ6VQg" name="Call(Min)" incoming="_iQsXLpcCEeKVudOPtQ6VQg">
- <argument xmi:id="_iQsW9ZcCEeKVudOPtQ6VQg" name="Call(Min).argument(x)" incoming="_iQsXLJcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW9pcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW95cCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_iQsW-JcCEeKVudOPtQ6VQg" name="Call(Min).argument(y)" incoming="_iQsXLZcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW-ZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW-pcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="_iQsW-5cCEeKVudOPtQ6VQg" name="Call(Min).result(result)" outgoing="_iQsXL5cCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW_JcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW_ZcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-Min"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsW_pcCEeKVudOPtQ6VQg" name="Tuple@2ed28b" outgoing="_iQsXLpcCEeKVudOPtQ6VQg">
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsW_5cCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__)" behavior="_iPgC4JcCEeKVudOPtQ6VQg">
- <argument xmi:id="_iQsXAJcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).argument(seq)" incoming="_iQ1fqZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXAZcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXApcCEeKVudOPtQ6VQg" value="*"/>
- </argument>
- <result xmi:id="_iQsXA5cCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).result()" outgoing="_iQsXLJcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXBJcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXBZcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsXBpcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__)" behavior="_iPgC4JcCEeKVudOPtQ6VQg">
- <argument xmi:id="_iQsXB5cCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).argument(seq)" incoming="_iQ1fqpcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXCJcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXCZcCEeKVudOPtQ6VQg" value="*"/>
- </argument>
- <result xmi:id="_iQsXCpcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).result()" outgoing="_iQsXLZcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXC5cCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXDJcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- </node>
- </node>
- <node xmi:type="uml:ForkNode" xmi:id="_iQsXDZcCEeKVudOPtQ6VQg" name="Fork(Value(1).result)" incoming="_iQsXM5cCEeKVudOPtQ6VQg" outgoing="_iQsXNpcCEeKVudOPtQ6VQg _iQsXMJcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsXDpcCEeKVudOPtQ6VQg" name="Call(-)">
- <argument xmi:id="_iQsXD5cCEeKVudOPtQ6VQg" name="Call(-).argument(x)" incoming="_iQsXL5cCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXEJcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXEZcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_iQsXEpcCEeKVudOPtQ6VQg" name="Call(-).argument(y)" incoming="_iQsXMJcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXE5cCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXFJcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="_iQsXFZcCEeKVudOPtQ6VQg" name="Call(-).result(result)" outgoing="_iQsXMZcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXFpcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXF5cCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-minus"/>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsXGJcCEeKVudOPtQ6VQg" name="Value(1)">
- <result xmi:id="_iQsXGZcCEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_iQsXMpcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXGpcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXG5cCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_iQsXHJcCEeKVudOPtQ6VQg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsXHZcCEeKVudOPtQ6VQg" name="Call(+)">
- <argument xmi:id="_iQsXHpcCEeKVudOPtQ6VQg" name="Call(+).argument(x)" incoming="_iQsXMZcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXH5cCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXIJcCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_iQsXIZcCEeKVudOPtQ6VQg" name="Call(+).argument(y)" incoming="_iQsXMpcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXIpcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXI5cCEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="_iQsXJJcCEeKVudOPtQ6VQg" name="Call(+).result(result)" outgoing="_iQsXNZcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXJZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXJpcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-plus"/>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsXJ5cCEeKVudOPtQ6VQg" name="Value(1)">
- <result xmi:id="_iQsXKJcCEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_iQsXNJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXKZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXKpcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_iQsXK5cCEeKVudOPtQ6VQg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- </node>
- <edge xmi:type="uml:ControlFlow" xmi:id="_iQsXOJcCEeKVudOPtQ6VQg" target="_iQsV5ZcCEeKVudOPtQ6VQg" source="_iQsVt5cCEeKVudOPtQ6VQg"/>
- </structuredNode>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="_iQsVsJcCEeKVudOPtQ6VQg" name="Input(label)" outgoing="_iQ1foJcCEeKVudOPtQ6VQg" parameter="_AserUJF0EeKLspnMdnbsRA"/>
- <node xmi:type="uml:ForkNode" xmi:id="_iQsVsZcCEeKVudOPtQ6VQg" name="Fork(label)" incoming="_iQ1foJcCEeKVudOPtQ6VQg" outgoing="_iQ1fo5cCEeKVudOPtQ6VQg _iQ1fqJcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="_iQsVspcCEeKVudOPtQ6VQg" name="Input(list)" outgoing="_iQ1foZcCEeKVudOPtQ6VQg" parameter="_Bqqx4JF0EeKLspnMdnbsRA"/>
- <node xmi:type="uml:ForkNode" xmi:id="_iQsVs5cCEeKVudOPtQ6VQg" name="Fork(list)" incoming="_iQ1foZcCEeKVudOPtQ6VQg" outgoing="_iQ1fpJcCEeKVudOPtQ6VQg _iQ1fqZcCEeKVudOPtQ6VQg _iQ1fp5cCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="_iQsVtJcCEeKVudOPtQ6VQg" name="Input(expected)" outgoing="_iQ1fopcCEeKVudOPtQ6VQg" parameter="_BxEU0JF0EeKLspnMdnbsRA"/>
- <node xmi:type="uml:ForkNode" xmi:id="_iQsVtZcCEeKVudOPtQ6VQg" name="Fork(expected)" incoming="_iQ1fopcCEeKVudOPtQ6VQg" outgoing="_iQ1fpZcCEeKVudOPtQ6VQg _iQ1fqpcCEeKVudOPtQ6VQg _iQ1fppcCEeKVudOPtQ6VQg"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Activity" xmi:id="_Tz8bEIgWEeKtquXykzQHVw" name="Write" node="_ojxW8Jb6EeKytdasF4bkww _ojxW8Zb6EeKytdasF4bkww _ojxW8pb6EeKytdasF4bkww" group="_ojxW8pb6EeKytdasF4bkww">
- <ownedComment xmi:id="_ZaCg4IgWEeKtquXykzQHVw">
- <body>
-namespace AssertionLibrary ;
-
-private import Alf::Library::BasicInputOutput::StandardOutputChannel ;
-
-activity Write(in value: any) {
- StandardOutputChannel.allInstances()[1].write(value);
-}</body>
- </ownedComment>
- <ownedParameter xmi:id="_Y7osM419EeK7gYOtibANUw" name="value" visibility="package">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Y7osNI19EeK7gYOtibANUw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Y7osNY19EeK7gYOtibANUw" value="1"/>
- </ownedParameter>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXIZb6EeKytdasF4bkww" target="_ojxW8Zb6EeKytdasF4bkww" source="_ojxW8Jb6EeKytdasF4bkww"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXIpb6EeKytdasF4bkww" target="_ojxW_5b6EeKytdasF4bkww" source="_ojxW8Zb6EeKytdasF4bkww"/>
- <structuredNode xmi:id="_ojxW8pb6EeKytdasF4bkww" name="Body(Write)">
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_ojxW85b6EeKytdasF4bkww" name="ExpressionStatement@660c0d">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXH5b6EeKytdasF4bkww" target="_ojxXBJb6EeKytdasF4bkww" source="_ojxXDZb6EeKytdasF4bkww"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_ojxXIJb6EeKytdasF4bkww" target="_ojxW9Jb6EeKytdasF4bkww" source="_ojxXBZb6EeKytdasF4bkww"/>
- <node xmi:type="uml:ExpansionRegion" xmi:id="_ojxW9Jb6EeKytdasF4bkww" name="Collect(Call(write))" incoming="_ojxXIJb6EeKytdasF4bkww" mode="parallel" inputElement="_ojxXBJb6EeKytdasF4bkww">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXApb6EeKytdasF4bkww" target="_ojxW9pb6EeKytdasF4bkww" source="_ojxW_5b6EeKytdasF4bkww"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXA5b6EeKytdasF4bkww" target="_ojxW_Jb6EeKytdasF4bkww" source="_ojxXBJb6EeKytdasF4bkww"/>
- <structuredNodeInput xmi:id="_ojxW_5b6EeKytdasF4bkww" name="Collect(Call(write)).input(Fork(value))" incoming="_ojxXIpb6EeKytdasF4bkww" outgoing="_ojxXApb6EeKytdasF4bkww" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxXAJb6EeKytdasF4bkww" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxXAZb6EeKytdasF4bkww" value="1"/>
- </structuredNodeInput>
- <node xmi:type="uml:CallOperationAction" xmi:id="_ojxW9Zb6EeKytdasF4bkww" name="Call(write)">
- <argument xmi:id="_ojxW9pb6EeKytdasF4bkww" name="Call(write).argument(value)" incoming="_ojxXApb6EeKytdasF4bkww">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxW95b6EeKytdasF4bkww" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxW-Jb6EeKytdasF4bkww" value="1"/>
- </argument>
- <result xmi:id="_ojxW-Zb6EeKytdasF4bkww" name="Call(write).result(errorStatus)">
- <type xmi:type="uml:DataType" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#Common-Status"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxW-pb6EeKytdasF4bkww"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxW-5b6EeKytdasF4bkww" value="1"/>
- </result>
- <operation href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-OutputChannel-write"/>
- <target xmi:id="_ojxW_Jb6EeKytdasF4bkww" name="Call(write).target" incoming="_ojxXA5b6EeKytdasF4bkww" isOrdered="true" isUnique="false">
- <type xmi:type="uml:Class" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-OutputChannel"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxW_Zb6EeKytdasF4bkww" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxW_pb6EeKytdasF4bkww" value="1"/>
- </target>
- </node>
- </node>
- <node xmi:type="uml:ExpansionNode" xmi:id="_ojxXBJb6EeKytdasF4bkww" name="Collect(Call(write)).inputElement" incoming="_ojxXH5b6EeKytdasF4bkww" outgoing="_ojxXA5b6EeKytdasF4bkww" regionAsInput="_ojxW9Jb6EeKytdasF4bkww"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_ojxXBZb6EeKytdasF4bkww" name="Feature(Call(At).result())" outgoing="_ojxXIJb6EeKytdasF4bkww">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXG5b6EeKytdasF4bkww" target="_ojxXB5b6EeKytdasF4bkww" source="_ojxXEpb6EeKytdasF4bkww"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXHJb6EeKytdasF4bkww" target="_ojxXGpb6EeKytdasF4bkww" source="_ojxXFpb6EeKytdasF4bkww"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_ojxXHZb6EeKytdasF4bkww" target="_ojxXBpb6EeKytdasF4bkww" source="_ojxXEJb6EeKytdasF4bkww"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXHpb6EeKytdasF4bkww" target="_ojxXCpb6EeKytdasF4bkww" source="_ojxXGpb6EeKytdasF4bkww"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_ojxXBpb6EeKytdasF4bkww" name="Call(At)" incoming="_ojxXHZb6EeKytdasF4bkww">
- <argument xmi:id="_ojxXB5b6EeKytdasF4bkww" name="Call(At).argument(seq)" incoming="_ojxXG5b6EeKytdasF4bkww" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxXCJb6EeKytdasF4bkww"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxXCZb6EeKytdasF4bkww" value="*"/>
- </argument>
- <argument xmi:id="_ojxXCpb6EeKytdasF4bkww" name="Call(At).argument(index)" incoming="_ojxXHpb6EeKytdasF4bkww">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxXC5b6EeKytdasF4bkww" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxXDJb6EeKytdasF4bkww" value="1"/>
- </argument>
- <result xmi:id="_ojxXDZb6EeKytdasF4bkww" name="Call(At).result()" outgoing="_ojxXH5b6EeKytdasF4bkww">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxXDpb6EeKytdasF4bkww"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxXD5b6EeKytdasF4bkww" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveBehaviors-SequenceFunctions-At"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_ojxXEJb6EeKytdasF4bkww" name="Tuple@43f8b1" outgoing="_ojxXHZb6EeKytdasF4bkww">
- <node xmi:type="uml:ReadExtentAction" xmi:id="_ojxXEZb6EeKytdasF4bkww" name="ReadExtent(StandardOutputChannel)">
- <classifier xmi:type="uml:Class" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-StandardOutputChannel"/>
- <result xmi:id="_ojxXEpb6EeKytdasF4bkww" name="ReadExtent(StandardOutputChannel).result" outgoing="_ojxXG5b6EeKytdasF4bkww" isOrdered="true" isUnique="false">
- <type xmi:type="uml:Class" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-StandardOutputChannel"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxXE5b6EeKytdasF4bkww"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxXFJb6EeKytdasF4bkww" value="*"/>
- </result>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_ojxXFZb6EeKytdasF4bkww" name="Value(1)">
- <result xmi:id="_ojxXFpb6EeKytdasF4bkww" name="Value(1).result" outgoing="_ojxXHJb6EeKytdasF4bkww" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxXF5b6EeKytdasF4bkww" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxXGJb6EeKytdasF4bkww" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_ojxXGZb6EeKytdasF4bkww" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- <node xmi:type="uml:ForkNode" xmi:id="_ojxXGpb6EeKytdasF4bkww" name="Fork(Call(At).argument(index))" incoming="_ojxXHJb6EeKytdasF4bkww" outgoing="_ojxXHpb6EeKytdasF4bkww"/>
- </node>
- </node>
- </structuredNode>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="_ojxW8Jb6EeKytdasF4bkww" name="Input(value)" outgoing="_ojxXIZb6EeKytdasF4bkww" parameter="_Y7osM419EeK7gYOtibANUw"/>
- <node xmi:type="uml:ForkNode" xmi:id="_ojxW8Zb6EeKytdasF4bkww" name="Fork(value)" incoming="_ojxXIZb6EeKytdasF4bkww" outgoing="_ojxXIpb6EeKytdasF4bkww"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="_z5N8wJGKEeKaY7tSssHhGw" name="Tests">
- <packagedElement xmi:type="uml:Activity" xmi:id="_4BlgUJGKEeKaY7tSssHhGw" name="TestWrite" node="_nOXtwJMqEeKsOLt3X9dUzg" group="_nOXtwJMqEeKsOLt3X9dUzg">
- <ownedComment xmi:id="_9Q7TDpGKEeKaY7tSssHhGw">
- <body>/* Generated textual representation of Activity AssertionLibrary::Tests::TestWrite */
-
-namespace AssertionLibrary::Tests ;
-
-activity TestWrite() { 
- Write("Hello!") ;
-}</body>
- </ownedComment>
- <structuredNode xmi:id="_nOXtwJMqEeKsOLt3X9dUzg" name="Body(TestWrite)">
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_nOXtwZMqEeKsOLt3X9dUzg" name="ExpressionStatement@6de523">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_nOXtzJMqEeKsOLt3X9dUzg" target="_nOXtw5MqEeKsOLt3X9dUzg" source="_nOXtyJMqEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_nOXtzZMqEeKsOLt3X9dUzg" target="_nOXtwpMqEeKsOLt3X9dUzg" source="_nOXtxpMqEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_nOXtwpMqEeKsOLt3X9dUzg" name="Call(Write)" incoming="_nOXtzZMqEeKsOLt3X9dUzg" behavior="_Tz8bEIgWEeKtquXykzQHVw">
- <argument xmi:id="_nOXtw5MqEeKsOLt3X9dUzg" name="Call(Write).argument(value)" incoming="_nOXtzJMqEeKsOLt3X9dUzg">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nOXtxJMqEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nOXtxZMqEeKsOLt3X9dUzg" value="1"/>
- </argument>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_nOXtxpMqEeKsOLt3X9dUzg" name="Tuple@9063b0" outgoing="_nOXtzZMqEeKsOLt3X9dUzg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_nOXtx5MqEeKsOLt3X9dUzg" name="Value("Hello!")">
- <result xmi:id="_nOXtyJMqEeKsOLt3X9dUzg" name="Value("Hello!").result" outgoing="_nOXtzJMqEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nOXtyZMqEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nOXtypMqEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_nOXty5MqEeKsOLt3X9dUzg" value="Hello!">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- </structuredNode>
- </packagedElement>
- <packagedElement xmi:type="uml:Activity" xmi:id="_Grnr0JGLEeKaY7tSssHhGw" name="TestAssertTrue" node="_BRkw8JMrEeKsOLt3X9dUzg" group="_BRkw8JMrEeKsOLt3X9dUzg">
- <ownedComment xmi:id="_QCbqgJGLEeKaY7tSssHhGw">
- <body>/* Generated textual representation of Activity AssertionLibrary::Tests::TestAssertTrue */
-
-namespace AssertionLibrary::Tests ;
-
-activity TestAssertTrue() { 
- AssertTrue("1 == 1", 1 == 1) ;
- AssertTrue("1 == 2", 1 == 2) ;
-}</body>
- </ownedComment>
- <structuredNode xmi:id="_BRkw8JMrEeKsOLt3X9dUzg" name="Body(TestAssertTrue)">
- <edge xmi:type="uml:ControlFlow" xmi:id="_BRkxP5MrEeKsOLt3X9dUzg" target="_BRkxGJMrEeKsOLt3X9dUzg" source="_BRkw8ZMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_BRkw8ZMrEeKsOLt3X9dUzg" name="ExpressionStatement@156c3da" outgoing="_BRkxP5MrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxFZMrEeKsOLt3X9dUzg" target="_BRkw85MrEeKsOLt3X9dUzg" source="_BRkw-5MrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxFpMrEeKsOLt3X9dUzg" target="_BRkw9pMrEeKsOLt3X9dUzg" source="_BRkxDZMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_BRkxF5MrEeKsOLt3X9dUzg" target="_BRkw8pMrEeKsOLt3X9dUzg" source="_BRkw-ZMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_BRkw8pMrEeKsOLt3X9dUzg" name="Call(AssertTrue)" incoming="_BRkxF5MrEeKsOLt3X9dUzg" behavior="_9FjNAIgUEeKtquXykzQHVw">
- <argument xmi:id="_BRkw85MrEeKsOLt3X9dUzg" name="Call(AssertTrue).argument(label)" incoming="_BRkxFZMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkw9JMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkw9ZMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_BRkw9pMrEeKsOLt3X9dUzg" name="Call(AssertTrue).argument(condition)" incoming="_BRkxFpMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkw95MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkw-JMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_BRkw-ZMrEeKsOLt3X9dUzg" name="Tuple@ebca5e" outgoing="_BRkxF5MrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxE5MrEeKsOLt3X9dUzg" target="_BRkxCpMrEeKsOLt3X9dUzg" source="_BRkxAJMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxFJMrEeKsOLt3X9dUzg" target="_BRkxEJMrEeKsOLt3X9dUzg" source="_BRkxBZMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_BRkw-pMrEeKsOLt3X9dUzg" name="Value("1 == 1")">
- <result xmi:id="_BRkw-5MrEeKsOLt3X9dUzg" name="Value("1 == 1").result" outgoing="_BRkxFZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkw_JMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkw_ZMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_BRkw_pMrEeKsOLt3X9dUzg" value="1 == 1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_BRkw_5MrEeKsOLt3X9dUzg" name="Value(1)">
- <result xmi:id="_BRkxAJMrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_BRkxE5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxAZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxApMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_BRkxA5MrEeKsOLt3X9dUzg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_BRkxBJMrEeKsOLt3X9dUzg" name="Value(1)">
- <result xmi:id="_BRkxBZMrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_BRkxFJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxBpMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxB5MrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_BRkxCJMrEeKsOLt3X9dUzg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- <node xmi:type="uml:TestIdentityAction" xmi:id="_BRkxCZMrEeKsOLt3X9dUzg" name="Test(==)">
- <first xmi:id="_BRkxCpMrEeKsOLt3X9dUzg" name="Test(==).first" incoming="_BRkxE5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxC5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxDJMrEeKsOLt3X9dUzg" value="1"/>
- </first>
- <result xmi:id="_BRkxDZMrEeKsOLt3X9dUzg" name="Test(==).result" outgoing="_BRkxFpMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxDpMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxD5MrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <second xmi:id="_BRkxEJMrEeKsOLt3X9dUzg" name="Test(==).second" incoming="_BRkxFJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxEZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxEpMrEeKsOLt3X9dUzg" value="1"/>
- </second>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_BRkxGJMrEeKsOLt3X9dUzg" name="ExpressionStatement@275507" incoming="_BRkxP5MrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxPJMrEeKsOLt3X9dUzg" target="_BRkxGpMrEeKsOLt3X9dUzg" source="_BRkxIpMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxPZMrEeKsOLt3X9dUzg" target="_BRkxHZMrEeKsOLt3X9dUzg" source="_BRkxNJMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_BRkxPpMrEeKsOLt3X9dUzg" target="_BRkxGZMrEeKsOLt3X9dUzg" source="_BRkxIJMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_BRkxGZMrEeKsOLt3X9dUzg" name="Call(AssertTrue)" incoming="_BRkxPpMrEeKsOLt3X9dUzg" behavior="_9FjNAIgUEeKtquXykzQHVw">
- <argument xmi:id="_BRkxGpMrEeKsOLt3X9dUzg" name="Call(AssertTrue).argument(label)" incoming="_BRkxPJMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxG5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxHJMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_BRkxHZMrEeKsOLt3X9dUzg" name="Call(AssertTrue).argument(condition)" incoming="_BRkxPZMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxHpMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxH5MrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_BRkxIJMrEeKsOLt3X9dUzg" name="Tuple@a3302c" outgoing="_BRkxPpMrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxOpMrEeKsOLt3X9dUzg" target="_BRkxMZMrEeKsOLt3X9dUzg" source="_BRkxJ5MrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxO5MrEeKsOLt3X9dUzg" target="_BRkxN5MrEeKsOLt3X9dUzg" source="_BRkxLJMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_BRkxIZMrEeKsOLt3X9dUzg" name="Value("1 == 2")">
- <result xmi:id="_BRkxIpMrEeKsOLt3X9dUzg" name="Value("1 == 2").result" outgoing="_BRkxPJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxI5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxJJMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_BRkxJZMrEeKsOLt3X9dUzg" value="1 == 2">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_BRkxJpMrEeKsOLt3X9dUzg" name="Value(1)">
- <result xmi:id="_BRkxJ5MrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_BRkxOpMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxKJMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxKZMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_BRkxKpMrEeKsOLt3X9dUzg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_BRkxK5MrEeKsOLt3X9dUzg" name="Value(2)">
- <result xmi:id="_BRkxLJMrEeKsOLt3X9dUzg" name="Value(2).result" outgoing="_BRkxO5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxLZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxLpMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_BRkxL5MrEeKsOLt3X9dUzg" value="2">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- <node xmi:type="uml:TestIdentityAction" xmi:id="_BRkxMJMrEeKsOLt3X9dUzg" name="Test(==)">
- <first xmi:id="_BRkxMZMrEeKsOLt3X9dUzg" name="Test(==).first" incoming="_BRkxOpMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxMpMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxM5MrEeKsOLt3X9dUzg" value="1"/>
- </first>
- <result xmi:id="_BRkxNJMrEeKsOLt3X9dUzg" name="Test(==).result" outgoing="_BRkxPZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxNZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxNpMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <second xmi:id="_BRkxN5MrEeKsOLt3X9dUzg" name="Test(==).second" incoming="_BRkxO5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxOJMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxOZMrEeKsOLt3X9dUzg" value="1"/>
- </second>
- </node>
- </node>
- </node>
- </structuredNode>
- </packagedElement>
- <packagedElement xmi:type="uml:Activity" xmi:id="_XSUYUJGLEeKaY7tSssHhGw" name="TestAssertFalse" node="_Mb4tQJMrEeKsOLt3X9dUzg" group="_Mb4tQJMrEeKsOLt3X9dUzg">
- <ownedComment xmi:id="_fY76cJGLEeKaY7tSssHhGw">
- <body>/* Generated textual representation of Activity AssertionLibrary::Tests::TestAssertFalse */
-
-namespace AssertionLibrary::Tests ;
-
-activity TestAssertFalse() { 
- AssertFalse("1 == 1", 1 == 1) ;
- AssertFalse("1 == 2", 1 == 2) ;
-}</body>
- </ownedComment>
- <structuredNode xmi:id="_Mb4tQJMrEeKsOLt3X9dUzg" name="Body(TestAssertFalse)">
- <edge xmi:type="uml:ControlFlow" xmi:id="_Mb4tj5MrEeKsOLt3X9dUzg" target="_Mb4taJMrEeKsOLt3X9dUzg" source="_Mb4tQZMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_Mb4tQZMrEeKsOLt3X9dUzg" name="ExpressionStatement@16995c4" outgoing="_Mb4tj5MrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4tZZMrEeKsOLt3X9dUzg" target="_Mb4tQ5MrEeKsOLt3X9dUzg" source="_Mb4tS5MrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4tZpMrEeKsOLt3X9dUzg" target="_Mb4tRpMrEeKsOLt3X9dUzg" source="_Mb4tXZMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_Mb4tZ5MrEeKsOLt3X9dUzg" target="_Mb4tQpMrEeKsOLt3X9dUzg" source="_Mb4tSZMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_Mb4tQpMrEeKsOLt3X9dUzg" name="Call(AssertFalse)" incoming="_Mb4tZ5MrEeKsOLt3X9dUzg" behavior="_9tk2UIgUEeKtquXykzQHVw">
- <argument xmi:id="_Mb4tQ5MrEeKsOLt3X9dUzg" name="Call(AssertFalse).argument(label)" incoming="_Mb4tZZMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tRJMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tRZMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_Mb4tRpMrEeKsOLt3X9dUzg" name="Call(AssertFalse).argument(condition)" incoming="_Mb4tZpMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tR5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tSJMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_Mb4tSZMrEeKsOLt3X9dUzg" name="Tuple@90f9" outgoing="_Mb4tZ5MrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4tY5MrEeKsOLt3X9dUzg" target="_Mb4tWpMrEeKsOLt3X9dUzg" source="_Mb4tUJMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4tZJMrEeKsOLt3X9dUzg" target="_Mb4tYJMrEeKsOLt3X9dUzg" source="_Mb4tVZMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Mb4tSpMrEeKsOLt3X9dUzg" name="Value("1 == 1")">
- <result xmi:id="_Mb4tS5MrEeKsOLt3X9dUzg" name="Value("1 == 1").result" outgoing="_Mb4tZZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tTJMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tTZMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_Mb4tTpMrEeKsOLt3X9dUzg" value="1 == 1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Mb4tT5MrEeKsOLt3X9dUzg" name="Value(1)">
- <result xmi:id="_Mb4tUJMrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_Mb4tY5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tUZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tUpMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_Mb4tU5MrEeKsOLt3X9dUzg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Mb4tVJMrEeKsOLt3X9dUzg" name="Value(1)">
- <result xmi:id="_Mb4tVZMrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_Mb4tZJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tVpMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tV5MrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_Mb4tWJMrEeKsOLt3X9dUzg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- <node xmi:type="uml:TestIdentityAction" xmi:id="_Mb4tWZMrEeKsOLt3X9dUzg" name="Test(==)">
- <first xmi:id="_Mb4tWpMrEeKsOLt3X9dUzg" name="Test(==).first" incoming="_Mb4tY5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tW5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tXJMrEeKsOLt3X9dUzg" value="1"/>
- </first>
- <result xmi:id="_Mb4tXZMrEeKsOLt3X9dUzg" name="Test(==).result" outgoing="_Mb4tZpMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tXpMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tX5MrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <second xmi:id="_Mb4tYJMrEeKsOLt3X9dUzg" name="Test(==).second" incoming="_Mb4tZJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tYZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tYpMrEeKsOLt3X9dUzg" value="1"/>
- </second>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_Mb4taJMrEeKsOLt3X9dUzg" name="ExpressionStatement@1e49cce" incoming="_Mb4tj5MrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4tjJMrEeKsOLt3X9dUzg" target="_Mb4tapMrEeKsOLt3X9dUzg" source="_Mb4tcpMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4tjZMrEeKsOLt3X9dUzg" target="_Mb4tbZMrEeKsOLt3X9dUzg" source="_Mb4thJMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_Mb4tjpMrEeKsOLt3X9dUzg" target="_Mb4taZMrEeKsOLt3X9dUzg" source="_Mb4tcJMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_Mb4taZMrEeKsOLt3X9dUzg" name="Call(AssertFalse)" incoming="_Mb4tjpMrEeKsOLt3X9dUzg" behavior="_9tk2UIgUEeKtquXykzQHVw">
- <argument xmi:id="_Mb4tapMrEeKsOLt3X9dUzg" name="Call(AssertFalse).argument(label)" incoming="_Mb4tjJMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4ta5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tbJMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_Mb4tbZMrEeKsOLt3X9dUzg" name="Call(AssertFalse).argument(condition)" incoming="_Mb4tjZMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tbpMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tb5MrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_Mb4tcJMrEeKsOLt3X9dUzg" name="Tuple@6526b6" outgoing="_Mb4tjpMrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4tipMrEeKsOLt3X9dUzg" target="_Mb4tgZMrEeKsOLt3X9dUzg" source="_Mb4td5MrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4ti5MrEeKsOLt3X9dUzg" target="_Mb4th5MrEeKsOLt3X9dUzg" source="_Mb4tfJMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Mb4tcZMrEeKsOLt3X9dUzg" name="Value("1 == 2")">
- <result xmi:id="_Mb4tcpMrEeKsOLt3X9dUzg" name="Value("1 == 2").result" outgoing="_Mb4tjJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tc5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tdJMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_Mb4tdZMrEeKsOLt3X9dUzg" value="1 == 2">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Mb4tdpMrEeKsOLt3X9dUzg" name="Value(1)">
- <result xmi:id="_Mb4td5MrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_Mb4tipMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4teJMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4teZMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_Mb4tepMrEeKsOLt3X9dUzg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Mb4te5MrEeKsOLt3X9dUzg" name="Value(2)">
- <result xmi:id="_Mb4tfJMrEeKsOLt3X9dUzg" name="Value(2).result" outgoing="_Mb4ti5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tfZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tfpMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_Mb4tf5MrEeKsOLt3X9dUzg" value="2">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- <node xmi:type="uml:TestIdentityAction" xmi:id="_Mb4tgJMrEeKsOLt3X9dUzg" name="Test(==)">
- <first xmi:id="_Mb4tgZMrEeKsOLt3X9dUzg" name="Test(==).first" incoming="_Mb4tipMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tgpMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tg5MrEeKsOLt3X9dUzg" value="1"/>
- </first>
- <result xmi:id="_Mb4thJMrEeKsOLt3X9dUzg" name="Test(==).result" outgoing="_Mb4tjZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4thZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4thpMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <second xmi:id="_Mb4th5MrEeKsOLt3X9dUzg" name="Test(==).second" incoming="_Mb4ti5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tiJMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tiZMrEeKsOLt3X9dUzg" value="1"/>
- </second>
- </node>
- </node>
- </node>
- </structuredNode>
- </packagedElement>
- <packagedElement xmi:type="uml:Activity" xmi:id="_oUPBMJGLEeKaY7tSssHhGw" name="TestAssertEquals" node="_V6CpwJMrEeKsOLt3X9dUzg" group="_V6CpwJMrEeKsOLt3X9dUzg">
- <ownedComment xmi:id="_xyMJoJGLEeKaY7tSssHhGw">
- <body>/* Generated textual representation of Activity AssertionLibrary::Tests::TestAssertEquals */
-
-namespace AssertionLibrary::Tests ;
-
-activity TestAssertEquals() { 
- AssertEquals("1 equals 1", 1, 1) ;
- AssertEquals("1 equals 2", 1, 2) ;
-}</body>
- </ownedComment>
- <structuredNode xmi:id="_V6CpwJMrEeKsOLt3X9dUzg" name="Body(TestAssertEquals)">
- <edge xmi:type="uml:ControlFlow" xmi:id="_V6Cp_5MrEeKsOLt3X9dUzg" target="_V6Cp4JMrEeKsOLt3X9dUzg" source="_V6CpwZMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_V6CpwZMrEeKsOLt3X9dUzg" name="ExpressionStatement@1f139ee" outgoing="_V6Cp_5MrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_V6Cp3JMrEeKsOLt3X9dUzg" target="_V6Cpw5MrEeKsOLt3X9dUzg" source="_V6CpzpMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_V6Cp3ZMrEeKsOLt3X9dUzg" target="_V6CpxpMrEeKsOLt3X9dUzg" source="_V6Cp05MrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_V6Cp3pMrEeKsOLt3X9dUzg" target="_V6CpyZMrEeKsOLt3X9dUzg" source="_V6Cp2JMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_V6Cp35MrEeKsOLt3X9dUzg" target="_V6CpwpMrEeKsOLt3X9dUzg" source="_V6CpzJMrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_V6CpwpMrEeKsOLt3X9dUzg" name="Call(AssertEquals)" incoming="_V6Cp35MrEeKsOLt3X9dUzg" behavior="_8kE3oIgUEeKtquXykzQHVw">
- <argument xmi:id="_V6Cpw5MrEeKsOLt3X9dUzg" name="Call(AssertEquals).argument(label)" incoming="_V6Cp3JMrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6CpxJMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6CpxZMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_V6CpxpMrEeKsOLt3X9dUzg" name="Call(AssertEquals).argument(value1)" incoming="_V6Cp3ZMrEeKsOLt3X9dUzg">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cpx5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6CpyJMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_V6CpyZMrEeKsOLt3X9dUzg" name="Call(AssertEquals).argument(value2)" incoming="_V6Cp3pMrEeKsOLt3X9dUzg">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6CpypMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cpy5MrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_V6CpzJMrEeKsOLt3X9dUzg" name="Tuple@1848f66" outgoing="_V6Cp35MrEeKsOLt3X9dUzg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_V6CpzZMrEeKsOLt3X9dUzg" name="Value("1 equals 1")">
- <result xmi:id="_V6CpzpMrEeKsOLt3X9dUzg" name="Value("1 equals 1").result" outgoing="_V6Cp3JMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cpz5MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp0JMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_V6Cp0ZMrEeKsOLt3X9dUzg" value="1 equals 1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_V6Cp0pMrEeKsOLt3X9dUzg" name="Value(1)">
- <result xmi:id="_V6Cp05MrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_V6Cp3ZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp1JMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp1ZMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_V6Cp1pMrEeKsOLt3X9dUzg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_V6Cp15MrEeKsOLt3X9dUzg" name="Value(1)">
- <result xmi:id="_V6Cp2JMrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_V6Cp3pMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp2ZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp2pMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_V6Cp25MrEeKsOLt3X9dUzg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_V6Cp4JMrEeKsOLt3X9dUzg" name="ExpressionStatement@b5305e" incoming="_V6Cp_5MrEeKsOLt3X9dUzg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_V6Cp-5MrEeKsOLt3X9dUzg" target="_V6Cp4pMrEeKsOLt3X9dUzg" source="_V6Cp7ZMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_V6Cp_JMrEeKsOLt3X9dUzg" target="_V6Cp5ZMrEeKsOLt3X9dUzg" source="_V6Cp8pMrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_V6Cp_ZMrEeKsOLt3X9dUzg" target="_V6Cp6JMrEeKsOLt3X9dUzg" source="_V6Cp95MrEeKsOLt3X9dUzg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_V6Cp_pMrEeKsOLt3X9dUzg" target="_V6Cp4ZMrEeKsOLt3X9dUzg" source="_V6Cp65MrEeKsOLt3X9dUzg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_V6Cp4ZMrEeKsOLt3X9dUzg" name="Call(AssertEquals)" incoming="_V6Cp_pMrEeKsOLt3X9dUzg" behavior="_8kE3oIgUEeKtquXykzQHVw">
- <argument xmi:id="_V6Cp4pMrEeKsOLt3X9dUzg" name="Call(AssertEquals).argument(label)" incoming="_V6Cp-5MrEeKsOLt3X9dUzg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp45MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp5JMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_V6Cp5ZMrEeKsOLt3X9dUzg" name="Call(AssertEquals).argument(value1)" incoming="_V6Cp_JMrEeKsOLt3X9dUzg">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp5pMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp55MrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- <argument xmi:id="_V6Cp6JMrEeKsOLt3X9dUzg" name="Call(AssertEquals).argument(value2)" incoming="_V6Cp_ZMrEeKsOLt3X9dUzg">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp6ZMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp6pMrEeKsOLt3X9dUzg" value="1"/>
- </argument>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_V6Cp65MrEeKsOLt3X9dUzg" name="Tuple@1f42c8f" outgoing="_V6Cp_pMrEeKsOLt3X9dUzg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_V6Cp7JMrEeKsOLt3X9dUzg" name="Value("1 equals 2")">
- <result xmi:id="_V6Cp7ZMrEeKsOLt3X9dUzg" name="Value("1 equals 2").result" outgoing="_V6Cp-5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp7pMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp75MrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_V6Cp8JMrEeKsOLt3X9dUzg" value="1 equals 2">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_V6Cp8ZMrEeKsOLt3X9dUzg" name="Value(1)">
- <result xmi:id="_V6Cp8pMrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_V6Cp_JMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp85MrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp9JMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_V6Cp9ZMrEeKsOLt3X9dUzg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_V6Cp9pMrEeKsOLt3X9dUzg" name="Value(2)">
- <result xmi:id="_V6Cp95MrEeKsOLt3X9dUzg" name="Value(2).result" outgoing="_V6Cp_ZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp-JMrEeKsOLt3X9dUzg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp-ZMrEeKsOLt3X9dUzg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_V6Cp-pMrEeKsOLt3X9dUzg" value="2">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- </node>
- </structuredNode>
- </packagedElement>
- <packagedElement xmi:type="uml:Activity" xmi:id="_d_z3AJMrEeKsOLt3X9dUzg" name="TestAll" node="__WCewJcDEeKVudOPtQ6VQg" group="__WCewJcDEeKVudOPtQ6VQg">
- <ownedComment xmi:id="_XZhDAJMsEeKsOLt3X9dUzg">
- <body>/* Generated textual representation of Activity AssertionLibrary::Tests::TestAll */
-
-namespace AssertionLibrary::Tests ;
-
-private import Alf::Library::BasicInputOutput::WriteLine ;
-
-activity TestAll() {
- pref = " ---- Testing Activity " ;
- suff = " ----" ;
- // Testing write
- activityName = "Write" ;
- WriteLine(pref + activityName + suff) ;
- TestWrite() ; WriteLine("") ; WriteLine("") ;
- 
- // Testing AssertTrue
- activityName = "AssertTrue" ;
- WriteLine(pref + activityName + suff) ;
- TestAssertTrue() ; WriteLine("") ;
- 
- // Testing AssertFalse
- activityName = "AssertFalse" ;
- WriteLine(pref + activityName + suff) ;
- TestAssertFalse() ; WriteLine("") ;
- 
- // Testing AssertEquals
- activityName = "AssertEquals" ;
- WriteLine(pref + activityName + suff) ;
- TestAssertEquals() ; WriteLine("") ;
- 
- // Testing AssertEquals
- activityName = "AssertList" ;
- WriteLine(pref + activityName + suff) ;
- TestAssertList() ; WriteLine("") ;
-}</body>
- </ownedComment>
- <structuredNode xmi:id="__WCewJcDEeKVudOPtQ6VQg" name="Body(TestAll)">
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgCpcDEeKVudOPtQ6VQg" target="__WCeypcDEeKVudOPtQ6VQg" source="__WCewZcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgC5cDEeKVudOPtQ6VQg" target="__WCe05cDEeKVudOPtQ6VQg" source="__WCeypcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgDJcDEeKVudOPtQ6VQg" target="__WCe5pcDEeKVudOPtQ6VQg" source="__WCewpcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgDZcDEeKVudOPtQ6VQg" target="__WCe6ZcDEeKVudOPtQ6VQg" source="__WCe1JcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgDpcDEeKVudOPtQ6VQg" target="__WCe85cDEeKVudOPtQ6VQg" source="__WCey5cDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgD5cDEeKVudOPtQ6VQg" target="__WCe3JcDEeKVudOPtQ6VQg" source="__WCe05cDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgEJcDEeKVudOPtQ6VQg" target="__WCe_JcDEeKVudOPtQ6VQg" source="__WCe3JcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgEZcDEeKVudOPtQ6VQg" target="__WCe_pcDEeKVudOPtQ6VQg" source="__WCe_JcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgEpcDEeKVudOPtQ6VQg" target="__WCfDpcDEeKVudOPtQ6VQg" source="__WCe_pcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgE5cDEeKVudOPtQ6VQg" target="__WCfHpcDEeKVudOPtQ6VQg" source="__WCfDpcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgFJcDEeKVudOPtQ6VQg" target="__WCfMZcDEeKVudOPtQ6VQg" source="__WCewpcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgFZcDEeKVudOPtQ6VQg" target="__WCfNJcDEeKVudOPtQ6VQg" source="__WCfH5cDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgFpcDEeKVudOPtQ6VQg" target="__WCfPpcDEeKVudOPtQ6VQg" source="__WCey5cDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgF5cDEeKVudOPtQ6VQg" target="__WCfJ5cDEeKVudOPtQ6VQg" source="__WCfHpcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgGJcDEeKVudOPtQ6VQg" target="__WCfR5cDEeKVudOPtQ6VQg" source="__WCfJ5cDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgGZcDEeKVudOPtQ6VQg" target="__WCfSZcDEeKVudOPtQ6VQg" source="__WCfR5cDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgGpcDEeKVudOPtQ6VQg" target="__WCfWZcDEeKVudOPtQ6VQg" source="__WCfSZcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgG5cDEeKVudOPtQ6VQg" target="__WCfbJcDEeKVudOPtQ6VQg" source="__WCewpcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgHJcDEeKVudOPtQ6VQg" target="__WCfb5cDEeKVudOPtQ6VQg" source="__WCfWpcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgHZcDEeKVudOPtQ6VQg" target="__WCfeZcDEeKVudOPtQ6VQg" source="__WCey5cDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgHpcDEeKVudOPtQ6VQg" target="__WCfYpcDEeKVudOPtQ6VQg" source="__WCfWZcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgH5cDEeKVudOPtQ6VQg" target="__WCfgpcDEeKVudOPtQ6VQg" source="__WCfYpcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgIJcDEeKVudOPtQ6VQg" target="__WCfhJcDEeKVudOPtQ6VQg" source="__WCfgpcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgIZcDEeKVudOPtQ6VQg" target="__WCflJcDEeKVudOPtQ6VQg" source="__WCfhJcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgIpcDEeKVudOPtQ6VQg" target="__WCfp5cDEeKVudOPtQ6VQg" source="__WCewpcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgI5cDEeKVudOPtQ6VQg" target="__WCfqpcDEeKVudOPtQ6VQg" source="__WCflZcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgJJcDEeKVudOPtQ6VQg" target="__WCftJcDEeKVudOPtQ6VQg" source="__WCey5cDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgJZcDEeKVudOPtQ6VQg" target="__WCfnZcDEeKVudOPtQ6VQg" source="__WCflJcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgJpcDEeKVudOPtQ6VQg" target="__WCfvZcDEeKVudOPtQ6VQg" source="__WCfnZcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgJ5cDEeKVudOPtQ6VQg" target="__WCfv5cDEeKVudOPtQ6VQg" source="__WCfvZcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgKJcDEeKVudOPtQ6VQg" target="__WCfz5cDEeKVudOPtQ6VQg" source="__WCfv5cDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgKZcDEeKVudOPtQ6VQg" target="__WCf4pcDEeKVudOPtQ6VQg" source="__WCewpcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgKpcDEeKVudOPtQ6VQg" target="__WCf5ZcDEeKVudOPtQ6VQg" source="__WCf0JcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgK5cDEeKVudOPtQ6VQg" target="__WCf75cDEeKVudOPtQ6VQg" source="__WCey5cDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgLJcDEeKVudOPtQ6VQg" target="__WCf2JcDEeKVudOPtQ6VQg" source="__WCfz5cDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgLZcDEeKVudOPtQ6VQg" target="__WCf-JcDEeKVudOPtQ6VQg" source="__WCf2JcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgLpcDEeKVudOPtQ6VQg" target="__WCf-pcDEeKVudOPtQ6VQg" source="__WCf-JcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCewZcDEeKVudOPtQ6VQg" name="ExpressionStatement@3af05a" outgoing="__WCgCpcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCeyZcDEeKVudOPtQ6VQg" target="__WCewpcDEeKVudOPtQ6VQg" source="__WCexZcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="__WCewpcDEeKVudOPtQ6VQg" name="Fork(pref)@117ca48" incoming="__WCeyZcDEeKVudOPtQ6VQg" outgoing="__WCgDJcDEeKVudOPtQ6VQg __WCgFJcDEeKVudOPtQ6VQg __WCgG5cDEeKVudOPtQ6VQg __WCgIpcDEeKVudOPtQ6VQg __WCgKZcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCew5cDEeKVudOPtQ6VQg" name="RightHandSide@e1520b">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCexJcDEeKVudOPtQ6VQg" name="Value(" ---- Testing Activity ")">
- <result xmi:id="__WCexZcDEeKVudOPtQ6VQg" name="Value(" ---- Testing Activity ").result" outgoing="__WCeyZcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCexpcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCex5cDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="__WCeyJcDEeKVudOPtQ6VQg" value=" ---- Testing Activity ">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCeypcDEeKVudOPtQ6VQg" name="ExpressionStatement@186bfda" incoming="__WCgCpcDEeKVudOPtQ6VQg" outgoing="__WCgC5cDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCe0pcDEeKVudOPtQ6VQg" target="__WCey5cDEeKVudOPtQ6VQg" source="__WCezpcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="__WCey5cDEeKVudOPtQ6VQg" name="Fork(suff)@2d3743" incoming="__WCe0pcDEeKVudOPtQ6VQg" outgoing="__WCgDpcDEeKVudOPtQ6VQg __WCgFpcDEeKVudOPtQ6VQg __WCgHZcDEeKVudOPtQ6VQg __WCgJJcDEeKVudOPtQ6VQg __WCgK5cDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCezJcDEeKVudOPtQ6VQg" name="RightHandSide@87309f">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCezZcDEeKVudOPtQ6VQg" name="Value(" ----")">
- <result xmi:id="__WCezpcDEeKVudOPtQ6VQg" name="Value(" ----").result" outgoing="__WCe0pcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCez5cDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe0JcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="__WCe0ZcDEeKVudOPtQ6VQg" value=" ----">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCe05cDEeKVudOPtQ6VQg" name="ExpressionStatement@18e3e" incoming="__WCgC5cDEeKVudOPtQ6VQg" outgoing="__WCgD5cDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCe25cDEeKVudOPtQ6VQg" target="__WCe1JcDEeKVudOPtQ6VQg" source="__WCe15cDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="__WCe1JcDEeKVudOPtQ6VQg" name="Fork(activityName)@1073b37" incoming="__WCe25cDEeKVudOPtQ6VQg" outgoing="__WCgDZcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCe1ZcDEeKVudOPtQ6VQg" name="RightHandSide@1c0a7cb">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCe1pcDEeKVudOPtQ6VQg" name="Value("Write")">
- <result xmi:id="__WCe15cDEeKVudOPtQ6VQg" name="Value("Write").result" outgoing="__WCe25cDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe2JcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe2ZcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="__WCe2pcDEeKVudOPtQ6VQg" value="Write">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCe3JcDEeKVudOPtQ6VQg" name="ExpressionStatement@28574b" incoming="__WCgD5cDEeKVudOPtQ6VQg" outgoing="__WCgEJcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCe-pcDEeKVudOPtQ6VQg" target="__WCe3pcDEeKVudOPtQ6VQg" source="__WCe9pcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCe-5cDEeKVudOPtQ6VQg" target="__WCe3ZcDEeKVudOPtQ6VQg" source="__WCe5JcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCe3ZcDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCe-5cDEeKVudOPtQ6VQg">
- <argument xmi:id="__WCe3pcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCe-pcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe35cDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe4JcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCe4ZcDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe4pcDEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe45cDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCe5JcDEeKVudOPtQ6VQg" name="Tuple@45c36f" outgoing="__WCe-5cDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCe-ZcDEeKVudOPtQ6VQg" target="__WCe8JcDEeKVudOPtQ6VQg" source="__WCe7JcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCe5ZcDEeKVudOPtQ6VQg" name="Call(Concat)">
- <argument xmi:id="__WCe5pcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCgDJcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe55cDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe6JcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="__WCe6ZcDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgDZcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe6pcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe65cDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCe7JcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCe-ZcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe7ZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe7pcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCe75cDEeKVudOPtQ6VQg" name="Call(Concat)">
- <argument xmi:id="__WCe8JcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCe-ZcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe8ZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe8pcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="__WCe85cDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgDpcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe9JcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe9ZcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCe9pcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCe-pcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe95cDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe-JcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCe_JcDEeKVudOPtQ6VQg" name="ExpressionStatement@14528d" incoming="__WCgEJcDEeKVudOPtQ6VQg" outgoing="__WCgEZcDEeKVudOPtQ6VQg">
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCe_ZcDEeKVudOPtQ6VQg" name="Call(TestWrite)" behavior="_4BlgUJGKEeKaY7tSssHhGw"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCe_pcDEeKVudOPtQ6VQg" name="ExpressionStatement@1a88ae2" incoming="__WCgEZcDEeKVudOPtQ6VQg" outgoing="__WCgEpcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfDJcDEeKVudOPtQ6VQg" target="__WCfAJcDEeKVudOPtQ6VQg" source="__WCfCJcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCfDZcDEeKVudOPtQ6VQg" target="__WCe_5cDEeKVudOPtQ6VQg" source="__WCfBpcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCe_5cDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfDZcDEeKVudOPtQ6VQg">
- <argument xmi:id="__WCfAJcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfDJcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfAZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfApcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCfA5cDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfBJcDEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfBZcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfBpcDEeKVudOPtQ6VQg" name="Tuple@122c298" outgoing="__WCfDZcDEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfB5cDEeKVudOPtQ6VQg" name="Value("")">
- <result xmi:id="__WCfCJcDEeKVudOPtQ6VQg" name="Value("").result" outgoing="__WCfDJcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfCZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfCpcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="__WCfC5cDEeKVudOPtQ6VQg" value="">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfDpcDEeKVudOPtQ6VQg" name="ExpressionStatement@1f1d74c" incoming="__WCgEpcDEeKVudOPtQ6VQg" outgoing="__WCgE5cDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfHJcDEeKVudOPtQ6VQg" target="__WCfEJcDEeKVudOPtQ6VQg" source="__WCfGJcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCfHZcDEeKVudOPtQ6VQg" target="__WCfD5cDEeKVudOPtQ6VQg" source="__WCfFpcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfD5cDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfHZcDEeKVudOPtQ6VQg">
- <argument xmi:id="__WCfEJcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfHJcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfEZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfEpcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCfE5cDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfFJcDEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfFZcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfFpcDEeKVudOPtQ6VQg" name="Tuple@1061fa3" outgoing="__WCfHZcDEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfF5cDEeKVudOPtQ6VQg" name="Value("")">
- <result xmi:id="__WCfGJcDEeKVudOPtQ6VQg" name="Value("").result" outgoing="__WCfHJcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfGZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfGpcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="__WCfG5cDEeKVudOPtQ6VQg" value="">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfHpcDEeKVudOPtQ6VQg" name="ExpressionStatement@68fc34" incoming="__WCgE5cDEeKVudOPtQ6VQg" outgoing="__WCgF5cDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfJpcDEeKVudOPtQ6VQg" target="__WCfH5cDEeKVudOPtQ6VQg" source="__WCfIpcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="__WCfH5cDEeKVudOPtQ6VQg" name="Fork(activityName)@f781c4" incoming="__WCfJpcDEeKVudOPtQ6VQg" outgoing="__WCgFZcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfIJcDEeKVudOPtQ6VQg" name="RightHandSide@1689fac">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfIZcDEeKVudOPtQ6VQg" name="Value("AssertTrue")">
- <result xmi:id="__WCfIpcDEeKVudOPtQ6VQg" name="Value("AssertTrue").result" outgoing="__WCfJpcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfI5cDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfJJcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="__WCfJZcDEeKVudOPtQ6VQg" value="AssertTrue">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfJ5cDEeKVudOPtQ6VQg" name="ExpressionStatement@101f11b" incoming="__WCgF5cDEeKVudOPtQ6VQg" outgoing="__WCgGJcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfRZcDEeKVudOPtQ6VQg" target="__WCfKZcDEeKVudOPtQ6VQg" source="__WCfQZcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCfRpcDEeKVudOPtQ6VQg" target="__WCfKJcDEeKVudOPtQ6VQg" source="__WCfL5cDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfKJcDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfRpcDEeKVudOPtQ6VQg">
- <argument xmi:id="__WCfKZcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfRZcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfKpcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfK5cDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCfLJcDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfLZcDEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfLpcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfL5cDEeKVudOPtQ6VQg" name="Tuple@12cb9d7" outgoing="__WCfRpcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfRJcDEeKVudOPtQ6VQg" target="__WCfO5cDEeKVudOPtQ6VQg" source="__WCfN5cDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfMJcDEeKVudOPtQ6VQg" name="Call(Concat)">
- <argument xmi:id="__WCfMZcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCgFJcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfMpcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfM5cDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="__WCfNJcDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgFZcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfNZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfNpcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCfN5cDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCfRJcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfOJcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfOZcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfOpcDEeKVudOPtQ6VQg" name="Call(Concat)">
- <argument xmi:id="__WCfO5cDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCfRJcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfPJcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfPZcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="__WCfPpcDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgFpcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfP5cDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfQJcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCfQZcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCfRZcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfQpcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfQ5cDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfR5cDEeKVudOPtQ6VQg" name="ExpressionStatement@1817341" incoming="__WCgGJcDEeKVudOPtQ6VQg" outgoing="__WCgGZcDEeKVudOPtQ6VQg">
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfSJcDEeKVudOPtQ6VQg" name="Call(TestAssertTrue)" behavior="_Grnr0JGLEeKaY7tSssHhGw"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfSZcDEeKVudOPtQ6VQg" name="ExpressionStatement@7f4997" incoming="__WCgGZcDEeKVudOPtQ6VQg" outgoing="__WCgGpcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfV5cDEeKVudOPtQ6VQg" target="__WCfS5cDEeKVudOPtQ6VQg" source="__WCfU5cDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCfWJcDEeKVudOPtQ6VQg" target="__WCfSpcDEeKVudOPtQ6VQg" source="__WCfUZcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfSpcDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfWJcDEeKVudOPtQ6VQg">
- <argument xmi:id="__WCfS5cDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfV5cDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfTJcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfTZcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCfTpcDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfT5cDEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfUJcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfUZcDEeKVudOPtQ6VQg" name="Tuple@411cbe" outgoing="__WCfWJcDEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfUpcDEeKVudOPtQ6VQg" name="Value("")">
- <result xmi:id="__WCfU5cDEeKVudOPtQ6VQg" name="Value("").result" outgoing="__WCfV5cDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfVJcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfVZcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="__WCfVpcDEeKVudOPtQ6VQg" value="">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfWZcDEeKVudOPtQ6VQg" name="ExpressionStatement@16dd42f" incoming="__WCgGpcDEeKVudOPtQ6VQg" outgoing="__WCgHpcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfYZcDEeKVudOPtQ6VQg" target="__WCfWpcDEeKVudOPtQ6VQg" source="__WCfXZcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="__WCfWpcDEeKVudOPtQ6VQg" name="Fork(activityName)@1edcb39" incoming="__WCfYZcDEeKVudOPtQ6VQg" outgoing="__WCgHJcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfW5cDEeKVudOPtQ6VQg" name="RightHandSide@b91253">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfXJcDEeKVudOPtQ6VQg" name="Value("AssertFalse")">
- <result xmi:id="__WCfXZcDEeKVudOPtQ6VQg" name="Value("AssertFalse").result" outgoing="__WCfYZcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfXpcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfX5cDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="__WCfYJcDEeKVudOPtQ6VQg" value="AssertFalse">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfYpcDEeKVudOPtQ6VQg" name="ExpressionStatement@13811f0" incoming="__WCgHpcDEeKVudOPtQ6VQg" outgoing="__WCgH5cDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfgJcDEeKVudOPtQ6VQg" target="__WCfZJcDEeKVudOPtQ6VQg" source="__WCffJcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCfgZcDEeKVudOPtQ6VQg" target="__WCfY5cDEeKVudOPtQ6VQg" source="__WCfapcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfY5cDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfgZcDEeKVudOPtQ6VQg">
- <argument xmi:id="__WCfZJcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfgJcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfZZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfZpcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCfZ5cDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfaJcDEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfaZcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfapcDEeKVudOPtQ6VQg" name="Tuple@190c503" outgoing="__WCfgZcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCff5cDEeKVudOPtQ6VQg" target="__WCfdpcDEeKVudOPtQ6VQg" source="__WCfcpcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfa5cDEeKVudOPtQ6VQg" name="Call(Concat)">
- <argument xmi:id="__WCfbJcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCgG5cDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfbZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfbpcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="__WCfb5cDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgHJcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfcJcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfcZcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCfcpcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCff5cDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfc5cDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfdJcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfdZcDEeKVudOPtQ6VQg" name="Call(Concat)">
- <argument xmi:id="__WCfdpcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCff5cDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfd5cDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfeJcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="__WCfeZcDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgHZcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfepcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfe5cDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCffJcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCfgJcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCffZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCffpcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfgpcDEeKVudOPtQ6VQg" name="ExpressionStatement@1fc7a0e" incoming="__WCgH5cDEeKVudOPtQ6VQg" outgoing="__WCgIJcDEeKVudOPtQ6VQg">
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfg5cDEeKVudOPtQ6VQg" name="Call(TestAssertFalse)" behavior="_XSUYUJGLEeKaY7tSssHhGw"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfhJcDEeKVudOPtQ6VQg" name="ExpressionStatement@d2da4c" incoming="__WCgIJcDEeKVudOPtQ6VQg" outgoing="__WCgIZcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfkpcDEeKVudOPtQ6VQg" target="__WCfhpcDEeKVudOPtQ6VQg" source="__WCfjpcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCfk5cDEeKVudOPtQ6VQg" target="__WCfhZcDEeKVudOPtQ6VQg" source="__WCfjJcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfhZcDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfk5cDEeKVudOPtQ6VQg">
- <argument xmi:id="__WCfhpcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfkpcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfh5cDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfiJcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCfiZcDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfipcDEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfi5cDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfjJcDEeKVudOPtQ6VQg" name="Tuple@15a71cb" outgoing="__WCfk5cDEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfjZcDEeKVudOPtQ6VQg" name="Value("")">
- <result xmi:id="__WCfjpcDEeKVudOPtQ6VQg" name="Value("").result" outgoing="__WCfkpcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfj5cDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfkJcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="__WCfkZcDEeKVudOPtQ6VQg" value="">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCflJcDEeKVudOPtQ6VQg" name="ExpressionStatement@5271de" incoming="__WCgIZcDEeKVudOPtQ6VQg" outgoing="__WCgJZcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfnJcDEeKVudOPtQ6VQg" target="__WCflZcDEeKVudOPtQ6VQg" source="__WCfmJcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="__WCflZcDEeKVudOPtQ6VQg" name="Fork(activityName)@bed88b" incoming="__WCfnJcDEeKVudOPtQ6VQg" outgoing="__WCgI5cDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCflpcDEeKVudOPtQ6VQg" name="RightHandSide@17aa9c1">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfl5cDEeKVudOPtQ6VQg" name="Value("AssertEquals")">
- <result xmi:id="__WCfmJcDEeKVudOPtQ6VQg" name="Value("AssertEquals").result" outgoing="__WCfnJcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfmZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfmpcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="__WCfm5cDEeKVudOPtQ6VQg" value="AssertEquals">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfnZcDEeKVudOPtQ6VQg" name="ExpressionStatement@be387b" incoming="__WCgJZcDEeKVudOPtQ6VQg" outgoing="__WCgJpcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfu5cDEeKVudOPtQ6VQg" target="__WCfn5cDEeKVudOPtQ6VQg" source="__WCft5cDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCfvJcDEeKVudOPtQ6VQg" target="__WCfnpcDEeKVudOPtQ6VQg" source="__WCfpZcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfnpcDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfvJcDEeKVudOPtQ6VQg">
- <argument xmi:id="__WCfn5cDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfu5cDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfoJcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfoZcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCfopcDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfo5cDEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfpJcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfpZcDEeKVudOPtQ6VQg" name="Tuple@b2b8a4" outgoing="__WCfvJcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfupcDEeKVudOPtQ6VQg" target="__WCfsZcDEeKVudOPtQ6VQg" source="__WCfrZcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfppcDEeKVudOPtQ6VQg" name="Call(Concat)">
- <argument xmi:id="__WCfp5cDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCgIpcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfqJcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfqZcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="__WCfqpcDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgI5cDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfq5cDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfrJcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCfrZcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCfupcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfrpcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfr5cDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfsJcDEeKVudOPtQ6VQg" name="Call(Concat)">
- <argument xmi:id="__WCfsZcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCfupcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfspcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfs5cDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="__WCftJcDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgJJcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCftZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCftpcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCft5cDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCfu5cDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfuJcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfuZcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfvZcDEeKVudOPtQ6VQg" name="ExpressionStatement@624779" incoming="__WCgJpcDEeKVudOPtQ6VQg" outgoing="__WCgJ5cDEeKVudOPtQ6VQg">
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfvpcDEeKVudOPtQ6VQg" name="Call(TestAssertEquals)" behavior="_oUPBMJGLEeKaY7tSssHhGw"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfv5cDEeKVudOPtQ6VQg" name="ExpressionStatement@e939d4" incoming="__WCgJ5cDEeKVudOPtQ6VQg" outgoing="__WCgKJcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfzZcDEeKVudOPtQ6VQg" target="__WCfwZcDEeKVudOPtQ6VQg" source="__WCfyZcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCfzpcDEeKVudOPtQ6VQg" target="__WCfwJcDEeKVudOPtQ6VQg" source="__WCfx5cDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfwJcDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfzpcDEeKVudOPtQ6VQg">
- <argument xmi:id="__WCfwZcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfzZcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfwpcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfw5cDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCfxJcDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfxZcDEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfxpcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfx5cDEeKVudOPtQ6VQg" name="Tuple@19fe454" outgoing="__WCfzpcDEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfyJcDEeKVudOPtQ6VQg" name="Value("")">
- <result xmi:id="__WCfyZcDEeKVudOPtQ6VQg" name="Value("").result" outgoing="__WCfzZcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfypcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfy5cDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="__WCfzJcDEeKVudOPtQ6VQg" value="">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfz5cDEeKVudOPtQ6VQg" name="ExpressionStatement@7e2772" incoming="__WCgKJcDEeKVudOPtQ6VQg" outgoing="__WCgLJcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCf15cDEeKVudOPtQ6VQg" target="__WCf0JcDEeKVudOPtQ6VQg" source="__WCf05cDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="__WCf0JcDEeKVudOPtQ6VQg" name="Fork(activityName)@c8d2ed" incoming="__WCf15cDEeKVudOPtQ6VQg" outgoing="__WCgKpcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCf0ZcDEeKVudOPtQ6VQg" name="RightHandSide@8fdfa7">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCf0pcDEeKVudOPtQ6VQg" name="Value("AssertList")">
- <result xmi:id="__WCf05cDEeKVudOPtQ6VQg" name="Value("AssertList").result" outgoing="__WCf15cDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf1JcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf1ZcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="__WCf1pcDEeKVudOPtQ6VQg" value="AssertList">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCf2JcDEeKVudOPtQ6VQg" name="ExpressionStatement@12f4183" incoming="__WCgLJcDEeKVudOPtQ6VQg" outgoing="__WCgLZcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCf9pcDEeKVudOPtQ6VQg" target="__WCf2pcDEeKVudOPtQ6VQg" source="__WCf8pcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCf95cDEeKVudOPtQ6VQg" target="__WCf2ZcDEeKVudOPtQ6VQg" source="__WCf4JcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCf2ZcDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCf95cDEeKVudOPtQ6VQg">
- <argument xmi:id="__WCf2pcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCf9pcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf25cDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf3JcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCf3ZcDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf3pcDEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf35cDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCf4JcDEeKVudOPtQ6VQg" name="Tuple@1c68f60" outgoing="__WCf95cDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCf9ZcDEeKVudOPtQ6VQg" target="__WCf7JcDEeKVudOPtQ6VQg" source="__WCf6JcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCf4ZcDEeKVudOPtQ6VQg" name="Call(Concat)">
- <argument xmi:id="__WCf4pcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCgKZcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf45cDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf5JcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="__WCf5ZcDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgKpcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf5pcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf55cDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCf6JcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCf9ZcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf6ZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf6pcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCf65cDEeKVudOPtQ6VQg" name="Call(Concat)">
- <argument xmi:id="__WCf7JcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCf9ZcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf7ZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf7pcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="__WCf75cDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgK5cDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf8JcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf8ZcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCf8pcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCf9pcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf85cDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf9JcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCf-JcDEeKVudOPtQ6VQg" name="ExpressionStatement@18533db" incoming="__WCgLZcDEeKVudOPtQ6VQg" outgoing="__WCgLpcDEeKVudOPtQ6VQg">
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCf-ZcDEeKVudOPtQ6VQg" name="Call(TestAssertList)" behavior="_qCxx8JcCEeKVudOPtQ6VQg"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCf-pcDEeKVudOPtQ6VQg" name="ExpressionStatement@ad9377" incoming="__WCgLpcDEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgCJcDEeKVudOPtQ6VQg" target="__WCf_JcDEeKVudOPtQ6VQg" source="__WCgBJcDEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="__WCgCZcDEeKVudOPtQ6VQg" target="__WCf-5cDEeKVudOPtQ6VQg" source="__WCgApcDEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCf-5cDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCgCZcDEeKVudOPtQ6VQg">
- <argument xmi:id="__WCf_JcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCgCJcDEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf_ZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf_pcDEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <result xmi:id="__WCf_5cDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCgAJcDEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCgAZcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCgApcDEeKVudOPtQ6VQg" name="Tuple@18d4181" outgoing="__WCgCZcDEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCgA5cDEeKVudOPtQ6VQg" name="Value("")">
- <result xmi:id="__WCgBJcDEeKVudOPtQ6VQg" name="Value("").result" outgoing="__WCgCJcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCgBZcDEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCgBpcDEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="__WCgB5cDEeKVudOPtQ6VQg" value="">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- </structuredNode>
- </packagedElement>
- <packagedElement xmi:type="uml:Activity" xmi:id="_qCxx8JcCEeKVudOPtQ6VQg" name="TestAssertList" node="_bCWNwJcEEeKVudOPtQ6VQg" group="_bCWNwJcEEeKVudOPtQ6VQg">
- <ownedComment xmi:id="_dnoDzJcDEeKVudOPtQ6VQg">
- <body>/* Generated textual representation of Activity AssertionLibrary::Tests::TestAssertList */
-
-namespace AssertionLibrary::Tests ;
-
-activity TestAssertList() { 
- Integer[] list1 = {1, 2, 3, 4} ;
- Integer[] list2 = {1, 2, 3, 4} ;
- AssertList("{1, 2, 3, 4} vs. {1, 2, 3, 4} ", list1, list2) ;
- 
- Integer[] list3 = {1, 2, 7, 4, 8} ;
- AssertList("{1, 2, 3, 4} vs. {1, 2, 7, 4, 8} ", list1, list3) ;
-}</body>
- </ownedComment>
- <structuredNode xmi:id="_bCWNwJcEEeKVudOPtQ6VQg" name="Body(TestAssertList)">
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOcJcEEeKVudOPtQ6VQg" target="_bCWN7pcEEeKVudOPtQ6VQg" source="_bCWNwZcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOcZcEEeKVudOPtQ6VQg" target="_bCWOHZcEEeKVudOPtQ6VQg" source="_bCWNxJcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOcpcEEeKVudOPtQ6VQg" target="_bCWOIJcEEeKVudOPtQ6VQg" source="_bCWN8ZcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOc5cEEeKVudOPtQ6VQg" target="_bCWOGJcEEeKVudOPtQ6VQg" source="_bCWN7pcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOdJcEEeKVudOPtQ6VQg" target="_bCWOK5cEEeKVudOPtQ6VQg" source="_bCWOGJcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOdZcEEeKVudOPtQ6VQg" target="_bCWOYpcEEeKVudOPtQ6VQg" source="_bCWNxpcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOdpcEEeKVudOPtQ6VQg" target="_bCWOZZcEEeKVudOPtQ6VQg" source="_bCWOLpcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOd5cEEeKVudOPtQ6VQg" target="_bCWOXZcEEeKVudOPtQ6VQg" source="_bCWOK5cEEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWNwZcEEeKVudOPtQ6VQg" name="LocalNameDeclarationStatement@1400aa1" outgoing="_bCWOcJcEEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWN65cEEeKVudOPtQ6VQg" target="_bCWNwpcEEeKVudOPtQ6VQg" source="_bCWN4ZcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWN7JcEEeKVudOPtQ6VQg" target="_bCWNxJcEEeKVudOPtQ6VQg" source="_bCWN4ZcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWN7ZcEEeKVudOPtQ6VQg" target="_bCWNxpcEEeKVudOPtQ6VQg" source="_bCWN4ZcEEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="_bCWNwpcEEeKVudOPtQ6VQg" name="Fork(list1)@1202d4" incoming="_bCWN65cEEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWNw5cEEeKVudOPtQ6VQg" name="RightHandSide@17a0709"/>
- <node xmi:type="uml:ForkNode" xmi:id="_bCWNxJcEEeKVudOPtQ6VQg" name="Fork(list1)@5bbfa4" incoming="_bCWN7JcEEeKVudOPtQ6VQg" outgoing="_bCWOcZcEEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWNxZcEEeKVudOPtQ6VQg" name="RightHandSide@17a0709"/>
- <node xmi:type="uml:ForkNode" xmi:id="_bCWNxpcEEeKVudOPtQ6VQg" name="Fork(list1)@17bc2dd" incoming="_bCWN7ZcEEeKVudOPtQ6VQg" outgoing="_bCWOdZcEEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWNx5cEEeKVudOPtQ6VQg" name="RightHandSide@17a0709">
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWNyJcEEeKVudOPtQ6VQg" name="SequenceConstructionExpression@17a0709">
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWN5JcEEeKVudOPtQ6VQg" target="_bCWNz5cEEeKVudOPtQ6VQg" source="_bCWNyZcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWN5ZcEEeKVudOPtQ6VQg" target="_bCWN1ZcEEeKVudOPtQ6VQg" source="_bCWNz5cEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWN5pcEEeKVudOPtQ6VQg" target="_bCWN25cEEeKVudOPtQ6VQg" source="_bCWN1ZcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWN55cEEeKVudOPtQ6VQg" target="_bCWN4ZcEEeKVudOPtQ6VQg" source="_bCWNy5cEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWN6JcEEeKVudOPtQ6VQg" target="_bCWN4ZcEEeKVudOPtQ6VQg" source="_bCWN0ZcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWN6ZcEEeKVudOPtQ6VQg" target="_bCWN4ZcEEeKVudOPtQ6VQg" source="_bCWN15cEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWN6pcEEeKVudOPtQ6VQg" target="_bCWN4ZcEEeKVudOPtQ6VQg" source="_bCWN3ZcEEeKVudOPtQ6VQg"/>
- <structuredNodeOutput xmi:id="_bCWN4ZcEEeKVudOPtQ6VQg" name="SequenceConstructionExpression@17a0709.output" incoming="_bCWN55cEEeKVudOPtQ6VQg _bCWN6JcEEeKVudOPtQ6VQg _bCWN6ZcEEeKVudOPtQ6VQg _bCWN6pcEEeKVudOPtQ6VQg" outgoing="_bCWN65cEEeKVudOPtQ6VQg _bCWN7JcEEeKVudOPtQ6VQg _bCWN7ZcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWN4pcEEeKVudOPtQ6VQg" value="4"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWN45cEEeKVudOPtQ6VQg" value="4"/>
- </structuredNodeOutput>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWNyZcEEeKVudOPtQ6VQg" name="SequenceExpressionList@57286c#1" outgoing="_bCWN5JcEEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWNypcEEeKVudOPtQ6VQg" name="Value(1)">
- <result xmi:id="_bCWNy5cEEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_bCWN55cEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWNzJcEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWNzZcEEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_bCWNzpcEEeKVudOPtQ6VQg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWNz5cEEeKVudOPtQ6VQg" name="SequenceExpressionList@57286c#2" incoming="_bCWN5JcEEeKVudOPtQ6VQg" outgoing="_bCWN5ZcEEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWN0JcEEeKVudOPtQ6VQg" name="Value(2)">
- <result xmi:id="_bCWN0ZcEEeKVudOPtQ6VQg" name="Value(2).result" outgoing="_bCWN6JcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWN0pcEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWN05cEEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_bCWN1JcEEeKVudOPtQ6VQg" value="2">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN1ZcEEeKVudOPtQ6VQg" name="SequenceExpressionList@57286c#3" incoming="_bCWN5ZcEEeKVudOPtQ6VQg" outgoing="_bCWN5pcEEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWN1pcEEeKVudOPtQ6VQg" name="Value(3)">
- <result xmi:id="_bCWN15cEEeKVudOPtQ6VQg" name="Value(3).result" outgoing="_bCWN6ZcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWN2JcEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWN2ZcEEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_bCWN2pcEEeKVudOPtQ6VQg" value="3">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN25cEEeKVudOPtQ6VQg" name="SequenceExpressionList@57286c#4" incoming="_bCWN5pcEEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWN3JcEEeKVudOPtQ6VQg" name="Value(4)">
- <result xmi:id="_bCWN3ZcEEeKVudOPtQ6VQg" name="Value(4).result" outgoing="_bCWN6pcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWN3pcEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWN35cEEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_bCWN4JcEEeKVudOPtQ6VQg" value="4">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN7pcEEeKVudOPtQ6VQg" name="LocalNameDeclarationStatement@1da4433" incoming="_bCWOcJcEEeKVudOPtQ6VQg" outgoing="_bCWOc5cEEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOFpcEEeKVudOPtQ6VQg" target="_bCWN75cEEeKVudOPtQ6VQg" source="_bCWODJcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOF5cEEeKVudOPtQ6VQg" target="_bCWN8ZcEEeKVudOPtQ6VQg" source="_bCWODJcEEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="_bCWN75cEEeKVudOPtQ6VQg" name="Fork(list2)@1db09c1" incoming="_bCWOFpcEEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN8JcEEeKVudOPtQ6VQg" name="RightHandSide@b3744c"/>
- <node xmi:type="uml:ForkNode" xmi:id="_bCWN8ZcEEeKVudOPtQ6VQg" name="Fork(list2)@2d0c5b" incoming="_bCWOF5cEEeKVudOPtQ6VQg" outgoing="_bCWOcpcEEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN8pcEEeKVudOPtQ6VQg" name="RightHandSide@b3744c">
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN85cEEeKVudOPtQ6VQg" name="SequenceConstructionExpression@b3744c">
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOD5cEEeKVudOPtQ6VQg" target="_bCWN-pcEEeKVudOPtQ6VQg" source="_bCWN9JcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOEJcEEeKVudOPtQ6VQg" target="_bCWOAJcEEeKVudOPtQ6VQg" source="_bCWN-pcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOEZcEEeKVudOPtQ6VQg" target="_bCWOBpcEEeKVudOPtQ6VQg" source="_bCWOAJcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOEpcEEeKVudOPtQ6VQg" target="_bCWODJcEEeKVudOPtQ6VQg" source="_bCWN9pcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOE5cEEeKVudOPtQ6VQg" target="_bCWODJcEEeKVudOPtQ6VQg" source="_bCWN_JcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOFJcEEeKVudOPtQ6VQg" target="_bCWODJcEEeKVudOPtQ6VQg" source="_bCWOApcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOFZcEEeKVudOPtQ6VQg" target="_bCWODJcEEeKVudOPtQ6VQg" source="_bCWOCJcEEeKVudOPtQ6VQg"/>
- <structuredNodeOutput xmi:id="_bCWODJcEEeKVudOPtQ6VQg" name="SequenceConstructionExpression@b3744c.output" incoming="_bCWOEpcEEeKVudOPtQ6VQg _bCWOE5cEEeKVudOPtQ6VQg _bCWOFJcEEeKVudOPtQ6VQg _bCWOFZcEEeKVudOPtQ6VQg" outgoing="_bCWOFpcEEeKVudOPtQ6VQg _bCWOF5cEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWODZcEEeKVudOPtQ6VQg" value="4"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWODpcEEeKVudOPtQ6VQg" value="4"/>
- </structuredNodeOutput>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN9JcEEeKVudOPtQ6VQg" name="SequenceExpressionList@182e06a#1" outgoing="_bCWOD5cEEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWN9ZcEEeKVudOPtQ6VQg" name="Value(1)">
- <result xmi:id="_bCWN9pcEEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_bCWOEpcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWN95cEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWN-JcEEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_bCWN-ZcEEeKVudOPtQ6VQg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN-pcEEeKVudOPtQ6VQg" name="SequenceExpressionList@182e06a#2" incoming="_bCWOD5cEEeKVudOPtQ6VQg" outgoing="_bCWOEJcEEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWN-5cEEeKVudOPtQ6VQg" name="Value(2)">
- <result xmi:id="_bCWN_JcEEeKVudOPtQ6VQg" name="Value(2).result" outgoing="_bCWOE5cEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWN_ZcEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWN_pcEEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_bCWN_5cEEeKVudOPtQ6VQg" value="2">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOAJcEEeKVudOPtQ6VQg" name="SequenceExpressionList@182e06a#3" incoming="_bCWOEJcEEeKVudOPtQ6VQg" outgoing="_bCWOEZcEEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOAZcEEeKVudOPtQ6VQg" name="Value(3)">
- <result xmi:id="_bCWOApcEEeKVudOPtQ6VQg" name="Value(3).result" outgoing="_bCWOFJcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOA5cEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOBJcEEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_bCWOBZcEEeKVudOPtQ6VQg" value="3">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOBpcEEeKVudOPtQ6VQg" name="SequenceExpressionList@182e06a#4" incoming="_bCWOEZcEEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOB5cEEeKVudOPtQ6VQg" name="Value(4)">
- <result xmi:id="_bCWOCJcEEeKVudOPtQ6VQg" name="Value(4).result" outgoing="_bCWOFZcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOCZcEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOCpcEEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_bCWOC5cEEeKVudOPtQ6VQg" value="4">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOGJcEEeKVudOPtQ6VQg" name="ExpressionStatement@16d310e" incoming="_bCWOc5cEEeKVudOPtQ6VQg" outgoing="_bCWOdJcEEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOKZcEEeKVudOPtQ6VQg" target="_bCWOGpcEEeKVudOPtQ6VQg" source="_bCWOJZcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOKpcEEeKVudOPtQ6VQg" target="_bCWOGZcEEeKVudOPtQ6VQg" source="_bCWOI5cEEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_bCWOGZcEEeKVudOPtQ6VQg" name="Call(AssertList)" incoming="_bCWOKpcEEeKVudOPtQ6VQg" behavior="_-Y3PAIgUEeKtquXykzQHVw">
- <argument xmi:id="_bCWOGpcEEeKVudOPtQ6VQg" name="Call(AssertList).argument(label)" incoming="_bCWOKZcEEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOG5cEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOHJcEEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_bCWOHZcEEeKVudOPtQ6VQg" name="Call(AssertList).argument(list)" incoming="_bCWOcZcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOHpcEEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOH5cEEeKVudOPtQ6VQg" value="*"/>
- </argument>
- <argument xmi:id="_bCWOIJcEEeKVudOPtQ6VQg" name="Call(AssertList).argument(expected)" incoming="_bCWOcpcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOIZcEEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOIpcEEeKVudOPtQ6VQg" value="*"/>
- </argument>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOI5cEEeKVudOPtQ6VQg" name="Tuple@1980745" outgoing="_bCWOKpcEEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOJJcEEeKVudOPtQ6VQg" name="Value("{1, 2, 3, 4} vs. {1, 2, 3, 4} ")">
- <result xmi:id="_bCWOJZcEEeKVudOPtQ6VQg" name="Value("{1, 2, 3, 4} vs. {1, 2, 3, 4} ").result" outgoing="_bCWOKZcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOJpcEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOJ5cEEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_bCWOKJcEEeKVudOPtQ6VQg" value="{1, 2, 3, 4} vs. {1, 2, 3, 4} ">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOK5cEEeKVudOPtQ6VQg" name="LocalNameDeclarationStatement@1a0e27b" incoming="_bCWOdJcEEeKVudOPtQ6VQg" outgoing="_bCWOd5cEEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOW5cEEeKVudOPtQ6VQg" target="_bCWOLJcEEeKVudOPtQ6VQg" source="_bCWOT5cEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOXJcEEeKVudOPtQ6VQg" target="_bCWOLpcEEeKVudOPtQ6VQg" source="_bCWOT5cEEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="_bCWOLJcEEeKVudOPtQ6VQg" name="Fork(list3)@19783d9" incoming="_bCWOW5cEEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOLZcEEeKVudOPtQ6VQg" name="RightHandSide@1751f00"/>
- <node xmi:type="uml:ForkNode" xmi:id="_bCWOLpcEEeKVudOPtQ6VQg" name="Fork(list3)@1cd4150" incoming="_bCWOXJcEEeKVudOPtQ6VQg" outgoing="_bCWOdpcEEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOL5cEEeKVudOPtQ6VQg" name="RightHandSide@1751f00">
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOMJcEEeKVudOPtQ6VQg" name="SequenceConstructionExpression@1751f00">
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOUpcEEeKVudOPtQ6VQg" target="_bCWON5cEEeKVudOPtQ6VQg" source="_bCWOMZcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOU5cEEeKVudOPtQ6VQg" target="_bCWOPZcEEeKVudOPtQ6VQg" source="_bCWON5cEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOVJcEEeKVudOPtQ6VQg" target="_bCWOQ5cEEeKVudOPtQ6VQg" source="_bCWOPZcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOVZcEEeKVudOPtQ6VQg" target="_bCWOSZcEEeKVudOPtQ6VQg" source="_bCWOQ5cEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOVpcEEeKVudOPtQ6VQg" target="_bCWOT5cEEeKVudOPtQ6VQg" source="_bCWOM5cEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOV5cEEeKVudOPtQ6VQg" target="_bCWOT5cEEeKVudOPtQ6VQg" source="_bCWOOZcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOWJcEEeKVudOPtQ6VQg" target="_bCWOT5cEEeKVudOPtQ6VQg" source="_bCWOP5cEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOWZcEEeKVudOPtQ6VQg" target="_bCWOT5cEEeKVudOPtQ6VQg" source="_bCWORZcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOWpcEEeKVudOPtQ6VQg" target="_bCWOT5cEEeKVudOPtQ6VQg" source="_bCWOS5cEEeKVudOPtQ6VQg"/>
- <structuredNodeOutput xmi:id="_bCWOT5cEEeKVudOPtQ6VQg" name="SequenceConstructionExpression@1751f00.output" incoming="_bCWOVpcEEeKVudOPtQ6VQg _bCWOV5cEEeKVudOPtQ6VQg _bCWOWJcEEeKVudOPtQ6VQg _bCWOWZcEEeKVudOPtQ6VQg _bCWOWpcEEeKVudOPtQ6VQg" outgoing="_bCWOW5cEEeKVudOPtQ6VQg _bCWOXJcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOUJcEEeKVudOPtQ6VQg" value="5"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOUZcEEeKVudOPtQ6VQg" value="5"/>
- </structuredNodeOutput>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOMZcEEeKVudOPtQ6VQg" name="SequenceExpressionList@18ed106#1" outgoing="_bCWOUpcEEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOMpcEEeKVudOPtQ6VQg" name="Value(1)">
- <result xmi:id="_bCWOM5cEEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_bCWOVpcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWONJcEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWONZcEEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_bCWONpcEEeKVudOPtQ6VQg" value="1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWON5cEEeKVudOPtQ6VQg" name="SequenceExpressionList@18ed106#2" incoming="_bCWOUpcEEeKVudOPtQ6VQg" outgoing="_bCWOU5cEEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOOJcEEeKVudOPtQ6VQg" name="Value(2)">
- <result xmi:id="_bCWOOZcEEeKVudOPtQ6VQg" name="Value(2).result" outgoing="_bCWOV5cEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOOpcEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOO5cEEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_bCWOPJcEEeKVudOPtQ6VQg" value="2">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOPZcEEeKVudOPtQ6VQg" name="SequenceExpressionList@18ed106#3" incoming="_bCWOU5cEEeKVudOPtQ6VQg" outgoing="_bCWOVJcEEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOPpcEEeKVudOPtQ6VQg" name="Value(7)">
- <result xmi:id="_bCWOP5cEEeKVudOPtQ6VQg" name="Value(7).result" outgoing="_bCWOWJcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOQJcEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOQZcEEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_bCWOQpcEEeKVudOPtQ6VQg" value="7">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOQ5cEEeKVudOPtQ6VQg" name="SequenceExpressionList@18ed106#4" incoming="_bCWOVJcEEeKVudOPtQ6VQg" outgoing="_bCWOVZcEEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWORJcEEeKVudOPtQ6VQg" name="Value(4)">
- <result xmi:id="_bCWORZcEEeKVudOPtQ6VQg" name="Value(4).result" outgoing="_bCWOWZcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWORpcEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOR5cEEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_bCWOSJcEEeKVudOPtQ6VQg" value="4">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOSZcEEeKVudOPtQ6VQg" name="SequenceExpressionList@18ed106#5" incoming="_bCWOVZcEEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOSpcEEeKVudOPtQ6VQg" name="Value(8)">
- <result xmi:id="_bCWOS5cEEeKVudOPtQ6VQg" name="Value(8).result" outgoing="_bCWOWpcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOTJcEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOTZcEEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralInteger" xmi:id="_bCWOTpcEEeKVudOPtQ6VQg" value="8">
- <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
- </value>
- </node>
- </node>
- </node>
- </node>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOXZcEEeKVudOPtQ6VQg" name="ExpressionStatement@1751dbd" incoming="_bCWOd5cEEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWObpcEEeKVudOPtQ6VQg" target="_bCWOX5cEEeKVudOPtQ6VQg" source="_bCWOapcEEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOb5cEEeKVudOPtQ6VQg" target="_bCWOXpcEEeKVudOPtQ6VQg" source="_bCWOaJcEEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_bCWOXpcEEeKVudOPtQ6VQg" name="Call(AssertList)" incoming="_bCWOb5cEEeKVudOPtQ6VQg" behavior="_-Y3PAIgUEeKtquXykzQHVw">
- <argument xmi:id="_bCWOX5cEEeKVudOPtQ6VQg" name="Call(AssertList).argument(label)" incoming="_bCWObpcEEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOYJcEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOYZcEEeKVudOPtQ6VQg" value="1"/>
- </argument>
- <argument xmi:id="_bCWOYpcEEeKVudOPtQ6VQg" name="Call(AssertList).argument(list)" incoming="_bCWOdZcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOY5cEEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOZJcEEeKVudOPtQ6VQg" value="*"/>
- </argument>
- <argument xmi:id="_bCWOZZcEEeKVudOPtQ6VQg" name="Call(AssertList).argument(expected)" incoming="_bCWOdpcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOZpcEEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOZ5cEEeKVudOPtQ6VQg" value="*"/>
- </argument>
- </node>
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOaJcEEeKVudOPtQ6VQg" name="Tuple@123e9b2" outgoing="_bCWOb5cEEeKVudOPtQ6VQg">
- <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOaZcEEeKVudOPtQ6VQg" name="Value("{1, 2, 3, 4} vs. {1, 2, 7, 4, 8} ")">
- <result xmi:id="_bCWOapcEEeKVudOPtQ6VQg" name="Value("{1, 2, 3, 4} vs. {1, 2, 7, 4, 8} ").result" outgoing="_bCWObpcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOa5cEEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWObJcEEeKVudOPtQ6VQg" value="1"/>
- </result>
- <value xmi:type="uml:LiteralString" xmi:id="_bCWObZcEEeKVudOPtQ6VQg" value="{1, 2, 3, 4} vs. {1, 2, 7, 4, 8} ">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </value>
- </node>
- </node>
- </node>
- </structuredNode>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Activity" xmi:id="_iPgC4JcCEeKVudOPtQ6VQg" name="$$Alf$Library$CollectionFunctions$size__any__" node="_iPgC7pcCEeKVudOPtQ6VQg _iPgC75cCEeKVudOPtQ6VQg _iPgC8JcCEeKVudOPtQ6VQg _iPgC8ZcCEeKVudOPtQ6VQg _iPgC8pcCEeKVudOPtQ6VQg" group="_iPgC8pcCEeKVudOPtQ6VQg">
- <ownedParameter xmi:id="_iPgC5JcCEeKVudOPtQ6VQg" name="seq" visibility="package" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iPgC5ZcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iPgC5pcCEeKVudOPtQ6VQg" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:id="_iPgC55cCEeKVudOPtQ6VQg" name="" visibility="package" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iPgC6JcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iPgC6ZcCEeKVudOPtQ6VQg" value="1"/>
- </ownedParameter>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iPgC6pcCEeKVudOPtQ6VQg" target="_iPgC75cCEeKVudOPtQ6VQg" source="_iPgC7pcCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_iPgC65cCEeKVudOPtQ6VQg" target="_iPgC8ZcCEeKVudOPtQ6VQg" source="_iPgC85cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iPgC7JcCEeKVudOPtQ6VQg" target="_iPgC9ZcCEeKVudOPtQ6VQg" source="_iPgC75cCEeKVudOPtQ6VQg"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iPgC7ZcCEeKVudOPtQ6VQg" target="_iPgC8JcCEeKVudOPtQ6VQg" source="_iPgC-5cCEeKVudOPtQ6VQg"/>
- <structuredNode xmi:id="_iPgC8pcCEeKVudOPtQ6VQg" name="Body(size)">
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_iPgC85cCEeKVudOPtQ6VQg" name="ReturnStatement@22536490" outgoing="_iPgC65cCEeKVudOPtQ6VQg">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_iPgC_pcCEeKVudOPtQ6VQg" target="_iPgC-5cCEeKVudOPtQ6VQg" source="_iPgC-JcCEeKVudOPtQ6VQg"/>
- <structuredNodeOutput xmi:id="_iPgC-5cCEeKVudOPtQ6VQg" name="ReturnStatement@22536490.output" incoming="_iPgC_pcCEeKVudOPtQ6VQg" outgoing="_iPgC7ZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iPgC_JcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iPgC_ZcCEeKVudOPtQ6VQg" value="1"/>
- </structuredNodeOutput>
- <node xmi:type="uml:CallBehaviorAction" xmi:id="_iPgC9JcCEeKVudOPtQ6VQg" name="Call(Size)">
- <argument xmi:id="_iPgC9ZcCEeKVudOPtQ6VQg" name="Call(Size).argument(seq)" incoming="_iPgC7JcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iPgC9pcCEeKVudOPtQ6VQg"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iPgC95cCEeKVudOPtQ6VQg" value="*"/>
- </argument>
- <result xmi:id="_iPgC-JcCEeKVudOPtQ6VQg" name="Call(Size).result()" outgoing="_iPgC_pcCEeKVudOPtQ6VQg">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iPgC-ZcCEeKVudOPtQ6VQg" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iPgC-pcCEeKVudOPtQ6VQg" value="1"/>
- </result>
- <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveBehaviors-SequenceFunctions-Size"/>
- </node>
- </node>
- </structuredNode>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="_iPgC7pcCEeKVudOPtQ6VQg" name="Input(seq)" outgoing="_iPgC6pcCEeKVudOPtQ6VQg" parameter="_iPgC5JcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ForkNode" xmi:id="_iPgC75cCEeKVudOPtQ6VQg" name="Fork(seq)" incoming="_iPgC6pcCEeKVudOPtQ6VQg" outgoing="_iPgC7JcCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="_iPgC8JcCEeKVudOPtQ6VQg" name="Return" incoming="_iPgC7ZcCEeKVudOPtQ6VQg" parameter="_iPgC55cCEeKVudOPtQ6VQg"/>
- <node xmi:type="uml:ActivityFinalNode" xmi:id="_iPgC8ZcCEeKVudOPtQ6VQg" name="Final" incoming="_iPgC65cCEeKVudOPtQ6VQg"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Activity" xmi:id="_iPgC_5cCEeKVudOPtQ6VQg">
- <templateBinding xmi:id="_iPgDAJcCEeKVudOPtQ6VQg">
- <parameterSubstitution xmi:id="_iPgDAZcCEeKVudOPtQ6VQg">
- <formal xmi:type="uml:ClassifierTemplateParameter" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#_JmqbdYVoEeKRrIQMgiVHcQ"/>
- </parameterSubstitution>
- <signature xmi:type="uml:RedefinableTemplateSignature" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#_JmqbdIVoEeKRrIQMgiVHcQ"/>
- </templateBinding>
- </packagedElement>
- <packagedElement xmi:type="uml:Realization" xmi:id="_iPgDApcCEeKVudOPtQ6VQg" client="_iPgC4JcCEeKVudOPtQ6VQg" supplier="_iPgC_5cCEeKVudOPtQ6VQg"/>
- <packagedElement xmi:type="uml:OpaqueBehavior" xmi:id="_42AbkNz9EeONFdeprwPg2A" name="GenerateTestReport"/>
- <profileApplication xmi:id="_PWUOo4gVEeKtquXykzQHVw">
- <eAnnotations xmi:id="_PWd_oIgVEeKtquXykzQHVw" source="http://www.eclipse.org/uml2/2.0.0/UML">
- <references xmi:type="ecore:EPackage" href="platform:/plugin/org.eclipse.papyrus.alf/resources/ActionLanguage-Profile.profile.uml#_sYse0YZLEeKyw49uR6nx3g"/>
- </eAnnotations>
- <appliedProfile href="platform:/plugin/org.eclipse.papyrus.alf/resources/ActionLanguage-Profile.profile.uml#ActionLanguage"/>
- </profileApplication>
- </uml:Model>
- <ActionLanguage:TextualRepresentation xmi:id="_PYjDQIgVEeKtquXykzQHVw" base_Comment="_PWUOoIgVEeKtquXykzQHVw"/>
- <ActionLanguage:TextualRepresentation xmi:id="_cKvjYYgVEeKtquXykzQHVw" base_Comment="_cKvjYIgVEeKtquXykzQHVw"/>
- <ActionLanguage:TextualRepresentation xmi:id="_qGNYsYgVEeKtquXykzQHVw" base_Comment="_qGNYsIgVEeKtquXykzQHVw"/>
- <ActionLanguage:TextualRepresentation xmi:id="_2i470YgVEeKtquXykzQHVw" base_Comment="_2i470IgVEeKtquXykzQHVw"/>
- <ActionLanguage:TextualRepresentation xmi:id="_ZaCg4YgWEeKtquXykzQHVw" base_Comment="_ZaCg4IgWEeKtquXykzQHVw"/>
- <ActionLanguage:TextualRepresentation xmi:id="_9RFEAJGKEeKaY7tSssHhGw" base_Comment="_9Q7TDpGKEeKaY7tSssHhGw"/>
- <ActionLanguage:TextualRepresentation xmi:id="_QCbqgZGLEeKaY7tSssHhGw" base_Comment="_QCbqgJGLEeKaY7tSssHhGw"/>
- <ActionLanguage:TextualRepresentation xmi:id="_fY76cZGLEeKaY7tSssHhGw" base_Comment="_fY76cJGLEeKaY7tSssHhGw"/>
- <ActionLanguage:TextualRepresentation xmi:id="_xyMJoZGLEeKaY7tSssHhGw" base_Comment="_xyMJoJGLEeKaY7tSssHhGw"/>
- <ActionLanguage:TextualRepresentation xmi:id="_XZzW4JMsEeKsOLt3X9dUzg" base_Comment="_XZhDAJMsEeKsOLt3X9dUzg"/>
- <ActionLanguage:TextualRepresentation xmi:id="_dnx0YJcDEeKVudOPtQ6VQg" base_Comment="_dnoDzJcDEeKVudOPtQ6VQg"/>
-</xmi:XMI>
+<?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:ActionLanguage="http://www.omg.org/spec/ALF/20120827/ActionLanguage-Profile" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.omg.org/spec/ALF/20120827/ActionLanguage-Profile platform:/plugin/org.eclipse.papyrus.alf/resources/ActionLanguage-Profile.profile.uml">
+ <uml:Model xmi:id="_62lbEIgUEeKtquXykzQHVw" name="AssertionLibrary">
+ <packageImport xmi:id="_LU_3YI19EeK7gYOtibANUw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:id="_NEk-oI19EeK7gYOtibANUw" visibility="private">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:id="_X-RygJGjEeKappQpCeg6XA">
+ <importedPackage xmi:type="uml:Model" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:OpaqueBehavior" xmi:id="_8kE3oIgUEeKtquXykzQHVw" name="AssertEquals" group="_Q75UxpMrEeKsOLt3X9dUzg" node="_Q75UwJMrEeKsOLt3X9dUzg _Q75UwZMrEeKsOLt3X9dUzg _Q75UwpMrEeKsOLt3X9dUzg _Q75Uw5MrEeKsOLt3X9dUzg _Q75UxJMrEeKsOLt3X9dUzg _Q75UxZMrEeKsOLt3X9dUzg _Q75UxpMrEeKsOLt3X9dUzg">
+ <ownedComment xmi:id="_PWUOoIgVEeKtquXykzQHVw">
+ <body>namespace AssertionLibrary ;
+
+private import Alf::Library::CollectionFunctions::size ;
+
+activity AssertEqual(in label: String, in value1: any, in value2: any) {
+ Write(label + "==");
+ Write(value2 instanceof String? "\"" + (String)value2 + "\"": value2);
+ AssertTrue("", value1==value2);
+}</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_ERzsCY1-EeK7gYOtibANUw" name="label" visibility="package">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ERzsCo1-EeK7gYOtibANUw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ERzsC41-EeK7gYOtibANUw" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_ERzsDI1-EeK7gYOtibANUw" name="value1" visibility="package">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ERzsDY1-EeK7gYOtibANUw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ERzsDo1-EeK7gYOtibANUw" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_ERzsD41-EeK7gYOtibANUw" name="value2" visibility="package">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ERzsEI1-EeK7gYOtibANUw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ERzsEY1-EeK7gYOtibANUw" value="1"/>
+ </ownedParameter>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bYJMrEeKsOLt3X9dUzg" target="_Q75UwZMrEeKsOLt3X9dUzg" source="_Q75UwJMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bYZMrEeKsOLt3X9dUzg" target="_Q75Uw5MrEeKsOLt3X9dUzg" source="_Q75UwpMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bYpMrEeKsOLt3X9dUzg" target="_Q75UxZMrEeKsOLt3X9dUzg" source="_Q75UxJMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bY5MrEeKsOLt3X9dUzg" target="_Q75U05MrEeKsOLt3X9dUzg" source="_Q75UwZMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bZJMrEeKsOLt3X9dUzg" target="_Q75U5pMrEeKsOLt3X9dUzg" source="_Q75UxZMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bZZMrEeKsOLt3X9dUzg" target="_Q75VBJMrEeKsOLt3X9dUzg" source="_Q75UxZMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bZpMrEeKsOLt3X9dUzg" target="_Q75VKJMrEeKsOLt3X9dUzg" source="_Q75UxZMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_bZ5MrEeKsOLt3X9dUzg" target="_Q75VSZMrEeKsOLt3X9dUzg" source="_Q75Uw5MrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q7_baJMrEeKsOLt3X9dUzg" target="_Q75VT5MrEeKsOLt3X9dUzg" source="_Q75UxZMrEeKsOLt3X9dUzg"/>
+ <structuredNode xmi:id="_Q75UxpMrEeKsOLt3X9dUzg" name="Body(AssertEqual)">
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75Ux5MrEeKsOLt3X9dUzg" name="ExpressionStatement@aeca99" outgoing="_Q75VVZMrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75U3ZMrEeKsOLt3X9dUzg" target="_Q75UyZMrEeKsOLt3X9dUzg" source="_Q75U2ZMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_Q75U3pMrEeKsOLt3X9dUzg" target="_Q75UyJMrEeKsOLt3X9dUzg" source="_Q75UzJMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_Q75UyJMrEeKsOLt3X9dUzg" name="Call(Write)" incoming="_Q75U3pMrEeKsOLt3X9dUzg" behavior="_Tz8bEIgWEeKtquXykzQHVw">
+ <argument xmi:id="_Q75UyZMrEeKsOLt3X9dUzg" name="Call(Write).argument(value)" incoming="_Q75U3ZMrEeKsOLt3X9dUzg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75UypMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75Uy5MrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75UzJMrEeKsOLt3X9dUzg" name="Tuple@11dc721" outgoing="_Q75U3pMrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75U3JMrEeKsOLt3X9dUzg" target="_Q75U1pMrEeKsOLt3X9dUzg" source="_Q75UzpMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Q75UzZMrEeKsOLt3X9dUzg" name="Value("==")">
+ <result xmi:id="_Q75UzpMrEeKsOLt3X9dUzg" name="Value("==").result" outgoing="_Q75U3JMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75Uz5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U0JMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_Q75U0ZMrEeKsOLt3X9dUzg" value="==">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_Q75U0pMrEeKsOLt3X9dUzg" name="Call(Concat)">
+ <argument xmi:id="_Q75U05MrEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_Q7_bY5MrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U1JMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U1ZMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_Q75U1pMrEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_Q75U3JMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U15MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U2JMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <result xmi:id="_Q75U2ZMrEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_Q75U3ZMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U2pMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U25MrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75U35MrEeKsOLt3X9dUzg" name="ExpressionStatement@fc6a34" incoming="_Q75VVZMrEeKsOLt3X9dUzg" outgoing="_Q75VVpMrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VOJMrEeKsOLt3X9dUzg" target="_Q75U4ZMrEeKsOLt3X9dUzg" source="_Q75VL5MrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_Q75VOZMrEeKsOLt3X9dUzg" target="_Q75U4JMrEeKsOLt3X9dUzg" source="_Q75U5JMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_Q75U4JMrEeKsOLt3X9dUzg" name="Call(Write)" incoming="_Q75VOZMrEeKsOLt3X9dUzg" behavior="_Tz8bEIgWEeKtquXykzQHVw">
+ <argument xmi:id="_Q75U4ZMrEeKsOLt3X9dUzg" name="Call(Write).argument(value)" incoming="_Q75VOJMrEeKsOLt3X9dUzg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U4pMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U45MrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75U5JMrEeKsOLt3X9dUzg" name="Tuple@646e1b" outgoing="_Q75VOZMrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ControlFlow" xmi:id="_Q75VMJMrEeKsOLt3X9dUzg" target="_Q75VLpMrEeKsOLt3X9dUzg" source="_Q75VLZMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VMZMrEeKsOLt3X9dUzg" target="_Q75VLpMrEeKsOLt3X9dUzg" source="_Q75U6ZMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_Q75VMpMrEeKsOLt3X9dUzg" target="_Q75U7JMrEeKsOLt3X9dUzg" source="_Q75VLpMrEeKsOLt3X9dUzg">
+ <guard xmi:type="uml:LiteralBoolean" xmi:id="_Q75VM5MrEeKsOLt3X9dUzg" name="Value(true)" value="true"/>
+ </edge>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_Q75VNJMrEeKsOLt3X9dUzg" target="_Q75VJ5MrEeKsOLt3X9dUzg" source="_Q75VLpMrEeKsOLt3X9dUzg">
+ <guard xmi:type="uml:LiteralBoolean" xmi:id="_Q75VNZMrEeKsOLt3X9dUzg" name="Value(false)"/>
+ </edge>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VNpMrEeKsOLt3X9dUzg" target="_Q75VL5MrEeKsOLt3X9dUzg" source="_Q75VH5MrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VN5MrEeKsOLt3X9dUzg" target="_Q75VL5MrEeKsOLt3X9dUzg" source="_Q75VKZMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:ReadIsClassifiedObjectAction" xmi:id="_Q75U5ZMrEeKsOLt3X9dUzg" name="ReadIsClassifiedObject(String)">
+ <classifier xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <object xmi:id="_Q75U5pMrEeKsOLt3X9dUzg" name="ReadIsClassifiedObject(String).object" incoming="_Q7_bZJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U55MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U6JMrEeKsOLt3X9dUzg" value="1"/>
+ </object>
+ <result xmi:id="_Q75U6ZMrEeKsOLt3X9dUzg" name="ReadIsClassifiedObject(String).result" outgoing="_Q75VMZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U6pMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U65MrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75U7JMrEeKsOLt3X9dUzg" name="ConditionalTestExpression@10500b1.operand2" incoming="_Q75VMpMrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VIpMrEeKsOLt3X9dUzg" target="_Q75VB5MrEeKsOLt3X9dUzg" source="_Q75U7pMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VI5MrEeKsOLt3X9dUzg" target="_Q75VCpMrEeKsOLt3X9dUzg" source="_Q75VBZMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VJJMrEeKsOLt3X9dUzg" target="_Q75VFpMrEeKsOLt3X9dUzg" source="_Q75VDZMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VJZMrEeKsOLt3X9dUzg" target="_Q75VGZMrEeKsOLt3X9dUzg" source="_Q75VEZMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VJpMrEeKsOLt3X9dUzg" target="_Q75VH5MrEeKsOLt3X9dUzg" source="_Q75VHJMrEeKsOLt3X9dUzg"/>
+ <structuredNodeOutput xmi:id="_Q75VH5MrEeKsOLt3X9dUzg" name="ConditionalTestExpression@10500b1.operand2.result" incoming="_Q75VJpMrEeKsOLt3X9dUzg" outgoing="_Q75VNpMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VIJMrEeKsOLt3X9dUzg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VIZMrEeKsOLt3X9dUzg" value="*"/>
+ </structuredNodeOutput>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Q75U7ZMrEeKsOLt3X9dUzg" name="Value(""")">
+ <result xmi:id="_Q75U7pMrEeKsOLt3X9dUzg" name="Value(""").result" outgoing="_Q75VIpMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U75MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U8JMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_Q75U8ZMrEeKsOLt3X9dUzg" value=""">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:ExpansionRegion" xmi:id="_Q75U8pMrEeKsOLt3X9dUzg" name="CastExpression@1bee7e" mode="parallel" outputElement="_Q75VBZMrEeKsOLt3X9dUzg" inputElement="_Q75VBJMrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75U_ZMrEeKsOLt3X9dUzg" target="_Q75U9ZMrEeKsOLt3X9dUzg" source="_Q75U-5MrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75U_pMrEeKsOLt3X9dUzg" target="_Q75U_JMrEeKsOLt3X9dUzg" source="_Q75U-5MrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75U_5MrEeKsOLt3X9dUzg" target="_Q75U_JMrEeKsOLt3X9dUzg" source="_Q75U-JMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VAJMrEeKsOLt3X9dUzg" target="_Q75U85MrEeKsOLt3X9dUzg" source="_Q75U_JMrEeKsOLt3X9dUzg">
+ <guard xmi:type="uml:LiteralBoolean" xmi:id="_Q75VAZMrEeKsOLt3X9dUzg" name="Value(true)" value="true"/>
+ </edge>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VApMrEeKsOLt3X9dUzg" target="_Q75U-5MrEeKsOLt3X9dUzg" source="_Q75VBJMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VA5MrEeKsOLt3X9dUzg" target="_Q75VBZMrEeKsOLt3X9dUzg" source="_Q75U85MrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:MergeNode" xmi:id="_Q75U85MrEeKsOLt3X9dUzg" name="Merge(CastExpression@1bee7e.operand)" incoming="_Q75VAJMrEeKsOLt3X9dUzg" outgoing="_Q75VA5MrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:ReadIsClassifiedObjectAction" xmi:id="_Q75U9JMrEeKsOLt3X9dUzg" name="ReadIsClassifiedObject(String)">
+ <classifier xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <object xmi:id="_Q75U9ZMrEeKsOLt3X9dUzg" name="ReadIsClassifiedObject(String).object" incoming="_Q75U_ZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U9pMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U95MrEeKsOLt3X9dUzg" value="1"/>
+ </object>
+ <result xmi:id="_Q75U-JMrEeKsOLt3X9dUzg" name="ReadIsClassifiedObject(String).result" outgoing="_Q75U_5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75U-ZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75U-pMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ </node>
+ <node xmi:type="uml:ForkNode" xmi:id="_Q75U-5MrEeKsOLt3X9dUzg" name="Fork(ReadIsClassifiedObject(String).object)" incoming="_Q75VApMrEeKsOLt3X9dUzg" outgoing="_Q75U_ZMrEeKsOLt3X9dUzg _Q75U_pMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:DecisionNode" xmi:id="_Q75U_JMrEeKsOLt3X9dUzg" name="Decision(ReadIsClassifiedObject(String).result)" incoming="_Q75U_pMrEeKsOLt3X9dUzg _Q75U_5MrEeKsOLt3X9dUzg" outgoing="_Q75VAJMrEeKsOLt3X9dUzg" decisionInputFlow="_Q75U_5MrEeKsOLt3X9dUzg"/>
+ </node>
+ <node xmi:type="uml:ExpansionNode" xmi:id="_Q75VBJMrEeKsOLt3X9dUzg" name="CastExpression@1bee7e.inputElement" incoming="_Q7_bZZMrEeKsOLt3X9dUzg" outgoing="_Q75VApMrEeKsOLt3X9dUzg" regionAsInput="_Q75U8pMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:ExpansionNode" xmi:id="_Q75VBZMrEeKsOLt3X9dUzg" name="CastExpression@1bee7e.outputElement" incoming="_Q75VA5MrEeKsOLt3X9dUzg" outgoing="_Q75VI5MrEeKsOLt3X9dUzg" regionAsOutput="_Q75U8pMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_Q75VBpMrEeKsOLt3X9dUzg" name="Call(Concat)">
+ <argument xmi:id="_Q75VB5MrEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_Q75VIpMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VCJMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VCZMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_Q75VCpMrEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_Q75VI5MrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VC5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VDJMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <result xmi:id="_Q75VDZMrEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_Q75VJJMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VDpMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VD5MrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Q75VEJMrEeKsOLt3X9dUzg" name="Value(""")">
+ <result xmi:id="_Q75VEZMrEeKsOLt3X9dUzg" name="Value(""").result" outgoing="_Q75VJZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VEpMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VE5MrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_Q75VFJMrEeKsOLt3X9dUzg" value=""">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_Q75VFZMrEeKsOLt3X9dUzg" name="Call(Concat)">
+ <argument xmi:id="_Q75VFpMrEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_Q75VJJMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VF5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VGJMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_Q75VGZMrEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_Q75VJZMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VGpMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VG5MrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <result xmi:id="_Q75VHJMrEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_Q75VJpMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VHZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VHpMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75VJ5MrEeKsOLt3X9dUzg" name="ConditionalTestExpression@10500b1.operand3" incoming="_Q75VNJMrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VLJMrEeKsOLt3X9dUzg" target="_Q75VKZMrEeKsOLt3X9dUzg" source="_Q75VKJMrEeKsOLt3X9dUzg"/>
+ <structuredNodeOutput xmi:id="_Q75VKZMrEeKsOLt3X9dUzg" name="ConditionalTestExpression@10500b1.operand3.result" incoming="_Q75VLJMrEeKsOLt3X9dUzg" outgoing="_Q75VN5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VKpMrEeKsOLt3X9dUzg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VK5MrEeKsOLt3X9dUzg" value="*"/>
+ </structuredNodeOutput>
+ <node xmi:type="uml:MergeNode" xmi:id="_Q75VKJMrEeKsOLt3X9dUzg" name="Merge(Fork(value2))" incoming="_Q7_bZpMrEeKsOLt3X9dUzg" outgoing="_Q75VLJMrEeKsOLt3X9dUzg"/>
+ </node>
+ <node xmi:type="uml:InitialNode" xmi:id="_Q75VLZMrEeKsOLt3X9dUzg" name="Initial(ConditionalTestExpression@10500b1)" outgoing="_Q75VMJMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:DecisionNode" xmi:id="_Q75VLpMrEeKsOLt3X9dUzg" name="Decision(ConditionalTestExpression@10500b1)" incoming="_Q75VMJMrEeKsOLt3X9dUzg _Q75VMZMrEeKsOLt3X9dUzg" outgoing="_Q75VMpMrEeKsOLt3X9dUzg _Q75VNJMrEeKsOLt3X9dUzg" decisionInputFlow="_Q75VMZMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:MergeNode" xmi:id="_Q75VL5MrEeKsOLt3X9dUzg" name="Merge(ConditionalTestExpression@10500b1.result)" incoming="_Q75VNpMrEeKsOLt3X9dUzg _Q75VN5MrEeKsOLt3X9dUzg" outgoing="_Q75VOJMrEeKsOLt3X9dUzg"/>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75VOpMrEeKsOLt3X9dUzg" name="ExpressionStatement@15e504b" incoming="_Q75VVpMrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VUpMrEeKsOLt3X9dUzg" target="_Q75VPJMrEeKsOLt3X9dUzg" source="_Q75VRJMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Q75VU5MrEeKsOLt3X9dUzg" target="_Q75VP5MrEeKsOLt3X9dUzg" source="_Q75VTJMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_Q75VVJMrEeKsOLt3X9dUzg" target="_Q75VO5MrEeKsOLt3X9dUzg" source="_Q75VQpMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_Q75VO5MrEeKsOLt3X9dUzg" name="Call(AssertTrue)" incoming="_Q75VVJMrEeKsOLt3X9dUzg" behavior="_9FjNAIgUEeKtquXykzQHVw">
+ <argument xmi:id="_Q75VPJMrEeKsOLt3X9dUzg" name="Call(AssertTrue).argument(label)" incoming="_Q75VUpMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VPZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VPpMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_Q75VP5MrEeKsOLt3X9dUzg" name="Call(AssertTrue).argument(condition)" incoming="_Q75VU5MrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VQJMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VQZMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_Q75VQpMrEeKsOLt3X9dUzg" name="Tuple@123d3ca" outgoing="_Q75VVJMrEeKsOLt3X9dUzg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Q75VQ5MrEeKsOLt3X9dUzg" name="Value("")">
+ <result xmi:id="_Q75VRJMrEeKsOLt3X9dUzg" name="Value("").result" outgoing="_Q75VUpMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VRZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VRpMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_Q75VR5MrEeKsOLt3X9dUzg" value="">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:TestIdentityAction" xmi:id="_Q75VSJMrEeKsOLt3X9dUzg" name="Test(==)">
+ <first xmi:id="_Q75VSZMrEeKsOLt3X9dUzg" name="Test(==).first" incoming="_Q7_bZ5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VSpMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VS5MrEeKsOLt3X9dUzg" value="1"/>
+ </first>
+ <result xmi:id="_Q75VTJMrEeKsOLt3X9dUzg" name="Test(==).result" outgoing="_Q75VU5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VTZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VTpMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <second xmi:id="_Q75VT5MrEeKsOLt3X9dUzg" name="Test(==).second" incoming="_Q7_baJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Q75VUJMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Q75VUZMrEeKsOLt3X9dUzg" value="1"/>
+ </second>
+ </node>
+ </node>
+ </node>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_Q75VVZMrEeKsOLt3X9dUzg" target="_Q75U35MrEeKsOLt3X9dUzg" source="_Q75Ux5MrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_Q75VVpMrEeKsOLt3X9dUzg" target="_Q75VOpMrEeKsOLt3X9dUzg" source="_Q75U35MrEeKsOLt3X9dUzg"/>
+ </structuredNode>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="_Q75UwJMrEeKsOLt3X9dUzg" name="Input(label)" outgoing="_Q7_bYJMrEeKsOLt3X9dUzg" parameter="_ERzsCY1-EeK7gYOtibANUw"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_Q75UwZMrEeKsOLt3X9dUzg" name="Fork(label)" incoming="_Q7_bYJMrEeKsOLt3X9dUzg" outgoing="_Q7_bY5MrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="_Q75UwpMrEeKsOLt3X9dUzg" name="Input(value1)" outgoing="_Q7_bYZMrEeKsOLt3X9dUzg" parameter="_ERzsDI1-EeK7gYOtibANUw"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_Q75Uw5MrEeKsOLt3X9dUzg" name="Fork(value1)" incoming="_Q7_bYZMrEeKsOLt3X9dUzg" outgoing="_Q7_bZ5MrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="_Q75UxJMrEeKsOLt3X9dUzg" name="Input(value2)" outgoing="_Q7_bYpMrEeKsOLt3X9dUzg" parameter="_ERzsD41-EeK7gYOtibANUw"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_Q75UxZMrEeKsOLt3X9dUzg" name="Fork(value2)" incoming="_Q7_bYpMrEeKsOLt3X9dUzg" outgoing="_Q7_bZJMrEeKsOLt3X9dUzg _Q7_bZZMrEeKsOLt3X9dUzg _Q7_bZpMrEeKsOLt3X9dUzg _Q7_baJMrEeKsOLt3X9dUzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:OpaqueBehavior" xmi:id="_9FjNAIgUEeKtquXykzQHVw" name="AssertTrue" group="_-JHLNJMqEeKsOLt3X9dUzg" node="_-JHLMJMqEeKsOLt3X9dUzg _-JHLMZMqEeKsOLt3X9dUzg _-JHLMpMqEeKsOLt3X9dUzg _-JHLM5MqEeKsOLt3X9dUzg _-JHLNJMqEeKsOLt3X9dUzg">
+ <ownedComment xmi:id="_cKvjYIgVEeKtquXykzQHVw">
+ <body>namespace AssertionLibrary ;
+
+private import Alf::Library::PrimitiveBehaviors::BooleanFunctions::ToString;
+private import Alf::Library::BasicInputOutput::WriteLine ;
+
+activity AssertTrue(in label: String, in condition: Boolean) {
+ WriteLine(label + ": " + ToString(condition));
+}</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_l17_do19EeK7gYOtibANUw" name="label" visibility="package">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l17_d419EeK7gYOtibANUw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_l17_eI19EeK7gYOtibANUw" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_l17_eY19EeK7gYOtibANUw" name="condition" visibility="package">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_l17_eo19EeK7gYOtibANUw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_l17_e419EeK7gYOtibANUw" value="1"/>
+ </ownedParameter>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_-JNR0JMqEeKsOLt3X9dUzg" target="_-JHLMZMqEeKsOLt3X9dUzg" source="_-JHLMJMqEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_-JNR0ZMqEeKsOLt3X9dUzg" target="_-JHLM5MqEeKsOLt3X9dUzg" source="_-JHLMpMqEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_-JNR0pMqEeKsOLt3X9dUzg" target="_-JHLRJMqEeKsOLt3X9dUzg" source="_-JHLMZMqEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_-JNR05MqEeKsOLt3X9dUzg" target="_-JHLTpMqEeKsOLt3X9dUzg" source="_-JHLM5MqEeKsOLt3X9dUzg"/>
+ <structuredNode xmi:id="_-JHLNJMqEeKsOLt3X9dUzg" name="Body(AssertTrue)">
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_-JHLNZMqEeKsOLt3X9dUzg" name="ExpressionStatement@d828b2">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_-JHLYZMqEeKsOLt3X9dUzg" target="_-JHLN5MqEeKsOLt3X9dUzg" source="_-JHLW5MqEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_-JHLYpMqEeKsOLt3X9dUzg" target="_-JHLNpMqEeKsOLt3X9dUzg" source="_-JHLPZMqEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_-JHLNpMqEeKsOLt3X9dUzg" name="Call(WriteLine)" incoming="_-JHLYpMqEeKsOLt3X9dUzg">
+ <argument xmi:id="_-JHLN5MqEeKsOLt3X9dUzg" name="Call(WriteLine).argument(value)" incoming="_-JHLYZMqEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLOJMqEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLOZMqEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <result xmi:id="_-JHLOpMqEeKsOLt3X9dUzg" name="Call(WriteLine).result(errorStatus)">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLO5MqEeKsOLt3X9dUzg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLPJMqEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_-JHLPZMqEeKsOLt3X9dUzg" name="Tuple@16e3ee8" outgoing="_-JHLYpMqEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_-JHLXpMqEeKsOLt3X9dUzg" target="_-JHLR5MqEeKsOLt3X9dUzg" source="_-JHLP5MqEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_-JHLX5MqEeKsOLt3X9dUzg" target="_-JHLVZMqEeKsOLt3X9dUzg" source="_-JHLSpMqEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_-JHLYJMqEeKsOLt3X9dUzg" target="_-JHLWJMqEeKsOLt3X9dUzg" source="_-JHLUZMqEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_-JHLPpMqEeKsOLt3X9dUzg" name="Value(": ")">
+ <result xmi:id="_-JHLP5MqEeKsOLt3X9dUzg" name="Value(": ").result" outgoing="_-JHLXpMqEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLQJMqEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLQZMqEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_-JHLQpMqEeKsOLt3X9dUzg" value=": ">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_-JHLQ5MqEeKsOLt3X9dUzg" name="Call(Concat)">
+ <argument xmi:id="_-JHLRJMqEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_-JNR0pMqEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLRZMqEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLRpMqEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_-JHLR5MqEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_-JHLXpMqEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLSJMqEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLSZMqEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <result xmi:id="_-JHLSpMqEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_-JHLX5MqEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLS5MqEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLTJMqEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_-JHLTZMqEeKsOLt3X9dUzg" name="Call(ToString)">
+ <argument xmi:id="_-JHLTpMqEeKsOLt3X9dUzg" name="Call(ToString).argument(x)" incoming="_-JNR05MqEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLT5MqEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLUJMqEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <result xmi:id="_-JHLUZMqEeKsOLt3X9dUzg" name="Call(ToString).result(result)" outgoing="_-JHLYJMqEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLUpMqEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLU5MqEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-BooleanFunctions-ToString"/>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_-JHLVJMqEeKsOLt3X9dUzg" name="Call(Concat)">
+ <argument xmi:id="_-JHLVZMqEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_-JHLX5MqEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLVpMqEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLV5MqEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_-JHLWJMqEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_-JHLYJMqEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLWZMqEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLWpMqEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <result xmi:id="_-JHLW5MqEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_-JHLYZMqEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_-JHLXJMqEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_-JHLXZMqEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ </node>
+ </node>
+ </structuredNode>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="_-JHLMJMqEeKsOLt3X9dUzg" name="Input(label)" outgoing="_-JNR0JMqEeKsOLt3X9dUzg" parameter="_l17_do19EeK7gYOtibANUw"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_-JHLMZMqEeKsOLt3X9dUzg" name="Fork(label)" incoming="_-JNR0JMqEeKsOLt3X9dUzg" outgoing="_-JNR0pMqEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="_-JHLMpMqEeKsOLt3X9dUzg" name="Input(condition)" outgoing="_-JNR0ZMqEeKsOLt3X9dUzg" parameter="_l17_eY19EeK7gYOtibANUw"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_-JHLM5MqEeKsOLt3X9dUzg" name="Fork(condition)" incoming="_-JNR0ZMqEeKsOLt3X9dUzg" outgoing="_-JNR05MqEeKsOLt3X9dUzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:OpaqueBehavior" xmi:id="_9tk2UIgUEeKtquXykzQHVw" name="AssertFalse" group="_JXnrBJMrEeKsOLt3X9dUzg" node="_JXnrAJMrEeKsOLt3X9dUzg _JXnrAZMrEeKsOLt3X9dUzg _JXnrApMrEeKsOLt3X9dUzg _JXnrA5MrEeKsOLt3X9dUzg _JXnrBJMrEeKsOLt3X9dUzg">
+ <ownedComment xmi:id="_qGNYsIgVEeKtquXykzQHVw">
+ <body>namespace AssertionLibrary ;
+
+private import Alf::Library::PrimitiveBehaviors::BooleanFunctions::ToString;
+private import Alf::Library::BasicInputOutput::WriteLine ;
+
+activity AssertFalse(in label: String, in condition: Boolean) {
+ WriteLine("! " + label + ": " + ToString(!condition));
+}</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_wKWOho19EeK7gYOtibANUw" name="label" visibility="package">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wKWOh419EeK7gYOtibANUw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wKWOiI19EeK7gYOtibANUw" value="1"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_wKWOiY19EeK7gYOtibANUw" name="condition" visibility="package">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_wKWOio19EeK7gYOtibANUw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_wKWOi419EeK7gYOtibANUw" value="1"/>
+ </ownedParameter>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrTpMrEeKsOLt3X9dUzg" target="_JXnrAZMrEeKsOLt3X9dUzg" source="_JXnrAJMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrT5MrEeKsOLt3X9dUzg" target="_JXnrA5MrEeKsOLt3X9dUzg" source="_JXnrApMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_JXtxoJMrEeKsOLt3X9dUzg" target="_JXnrF5MrEeKsOLt3X9dUzg" source="_JXnrAZMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_JXtxoZMrEeKsOLt3X9dUzg" target="_JXnrNZMrEeKsOLt3X9dUzg" source="_JXnrA5MrEeKsOLt3X9dUzg"/>
+ <structuredNode xmi:id="_JXnrBJMrEeKsOLt3X9dUzg" name="Body(AssertFalse)">
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_JXnrBZMrEeKsOLt3X9dUzg" name="ExpressionStatement@162d7d6">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrTJMrEeKsOLt3X9dUzg" target="_JXnrB5MrEeKsOLt3X9dUzg" source="_JXnrQpMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_JXnrTZMrEeKsOLt3X9dUzg" target="_JXnrBpMrEeKsOLt3X9dUzg" source="_JXnrDZMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_JXnrBpMrEeKsOLt3X9dUzg" name="Call(WriteLine)" incoming="_JXnrTZMrEeKsOLt3X9dUzg">
+ <argument xmi:id="_JXnrB5MrEeKsOLt3X9dUzg" name="Call(WriteLine).argument(value)" incoming="_JXnrTJMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrCJMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrCZMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <result xmi:id="_JXnrCpMrEeKsOLt3X9dUzg" name="Call(WriteLine).result(errorStatus)">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrC5MrEeKsOLt3X9dUzg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrDJMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_JXnrDZMrEeKsOLt3X9dUzg" name="Tuple@fd6256" outgoing="_JXnrTZMrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrRZMrEeKsOLt3X9dUzg" target="_JXnrFJMrEeKsOLt3X9dUzg" source="_JXnrD5MrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrRpMrEeKsOLt3X9dUzg" target="_JXnrI5MrEeKsOLt3X9dUzg" source="_JXnrGpMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrR5MrEeKsOLt3X9dUzg" target="_JXnrJpMrEeKsOLt3X9dUzg" source="_JXnrHpMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrSJMrEeKsOLt3X9dUzg" target="_JXnrLZMrEeKsOLt3X9dUzg" source="_JXnrOJMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_JXnrSZMrEeKsOLt3X9dUzg" target="_JXnrLJMrEeKsOLt3X9dUzg" source="_JXnrM5MrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrSpMrEeKsOLt3X9dUzg" target="_JXnrPJMrEeKsOLt3X9dUzg" source="_JXnrKZMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_JXnrS5MrEeKsOLt3X9dUzg" target="_JXnrP5MrEeKsOLt3X9dUzg" source="_JXnrMJMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_JXnrDpMrEeKsOLt3X9dUzg" name="Value("! ")">
+ <result xmi:id="_JXnrD5MrEeKsOLt3X9dUzg" name="Value("! ").result" outgoing="_JXnrRZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrEJMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrEZMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_JXnrEpMrEeKsOLt3X9dUzg" value="! ">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_JXnrE5MrEeKsOLt3X9dUzg" name="Call(Concat)">
+ <argument xmi:id="_JXnrFJMrEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_JXnrRZMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrFZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrFpMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_JXnrF5MrEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_JXtxoJMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrGJMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrGZMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <result xmi:id="_JXnrGpMrEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_JXnrRpMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrG5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrHJMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_JXnrHZMrEeKsOLt3X9dUzg" name="Value(": ")">
+ <result xmi:id="_JXnrHpMrEeKsOLt3X9dUzg" name="Value(": ").result" outgoing="_JXnrR5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrH5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrIJMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_JXnrIZMrEeKsOLt3X9dUzg" value=": ">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_JXnrIpMrEeKsOLt3X9dUzg" name="Call(Concat)">
+ <argument xmi:id="_JXnrI5MrEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_JXnrRpMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrJJMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrJZMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_JXnrJpMrEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_JXnrR5MrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrJ5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrKJMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <result xmi:id="_JXnrKZMrEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_JXnrSpMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrKpMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrK5MrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_JXnrLJMrEeKsOLt3X9dUzg" name="Call(ToString)" incoming="_JXnrSZMrEeKsOLt3X9dUzg">
+ <argument xmi:id="_JXnrLZMrEeKsOLt3X9dUzg" name="Call(ToString).argument(x)" incoming="_JXnrSJMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrLpMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrL5MrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <result xmi:id="_JXnrMJMrEeKsOLt3X9dUzg" name="Call(ToString).result(result)" outgoing="_JXnrS5MrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrMZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrMpMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-BooleanFunctions-ToString"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_JXnrM5MrEeKsOLt3X9dUzg" name="Tuple@1ab3429" outgoing="_JXnrSZMrEeKsOLt3X9dUzg">
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_JXnrNJMrEeKsOLt3X9dUzg" name="Call(Not)">
+ <argument xmi:id="_JXnrNZMrEeKsOLt3X9dUzg" name="Call(Not).argument(x)" incoming="_JXtxoZMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrNpMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrN5MrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <result xmi:id="_JXnrOJMrEeKsOLt3X9dUzg" name="Call(Not).result(result)" outgoing="_JXnrSJMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrOZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrOpMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-BooleanFunctions-Not"/>
+ </node>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_JXnrO5MrEeKsOLt3X9dUzg" name="Call(Concat)">
+ <argument xmi:id="_JXnrPJMrEeKsOLt3X9dUzg" name="Call(Concat).argument(x)" incoming="_JXnrSpMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrPZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrPpMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_JXnrP5MrEeKsOLt3X9dUzg" name="Call(Concat).argument(y)" incoming="_JXnrS5MrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrQJMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrQZMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <result xmi:id="_JXnrQpMrEeKsOLt3X9dUzg" name="Call(Concat).result(result)" outgoing="_JXnrTJMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_JXnrQ5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_JXnrRJMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ </node>
+ </node>
+ </structuredNode>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="_JXnrAJMrEeKsOLt3X9dUzg" name="Input(label)" outgoing="_JXnrTpMrEeKsOLt3X9dUzg" parameter="_wKWOho19EeK7gYOtibANUw"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_JXnrAZMrEeKsOLt3X9dUzg" name="Fork(label)" incoming="_JXnrTpMrEeKsOLt3X9dUzg" outgoing="_JXtxoJMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="_JXnrApMrEeKsOLt3X9dUzg" name="Input(condition)" outgoing="_JXnrT5MrEeKsOLt3X9dUzg" parameter="_wKWOiY19EeK7gYOtibANUw"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_JXnrA5MrEeKsOLt3X9dUzg" name="Fork(condition)" incoming="_JXnrT5MrEeKsOLt3X9dUzg" outgoing="_JXtxoZMrEeKsOLt3X9dUzg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:OpaqueBehavior" xmi:id="_-Y3PAIgUEeKtquXykzQHVw" name="AssertList" group="_iQsVtpcCEeKVudOPtQ6VQg" node="_iQsVsJcCEeKVudOPtQ6VQg _iQsVsZcCEeKVudOPtQ6VQg _iQsVspcCEeKVudOPtQ6VQg _iQsVs5cCEeKVudOPtQ6VQg _iQsVtJcCEeKVudOPtQ6VQg _iQsVtZcCEeKVudOPtQ6VQg _iQsVtpcCEeKVudOPtQ6VQg">
+ <ownedComment xmi:id="_2i470IgVEeKtquXykzQHVw">
+ <body>namespace AssertionLibrary::AssertList ;
+
+private import Alf::Library::CollectionFunctions::size ;
+private import Alf::Library::PrimitiveBehaviors::* ;
+
+activity AssertList(in label: String, in list: any[*] sequence, in expected: any[*] sequence) {
+ AssertEquals(label + "->size()", list->size(), expected->size());
+ for (i in 1..IntegerFunctions::Min(list->size(),expected->size())) {
+ AssertEquals(label + "[" + IntegerFunctions::ToString(i) + "]", list[i], expected[i]);
+ }
+}</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_AserUJF0EeKLspnMdnbsRA" name="label">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_Bqqx4JF0EeKLspnMdnbsRA" name="list" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_KncfoJF0EeKLspnMdnbsRA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_KnmQoJF0EeKLspnMdnbsRA" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_BxEU0JF0EeKLspnMdnbsRA" name="expected" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_NEZqQJF0EeKLspnMdnbsRA"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_NEZqQZF0EeKLspnMdnbsRA" value="*"/>
+ </ownedParameter>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1foJcCEeKVudOPtQ6VQg" target="_iQsVsZcCEeKVudOPtQ6VQg" source="_iQsVsJcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1foZcCEeKVudOPtQ6VQg" target="_iQsVs5cCEeKVudOPtQ6VQg" source="_iQsVspcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fopcCEeKVudOPtQ6VQg" target="_iQsVtZcCEeKVudOPtQ6VQg" source="_iQsVtJcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fo5cCEeKVudOPtQ6VQg" target="_iQsVyZcCEeKVudOPtQ6VQg" source="_iQsVsZcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fpJcCEeKVudOPtQ6VQg" target="_iQsV05cCEeKVudOPtQ6VQg" source="_iQsVs5cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fpZcCEeKVudOPtQ6VQg" target="_iQsV2pcCEeKVudOPtQ6VQg" source="_iQsVtZcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fppcCEeKVudOPtQ6VQg" target="_iQsWuJcCEeKVudOPtQ6VQg" source="_iQsVtZcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fp5cCEeKVudOPtQ6VQg" target="_iQsWu5cCEeKVudOPtQ6VQg" source="_iQsVs5cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fqJcCEeKVudOPtQ6VQg" target="_iQsWvpcCEeKVudOPtQ6VQg" source="_iQsVsZcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fqZcCEeKVudOPtQ6VQg" target="_iQsXAJcCEeKVudOPtQ6VQg" source="_iQsVs5cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQ1fqpcCEeKVudOPtQ6VQg" target="_iQsXB5cCEeKVudOPtQ6VQg" source="_iQsVtZcCEeKVudOPtQ6VQg"/>
+ <structuredNode xmi:id="_iQsVtpcCEeKVudOPtQ6VQg" name="Body(AssertList)">
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsVt5cCEeKVudOPtQ6VQg" name="ExpressionStatement@909f34" outgoing="_iQsXOJcCEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsV4ZcCEeKVudOPtQ6VQg" target="_iQsVuZcCEeKVudOPtQ6VQg" source="_iQsVz5cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsV4pcCEeKVudOPtQ6VQg" target="_iQsVvJcCEeKVudOPtQ6VQg" source="_iQsV1pcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsV45cCEeKVudOPtQ6VQg" target="_iQsVv5cCEeKVudOPtQ6VQg" source="_iQsV3ZcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_iQsV5JcCEeKVudOPtQ6VQg" target="_iQsVuJcCEeKVudOPtQ6VQg" source="_iQsVwpcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsVuJcCEeKVudOPtQ6VQg" name="Call(AssertEquals)" incoming="_iQsV5JcCEeKVudOPtQ6VQg" behavior="_8kE3oIgUEeKtquXykzQHVw">
+ <argument xmi:id="_iQsVuZcCEeKVudOPtQ6VQg" name="Call(AssertEquals).argument(label)" incoming="_iQsV4ZcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsVupcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsVu5cCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_iQsVvJcCEeKVudOPtQ6VQg" name="Call(AssertEquals).argument(value1)" incoming="_iQsV4pcCEeKVudOPtQ6VQg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsVvZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsVvpcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_iQsVv5cCEeKVudOPtQ6VQg" name="Call(AssertEquals).argument(value2)" incoming="_iQsV45cCEeKVudOPtQ6VQg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsVwJcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsVwZcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsVwpcCEeKVudOPtQ6VQg" name="Tuple@313837" outgoing="_iQsV5JcCEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsV4JcCEeKVudOPtQ6VQg" target="_iQsVzJcCEeKVudOPtQ6VQg" source="_iQsVxJcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsVw5cCEeKVudOPtQ6VQg" name="Value("->size()")">
+ <result xmi:id="_iQsVxJcCEeKVudOPtQ6VQg" name="Value("->size()").result" outgoing="_iQsV4JcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsVxZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsVxpcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_iQsVx5cCEeKVudOPtQ6VQg" value="->size()">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsVyJcCEeKVudOPtQ6VQg" name="Call(Concat)">
+ <argument xmi:id="_iQsVyZcCEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="_iQ1fo5cCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsVypcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsVy5cCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_iQsVzJcCEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="_iQsV4JcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsVzZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsVzpcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="_iQsVz5cCEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="_iQsV4ZcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV0JcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV0ZcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsV0pcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__)" behavior="_iPgC4JcCEeKVudOPtQ6VQg">
+ <argument xmi:id="_iQsV05cCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).argument(seq)" incoming="_iQ1fpJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV1JcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV1ZcCEeKVudOPtQ6VQg" value="*"/>
+ </argument>
+ <result xmi:id="_iQsV1pcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).result()" outgoing="_iQsV4pcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV15cCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV2JcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsV2ZcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__)" behavior="_iPgC4JcCEeKVudOPtQ6VQg">
+ <argument xmi:id="_iQsV2pcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).argument(seq)" incoming="_iQ1fpZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV25cCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV3JcCEeKVudOPtQ6VQg" value="*"/>
+ </argument>
+ <result xmi:id="_iQsV3ZcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).result()" outgoing="_iQsV45cCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV3pcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV35cCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsV5ZcCEeKVudOPtQ6VQg" name="ForStatement@6b305d" incoming="_iQsXOJcCEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXM5cCEeKVudOPtQ6VQg" target="_iQsXDZcCEeKVudOPtQ6VQg" source="_iQsW8JcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXNJcCEeKVudOPtQ6VQg" target="_iQsWxJcCEeKVudOPtQ6VQg" source="_iQsXKJcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXNZcCEeKVudOPtQ6VQg" target="_iQsWx5cCEeKVudOPtQ6VQg" source="_iQsXJJcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXNpcCEeKVudOPtQ6VQg" target="_iQsWwZcCEeKVudOPtQ6VQg" source="_iQsXDZcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_iQsXN5cCEeKVudOPtQ6VQg" target="_iQsV5pcCEeKVudOPtQ6VQg" source="_iQsW7pcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:LoopNode" xmi:id="_iQsV5pcCEeKVudOPtQ6VQg" name="Loop(ForStatement@6b305d)" incoming="_iQsXN5cCEeKVudOPtQ6VQg" bodyOutput="_iQsWbpcCEeKVudOPtQ6VQg _iQsWcZcCEeKVudOPtQ6VQg _iQsWdJcCEeKVudOPtQ6VQg _iQsWgZcCEeKVudOPtQ6VQg _iQsWkJcCEeKVudOPtQ6VQg _iQsWnJcCEeKVudOPtQ6VQg" bodyPart="_iQsV95cCEeKVudOPtQ6VQg _iQsV-ZcCEeKVudOPtQ6VQg _iQsWepcCEeKVudOPtQ6VQg _iQsWhJcCEeKVudOPtQ6VQg _iQsWiZcCEeKVudOPtQ6VQg _iQsWk5cCEeKVudOPtQ6VQg _iQsWmJcCEeKVudOPtQ6VQg" decider="_iQsV9JcCEeKVudOPtQ6VQg" isTestedFirst="true" test="_iQsV7ZcCEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWoJcCEeKVudOPtQ6VQg" target="_iQsV55cCEeKVudOPtQ6VQg" source="_iQsWypcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWoZcCEeKVudOPtQ6VQg" target="_iQsV6JcCEeKVudOPtQ6VQg" source="_iQsW0JcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWopcCEeKVudOPtQ6VQg" target="_iQsV6ZcCEeKVudOPtQ6VQg" source="_iQsW1pcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWo5cCEeKVudOPtQ6VQg" target="_iQsV6pcCEeKVudOPtQ6VQg" source="_iQsW3JcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWpJcCEeKVudOPtQ6VQg" target="_iQsV65cCEeKVudOPtQ6VQg" source="_iQsW4pcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWpZcCEeKVudOPtQ6VQg" target="_iQsV7JcCEeKVudOPtQ6VQg" source="_iQsW6JcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWppcCEeKVudOPtQ6VQg" target="_iQsV7pcCEeKVudOPtQ6VQg" source="_iQsV65cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWp5cCEeKVudOPtQ6VQg" target="_iQsV8ZcCEeKVudOPtQ6VQg" source="_iQsV7JcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWqJcCEeKVudOPtQ6VQg" target="_iQsV-JcCEeKVudOPtQ6VQg" source="_iQsW3JcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_iQsWqZcCEeKVudOPtQ6VQg" target="_iQsV-ZcCEeKVudOPtQ6VQg" source="_iQsV95cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWqpcCEeKVudOPtQ6VQg" target="_iQsWFpcCEeKVudOPtQ6VQg" source="_iQsV-JcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWq5cCEeKVudOPtQ6VQg" target="_iQsWP5cCEeKVudOPtQ6VQg" source="_iQsV-JcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWrJcCEeKVudOPtQ6VQg" target="_iQsWSpcCEeKVudOPtQ6VQg" source="_iQsV-JcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWrZcCEeKVudOPtQ6VQg" target="_iQsWe5cCEeKVudOPtQ6VQg" source="_iQsV6pcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWrpcCEeKVudOPtQ6VQg" target="_iQsWfpcCEeKVudOPtQ6VQg" source="_iQsWhZcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWr5cCEeKVudOPtQ6VQg" target="_iQsWipcCEeKVudOPtQ6VQg" source="_iQsV65cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWsJcCEeKVudOPtQ6VQg" target="_iQsWjZcCEeKVudOPtQ6VQg" source="_iQsWlJcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWsZcCEeKVudOPtQ6VQg" target="_iQsWmZcCEeKVudOPtQ6VQg" source="_iQsV7JcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWspcCEeKVudOPtQ6VQg" target="_iQsWDJcCEeKVudOPtQ6VQg" source="_iQsV6ZcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWs5cCEeKVudOPtQ6VQg" target="_iQsWNpcCEeKVudOPtQ6VQg" source="_iQsV6JcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWtJcCEeKVudOPtQ6VQg" target="_iQsWQZcCEeKVudOPtQ6VQg" source="_iQsV55cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWtZcCEeKVudOPtQ6VQg" target="_iQsWV5cCEeKVudOPtQ6VQg" source="_iQsV55cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWtpcCEeKVudOPtQ6VQg" target="_iQsWX5cCEeKVudOPtQ6VQg" source="_iQsV6JcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWt5cCEeKVudOPtQ6VQg" target="_iQsWZ5cCEeKVudOPtQ6VQg" source="_iQsV6ZcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_iQsV55cCEeKVudOPtQ6VQg" name="Fork(ForStatement@6b305d.loopVariable(expected))" incoming="_iQsWoJcCEeKVudOPtQ6VQg" outgoing="_iQsWtJcCEeKVudOPtQ6VQg _iQsWtZcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_iQsV6JcCEeKVudOPtQ6VQg" name="Fork(ForStatement@6b305d.loopVariable(list))" incoming="_iQsWoZcCEeKVudOPtQ6VQg" outgoing="_iQsWs5cCEeKVudOPtQ6VQg _iQsWtpcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_iQsV6ZcCEeKVudOPtQ6VQg" name="Fork(ForStatement@6b305d.loopVariable(label))" incoming="_iQsWopcCEeKVudOPtQ6VQg" outgoing="_iQsWspcCEeKVudOPtQ6VQg _iQsWt5cCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_iQsV6pcCEeKVudOPtQ6VQg" name="Fork(ForStatement@6b305d.loopVariable(i))" incoming="_iQsWo5cCEeKVudOPtQ6VQg" outgoing="_iQsWrZcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_iQsV65cCEeKVudOPtQ6VQg" name="Fork(ForStatement@6b305d.loopVariable(counter))" incoming="_iQsWpJcCEeKVudOPtQ6VQg" outgoing="_iQsWppcCEeKVudOPtQ6VQg _iQsWr5cCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_iQsV7JcCEeKVudOPtQ6VQg" name="Fork(ForStatement@6b305d.loopVariable(upper))" incoming="_iQsWpZcCEeKVudOPtQ6VQg" outgoing="_iQsWp5cCEeKVudOPtQ6VQg _iQsWsZcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsV7ZcCEeKVudOPtQ6VQg" name="Call(<=)">
+ <argument xmi:id="_iQsV7pcCEeKVudOPtQ6VQg" name="Call(<=).argument(x)" incoming="_iQsWppcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV75cCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV8JcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_iQsV8ZcCEeKVudOPtQ6VQg" name="Call(<=).argument(y)" incoming="_iQsWp5cCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV8pcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV85cCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="_iQsV9JcCEeKVudOPtQ6VQg" name="Call(<=).result(result)">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV9ZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV9pcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-le"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsV95cCEeKVudOPtQ6VQg" name="Values(ForStatement@6b305d)" outgoing="_iQsWqZcCEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ForkNode" xmi:id="_iQsV-JcCEeKVudOPtQ6VQg" name="Fork(i)" incoming="_iQsWqJcCEeKVudOPtQ6VQg" outgoing="_iQsWqpcCEeKVudOPtQ6VQg _iQsWq5cCEeKVudOPtQ6VQg _iQsWrJcCEeKVudOPtQ6VQg"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsV-ZcCEeKVudOPtQ6VQg" name="Body(ForStatement@6b305d)" incoming="_iQsWqZcCEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWd5cCEeKVudOPtQ6VQg" target="_iQsWbpcCEeKVudOPtQ6VQg" source="_iQsWWpcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWeJcCEeKVudOPtQ6VQg" target="_iQsWcZcCEeKVudOPtQ6VQg" source="_iQsWYpcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWeZcCEeKVudOPtQ6VQg" target="_iQsWdJcCEeKVudOPtQ6VQg" source="_iQsWapcCEeKVudOPtQ6VQg"/>
+ <structuredNodeOutput xmi:id="_iQsWbpcCEeKVudOPtQ6VQg" name="expected" incoming="_iQsWd5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWb5cCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWcJcCEeKVudOPtQ6VQg" value="*"/>
+ </structuredNodeOutput>
+ <structuredNodeOutput xmi:id="_iQsWcZcCEeKVudOPtQ6VQg" name="list" incoming="_iQsWeJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWcpcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWc5cCEeKVudOPtQ6VQg" value="*"/>
+ </structuredNodeOutput>
+ <structuredNodeOutput xmi:id="_iQsWdJcCEeKVudOPtQ6VQg" name="label" incoming="_iQsWeZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWdZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWdpcCEeKVudOPtQ6VQg" value="1"/>
+ </structuredNodeOutput>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsV-pcCEeKVudOPtQ6VQg" name="ExpressionStatement@1efbdc9">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWUpcCEeKVudOPtQ6VQg" target="_iQsV_JcCEeKVudOPtQ6VQg" source="_iQsWMpcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWU5cCEeKVudOPtQ6VQg" target="_iQsV_5cCEeKVudOPtQ6VQg" source="_iQsWPJcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWVJcCEeKVudOPtQ6VQg" target="_iQsWApcCEeKVudOPtQ6VQg" source="_iQsWR5cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_iQsWVZcCEeKVudOPtQ6VQg" target="_iQsV-5cCEeKVudOPtQ6VQg" source="_iQsWBZcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsV-5cCEeKVudOPtQ6VQg" name="Call(AssertEquals)" incoming="_iQsWVZcCEeKVudOPtQ6VQg" behavior="_8kE3oIgUEeKtquXykzQHVw">
+ <argument xmi:id="_iQsV_JcCEeKVudOPtQ6VQg" name="Call(AssertEquals).argument(label)" incoming="_iQsWUpcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsV_ZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsV_pcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_iQsV_5cCEeKVudOPtQ6VQg" name="Call(AssertEquals).argument(value1)" incoming="_iQsWU5cCEeKVudOPtQ6VQg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWAJcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWAZcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_iQsWApcCEeKVudOPtQ6VQg" name="Call(AssertEquals).argument(value2)" incoming="_iQsWVJcCEeKVudOPtQ6VQg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWA5cCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWBJcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsWBZcCEeKVudOPtQ6VQg" name="Tuple@6d8cc8" outgoing="_iQsWVZcCEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWS5cCEeKVudOPtQ6VQg" target="_iQsWD5cCEeKVudOPtQ6VQg" source="_iQsWB5cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWTJcCEeKVudOPtQ6VQg" target="_iQsWHZcCEeKVudOPtQ6VQg" source="_iQsWEpcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWTZcCEeKVudOPtQ6VQg" target="_iQsWIJcCEeKVudOPtQ6VQg" source="_iQsWGZcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWTpcCEeKVudOPtQ6VQg" target="_iQsWLJcCEeKVudOPtQ6VQg" source="_iQsWI5cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWT5cCEeKVudOPtQ6VQg" target="_iQsWL5cCEeKVudOPtQ6VQg" source="_iQsWJ5cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWUJcCEeKVudOPtQ6VQg" target="_iQsWOZcCEeKVudOPtQ6VQg" source="_iQsWP5cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWUZcCEeKVudOPtQ6VQg" target="_iQsWRJcCEeKVudOPtQ6VQg" source="_iQsWSpcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsWBpcCEeKVudOPtQ6VQg" name="Value("[")">
+ <result xmi:id="_iQsWB5cCEeKVudOPtQ6VQg" name="Value("[").result" outgoing="_iQsWS5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWCJcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWCZcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_iQsWCpcCEeKVudOPtQ6VQg" value="[">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWC5cCEeKVudOPtQ6VQg" name="Call(Concat)">
+ <argument xmi:id="_iQsWDJcCEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="_iQsWspcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWDZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWDpcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_iQsWD5cCEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="_iQsWS5cCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWEJcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWEZcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="_iQsWEpcCEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="_iQsWTJcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWE5cCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWFJcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWFZcCEeKVudOPtQ6VQg" name="Call(ToString)">
+ <argument xmi:id="_iQsWFpcCEeKVudOPtQ6VQg" name="Call(ToString).argument(x)" incoming="_iQsWqpcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWF5cCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWGJcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="_iQsWGZcCEeKVudOPtQ6VQg" name="Call(ToString).result(result)" outgoing="_iQsWTZcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWGpcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWG5cCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-ToString"/>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWHJcCEeKVudOPtQ6VQg" name="Call(Concat)">
+ <argument xmi:id="_iQsWHZcCEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="_iQsWTJcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWHpcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWH5cCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_iQsWIJcCEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="_iQsWTZcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWIZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWIpcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="_iQsWI5cCEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="_iQsWTpcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWJJcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWJZcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsWJpcCEeKVudOPtQ6VQg" name="Value("]")">
+ <result xmi:id="_iQsWJ5cCEeKVudOPtQ6VQg" name="Value("]").result" outgoing="_iQsWT5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWKJcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWKZcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_iQsWKpcCEeKVudOPtQ6VQg" value="]">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWK5cCEeKVudOPtQ6VQg" name="Call(Concat)">
+ <argument xmi:id="_iQsWLJcCEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="_iQsWTpcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWLZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWLpcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_iQsWL5cCEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="_iQsWT5cCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWMJcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWMZcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="_iQsWMpcCEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="_iQsWUpcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWM5cCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWNJcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWNZcCEeKVudOPtQ6VQg" name="Call(At)">
+ <argument xmi:id="_iQsWNpcCEeKVudOPtQ6VQg" name="Call(At).argument(seq)" incoming="_iQsWs5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWN5cCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWOJcCEeKVudOPtQ6VQg" value="*"/>
+ </argument>
+ <argument xmi:id="_iQsWOZcCEeKVudOPtQ6VQg" name="Call(At).argument(index)" incoming="_iQsWUJcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWOpcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWO5cCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="_iQsWPJcCEeKVudOPtQ6VQg" name="Call(At).result()" outgoing="_iQsWU5cCEeKVudOPtQ6VQg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWPZcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWPpcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveBehaviors-SequenceFunctions-At"/>
+ </node>
+ <node xmi:type="uml:ForkNode" xmi:id="_iQsWP5cCEeKVudOPtQ6VQg" name="Fork(Call(At).argument(index))" incoming="_iQsWq5cCEeKVudOPtQ6VQg" outgoing="_iQsWUJcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWQJcCEeKVudOPtQ6VQg" name="Call(At)">
+ <argument xmi:id="_iQsWQZcCEeKVudOPtQ6VQg" name="Call(At).argument(seq)" incoming="_iQsWtJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWQpcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWQ5cCEeKVudOPtQ6VQg" value="*"/>
+ </argument>
+ <argument xmi:id="_iQsWRJcCEeKVudOPtQ6VQg" name="Call(At).argument(index)" incoming="_iQsWUZcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWRZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWRpcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="_iQsWR5cCEeKVudOPtQ6VQg" name="Call(At).result()" outgoing="_iQsWVJcCEeKVudOPtQ6VQg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWSJcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWSZcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveBehaviors-SequenceFunctions-At"/>
+ </node>
+ <node xmi:type="uml:ForkNode" xmi:id="_iQsWSpcCEeKVudOPtQ6VQg" name="Fork(Call(At).argument(index))" incoming="_iQsWrJcCEeKVudOPtQ6VQg" outgoing="_iQsWUZcCEeKVudOPtQ6VQg"/>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsWVpcCEeKVudOPtQ6VQg" name="Passthru(Fork(expected))">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWXZcCEeKVudOPtQ6VQg" target="_iQsWWpcCEeKVudOPtQ6VQg" source="_iQsWV5cCEeKVudOPtQ6VQg"/>
+ <structuredNodeInput xmi:id="_iQsWV5cCEeKVudOPtQ6VQg" name="Passthru(Fork(expected)).input" incoming="_iQsWtZcCEeKVudOPtQ6VQg" outgoing="_iQsWXZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWWJcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWWZcCEeKVudOPtQ6VQg" value="*"/>
+ </structuredNodeInput>
+ <structuredNodeOutput xmi:id="_iQsWWpcCEeKVudOPtQ6VQg" name="Passthru(Fork(expected)).output" incoming="_iQsWXZcCEeKVudOPtQ6VQg" outgoing="_iQsWd5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWW5cCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWXJcCEeKVudOPtQ6VQg" value="*"/>
+ </structuredNodeOutput>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsWXpcCEeKVudOPtQ6VQg" name="Passthru(Fork(list))">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWZZcCEeKVudOPtQ6VQg" target="_iQsWYpcCEeKVudOPtQ6VQg" source="_iQsWX5cCEeKVudOPtQ6VQg"/>
+ <structuredNodeInput xmi:id="_iQsWX5cCEeKVudOPtQ6VQg" name="Passthru(Fork(list)).input" incoming="_iQsWtpcCEeKVudOPtQ6VQg" outgoing="_iQsWZZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWYJcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWYZcCEeKVudOPtQ6VQg" value="*"/>
+ </structuredNodeInput>
+ <structuredNodeOutput xmi:id="_iQsWYpcCEeKVudOPtQ6VQg" name="Passthru(Fork(list)).output" incoming="_iQsWZZcCEeKVudOPtQ6VQg" outgoing="_iQsWeJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWY5cCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWZJcCEeKVudOPtQ6VQg" value="*"/>
+ </structuredNodeOutput>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsWZpcCEeKVudOPtQ6VQg" name="Passthru(Fork(label))">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWbZcCEeKVudOPtQ6VQg" target="_iQsWapcCEeKVudOPtQ6VQg" source="_iQsWZ5cCEeKVudOPtQ6VQg"/>
+ <structuredNodeInput xmi:id="_iQsWZ5cCEeKVudOPtQ6VQg" name="Passthru(Fork(label)).input" incoming="_iQsWt5cCEeKVudOPtQ6VQg" outgoing="_iQsWbZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWaJcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWaZcCEeKVudOPtQ6VQg" value="1"/>
+ </structuredNodeInput>
+ <structuredNodeOutput xmi:id="_iQsWapcCEeKVudOPtQ6VQg" name="Passthru(Fork(label)).output" incoming="_iQsWbZcCEeKVudOPtQ6VQg" outgoing="_iQsWeZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWa5cCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWbJcCEeKVudOPtQ6VQg" value="1"/>
+ </structuredNodeOutput>
+ </node>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWepcCEeKVudOPtQ6VQg" name="Call(+)">
+ <argument xmi:id="_iQsWe5cCEeKVudOPtQ6VQg" name="Call(+).argument(x)" incoming="_iQsWrZcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWfJcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWfZcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_iQsWfpcCEeKVudOPtQ6VQg" name="Call(+).argument(y)" incoming="_iQsWrpcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWf5cCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWgJcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="_iQsWgZcCEeKVudOPtQ6VQg" name="Call(+).result(result)">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWgpcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWg5cCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-plus"/>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsWhJcCEeKVudOPtQ6VQg" name="Value(1)">
+ <result xmi:id="_iQsWhZcCEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_iQsWrpcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWhpcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWh5cCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_iQsWiJcCEeKVudOPtQ6VQg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsWiZcCEeKVudOPtQ6VQg" name="Call(+)">
+ <argument xmi:id="_iQsWipcCEeKVudOPtQ6VQg" name="Call(+).argument(x)" incoming="_iQsWr5cCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWi5cCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWjJcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_iQsWjZcCEeKVudOPtQ6VQg" name="Call(+).argument(y)" incoming="_iQsWsJcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWjpcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWj5cCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="_iQsWkJcCEeKVudOPtQ6VQg" name="Call(+).result(result)">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWkZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWkpcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-plus"/>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsWk5cCEeKVudOPtQ6VQg" name="Value(1)">
+ <result xmi:id="_iQsWlJcCEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_iQsWsJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWlZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWlpcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_iQsWl5cCEeKVudOPtQ6VQg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsWmJcCEeKVudOPtQ6VQg" name="Passthru(Passthru(upper))">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsWn5cCEeKVudOPtQ6VQg" target="_iQsWnJcCEeKVudOPtQ6VQg" source="_iQsWmZcCEeKVudOPtQ6VQg"/>
+ <structuredNodeInput xmi:id="_iQsWmZcCEeKVudOPtQ6VQg" name="Passthru(Passthru(upper)).input" incoming="_iQsWsZcCEeKVudOPtQ6VQg" outgoing="_iQsWn5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWmpcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWm5cCEeKVudOPtQ6VQg" value="1"/>
+ </structuredNodeInput>
+ <structuredNodeOutput xmi:id="_iQsWnJcCEeKVudOPtQ6VQg" name="Passthru(Passthru(upper)).output" incoming="_iQsWn5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWnZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWnpcCEeKVudOPtQ6VQg" value="1"/>
+ </structuredNodeOutput>
+ </node>
+ <loopVariable xmi:id="_iQsWypcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariable(expected)" outgoing="_iQsWoJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWy5cCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWzJcCEeKVudOPtQ6VQg" value="*"/>
+ </loopVariable>
+ <loopVariable xmi:id="_iQsW0JcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariable(list)" outgoing="_iQsWoZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW0ZcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW0pcCEeKVudOPtQ6VQg" value="*"/>
+ </loopVariable>
+ <loopVariable xmi:id="_iQsW1pcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariable(label)" outgoing="_iQsWopcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW15cCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW2JcCEeKVudOPtQ6VQg" value="1"/>
+ </loopVariable>
+ <loopVariable xmi:id="_iQsW3JcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariable(i)" outgoing="_iQsWo5cCEeKVudOPtQ6VQg _iQsWqJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW3ZcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW3pcCEeKVudOPtQ6VQg" value="*"/>
+ </loopVariable>
+ <loopVariable xmi:id="_iQsW4pcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariable(counter)" outgoing="_iQsWpJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW45cCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW5JcCEeKVudOPtQ6VQg" value="1"/>
+ </loopVariable>
+ <loopVariable xmi:id="_iQsW6JcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariable(upper)" outgoing="_iQsWpZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW6ZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW6pcCEeKVudOPtQ6VQg" value="1"/>
+ </loopVariable>
+ <loopVariableInput xmi:id="_iQsWuJcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariableInput(expected)" incoming="_iQ1fppcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWuZcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWupcCEeKVudOPtQ6VQg" value="*"/>
+ </loopVariableInput>
+ <loopVariableInput xmi:id="_iQsWu5cCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariableInput(list)" incoming="_iQ1fp5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWvJcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWvZcCEeKVudOPtQ6VQg" value="*"/>
+ </loopVariableInput>
+ <loopVariableInput xmi:id="_iQsWvpcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariableInput(label)" incoming="_iQ1fqJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWv5cCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWwJcCEeKVudOPtQ6VQg" value="1"/>
+ </loopVariableInput>
+ <loopVariableInput xmi:id="_iQsWwZcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariableInput(i)" incoming="_iQsXNpcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWwpcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWw5cCEeKVudOPtQ6VQg" value="1"/>
+ </loopVariableInput>
+ <loopVariableInput xmi:id="_iQsWxJcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariableInput(counter)" incoming="_iQsXNJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWxZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWxpcCEeKVudOPtQ6VQg" value="1"/>
+ </loopVariableInput>
+ <loopVariableInput xmi:id="_iQsWx5cCEeKVudOPtQ6VQg" name="ForStatement@6b305d.loopVariableInput(upper)" incoming="_iQsXNZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWyJcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWyZcCEeKVudOPtQ6VQg" value="1"/>
+ </loopVariableInput>
+ <result xmi:id="_iQsWzZcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.result(expected)" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsWzpcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsWz5cCEeKVudOPtQ6VQg" value="*"/>
+ </result>
+ <result xmi:id="_iQsW05cCEeKVudOPtQ6VQg" name="ForStatement@6b305d.result(list)" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW1JcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW1ZcCEeKVudOPtQ6VQg" value="*"/>
+ </result>
+ <result xmi:id="_iQsW2ZcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.result(label)" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW2pcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW25cCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <result xmi:id="_iQsW35cCEeKVudOPtQ6VQg" name="ForStatement@6b305d.result(i)" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW4JcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW4ZcCEeKVudOPtQ6VQg" value="*"/>
+ </result>
+ <result xmi:id="_iQsW5ZcCEeKVudOPtQ6VQg" name="ForStatement@6b305d.result(counter)" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW5pcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW55cCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <result xmi:id="_iQsW65cCEeKVudOPtQ6VQg" name="ForStatement@6b305d.result(upper)" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW7JcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW7ZcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsW7pcCEeKVudOPtQ6VQg" name="LoopVariables(ForStatement@6b305d)" outgoing="_iQsXN5cCEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXLJcCEeKVudOPtQ6VQg" target="_iQsW9ZcCEeKVudOPtQ6VQg" source="_iQsXA5cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXLZcCEeKVudOPtQ6VQg" target="_iQsW-JcCEeKVudOPtQ6VQg" source="_iQsXCpcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_iQsXLpcCEeKVudOPtQ6VQg" target="_iQsW9JcCEeKVudOPtQ6VQg" source="_iQsW_pcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXL5cCEeKVudOPtQ6VQg" target="_iQsXD5cCEeKVudOPtQ6VQg" source="_iQsW-5cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXMJcCEeKVudOPtQ6VQg" target="_iQsXEpcCEeKVudOPtQ6VQg" source="_iQsXDZcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXMZcCEeKVudOPtQ6VQg" target="_iQsXHpcCEeKVudOPtQ6VQg" source="_iQsXFZcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iQsXMpcCEeKVudOPtQ6VQg" target="_iQsXIZcCEeKVudOPtQ6VQg" source="_iQsXGZcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsW75cCEeKVudOPtQ6VQg" name="Value(1)">
+ <result xmi:id="_iQsW8JcCEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_iQsXM5cCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW8ZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW8pcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_iQsW85cCEeKVudOPtQ6VQg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsW9JcCEeKVudOPtQ6VQg" name="Call(Min)" incoming="_iQsXLpcCEeKVudOPtQ6VQg">
+ <argument xmi:id="_iQsW9ZcCEeKVudOPtQ6VQg" name="Call(Min).argument(x)" incoming="_iQsXLJcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW9pcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW95cCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_iQsW-JcCEeKVudOPtQ6VQg" name="Call(Min).argument(y)" incoming="_iQsXLZcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW-ZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW-pcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="_iQsW-5cCEeKVudOPtQ6VQg" name="Call(Min).result(result)" outgoing="_iQsXL5cCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsW_JcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsW_ZcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-Min"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_iQsW_pcCEeKVudOPtQ6VQg" name="Tuple@2ed28b" outgoing="_iQsXLpcCEeKVudOPtQ6VQg">
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsW_5cCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__)" behavior="_iPgC4JcCEeKVudOPtQ6VQg">
+ <argument xmi:id="_iQsXAJcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).argument(seq)" incoming="_iQ1fqZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXAZcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXApcCEeKVudOPtQ6VQg" value="*"/>
+ </argument>
+ <result xmi:id="_iQsXA5cCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).result()" outgoing="_iQsXLJcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXBJcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXBZcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsXBpcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__)" behavior="_iPgC4JcCEeKVudOPtQ6VQg">
+ <argument xmi:id="_iQsXB5cCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).argument(seq)" incoming="_iQ1fqpcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXCJcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXCZcCEeKVudOPtQ6VQg" value="*"/>
+ </argument>
+ <result xmi:id="_iQsXCpcCEeKVudOPtQ6VQg" name="Call($$Alf$Library$CollectionFunctions$size__any__).result()" outgoing="_iQsXLZcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXC5cCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXDJcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ </node>
+ </node>
+ <node xmi:type="uml:ForkNode" xmi:id="_iQsXDZcCEeKVudOPtQ6VQg" name="Fork(Value(1).result)" incoming="_iQsXM5cCEeKVudOPtQ6VQg" outgoing="_iQsXNpcCEeKVudOPtQ6VQg _iQsXMJcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsXDpcCEeKVudOPtQ6VQg" name="Call(-)">
+ <argument xmi:id="_iQsXD5cCEeKVudOPtQ6VQg" name="Call(-).argument(x)" incoming="_iQsXL5cCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXEJcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXEZcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_iQsXEpcCEeKVudOPtQ6VQg" name="Call(-).argument(y)" incoming="_iQsXMJcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXE5cCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXFJcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="_iQsXFZcCEeKVudOPtQ6VQg" name="Call(-).result(result)" outgoing="_iQsXMZcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXFpcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXF5cCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-minus"/>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsXGJcCEeKVudOPtQ6VQg" name="Value(1)">
+ <result xmi:id="_iQsXGZcCEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_iQsXMpcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXGpcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXG5cCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_iQsXHJcCEeKVudOPtQ6VQg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iQsXHZcCEeKVudOPtQ6VQg" name="Call(+)">
+ <argument xmi:id="_iQsXHpcCEeKVudOPtQ6VQg" name="Call(+).argument(x)" incoming="_iQsXMZcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXH5cCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXIJcCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_iQsXIZcCEeKVudOPtQ6VQg" name="Call(+).argument(y)" incoming="_iQsXMpcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXIpcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXI5cCEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="_iQsXJJcCEeKVudOPtQ6VQg" name="Call(+).result(result)" outgoing="_iQsXNZcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXJZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXJpcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-IntegerFunctions-plus"/>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_iQsXJ5cCEeKVudOPtQ6VQg" name="Value(1)">
+ <result xmi:id="_iQsXKJcCEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_iQsXNJcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iQsXKZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iQsXKpcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_iQsXK5cCEeKVudOPtQ6VQg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_iQsXOJcCEeKVudOPtQ6VQg" target="_iQsV5ZcCEeKVudOPtQ6VQg" source="_iQsVt5cCEeKVudOPtQ6VQg"/>
+ </structuredNode>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="_iQsVsJcCEeKVudOPtQ6VQg" name="Input(label)" outgoing="_iQ1foJcCEeKVudOPtQ6VQg" parameter="_AserUJF0EeKLspnMdnbsRA"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_iQsVsZcCEeKVudOPtQ6VQg" name="Fork(label)" incoming="_iQ1foJcCEeKVudOPtQ6VQg" outgoing="_iQ1fo5cCEeKVudOPtQ6VQg _iQ1fqJcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="_iQsVspcCEeKVudOPtQ6VQg" name="Input(list)" outgoing="_iQ1foZcCEeKVudOPtQ6VQg" parameter="_Bqqx4JF0EeKLspnMdnbsRA"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_iQsVs5cCEeKVudOPtQ6VQg" name="Fork(list)" incoming="_iQ1foZcCEeKVudOPtQ6VQg" outgoing="_iQ1fpJcCEeKVudOPtQ6VQg _iQ1fqZcCEeKVudOPtQ6VQg _iQ1fp5cCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="_iQsVtJcCEeKVudOPtQ6VQg" name="Input(expected)" outgoing="_iQ1fopcCEeKVudOPtQ6VQg" parameter="_BxEU0JF0EeKLspnMdnbsRA"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_iQsVtZcCEeKVudOPtQ6VQg" name="Fork(expected)" incoming="_iQ1fopcCEeKVudOPtQ6VQg" outgoing="_iQ1fpZcCEeKVudOPtQ6VQg _iQ1fqpcCEeKVudOPtQ6VQg _iQ1fppcCEeKVudOPtQ6VQg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Activity" xmi:id="_Tz8bEIgWEeKtquXykzQHVw" name="Write" node="_ojxW8Jb6EeKytdasF4bkww _ojxW8Zb6EeKytdasF4bkww _ojxW8pb6EeKytdasF4bkww" group="_ojxW8pb6EeKytdasF4bkww">
+ <ownedComment xmi:id="_ZaCg4IgWEeKtquXykzQHVw">
+ <body>
+namespace AssertionLibrary ;
+
+private import Alf::Library::BasicInputOutput::StandardOutputChannel ;
+
+activity Write(in value: any) {
+ StandardOutputChannel.allInstances()[1].write(value);
+}</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_Y7osM419EeK7gYOtibANUw" name="value" visibility="package">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Y7osNI19EeK7gYOtibANUw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Y7osNY19EeK7gYOtibANUw" value="1"/>
+ </ownedParameter>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXIZb6EeKytdasF4bkww" target="_ojxW8Zb6EeKytdasF4bkww" source="_ojxW8Jb6EeKytdasF4bkww"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXIpb6EeKytdasF4bkww" target="_ojxW_5b6EeKytdasF4bkww" source="_ojxW8Zb6EeKytdasF4bkww"/>
+ <structuredNode xmi:id="_ojxW8pb6EeKytdasF4bkww" name="Body(Write)">
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_ojxW85b6EeKytdasF4bkww" name="ExpressionStatement@660c0d">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXH5b6EeKytdasF4bkww" target="_ojxXBJb6EeKytdasF4bkww" source="_ojxXDZb6EeKytdasF4bkww"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_ojxXIJb6EeKytdasF4bkww" target="_ojxW9Jb6EeKytdasF4bkww" source="_ojxXBZb6EeKytdasF4bkww"/>
+ <node xmi:type="uml:ExpansionRegion" xmi:id="_ojxW9Jb6EeKytdasF4bkww" name="Collect(Call(write))" incoming="_ojxXIJb6EeKytdasF4bkww" mode="parallel" inputElement="_ojxXBJb6EeKytdasF4bkww">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXApb6EeKytdasF4bkww" target="_ojxW9pb6EeKytdasF4bkww" source="_ojxW_5b6EeKytdasF4bkww"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXA5b6EeKytdasF4bkww" target="_ojxW_Jb6EeKytdasF4bkww" source="_ojxXBJb6EeKytdasF4bkww"/>
+ <structuredNodeInput xmi:id="_ojxW_5b6EeKytdasF4bkww" name="Collect(Call(write)).input(Fork(value))" incoming="_ojxXIpb6EeKytdasF4bkww" outgoing="_ojxXApb6EeKytdasF4bkww" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxXAJb6EeKytdasF4bkww" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxXAZb6EeKytdasF4bkww" value="1"/>
+ </structuredNodeInput>
+ <node xmi:type="uml:CallOperationAction" xmi:id="_ojxW9Zb6EeKytdasF4bkww" name="Call(write)">
+ <argument xmi:id="_ojxW9pb6EeKytdasF4bkww" name="Call(write).argument(value)" incoming="_ojxXApb6EeKytdasF4bkww">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxW95b6EeKytdasF4bkww" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxW-Jb6EeKytdasF4bkww" value="1"/>
+ </argument>
+ <result xmi:id="_ojxW-Zb6EeKytdasF4bkww" name="Call(write).result(errorStatus)">
+ <type xmi:type="uml:DataType" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#Common-Status"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxW-pb6EeKytdasF4bkww"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxW-5b6EeKytdasF4bkww" value="1"/>
+ </result>
+ <operation href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-OutputChannel-write"/>
+ <target xmi:id="_ojxW_Jb6EeKytdasF4bkww" name="Call(write).target" incoming="_ojxXA5b6EeKytdasF4bkww" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:Class" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-OutputChannel"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxW_Zb6EeKytdasF4bkww" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxW_pb6EeKytdasF4bkww" value="1"/>
+ </target>
+ </node>
+ </node>
+ <node xmi:type="uml:ExpansionNode" xmi:id="_ojxXBJb6EeKytdasF4bkww" name="Collect(Call(write)).inputElement" incoming="_ojxXH5b6EeKytdasF4bkww" outgoing="_ojxXA5b6EeKytdasF4bkww" regionAsInput="_ojxW9Jb6EeKytdasF4bkww"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_ojxXBZb6EeKytdasF4bkww" name="Feature(Call(At).result())" outgoing="_ojxXIJb6EeKytdasF4bkww">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXG5b6EeKytdasF4bkww" target="_ojxXB5b6EeKytdasF4bkww" source="_ojxXEpb6EeKytdasF4bkww"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXHJb6EeKytdasF4bkww" target="_ojxXGpb6EeKytdasF4bkww" source="_ojxXFpb6EeKytdasF4bkww"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_ojxXHZb6EeKytdasF4bkww" target="_ojxXBpb6EeKytdasF4bkww" source="_ojxXEJb6EeKytdasF4bkww"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_ojxXHpb6EeKytdasF4bkww" target="_ojxXCpb6EeKytdasF4bkww" source="_ojxXGpb6EeKytdasF4bkww"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_ojxXBpb6EeKytdasF4bkww" name="Call(At)" incoming="_ojxXHZb6EeKytdasF4bkww">
+ <argument xmi:id="_ojxXB5b6EeKytdasF4bkww" name="Call(At).argument(seq)" incoming="_ojxXG5b6EeKytdasF4bkww" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxXCJb6EeKytdasF4bkww"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxXCZb6EeKytdasF4bkww" value="*"/>
+ </argument>
+ <argument xmi:id="_ojxXCpb6EeKytdasF4bkww" name="Call(At).argument(index)" incoming="_ojxXHpb6EeKytdasF4bkww">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxXC5b6EeKytdasF4bkww" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxXDJb6EeKytdasF4bkww" value="1"/>
+ </argument>
+ <result xmi:id="_ojxXDZb6EeKytdasF4bkww" name="Call(At).result()" outgoing="_ojxXH5b6EeKytdasF4bkww">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxXDpb6EeKytdasF4bkww"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxXD5b6EeKytdasF4bkww" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveBehaviors-SequenceFunctions-At"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_ojxXEJb6EeKytdasF4bkww" name="Tuple@43f8b1" outgoing="_ojxXHZb6EeKytdasF4bkww">
+ <node xmi:type="uml:ReadExtentAction" xmi:id="_ojxXEZb6EeKytdasF4bkww" name="ReadExtent(StandardOutputChannel)">
+ <classifier xmi:type="uml:Class" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-StandardOutputChannel"/>
+ <result xmi:id="_ojxXEpb6EeKytdasF4bkww" name="ReadExtent(StandardOutputChannel).result" outgoing="_ojxXG5b6EeKytdasF4bkww" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:Class" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-StandardOutputChannel"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxXE5b6EeKytdasF4bkww"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxXFJb6EeKytdasF4bkww" value="*"/>
+ </result>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_ojxXFZb6EeKytdasF4bkww" name="Value(1)">
+ <result xmi:id="_ojxXFpb6EeKytdasF4bkww" name="Value(1).result" outgoing="_ojxXHJb6EeKytdasF4bkww" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_ojxXF5b6EeKytdasF4bkww" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_ojxXGJb6EeKytdasF4bkww" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_ojxXGZb6EeKytdasF4bkww" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ <node xmi:type="uml:ForkNode" xmi:id="_ojxXGpb6EeKytdasF4bkww" name="Fork(Call(At).argument(index))" incoming="_ojxXHJb6EeKytdasF4bkww" outgoing="_ojxXHpb6EeKytdasF4bkww"/>
+ </node>
+ </node>
+ </structuredNode>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="_ojxW8Jb6EeKytdasF4bkww" name="Input(value)" outgoing="_ojxXIZb6EeKytdasF4bkww" parameter="_Y7osM419EeK7gYOtibANUw"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_ojxW8Zb6EeKytdasF4bkww" name="Fork(value)" incoming="_ojxXIZb6EeKytdasF4bkww" outgoing="_ojxXIpb6EeKytdasF4bkww"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="_z5N8wJGKEeKaY7tSssHhGw" name="Tests">
+ <packagedElement xmi:type="uml:Activity" xmi:id="_4BlgUJGKEeKaY7tSssHhGw" name="TestWrite" node="_nOXtwJMqEeKsOLt3X9dUzg" group="_nOXtwJMqEeKsOLt3X9dUzg">
+ <ownedComment xmi:id="_9Q7TDpGKEeKaY7tSssHhGw">
+ <body>/* Generated textual representation of Activity AssertionLibrary::Tests::TestWrite */
+
+namespace AssertionLibrary::Tests ;
+
+activity TestWrite() { 
+ Write("Hello!") ;
+}</body>
+ </ownedComment>
+ <structuredNode xmi:id="_nOXtwJMqEeKsOLt3X9dUzg" name="Body(TestWrite)">
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_nOXtwZMqEeKsOLt3X9dUzg" name="ExpressionStatement@6de523">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_nOXtzJMqEeKsOLt3X9dUzg" target="_nOXtw5MqEeKsOLt3X9dUzg" source="_nOXtyJMqEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_nOXtzZMqEeKsOLt3X9dUzg" target="_nOXtwpMqEeKsOLt3X9dUzg" source="_nOXtxpMqEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_nOXtwpMqEeKsOLt3X9dUzg" name="Call(Write)" incoming="_nOXtzZMqEeKsOLt3X9dUzg" behavior="_Tz8bEIgWEeKtquXykzQHVw">
+ <argument xmi:id="_nOXtw5MqEeKsOLt3X9dUzg" name="Call(Write).argument(value)" incoming="_nOXtzJMqEeKsOLt3X9dUzg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nOXtxJMqEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nOXtxZMqEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_nOXtxpMqEeKsOLt3X9dUzg" name="Tuple@9063b0" outgoing="_nOXtzZMqEeKsOLt3X9dUzg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_nOXtx5MqEeKsOLt3X9dUzg" name="Value("Hello!")">
+ <result xmi:id="_nOXtyJMqEeKsOLt3X9dUzg" name="Value("Hello!").result" outgoing="_nOXtzJMqEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_nOXtyZMqEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_nOXtypMqEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_nOXty5MqEeKsOLt3X9dUzg" value="Hello!">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ </structuredNode>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Activity" xmi:id="_Grnr0JGLEeKaY7tSssHhGw" name="TestAssertTrue" node="_BRkw8JMrEeKsOLt3X9dUzg" group="_BRkw8JMrEeKsOLt3X9dUzg">
+ <ownedComment xmi:id="_QCbqgJGLEeKaY7tSssHhGw">
+ <body>/* Generated textual representation of Activity AssertionLibrary::Tests::TestAssertTrue */
+
+namespace AssertionLibrary::Tests ;
+
+activity TestAssertTrue() { 
+ AssertTrue("1 == 1", 1 == 1) ;
+ AssertTrue("1 == 2", 1 == 2) ;
+}</body>
+ </ownedComment>
+ <structuredNode xmi:id="_BRkw8JMrEeKsOLt3X9dUzg" name="Body(TestAssertTrue)">
+ <edge xmi:type="uml:ControlFlow" xmi:id="_BRkxP5MrEeKsOLt3X9dUzg" target="_BRkxGJMrEeKsOLt3X9dUzg" source="_BRkw8ZMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_BRkw8ZMrEeKsOLt3X9dUzg" name="ExpressionStatement@156c3da" outgoing="_BRkxP5MrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxFZMrEeKsOLt3X9dUzg" target="_BRkw85MrEeKsOLt3X9dUzg" source="_BRkw-5MrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxFpMrEeKsOLt3X9dUzg" target="_BRkw9pMrEeKsOLt3X9dUzg" source="_BRkxDZMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_BRkxF5MrEeKsOLt3X9dUzg" target="_BRkw8pMrEeKsOLt3X9dUzg" source="_BRkw-ZMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_BRkw8pMrEeKsOLt3X9dUzg" name="Call(AssertTrue)" incoming="_BRkxF5MrEeKsOLt3X9dUzg" behavior="_9FjNAIgUEeKtquXykzQHVw">
+ <argument xmi:id="_BRkw85MrEeKsOLt3X9dUzg" name="Call(AssertTrue).argument(label)" incoming="_BRkxFZMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkw9JMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkw9ZMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_BRkw9pMrEeKsOLt3X9dUzg" name="Call(AssertTrue).argument(condition)" incoming="_BRkxFpMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkw95MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkw-JMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_BRkw-ZMrEeKsOLt3X9dUzg" name="Tuple@ebca5e" outgoing="_BRkxF5MrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxE5MrEeKsOLt3X9dUzg" target="_BRkxCpMrEeKsOLt3X9dUzg" source="_BRkxAJMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxFJMrEeKsOLt3X9dUzg" target="_BRkxEJMrEeKsOLt3X9dUzg" source="_BRkxBZMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_BRkw-pMrEeKsOLt3X9dUzg" name="Value("1 == 1")">
+ <result xmi:id="_BRkw-5MrEeKsOLt3X9dUzg" name="Value("1 == 1").result" outgoing="_BRkxFZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkw_JMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkw_ZMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_BRkw_pMrEeKsOLt3X9dUzg" value="1 == 1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_BRkw_5MrEeKsOLt3X9dUzg" name="Value(1)">
+ <result xmi:id="_BRkxAJMrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_BRkxE5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxAZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxApMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_BRkxA5MrEeKsOLt3X9dUzg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_BRkxBJMrEeKsOLt3X9dUzg" name="Value(1)">
+ <result xmi:id="_BRkxBZMrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_BRkxFJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxBpMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxB5MrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_BRkxCJMrEeKsOLt3X9dUzg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ <node xmi:type="uml:TestIdentityAction" xmi:id="_BRkxCZMrEeKsOLt3X9dUzg" name="Test(==)">
+ <first xmi:id="_BRkxCpMrEeKsOLt3X9dUzg" name="Test(==).first" incoming="_BRkxE5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxC5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxDJMrEeKsOLt3X9dUzg" value="1"/>
+ </first>
+ <result xmi:id="_BRkxDZMrEeKsOLt3X9dUzg" name="Test(==).result" outgoing="_BRkxFpMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxDpMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxD5MrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <second xmi:id="_BRkxEJMrEeKsOLt3X9dUzg" name="Test(==).second" incoming="_BRkxFJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxEZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxEpMrEeKsOLt3X9dUzg" value="1"/>
+ </second>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_BRkxGJMrEeKsOLt3X9dUzg" name="ExpressionStatement@275507" incoming="_BRkxP5MrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxPJMrEeKsOLt3X9dUzg" target="_BRkxGpMrEeKsOLt3X9dUzg" source="_BRkxIpMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxPZMrEeKsOLt3X9dUzg" target="_BRkxHZMrEeKsOLt3X9dUzg" source="_BRkxNJMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_BRkxPpMrEeKsOLt3X9dUzg" target="_BRkxGZMrEeKsOLt3X9dUzg" source="_BRkxIJMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_BRkxGZMrEeKsOLt3X9dUzg" name="Call(AssertTrue)" incoming="_BRkxPpMrEeKsOLt3X9dUzg" behavior="_9FjNAIgUEeKtquXykzQHVw">
+ <argument xmi:id="_BRkxGpMrEeKsOLt3X9dUzg" name="Call(AssertTrue).argument(label)" incoming="_BRkxPJMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxG5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxHJMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_BRkxHZMrEeKsOLt3X9dUzg" name="Call(AssertTrue).argument(condition)" incoming="_BRkxPZMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxHpMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxH5MrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_BRkxIJMrEeKsOLt3X9dUzg" name="Tuple@a3302c" outgoing="_BRkxPpMrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxOpMrEeKsOLt3X9dUzg" target="_BRkxMZMrEeKsOLt3X9dUzg" source="_BRkxJ5MrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_BRkxO5MrEeKsOLt3X9dUzg" target="_BRkxN5MrEeKsOLt3X9dUzg" source="_BRkxLJMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_BRkxIZMrEeKsOLt3X9dUzg" name="Value("1 == 2")">
+ <result xmi:id="_BRkxIpMrEeKsOLt3X9dUzg" name="Value("1 == 2").result" outgoing="_BRkxPJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxI5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxJJMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_BRkxJZMrEeKsOLt3X9dUzg" value="1 == 2">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_BRkxJpMrEeKsOLt3X9dUzg" name="Value(1)">
+ <result xmi:id="_BRkxJ5MrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_BRkxOpMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxKJMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxKZMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_BRkxKpMrEeKsOLt3X9dUzg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_BRkxK5MrEeKsOLt3X9dUzg" name="Value(2)">
+ <result xmi:id="_BRkxLJMrEeKsOLt3X9dUzg" name="Value(2).result" outgoing="_BRkxO5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxLZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxLpMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_BRkxL5MrEeKsOLt3X9dUzg" value="2">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ <node xmi:type="uml:TestIdentityAction" xmi:id="_BRkxMJMrEeKsOLt3X9dUzg" name="Test(==)">
+ <first xmi:id="_BRkxMZMrEeKsOLt3X9dUzg" name="Test(==).first" incoming="_BRkxOpMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxMpMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxM5MrEeKsOLt3X9dUzg" value="1"/>
+ </first>
+ <result xmi:id="_BRkxNJMrEeKsOLt3X9dUzg" name="Test(==).result" outgoing="_BRkxPZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxNZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxNpMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <second xmi:id="_BRkxN5MrEeKsOLt3X9dUzg" name="Test(==).second" incoming="_BRkxO5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_BRkxOJMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BRkxOZMrEeKsOLt3X9dUzg" value="1"/>
+ </second>
+ </node>
+ </node>
+ </node>
+ </structuredNode>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Activity" xmi:id="_XSUYUJGLEeKaY7tSssHhGw" name="TestAssertFalse" node="_Mb4tQJMrEeKsOLt3X9dUzg" group="_Mb4tQJMrEeKsOLt3X9dUzg">
+ <ownedComment xmi:id="_fY76cJGLEeKaY7tSssHhGw">
+ <body>/* Generated textual representation of Activity AssertionLibrary::Tests::TestAssertFalse */
+
+namespace AssertionLibrary::Tests ;
+
+activity TestAssertFalse() { 
+ AssertFalse("1 == 1", 1 == 1) ;
+ AssertFalse("1 == 2", 1 == 2) ;
+}</body>
+ </ownedComment>
+ <structuredNode xmi:id="_Mb4tQJMrEeKsOLt3X9dUzg" name="Body(TestAssertFalse)">
+ <edge xmi:type="uml:ControlFlow" xmi:id="_Mb4tj5MrEeKsOLt3X9dUzg" target="_Mb4taJMrEeKsOLt3X9dUzg" source="_Mb4tQZMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_Mb4tQZMrEeKsOLt3X9dUzg" name="ExpressionStatement@16995c4" outgoing="_Mb4tj5MrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4tZZMrEeKsOLt3X9dUzg" target="_Mb4tQ5MrEeKsOLt3X9dUzg" source="_Mb4tS5MrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4tZpMrEeKsOLt3X9dUzg" target="_Mb4tRpMrEeKsOLt3X9dUzg" source="_Mb4tXZMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_Mb4tZ5MrEeKsOLt3X9dUzg" target="_Mb4tQpMrEeKsOLt3X9dUzg" source="_Mb4tSZMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_Mb4tQpMrEeKsOLt3X9dUzg" name="Call(AssertFalse)" incoming="_Mb4tZ5MrEeKsOLt3X9dUzg" behavior="_9tk2UIgUEeKtquXykzQHVw">
+ <argument xmi:id="_Mb4tQ5MrEeKsOLt3X9dUzg" name="Call(AssertFalse).argument(label)" incoming="_Mb4tZZMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tRJMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tRZMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_Mb4tRpMrEeKsOLt3X9dUzg" name="Call(AssertFalse).argument(condition)" incoming="_Mb4tZpMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tR5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tSJMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_Mb4tSZMrEeKsOLt3X9dUzg" name="Tuple@90f9" outgoing="_Mb4tZ5MrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4tY5MrEeKsOLt3X9dUzg" target="_Mb4tWpMrEeKsOLt3X9dUzg" source="_Mb4tUJMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4tZJMrEeKsOLt3X9dUzg" target="_Mb4tYJMrEeKsOLt3X9dUzg" source="_Mb4tVZMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Mb4tSpMrEeKsOLt3X9dUzg" name="Value("1 == 1")">
+ <result xmi:id="_Mb4tS5MrEeKsOLt3X9dUzg" name="Value("1 == 1").result" outgoing="_Mb4tZZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tTJMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tTZMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_Mb4tTpMrEeKsOLt3X9dUzg" value="1 == 1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Mb4tT5MrEeKsOLt3X9dUzg" name="Value(1)">
+ <result xmi:id="_Mb4tUJMrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_Mb4tY5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tUZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tUpMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_Mb4tU5MrEeKsOLt3X9dUzg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Mb4tVJMrEeKsOLt3X9dUzg" name="Value(1)">
+ <result xmi:id="_Mb4tVZMrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_Mb4tZJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tVpMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tV5MrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_Mb4tWJMrEeKsOLt3X9dUzg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ <node xmi:type="uml:TestIdentityAction" xmi:id="_Mb4tWZMrEeKsOLt3X9dUzg" name="Test(==)">
+ <first xmi:id="_Mb4tWpMrEeKsOLt3X9dUzg" name="Test(==).first" incoming="_Mb4tY5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tW5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tXJMrEeKsOLt3X9dUzg" value="1"/>
+ </first>
+ <result xmi:id="_Mb4tXZMrEeKsOLt3X9dUzg" name="Test(==).result" outgoing="_Mb4tZpMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tXpMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tX5MrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <second xmi:id="_Mb4tYJMrEeKsOLt3X9dUzg" name="Test(==).second" incoming="_Mb4tZJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tYZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tYpMrEeKsOLt3X9dUzg" value="1"/>
+ </second>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_Mb4taJMrEeKsOLt3X9dUzg" name="ExpressionStatement@1e49cce" incoming="_Mb4tj5MrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4tjJMrEeKsOLt3X9dUzg" target="_Mb4tapMrEeKsOLt3X9dUzg" source="_Mb4tcpMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4tjZMrEeKsOLt3X9dUzg" target="_Mb4tbZMrEeKsOLt3X9dUzg" source="_Mb4thJMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_Mb4tjpMrEeKsOLt3X9dUzg" target="_Mb4taZMrEeKsOLt3X9dUzg" source="_Mb4tcJMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_Mb4taZMrEeKsOLt3X9dUzg" name="Call(AssertFalse)" incoming="_Mb4tjpMrEeKsOLt3X9dUzg" behavior="_9tk2UIgUEeKtquXykzQHVw">
+ <argument xmi:id="_Mb4tapMrEeKsOLt3X9dUzg" name="Call(AssertFalse).argument(label)" incoming="_Mb4tjJMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4ta5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tbJMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_Mb4tbZMrEeKsOLt3X9dUzg" name="Call(AssertFalse).argument(condition)" incoming="_Mb4tjZMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tbpMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tb5MrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_Mb4tcJMrEeKsOLt3X9dUzg" name="Tuple@6526b6" outgoing="_Mb4tjpMrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4tipMrEeKsOLt3X9dUzg" target="_Mb4tgZMrEeKsOLt3X9dUzg" source="_Mb4td5MrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_Mb4ti5MrEeKsOLt3X9dUzg" target="_Mb4th5MrEeKsOLt3X9dUzg" source="_Mb4tfJMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Mb4tcZMrEeKsOLt3X9dUzg" name="Value("1 == 2")">
+ <result xmi:id="_Mb4tcpMrEeKsOLt3X9dUzg" name="Value("1 == 2").result" outgoing="_Mb4tjJMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tc5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tdJMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_Mb4tdZMrEeKsOLt3X9dUzg" value="1 == 2">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Mb4tdpMrEeKsOLt3X9dUzg" name="Value(1)">
+ <result xmi:id="_Mb4td5MrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_Mb4tipMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4teJMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4teZMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_Mb4tepMrEeKsOLt3X9dUzg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_Mb4te5MrEeKsOLt3X9dUzg" name="Value(2)">
+ <result xmi:id="_Mb4tfJMrEeKsOLt3X9dUzg" name="Value(2).result" outgoing="_Mb4ti5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tfZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tfpMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_Mb4tf5MrEeKsOLt3X9dUzg" value="2">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ <node xmi:type="uml:TestIdentityAction" xmi:id="_Mb4tgJMrEeKsOLt3X9dUzg" name="Test(==)">
+ <first xmi:id="_Mb4tgZMrEeKsOLt3X9dUzg" name="Test(==).first" incoming="_Mb4tipMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tgpMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tg5MrEeKsOLt3X9dUzg" value="1"/>
+ </first>
+ <result xmi:id="_Mb4thJMrEeKsOLt3X9dUzg" name="Test(==).result" outgoing="_Mb4tjZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4thZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4thpMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <second xmi:id="_Mb4th5MrEeKsOLt3X9dUzg" name="Test(==).second" incoming="_Mb4ti5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Mb4tiJMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_Mb4tiZMrEeKsOLt3X9dUzg" value="1"/>
+ </second>
+ </node>
+ </node>
+ </node>
+ </structuredNode>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Activity" xmi:id="_oUPBMJGLEeKaY7tSssHhGw" name="TestAssertEquals" node="_V6CpwJMrEeKsOLt3X9dUzg" group="_V6CpwJMrEeKsOLt3X9dUzg">
+ <ownedComment xmi:id="_xyMJoJGLEeKaY7tSssHhGw">
+ <body>/* Generated textual representation of Activity AssertionLibrary::Tests::TestAssertEquals */
+
+namespace AssertionLibrary::Tests ;
+
+activity TestAssertEquals() { 
+ AssertEquals("1 equals 1", 1, 1) ;
+ AssertEquals("1 equals 2", 1, 2) ;
+}</body>
+ </ownedComment>
+ <structuredNode xmi:id="_V6CpwJMrEeKsOLt3X9dUzg" name="Body(TestAssertEquals)">
+ <edge xmi:type="uml:ControlFlow" xmi:id="_V6Cp_5MrEeKsOLt3X9dUzg" target="_V6Cp4JMrEeKsOLt3X9dUzg" source="_V6CpwZMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_V6CpwZMrEeKsOLt3X9dUzg" name="ExpressionStatement@1f139ee" outgoing="_V6Cp_5MrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_V6Cp3JMrEeKsOLt3X9dUzg" target="_V6Cpw5MrEeKsOLt3X9dUzg" source="_V6CpzpMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_V6Cp3ZMrEeKsOLt3X9dUzg" target="_V6CpxpMrEeKsOLt3X9dUzg" source="_V6Cp05MrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_V6Cp3pMrEeKsOLt3X9dUzg" target="_V6CpyZMrEeKsOLt3X9dUzg" source="_V6Cp2JMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_V6Cp35MrEeKsOLt3X9dUzg" target="_V6CpwpMrEeKsOLt3X9dUzg" source="_V6CpzJMrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_V6CpwpMrEeKsOLt3X9dUzg" name="Call(AssertEquals)" incoming="_V6Cp35MrEeKsOLt3X9dUzg" behavior="_8kE3oIgUEeKtquXykzQHVw">
+ <argument xmi:id="_V6Cpw5MrEeKsOLt3X9dUzg" name="Call(AssertEquals).argument(label)" incoming="_V6Cp3JMrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6CpxJMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6CpxZMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_V6CpxpMrEeKsOLt3X9dUzg" name="Call(AssertEquals).argument(value1)" incoming="_V6Cp3ZMrEeKsOLt3X9dUzg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cpx5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6CpyJMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_V6CpyZMrEeKsOLt3X9dUzg" name="Call(AssertEquals).argument(value2)" incoming="_V6Cp3pMrEeKsOLt3X9dUzg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6CpypMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cpy5MrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_V6CpzJMrEeKsOLt3X9dUzg" name="Tuple@1848f66" outgoing="_V6Cp35MrEeKsOLt3X9dUzg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_V6CpzZMrEeKsOLt3X9dUzg" name="Value("1 equals 1")">
+ <result xmi:id="_V6CpzpMrEeKsOLt3X9dUzg" name="Value("1 equals 1").result" outgoing="_V6Cp3JMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cpz5MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp0JMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_V6Cp0ZMrEeKsOLt3X9dUzg" value="1 equals 1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_V6Cp0pMrEeKsOLt3X9dUzg" name="Value(1)">
+ <result xmi:id="_V6Cp05MrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_V6Cp3ZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp1JMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp1ZMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_V6Cp1pMrEeKsOLt3X9dUzg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_V6Cp15MrEeKsOLt3X9dUzg" name="Value(1)">
+ <result xmi:id="_V6Cp2JMrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_V6Cp3pMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp2ZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp2pMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_V6Cp25MrEeKsOLt3X9dUzg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_V6Cp4JMrEeKsOLt3X9dUzg" name="ExpressionStatement@b5305e" incoming="_V6Cp_5MrEeKsOLt3X9dUzg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_V6Cp-5MrEeKsOLt3X9dUzg" target="_V6Cp4pMrEeKsOLt3X9dUzg" source="_V6Cp7ZMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_V6Cp_JMrEeKsOLt3X9dUzg" target="_V6Cp5ZMrEeKsOLt3X9dUzg" source="_V6Cp8pMrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_V6Cp_ZMrEeKsOLt3X9dUzg" target="_V6Cp6JMrEeKsOLt3X9dUzg" source="_V6Cp95MrEeKsOLt3X9dUzg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_V6Cp_pMrEeKsOLt3X9dUzg" target="_V6Cp4ZMrEeKsOLt3X9dUzg" source="_V6Cp65MrEeKsOLt3X9dUzg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_V6Cp4ZMrEeKsOLt3X9dUzg" name="Call(AssertEquals)" incoming="_V6Cp_pMrEeKsOLt3X9dUzg" behavior="_8kE3oIgUEeKtquXykzQHVw">
+ <argument xmi:id="_V6Cp4pMrEeKsOLt3X9dUzg" name="Call(AssertEquals).argument(label)" incoming="_V6Cp-5MrEeKsOLt3X9dUzg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp45MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp5JMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_V6Cp5ZMrEeKsOLt3X9dUzg" name="Call(AssertEquals).argument(value1)" incoming="_V6Cp_JMrEeKsOLt3X9dUzg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp5pMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp55MrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ <argument xmi:id="_V6Cp6JMrEeKsOLt3X9dUzg" name="Call(AssertEquals).argument(value2)" incoming="_V6Cp_ZMrEeKsOLt3X9dUzg">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp6ZMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp6pMrEeKsOLt3X9dUzg" value="1"/>
+ </argument>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_V6Cp65MrEeKsOLt3X9dUzg" name="Tuple@1f42c8f" outgoing="_V6Cp_pMrEeKsOLt3X9dUzg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_V6Cp7JMrEeKsOLt3X9dUzg" name="Value("1 equals 2")">
+ <result xmi:id="_V6Cp7ZMrEeKsOLt3X9dUzg" name="Value("1 equals 2").result" outgoing="_V6Cp-5MrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp7pMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp75MrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_V6Cp8JMrEeKsOLt3X9dUzg" value="1 equals 2">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_V6Cp8ZMrEeKsOLt3X9dUzg" name="Value(1)">
+ <result xmi:id="_V6Cp8pMrEeKsOLt3X9dUzg" name="Value(1).result" outgoing="_V6Cp_JMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp85MrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp9JMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_V6Cp9ZMrEeKsOLt3X9dUzg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_V6Cp9pMrEeKsOLt3X9dUzg" name="Value(2)">
+ <result xmi:id="_V6Cp95MrEeKsOLt3X9dUzg" name="Value(2).result" outgoing="_V6Cp_ZMrEeKsOLt3X9dUzg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_V6Cp-JMrEeKsOLt3X9dUzg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_V6Cp-ZMrEeKsOLt3X9dUzg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_V6Cp-pMrEeKsOLt3X9dUzg" value="2">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ </structuredNode>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Activity" xmi:id="_d_z3AJMrEeKsOLt3X9dUzg" name="TestAll" node="__WCewJcDEeKVudOPtQ6VQg" group="__WCewJcDEeKVudOPtQ6VQg">
+ <ownedComment xmi:id="_XZhDAJMsEeKsOLt3X9dUzg">
+ <body>/* Generated textual representation of Activity AssertionLibrary::Tests::TestAll */
+
+namespace AssertionLibrary::Tests ;
+
+private import Alf::Library::BasicInputOutput::WriteLine ;
+
+activity TestAll() {
+ pref = " ---- Testing Activity " ;
+ suff = " ----" ;
+ // Testing write
+ activityName = "Write" ;
+ WriteLine(pref + activityName + suff) ;
+ TestWrite() ; WriteLine("") ; WriteLine("") ;
+ 
+ // Testing AssertTrue
+ activityName = "AssertTrue" ;
+ WriteLine(pref + activityName + suff) ;
+ TestAssertTrue() ; WriteLine("") ;
+ 
+ // Testing AssertFalse
+ activityName = "AssertFalse" ;
+ WriteLine(pref + activityName + suff) ;
+ TestAssertFalse() ; WriteLine("") ;
+ 
+ // Testing AssertEquals
+ activityName = "AssertEquals" ;
+ WriteLine(pref + activityName + suff) ;
+ TestAssertEquals() ; WriteLine("") ;
+ 
+ // Testing AssertEquals
+ activityName = "AssertList" ;
+ WriteLine(pref + activityName + suff) ;
+ TestAssertList() ; WriteLine("") ;
+}</body>
+ </ownedComment>
+ <structuredNode xmi:id="__WCewJcDEeKVudOPtQ6VQg" name="Body(TestAll)">
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgCpcDEeKVudOPtQ6VQg" target="__WCeypcDEeKVudOPtQ6VQg" source="__WCewZcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgC5cDEeKVudOPtQ6VQg" target="__WCe05cDEeKVudOPtQ6VQg" source="__WCeypcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgDJcDEeKVudOPtQ6VQg" target="__WCe5pcDEeKVudOPtQ6VQg" source="__WCewpcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgDZcDEeKVudOPtQ6VQg" target="__WCe6ZcDEeKVudOPtQ6VQg" source="__WCe1JcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgDpcDEeKVudOPtQ6VQg" target="__WCe85cDEeKVudOPtQ6VQg" source="__WCey5cDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgD5cDEeKVudOPtQ6VQg" target="__WCe3JcDEeKVudOPtQ6VQg" source="__WCe05cDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgEJcDEeKVudOPtQ6VQg" target="__WCe_JcDEeKVudOPtQ6VQg" source="__WCe3JcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgEZcDEeKVudOPtQ6VQg" target="__WCe_pcDEeKVudOPtQ6VQg" source="__WCe_JcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgEpcDEeKVudOPtQ6VQg" target="__WCfDpcDEeKVudOPtQ6VQg" source="__WCe_pcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgE5cDEeKVudOPtQ6VQg" target="__WCfHpcDEeKVudOPtQ6VQg" source="__WCfDpcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgFJcDEeKVudOPtQ6VQg" target="__WCfMZcDEeKVudOPtQ6VQg" source="__WCewpcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgFZcDEeKVudOPtQ6VQg" target="__WCfNJcDEeKVudOPtQ6VQg" source="__WCfH5cDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgFpcDEeKVudOPtQ6VQg" target="__WCfPpcDEeKVudOPtQ6VQg" source="__WCey5cDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgF5cDEeKVudOPtQ6VQg" target="__WCfJ5cDEeKVudOPtQ6VQg" source="__WCfHpcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgGJcDEeKVudOPtQ6VQg" target="__WCfR5cDEeKVudOPtQ6VQg" source="__WCfJ5cDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgGZcDEeKVudOPtQ6VQg" target="__WCfSZcDEeKVudOPtQ6VQg" source="__WCfR5cDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgGpcDEeKVudOPtQ6VQg" target="__WCfWZcDEeKVudOPtQ6VQg" source="__WCfSZcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgG5cDEeKVudOPtQ6VQg" target="__WCfbJcDEeKVudOPtQ6VQg" source="__WCewpcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgHJcDEeKVudOPtQ6VQg" target="__WCfb5cDEeKVudOPtQ6VQg" source="__WCfWpcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgHZcDEeKVudOPtQ6VQg" target="__WCfeZcDEeKVudOPtQ6VQg" source="__WCey5cDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgHpcDEeKVudOPtQ6VQg" target="__WCfYpcDEeKVudOPtQ6VQg" source="__WCfWZcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgH5cDEeKVudOPtQ6VQg" target="__WCfgpcDEeKVudOPtQ6VQg" source="__WCfYpcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgIJcDEeKVudOPtQ6VQg" target="__WCfhJcDEeKVudOPtQ6VQg" source="__WCfgpcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgIZcDEeKVudOPtQ6VQg" target="__WCflJcDEeKVudOPtQ6VQg" source="__WCfhJcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgIpcDEeKVudOPtQ6VQg" target="__WCfp5cDEeKVudOPtQ6VQg" source="__WCewpcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgI5cDEeKVudOPtQ6VQg" target="__WCfqpcDEeKVudOPtQ6VQg" source="__WCflZcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgJJcDEeKVudOPtQ6VQg" target="__WCftJcDEeKVudOPtQ6VQg" source="__WCey5cDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgJZcDEeKVudOPtQ6VQg" target="__WCfnZcDEeKVudOPtQ6VQg" source="__WCflJcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgJpcDEeKVudOPtQ6VQg" target="__WCfvZcDEeKVudOPtQ6VQg" source="__WCfnZcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgJ5cDEeKVudOPtQ6VQg" target="__WCfv5cDEeKVudOPtQ6VQg" source="__WCfvZcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgKJcDEeKVudOPtQ6VQg" target="__WCfz5cDEeKVudOPtQ6VQg" source="__WCfv5cDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgKZcDEeKVudOPtQ6VQg" target="__WCf4pcDEeKVudOPtQ6VQg" source="__WCewpcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgKpcDEeKVudOPtQ6VQg" target="__WCf5ZcDEeKVudOPtQ6VQg" source="__WCf0JcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgK5cDEeKVudOPtQ6VQg" target="__WCf75cDEeKVudOPtQ6VQg" source="__WCey5cDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgLJcDEeKVudOPtQ6VQg" target="__WCf2JcDEeKVudOPtQ6VQg" source="__WCfz5cDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgLZcDEeKVudOPtQ6VQg" target="__WCf-JcDEeKVudOPtQ6VQg" source="__WCf2JcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgLpcDEeKVudOPtQ6VQg" target="__WCf-pcDEeKVudOPtQ6VQg" source="__WCf-JcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCewZcDEeKVudOPtQ6VQg" name="ExpressionStatement@3af05a" outgoing="__WCgCpcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCeyZcDEeKVudOPtQ6VQg" target="__WCewpcDEeKVudOPtQ6VQg" source="__WCexZcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="__WCewpcDEeKVudOPtQ6VQg" name="Fork(pref)@117ca48" incoming="__WCeyZcDEeKVudOPtQ6VQg" outgoing="__WCgDJcDEeKVudOPtQ6VQg __WCgFJcDEeKVudOPtQ6VQg __WCgG5cDEeKVudOPtQ6VQg __WCgIpcDEeKVudOPtQ6VQg __WCgKZcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCew5cDEeKVudOPtQ6VQg" name="RightHandSide@e1520b">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCexJcDEeKVudOPtQ6VQg" name="Value(" ---- Testing Activity ")">
+ <result xmi:id="__WCexZcDEeKVudOPtQ6VQg" name="Value(" ---- Testing Activity ").result" outgoing="__WCeyZcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCexpcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCex5cDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="__WCeyJcDEeKVudOPtQ6VQg" value=" ---- Testing Activity ">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCeypcDEeKVudOPtQ6VQg" name="ExpressionStatement@186bfda" incoming="__WCgCpcDEeKVudOPtQ6VQg" outgoing="__WCgC5cDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCe0pcDEeKVudOPtQ6VQg" target="__WCey5cDEeKVudOPtQ6VQg" source="__WCezpcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="__WCey5cDEeKVudOPtQ6VQg" name="Fork(suff)@2d3743" incoming="__WCe0pcDEeKVudOPtQ6VQg" outgoing="__WCgDpcDEeKVudOPtQ6VQg __WCgFpcDEeKVudOPtQ6VQg __WCgHZcDEeKVudOPtQ6VQg __WCgJJcDEeKVudOPtQ6VQg __WCgK5cDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCezJcDEeKVudOPtQ6VQg" name="RightHandSide@87309f">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCezZcDEeKVudOPtQ6VQg" name="Value(" ----")">
+ <result xmi:id="__WCezpcDEeKVudOPtQ6VQg" name="Value(" ----").result" outgoing="__WCe0pcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCez5cDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe0JcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="__WCe0ZcDEeKVudOPtQ6VQg" value=" ----">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCe05cDEeKVudOPtQ6VQg" name="ExpressionStatement@18e3e" incoming="__WCgC5cDEeKVudOPtQ6VQg" outgoing="__WCgD5cDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCe25cDEeKVudOPtQ6VQg" target="__WCe1JcDEeKVudOPtQ6VQg" source="__WCe15cDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="__WCe1JcDEeKVudOPtQ6VQg" name="Fork(activityName)@1073b37" incoming="__WCe25cDEeKVudOPtQ6VQg" outgoing="__WCgDZcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCe1ZcDEeKVudOPtQ6VQg" name="RightHandSide@1c0a7cb">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCe1pcDEeKVudOPtQ6VQg" name="Value("Write")">
+ <result xmi:id="__WCe15cDEeKVudOPtQ6VQg" name="Value("Write").result" outgoing="__WCe25cDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe2JcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe2ZcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="__WCe2pcDEeKVudOPtQ6VQg" value="Write">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCe3JcDEeKVudOPtQ6VQg" name="ExpressionStatement@28574b" incoming="__WCgD5cDEeKVudOPtQ6VQg" outgoing="__WCgEJcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCe-pcDEeKVudOPtQ6VQg" target="__WCe3pcDEeKVudOPtQ6VQg" source="__WCe9pcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCe-5cDEeKVudOPtQ6VQg" target="__WCe3ZcDEeKVudOPtQ6VQg" source="__WCe5JcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCe3ZcDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCe-5cDEeKVudOPtQ6VQg">
+ <argument xmi:id="__WCe3pcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCe-pcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe35cDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe4JcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCe4ZcDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe4pcDEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe45cDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCe5JcDEeKVudOPtQ6VQg" name="Tuple@45c36f" outgoing="__WCe-5cDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCe-ZcDEeKVudOPtQ6VQg" target="__WCe8JcDEeKVudOPtQ6VQg" source="__WCe7JcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCe5ZcDEeKVudOPtQ6VQg" name="Call(Concat)">
+ <argument xmi:id="__WCe5pcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCgDJcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe55cDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe6JcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="__WCe6ZcDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgDZcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe6pcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe65cDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCe7JcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCe-ZcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe7ZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe7pcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCe75cDEeKVudOPtQ6VQg" name="Call(Concat)">
+ <argument xmi:id="__WCe8JcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCe-ZcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe8ZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe8pcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="__WCe85cDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgDpcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe9JcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe9ZcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCe9pcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCe-pcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCe95cDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCe-JcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCe_JcDEeKVudOPtQ6VQg" name="ExpressionStatement@14528d" incoming="__WCgEJcDEeKVudOPtQ6VQg" outgoing="__WCgEZcDEeKVudOPtQ6VQg">
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCe_ZcDEeKVudOPtQ6VQg" name="Call(TestWrite)" behavior="_4BlgUJGKEeKaY7tSssHhGw"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCe_pcDEeKVudOPtQ6VQg" name="ExpressionStatement@1a88ae2" incoming="__WCgEZcDEeKVudOPtQ6VQg" outgoing="__WCgEpcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfDJcDEeKVudOPtQ6VQg" target="__WCfAJcDEeKVudOPtQ6VQg" source="__WCfCJcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCfDZcDEeKVudOPtQ6VQg" target="__WCe_5cDEeKVudOPtQ6VQg" source="__WCfBpcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCe_5cDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfDZcDEeKVudOPtQ6VQg">
+ <argument xmi:id="__WCfAJcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfDJcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfAZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfApcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCfA5cDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfBJcDEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfBZcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfBpcDEeKVudOPtQ6VQg" name="Tuple@122c298" outgoing="__WCfDZcDEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfB5cDEeKVudOPtQ6VQg" name="Value("")">
+ <result xmi:id="__WCfCJcDEeKVudOPtQ6VQg" name="Value("").result" outgoing="__WCfDJcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfCZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfCpcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="__WCfC5cDEeKVudOPtQ6VQg" value="">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfDpcDEeKVudOPtQ6VQg" name="ExpressionStatement@1f1d74c" incoming="__WCgEpcDEeKVudOPtQ6VQg" outgoing="__WCgE5cDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfHJcDEeKVudOPtQ6VQg" target="__WCfEJcDEeKVudOPtQ6VQg" source="__WCfGJcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCfHZcDEeKVudOPtQ6VQg" target="__WCfD5cDEeKVudOPtQ6VQg" source="__WCfFpcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfD5cDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfHZcDEeKVudOPtQ6VQg">
+ <argument xmi:id="__WCfEJcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfHJcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfEZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfEpcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCfE5cDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfFJcDEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfFZcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfFpcDEeKVudOPtQ6VQg" name="Tuple@1061fa3" outgoing="__WCfHZcDEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfF5cDEeKVudOPtQ6VQg" name="Value("")">
+ <result xmi:id="__WCfGJcDEeKVudOPtQ6VQg" name="Value("").result" outgoing="__WCfHJcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfGZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfGpcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="__WCfG5cDEeKVudOPtQ6VQg" value="">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfHpcDEeKVudOPtQ6VQg" name="ExpressionStatement@68fc34" incoming="__WCgE5cDEeKVudOPtQ6VQg" outgoing="__WCgF5cDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfJpcDEeKVudOPtQ6VQg" target="__WCfH5cDEeKVudOPtQ6VQg" source="__WCfIpcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="__WCfH5cDEeKVudOPtQ6VQg" name="Fork(activityName)@f781c4" incoming="__WCfJpcDEeKVudOPtQ6VQg" outgoing="__WCgFZcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfIJcDEeKVudOPtQ6VQg" name="RightHandSide@1689fac">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfIZcDEeKVudOPtQ6VQg" name="Value("AssertTrue")">
+ <result xmi:id="__WCfIpcDEeKVudOPtQ6VQg" name="Value("AssertTrue").result" outgoing="__WCfJpcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfI5cDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfJJcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="__WCfJZcDEeKVudOPtQ6VQg" value="AssertTrue">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfJ5cDEeKVudOPtQ6VQg" name="ExpressionStatement@101f11b" incoming="__WCgF5cDEeKVudOPtQ6VQg" outgoing="__WCgGJcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfRZcDEeKVudOPtQ6VQg" target="__WCfKZcDEeKVudOPtQ6VQg" source="__WCfQZcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCfRpcDEeKVudOPtQ6VQg" target="__WCfKJcDEeKVudOPtQ6VQg" source="__WCfL5cDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfKJcDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfRpcDEeKVudOPtQ6VQg">
+ <argument xmi:id="__WCfKZcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfRZcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfKpcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfK5cDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCfLJcDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfLZcDEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfLpcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfL5cDEeKVudOPtQ6VQg" name="Tuple@12cb9d7" outgoing="__WCfRpcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfRJcDEeKVudOPtQ6VQg" target="__WCfO5cDEeKVudOPtQ6VQg" source="__WCfN5cDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfMJcDEeKVudOPtQ6VQg" name="Call(Concat)">
+ <argument xmi:id="__WCfMZcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCgFJcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfMpcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfM5cDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="__WCfNJcDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgFZcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfNZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfNpcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCfN5cDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCfRJcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfOJcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfOZcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfOpcDEeKVudOPtQ6VQg" name="Call(Concat)">
+ <argument xmi:id="__WCfO5cDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCfRJcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfPJcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfPZcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="__WCfPpcDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgFpcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfP5cDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfQJcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCfQZcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCfRZcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfQpcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfQ5cDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfR5cDEeKVudOPtQ6VQg" name="ExpressionStatement@1817341" incoming="__WCgGJcDEeKVudOPtQ6VQg" outgoing="__WCgGZcDEeKVudOPtQ6VQg">
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfSJcDEeKVudOPtQ6VQg" name="Call(TestAssertTrue)" behavior="_Grnr0JGLEeKaY7tSssHhGw"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfSZcDEeKVudOPtQ6VQg" name="ExpressionStatement@7f4997" incoming="__WCgGZcDEeKVudOPtQ6VQg" outgoing="__WCgGpcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfV5cDEeKVudOPtQ6VQg" target="__WCfS5cDEeKVudOPtQ6VQg" source="__WCfU5cDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCfWJcDEeKVudOPtQ6VQg" target="__WCfSpcDEeKVudOPtQ6VQg" source="__WCfUZcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfSpcDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfWJcDEeKVudOPtQ6VQg">
+ <argument xmi:id="__WCfS5cDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfV5cDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfTJcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfTZcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCfTpcDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfT5cDEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfUJcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfUZcDEeKVudOPtQ6VQg" name="Tuple@411cbe" outgoing="__WCfWJcDEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfUpcDEeKVudOPtQ6VQg" name="Value("")">
+ <result xmi:id="__WCfU5cDEeKVudOPtQ6VQg" name="Value("").result" outgoing="__WCfV5cDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfVJcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfVZcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="__WCfVpcDEeKVudOPtQ6VQg" value="">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfWZcDEeKVudOPtQ6VQg" name="ExpressionStatement@16dd42f" incoming="__WCgGpcDEeKVudOPtQ6VQg" outgoing="__WCgHpcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfYZcDEeKVudOPtQ6VQg" target="__WCfWpcDEeKVudOPtQ6VQg" source="__WCfXZcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="__WCfWpcDEeKVudOPtQ6VQg" name="Fork(activityName)@1edcb39" incoming="__WCfYZcDEeKVudOPtQ6VQg" outgoing="__WCgHJcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfW5cDEeKVudOPtQ6VQg" name="RightHandSide@b91253">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfXJcDEeKVudOPtQ6VQg" name="Value("AssertFalse")">
+ <result xmi:id="__WCfXZcDEeKVudOPtQ6VQg" name="Value("AssertFalse").result" outgoing="__WCfYZcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfXpcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfX5cDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="__WCfYJcDEeKVudOPtQ6VQg" value="AssertFalse">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfYpcDEeKVudOPtQ6VQg" name="ExpressionStatement@13811f0" incoming="__WCgHpcDEeKVudOPtQ6VQg" outgoing="__WCgH5cDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfgJcDEeKVudOPtQ6VQg" target="__WCfZJcDEeKVudOPtQ6VQg" source="__WCffJcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCfgZcDEeKVudOPtQ6VQg" target="__WCfY5cDEeKVudOPtQ6VQg" source="__WCfapcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfY5cDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfgZcDEeKVudOPtQ6VQg">
+ <argument xmi:id="__WCfZJcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfgJcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfZZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfZpcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCfZ5cDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfaJcDEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfaZcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfapcDEeKVudOPtQ6VQg" name="Tuple@190c503" outgoing="__WCfgZcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCff5cDEeKVudOPtQ6VQg" target="__WCfdpcDEeKVudOPtQ6VQg" source="__WCfcpcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfa5cDEeKVudOPtQ6VQg" name="Call(Concat)">
+ <argument xmi:id="__WCfbJcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCgG5cDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfbZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfbpcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="__WCfb5cDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgHJcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfcJcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfcZcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCfcpcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCff5cDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfc5cDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfdJcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfdZcDEeKVudOPtQ6VQg" name="Call(Concat)">
+ <argument xmi:id="__WCfdpcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCff5cDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfd5cDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfeJcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="__WCfeZcDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgHZcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfepcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfe5cDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCffJcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCfgJcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCffZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCffpcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfgpcDEeKVudOPtQ6VQg" name="ExpressionStatement@1fc7a0e" incoming="__WCgH5cDEeKVudOPtQ6VQg" outgoing="__WCgIJcDEeKVudOPtQ6VQg">
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfg5cDEeKVudOPtQ6VQg" name="Call(TestAssertFalse)" behavior="_XSUYUJGLEeKaY7tSssHhGw"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfhJcDEeKVudOPtQ6VQg" name="ExpressionStatement@d2da4c" incoming="__WCgIJcDEeKVudOPtQ6VQg" outgoing="__WCgIZcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfkpcDEeKVudOPtQ6VQg" target="__WCfhpcDEeKVudOPtQ6VQg" source="__WCfjpcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCfk5cDEeKVudOPtQ6VQg" target="__WCfhZcDEeKVudOPtQ6VQg" source="__WCfjJcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfhZcDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfk5cDEeKVudOPtQ6VQg">
+ <argument xmi:id="__WCfhpcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfkpcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfh5cDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfiJcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCfiZcDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfipcDEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfi5cDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfjJcDEeKVudOPtQ6VQg" name="Tuple@15a71cb" outgoing="__WCfk5cDEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfjZcDEeKVudOPtQ6VQg" name="Value("")">
+ <result xmi:id="__WCfjpcDEeKVudOPtQ6VQg" name="Value("").result" outgoing="__WCfkpcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfj5cDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfkJcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="__WCfkZcDEeKVudOPtQ6VQg" value="">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCflJcDEeKVudOPtQ6VQg" name="ExpressionStatement@5271de" incoming="__WCgIZcDEeKVudOPtQ6VQg" outgoing="__WCgJZcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfnJcDEeKVudOPtQ6VQg" target="__WCflZcDEeKVudOPtQ6VQg" source="__WCfmJcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="__WCflZcDEeKVudOPtQ6VQg" name="Fork(activityName)@bed88b" incoming="__WCfnJcDEeKVudOPtQ6VQg" outgoing="__WCgI5cDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCflpcDEeKVudOPtQ6VQg" name="RightHandSide@17aa9c1">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfl5cDEeKVudOPtQ6VQg" name="Value("AssertEquals")">
+ <result xmi:id="__WCfmJcDEeKVudOPtQ6VQg" name="Value("AssertEquals").result" outgoing="__WCfnJcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfmZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfmpcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="__WCfm5cDEeKVudOPtQ6VQg" value="AssertEquals">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfnZcDEeKVudOPtQ6VQg" name="ExpressionStatement@be387b" incoming="__WCgJZcDEeKVudOPtQ6VQg" outgoing="__WCgJpcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfu5cDEeKVudOPtQ6VQg" target="__WCfn5cDEeKVudOPtQ6VQg" source="__WCft5cDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCfvJcDEeKVudOPtQ6VQg" target="__WCfnpcDEeKVudOPtQ6VQg" source="__WCfpZcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfnpcDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfvJcDEeKVudOPtQ6VQg">
+ <argument xmi:id="__WCfn5cDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfu5cDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfoJcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfoZcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCfopcDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfo5cDEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfpJcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfpZcDEeKVudOPtQ6VQg" name="Tuple@b2b8a4" outgoing="__WCfvJcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfupcDEeKVudOPtQ6VQg" target="__WCfsZcDEeKVudOPtQ6VQg" source="__WCfrZcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfppcDEeKVudOPtQ6VQg" name="Call(Concat)">
+ <argument xmi:id="__WCfp5cDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCgIpcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfqJcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfqZcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="__WCfqpcDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgI5cDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfq5cDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfrJcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCfrZcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCfupcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfrpcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfr5cDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfsJcDEeKVudOPtQ6VQg" name="Call(Concat)">
+ <argument xmi:id="__WCfsZcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCfupcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfspcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfs5cDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="__WCftJcDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgJJcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCftZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCftpcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCft5cDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCfu5cDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfuJcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfuZcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfvZcDEeKVudOPtQ6VQg" name="ExpressionStatement@624779" incoming="__WCgJpcDEeKVudOPtQ6VQg" outgoing="__WCgJ5cDEeKVudOPtQ6VQg">
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfvpcDEeKVudOPtQ6VQg" name="Call(TestAssertEquals)" behavior="_oUPBMJGLEeKaY7tSssHhGw"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfv5cDEeKVudOPtQ6VQg" name="ExpressionStatement@e939d4" incoming="__WCgJ5cDEeKVudOPtQ6VQg" outgoing="__WCgKJcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCfzZcDEeKVudOPtQ6VQg" target="__WCfwZcDEeKVudOPtQ6VQg" source="__WCfyZcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCfzpcDEeKVudOPtQ6VQg" target="__WCfwJcDEeKVudOPtQ6VQg" source="__WCfx5cDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCfwJcDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCfzpcDEeKVudOPtQ6VQg">
+ <argument xmi:id="__WCfwZcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCfzZcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfwpcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfw5cDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCfxJcDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfxZcDEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfxpcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfx5cDEeKVudOPtQ6VQg" name="Tuple@19fe454" outgoing="__WCfzpcDEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCfyJcDEeKVudOPtQ6VQg" name="Value("")">
+ <result xmi:id="__WCfyZcDEeKVudOPtQ6VQg" name="Value("").result" outgoing="__WCfzZcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCfypcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCfy5cDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="__WCfzJcDEeKVudOPtQ6VQg" value="">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCfz5cDEeKVudOPtQ6VQg" name="ExpressionStatement@7e2772" incoming="__WCgKJcDEeKVudOPtQ6VQg" outgoing="__WCgLJcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCf15cDEeKVudOPtQ6VQg" target="__WCf0JcDEeKVudOPtQ6VQg" source="__WCf05cDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="__WCf0JcDEeKVudOPtQ6VQg" name="Fork(activityName)@c8d2ed" incoming="__WCf15cDEeKVudOPtQ6VQg" outgoing="__WCgKpcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCf0ZcDEeKVudOPtQ6VQg" name="RightHandSide@8fdfa7">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCf0pcDEeKVudOPtQ6VQg" name="Value("AssertList")">
+ <result xmi:id="__WCf05cDEeKVudOPtQ6VQg" name="Value("AssertList").result" outgoing="__WCf15cDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf1JcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf1ZcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="__WCf1pcDEeKVudOPtQ6VQg" value="AssertList">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCf2JcDEeKVudOPtQ6VQg" name="ExpressionStatement@12f4183" incoming="__WCgLJcDEeKVudOPtQ6VQg" outgoing="__WCgLZcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCf9pcDEeKVudOPtQ6VQg" target="__WCf2pcDEeKVudOPtQ6VQg" source="__WCf8pcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCf95cDEeKVudOPtQ6VQg" target="__WCf2ZcDEeKVudOPtQ6VQg" source="__WCf4JcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCf2ZcDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCf95cDEeKVudOPtQ6VQg">
+ <argument xmi:id="__WCf2pcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCf9pcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf25cDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf3JcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCf3ZcDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf3pcDEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf35cDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCf4JcDEeKVudOPtQ6VQg" name="Tuple@1c68f60" outgoing="__WCf95cDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCf9ZcDEeKVudOPtQ6VQg" target="__WCf7JcDEeKVudOPtQ6VQg" source="__WCf6JcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCf4ZcDEeKVudOPtQ6VQg" name="Call(Concat)">
+ <argument xmi:id="__WCf4pcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCgKZcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf45cDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf5JcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="__WCf5ZcDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgKpcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf5pcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf55cDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCf6JcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCf9ZcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf6ZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf6pcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCf65cDEeKVudOPtQ6VQg" name="Call(Concat)">
+ <argument xmi:id="__WCf7JcDEeKVudOPtQ6VQg" name="Call(Concat).argument(x)" incoming="__WCf9ZcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf7ZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf7pcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="__WCf75cDEeKVudOPtQ6VQg" name="Call(Concat).argument(y)" incoming="__WCgK5cDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf8JcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf8ZcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCf8pcDEeKVudOPtQ6VQg" name="Call(Concat).result(result)" outgoing="__WCf9pcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf85cDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf9JcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:FunctionBehavior" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#PrimitiveBehaviors-StringFunctions-Concat"/>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCf-JcDEeKVudOPtQ6VQg" name="ExpressionStatement@18533db" incoming="__WCgLZcDEeKVudOPtQ6VQg" outgoing="__WCgLpcDEeKVudOPtQ6VQg">
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCf-ZcDEeKVudOPtQ6VQg" name="Call(TestAssertList)" behavior="_qCxx8JcCEeKVudOPtQ6VQg"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCf-pcDEeKVudOPtQ6VQg" name="ExpressionStatement@ad9377" incoming="__WCgLpcDEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="__WCgCJcDEeKVudOPtQ6VQg" target="__WCf_JcDEeKVudOPtQ6VQg" source="__WCgBJcDEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="__WCgCZcDEeKVudOPtQ6VQg" target="__WCf-5cDEeKVudOPtQ6VQg" source="__WCgApcDEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="__WCf-5cDEeKVudOPtQ6VQg" name="Call(WriteLine)" incoming="__WCgCZcDEeKVudOPtQ6VQg">
+ <argument xmi:id="__WCf_JcDEeKVudOPtQ6VQg" name="Call(WriteLine).argument(value)" incoming="__WCgCJcDEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCf_ZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCf_pcDEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <result xmi:id="__WCf_5cDEeKVudOPtQ6VQg" name="Call(WriteLine).result(errorStatus)">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCgAJcDEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCgAZcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml#BasicInputOutput-WriteLine"/>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="__WCgApcDEeKVudOPtQ6VQg" name="Tuple@18d4181" outgoing="__WCgCZcDEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="__WCgA5cDEeKVudOPtQ6VQg" name="Value("")">
+ <result xmi:id="__WCgBJcDEeKVudOPtQ6VQg" name="Value("").result" outgoing="__WCgCJcDEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="__WCgBZcDEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="__WCgBpcDEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="__WCgB5cDEeKVudOPtQ6VQg" value="">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ </structuredNode>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Activity" xmi:id="_qCxx8JcCEeKVudOPtQ6VQg" name="TestAssertList" node="_bCWNwJcEEeKVudOPtQ6VQg" group="_bCWNwJcEEeKVudOPtQ6VQg">
+ <ownedComment xmi:id="_dnoDzJcDEeKVudOPtQ6VQg">
+ <body>/* Generated textual representation of Activity AssertionLibrary::Tests::TestAssertList */
+
+namespace AssertionLibrary::Tests ;
+
+activity TestAssertList() { 
+ Integer[] list1 = {1, 2, 3, 4} ;
+ Integer[] list2 = {1, 2, 3, 4} ;
+ AssertList("{1, 2, 3, 4} vs. {1, 2, 3, 4} ", list1, list2) ;
+ 
+ Integer[] list3 = {1, 2, 7, 4, 8} ;
+ AssertList("{1, 2, 3, 4} vs. {1, 2, 7, 4, 8} ", list1, list3) ;
+}</body>
+ </ownedComment>
+ <structuredNode xmi:id="_bCWNwJcEEeKVudOPtQ6VQg" name="Body(TestAssertList)">
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOcJcEEeKVudOPtQ6VQg" target="_bCWN7pcEEeKVudOPtQ6VQg" source="_bCWNwZcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOcZcEEeKVudOPtQ6VQg" target="_bCWOHZcEEeKVudOPtQ6VQg" source="_bCWNxJcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOcpcEEeKVudOPtQ6VQg" target="_bCWOIJcEEeKVudOPtQ6VQg" source="_bCWN8ZcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOc5cEEeKVudOPtQ6VQg" target="_bCWOGJcEEeKVudOPtQ6VQg" source="_bCWN7pcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOdJcEEeKVudOPtQ6VQg" target="_bCWOK5cEEeKVudOPtQ6VQg" source="_bCWOGJcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOdZcEEeKVudOPtQ6VQg" target="_bCWOYpcEEeKVudOPtQ6VQg" source="_bCWNxpcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOdpcEEeKVudOPtQ6VQg" target="_bCWOZZcEEeKVudOPtQ6VQg" source="_bCWOLpcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOd5cEEeKVudOPtQ6VQg" target="_bCWOXZcEEeKVudOPtQ6VQg" source="_bCWOK5cEEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWNwZcEEeKVudOPtQ6VQg" name="LocalNameDeclarationStatement@1400aa1" outgoing="_bCWOcJcEEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWN65cEEeKVudOPtQ6VQg" target="_bCWNwpcEEeKVudOPtQ6VQg" source="_bCWN4ZcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWN7JcEEeKVudOPtQ6VQg" target="_bCWNxJcEEeKVudOPtQ6VQg" source="_bCWN4ZcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWN7ZcEEeKVudOPtQ6VQg" target="_bCWNxpcEEeKVudOPtQ6VQg" source="_bCWN4ZcEEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_bCWNwpcEEeKVudOPtQ6VQg" name="Fork(list1)@1202d4" incoming="_bCWN65cEEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWNw5cEEeKVudOPtQ6VQg" name="RightHandSide@17a0709"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_bCWNxJcEEeKVudOPtQ6VQg" name="Fork(list1)@5bbfa4" incoming="_bCWN7JcEEeKVudOPtQ6VQg" outgoing="_bCWOcZcEEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWNxZcEEeKVudOPtQ6VQg" name="RightHandSide@17a0709"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_bCWNxpcEEeKVudOPtQ6VQg" name="Fork(list1)@17bc2dd" incoming="_bCWN7ZcEEeKVudOPtQ6VQg" outgoing="_bCWOdZcEEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWNx5cEEeKVudOPtQ6VQg" name="RightHandSide@17a0709">
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWNyJcEEeKVudOPtQ6VQg" name="SequenceConstructionExpression@17a0709">
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWN5JcEEeKVudOPtQ6VQg" target="_bCWNz5cEEeKVudOPtQ6VQg" source="_bCWNyZcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWN5ZcEEeKVudOPtQ6VQg" target="_bCWN1ZcEEeKVudOPtQ6VQg" source="_bCWNz5cEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWN5pcEEeKVudOPtQ6VQg" target="_bCWN25cEEeKVudOPtQ6VQg" source="_bCWN1ZcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWN55cEEeKVudOPtQ6VQg" target="_bCWN4ZcEEeKVudOPtQ6VQg" source="_bCWNy5cEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWN6JcEEeKVudOPtQ6VQg" target="_bCWN4ZcEEeKVudOPtQ6VQg" source="_bCWN0ZcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWN6ZcEEeKVudOPtQ6VQg" target="_bCWN4ZcEEeKVudOPtQ6VQg" source="_bCWN15cEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWN6pcEEeKVudOPtQ6VQg" target="_bCWN4ZcEEeKVudOPtQ6VQg" source="_bCWN3ZcEEeKVudOPtQ6VQg"/>
+ <structuredNodeOutput xmi:id="_bCWN4ZcEEeKVudOPtQ6VQg" name="SequenceConstructionExpression@17a0709.output" incoming="_bCWN55cEEeKVudOPtQ6VQg _bCWN6JcEEeKVudOPtQ6VQg _bCWN6ZcEEeKVudOPtQ6VQg _bCWN6pcEEeKVudOPtQ6VQg" outgoing="_bCWN65cEEeKVudOPtQ6VQg _bCWN7JcEEeKVudOPtQ6VQg _bCWN7ZcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWN4pcEEeKVudOPtQ6VQg" value="4"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWN45cEEeKVudOPtQ6VQg" value="4"/>
+ </structuredNodeOutput>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWNyZcEEeKVudOPtQ6VQg" name="SequenceExpressionList@57286c#1" outgoing="_bCWN5JcEEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWNypcEEeKVudOPtQ6VQg" name="Value(1)">
+ <result xmi:id="_bCWNy5cEEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_bCWN55cEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWNzJcEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWNzZcEEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_bCWNzpcEEeKVudOPtQ6VQg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWNz5cEEeKVudOPtQ6VQg" name="SequenceExpressionList@57286c#2" incoming="_bCWN5JcEEeKVudOPtQ6VQg" outgoing="_bCWN5ZcEEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWN0JcEEeKVudOPtQ6VQg" name="Value(2)">
+ <result xmi:id="_bCWN0ZcEEeKVudOPtQ6VQg" name="Value(2).result" outgoing="_bCWN6JcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWN0pcEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWN05cEEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_bCWN1JcEEeKVudOPtQ6VQg" value="2">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN1ZcEEeKVudOPtQ6VQg" name="SequenceExpressionList@57286c#3" incoming="_bCWN5ZcEEeKVudOPtQ6VQg" outgoing="_bCWN5pcEEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWN1pcEEeKVudOPtQ6VQg" name="Value(3)">
+ <result xmi:id="_bCWN15cEEeKVudOPtQ6VQg" name="Value(3).result" outgoing="_bCWN6ZcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWN2JcEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWN2ZcEEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_bCWN2pcEEeKVudOPtQ6VQg" value="3">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN25cEEeKVudOPtQ6VQg" name="SequenceExpressionList@57286c#4" incoming="_bCWN5pcEEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWN3JcEEeKVudOPtQ6VQg" name="Value(4)">
+ <result xmi:id="_bCWN3ZcEEeKVudOPtQ6VQg" name="Value(4).result" outgoing="_bCWN6pcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWN3pcEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWN35cEEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_bCWN4JcEEeKVudOPtQ6VQg" value="4">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN7pcEEeKVudOPtQ6VQg" name="LocalNameDeclarationStatement@1da4433" incoming="_bCWOcJcEEeKVudOPtQ6VQg" outgoing="_bCWOc5cEEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOFpcEEeKVudOPtQ6VQg" target="_bCWN75cEEeKVudOPtQ6VQg" source="_bCWODJcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOF5cEEeKVudOPtQ6VQg" target="_bCWN8ZcEEeKVudOPtQ6VQg" source="_bCWODJcEEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_bCWN75cEEeKVudOPtQ6VQg" name="Fork(list2)@1db09c1" incoming="_bCWOFpcEEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN8JcEEeKVudOPtQ6VQg" name="RightHandSide@b3744c"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_bCWN8ZcEEeKVudOPtQ6VQg" name="Fork(list2)@2d0c5b" incoming="_bCWOF5cEEeKVudOPtQ6VQg" outgoing="_bCWOcpcEEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN8pcEEeKVudOPtQ6VQg" name="RightHandSide@b3744c">
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN85cEEeKVudOPtQ6VQg" name="SequenceConstructionExpression@b3744c">
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOD5cEEeKVudOPtQ6VQg" target="_bCWN-pcEEeKVudOPtQ6VQg" source="_bCWN9JcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOEJcEEeKVudOPtQ6VQg" target="_bCWOAJcEEeKVudOPtQ6VQg" source="_bCWN-pcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOEZcEEeKVudOPtQ6VQg" target="_bCWOBpcEEeKVudOPtQ6VQg" source="_bCWOAJcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOEpcEEeKVudOPtQ6VQg" target="_bCWODJcEEeKVudOPtQ6VQg" source="_bCWN9pcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOE5cEEeKVudOPtQ6VQg" target="_bCWODJcEEeKVudOPtQ6VQg" source="_bCWN_JcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOFJcEEeKVudOPtQ6VQg" target="_bCWODJcEEeKVudOPtQ6VQg" source="_bCWOApcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOFZcEEeKVudOPtQ6VQg" target="_bCWODJcEEeKVudOPtQ6VQg" source="_bCWOCJcEEeKVudOPtQ6VQg"/>
+ <structuredNodeOutput xmi:id="_bCWODJcEEeKVudOPtQ6VQg" name="SequenceConstructionExpression@b3744c.output" incoming="_bCWOEpcEEeKVudOPtQ6VQg _bCWOE5cEEeKVudOPtQ6VQg _bCWOFJcEEeKVudOPtQ6VQg _bCWOFZcEEeKVudOPtQ6VQg" outgoing="_bCWOFpcEEeKVudOPtQ6VQg _bCWOF5cEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWODZcEEeKVudOPtQ6VQg" value="4"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWODpcEEeKVudOPtQ6VQg" value="4"/>
+ </structuredNodeOutput>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN9JcEEeKVudOPtQ6VQg" name="SequenceExpressionList@182e06a#1" outgoing="_bCWOD5cEEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWN9ZcEEeKVudOPtQ6VQg" name="Value(1)">
+ <result xmi:id="_bCWN9pcEEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_bCWOEpcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWN95cEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWN-JcEEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_bCWN-ZcEEeKVudOPtQ6VQg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWN-pcEEeKVudOPtQ6VQg" name="SequenceExpressionList@182e06a#2" incoming="_bCWOD5cEEeKVudOPtQ6VQg" outgoing="_bCWOEJcEEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWN-5cEEeKVudOPtQ6VQg" name="Value(2)">
+ <result xmi:id="_bCWN_JcEEeKVudOPtQ6VQg" name="Value(2).result" outgoing="_bCWOE5cEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWN_ZcEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWN_pcEEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_bCWN_5cEEeKVudOPtQ6VQg" value="2">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOAJcEEeKVudOPtQ6VQg" name="SequenceExpressionList@182e06a#3" incoming="_bCWOEJcEEeKVudOPtQ6VQg" outgoing="_bCWOEZcEEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOAZcEEeKVudOPtQ6VQg" name="Value(3)">
+ <result xmi:id="_bCWOApcEEeKVudOPtQ6VQg" name="Value(3).result" outgoing="_bCWOFJcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOA5cEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOBJcEEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_bCWOBZcEEeKVudOPtQ6VQg" value="3">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOBpcEEeKVudOPtQ6VQg" name="SequenceExpressionList@182e06a#4" incoming="_bCWOEZcEEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOB5cEEeKVudOPtQ6VQg" name="Value(4)">
+ <result xmi:id="_bCWOCJcEEeKVudOPtQ6VQg" name="Value(4).result" outgoing="_bCWOFZcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOCZcEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOCpcEEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_bCWOC5cEEeKVudOPtQ6VQg" value="4">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOGJcEEeKVudOPtQ6VQg" name="ExpressionStatement@16d310e" incoming="_bCWOc5cEEeKVudOPtQ6VQg" outgoing="_bCWOdJcEEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOKZcEEeKVudOPtQ6VQg" target="_bCWOGpcEEeKVudOPtQ6VQg" source="_bCWOJZcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOKpcEEeKVudOPtQ6VQg" target="_bCWOGZcEEeKVudOPtQ6VQg" source="_bCWOI5cEEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_bCWOGZcEEeKVudOPtQ6VQg" name="Call(AssertList)" incoming="_bCWOKpcEEeKVudOPtQ6VQg" behavior="_-Y3PAIgUEeKtquXykzQHVw">
+ <argument xmi:id="_bCWOGpcEEeKVudOPtQ6VQg" name="Call(AssertList).argument(label)" incoming="_bCWOKZcEEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOG5cEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOHJcEEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_bCWOHZcEEeKVudOPtQ6VQg" name="Call(AssertList).argument(list)" incoming="_bCWOcZcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOHpcEEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOH5cEEeKVudOPtQ6VQg" value="*"/>
+ </argument>
+ <argument xmi:id="_bCWOIJcEEeKVudOPtQ6VQg" name="Call(AssertList).argument(expected)" incoming="_bCWOcpcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOIZcEEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOIpcEEeKVudOPtQ6VQg" value="*"/>
+ </argument>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOI5cEEeKVudOPtQ6VQg" name="Tuple@1980745" outgoing="_bCWOKpcEEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOJJcEEeKVudOPtQ6VQg" name="Value("{1, 2, 3, 4} vs. {1, 2, 3, 4} ")">
+ <result xmi:id="_bCWOJZcEEeKVudOPtQ6VQg" name="Value("{1, 2, 3, 4} vs. {1, 2, 3, 4} ").result" outgoing="_bCWOKZcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOJpcEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOJ5cEEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_bCWOKJcEEeKVudOPtQ6VQg" value="{1, 2, 3, 4} vs. {1, 2, 3, 4} ">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOK5cEEeKVudOPtQ6VQg" name="LocalNameDeclarationStatement@1a0e27b" incoming="_bCWOdJcEEeKVudOPtQ6VQg" outgoing="_bCWOd5cEEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOW5cEEeKVudOPtQ6VQg" target="_bCWOLJcEEeKVudOPtQ6VQg" source="_bCWOT5cEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOXJcEEeKVudOPtQ6VQg" target="_bCWOLpcEEeKVudOPtQ6VQg" source="_bCWOT5cEEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_bCWOLJcEEeKVudOPtQ6VQg" name="Fork(list3)@19783d9" incoming="_bCWOW5cEEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOLZcEEeKVudOPtQ6VQg" name="RightHandSide@1751f00"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_bCWOLpcEEeKVudOPtQ6VQg" name="Fork(list3)@1cd4150" incoming="_bCWOXJcEEeKVudOPtQ6VQg" outgoing="_bCWOdpcEEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOL5cEEeKVudOPtQ6VQg" name="RightHandSide@1751f00">
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOMJcEEeKVudOPtQ6VQg" name="SequenceConstructionExpression@1751f00">
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOUpcEEeKVudOPtQ6VQg" target="_bCWON5cEEeKVudOPtQ6VQg" source="_bCWOMZcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOU5cEEeKVudOPtQ6VQg" target="_bCWOPZcEEeKVudOPtQ6VQg" source="_bCWON5cEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOVJcEEeKVudOPtQ6VQg" target="_bCWOQ5cEEeKVudOPtQ6VQg" source="_bCWOPZcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOVZcEEeKVudOPtQ6VQg" target="_bCWOSZcEEeKVudOPtQ6VQg" source="_bCWOQ5cEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOVpcEEeKVudOPtQ6VQg" target="_bCWOT5cEEeKVudOPtQ6VQg" source="_bCWOM5cEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOV5cEEeKVudOPtQ6VQg" target="_bCWOT5cEEeKVudOPtQ6VQg" source="_bCWOOZcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOWJcEEeKVudOPtQ6VQg" target="_bCWOT5cEEeKVudOPtQ6VQg" source="_bCWOP5cEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOWZcEEeKVudOPtQ6VQg" target="_bCWOT5cEEeKVudOPtQ6VQg" source="_bCWORZcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWOWpcEEeKVudOPtQ6VQg" target="_bCWOT5cEEeKVudOPtQ6VQg" source="_bCWOS5cEEeKVudOPtQ6VQg"/>
+ <structuredNodeOutput xmi:id="_bCWOT5cEEeKVudOPtQ6VQg" name="SequenceConstructionExpression@1751f00.output" incoming="_bCWOVpcEEeKVudOPtQ6VQg _bCWOV5cEEeKVudOPtQ6VQg _bCWOWJcEEeKVudOPtQ6VQg _bCWOWZcEEeKVudOPtQ6VQg _bCWOWpcEEeKVudOPtQ6VQg" outgoing="_bCWOW5cEEeKVudOPtQ6VQg _bCWOXJcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOUJcEEeKVudOPtQ6VQg" value="5"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOUZcEEeKVudOPtQ6VQg" value="5"/>
+ </structuredNodeOutput>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOMZcEEeKVudOPtQ6VQg" name="SequenceExpressionList@18ed106#1" outgoing="_bCWOUpcEEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOMpcEEeKVudOPtQ6VQg" name="Value(1)">
+ <result xmi:id="_bCWOM5cEEeKVudOPtQ6VQg" name="Value(1).result" outgoing="_bCWOVpcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWONJcEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWONZcEEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_bCWONpcEEeKVudOPtQ6VQg" value="1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWON5cEEeKVudOPtQ6VQg" name="SequenceExpressionList@18ed106#2" incoming="_bCWOUpcEEeKVudOPtQ6VQg" outgoing="_bCWOU5cEEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOOJcEEeKVudOPtQ6VQg" name="Value(2)">
+ <result xmi:id="_bCWOOZcEEeKVudOPtQ6VQg" name="Value(2).result" outgoing="_bCWOV5cEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOOpcEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOO5cEEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_bCWOPJcEEeKVudOPtQ6VQg" value="2">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOPZcEEeKVudOPtQ6VQg" name="SequenceExpressionList@18ed106#3" incoming="_bCWOU5cEEeKVudOPtQ6VQg" outgoing="_bCWOVJcEEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOPpcEEeKVudOPtQ6VQg" name="Value(7)">
+ <result xmi:id="_bCWOP5cEEeKVudOPtQ6VQg" name="Value(7).result" outgoing="_bCWOWJcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOQJcEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOQZcEEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_bCWOQpcEEeKVudOPtQ6VQg" value="7">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOQ5cEEeKVudOPtQ6VQg" name="SequenceExpressionList@18ed106#4" incoming="_bCWOVJcEEeKVudOPtQ6VQg" outgoing="_bCWOVZcEEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWORJcEEeKVudOPtQ6VQg" name="Value(4)">
+ <result xmi:id="_bCWORZcEEeKVudOPtQ6VQg" name="Value(4).result" outgoing="_bCWOWZcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWORpcEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOR5cEEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_bCWOSJcEEeKVudOPtQ6VQg" value="4">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOSZcEEeKVudOPtQ6VQg" name="SequenceExpressionList@18ed106#5" incoming="_bCWOVZcEEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOSpcEEeKVudOPtQ6VQg" name="Value(8)">
+ <result xmi:id="_bCWOS5cEEeKVudOPtQ6VQg" name="Value(8).result" outgoing="_bCWOWpcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOTJcEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOTZcEEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralInteger" xmi:id="_bCWOTpcEEeKVudOPtQ6VQg" value="8">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveTypes-Natural"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ </node>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOXZcEEeKVudOPtQ6VQg" name="ExpressionStatement@1751dbd" incoming="_bCWOd5cEEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_bCWObpcEEeKVudOPtQ6VQg" target="_bCWOX5cEEeKVudOPtQ6VQg" source="_bCWOapcEEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_bCWOb5cEEeKVudOPtQ6VQg" target="_bCWOXpcEEeKVudOPtQ6VQg" source="_bCWOaJcEEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_bCWOXpcEEeKVudOPtQ6VQg" name="Call(AssertList)" incoming="_bCWOb5cEEeKVudOPtQ6VQg" behavior="_-Y3PAIgUEeKtquXykzQHVw">
+ <argument xmi:id="_bCWOX5cEEeKVudOPtQ6VQg" name="Call(AssertList).argument(label)" incoming="_bCWObpcEEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOYJcEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOYZcEEeKVudOPtQ6VQg" value="1"/>
+ </argument>
+ <argument xmi:id="_bCWOYpcEEeKVudOPtQ6VQg" name="Call(AssertList).argument(list)" incoming="_bCWOdZcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOY5cEEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOZJcEEeKVudOPtQ6VQg" value="*"/>
+ </argument>
+ <argument xmi:id="_bCWOZZcEEeKVudOPtQ6VQg" name="Call(AssertList).argument(expected)" incoming="_bCWOdpcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOZpcEEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWOZ5cEEeKVudOPtQ6VQg" value="*"/>
+ </argument>
+ </node>
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_bCWOaJcEEeKVudOPtQ6VQg" name="Tuple@123e9b2" outgoing="_bCWOb5cEEeKVudOPtQ6VQg">
+ <node xmi:type="uml:ValueSpecificationAction" xmi:id="_bCWOaZcEEeKVudOPtQ6VQg" name="Value("{1, 2, 3, 4} vs. {1, 2, 7, 4, 8} ")">
+ <result xmi:id="_bCWOapcEEeKVudOPtQ6VQg" name="Value("{1, 2, 3, 4} vs. {1, 2, 7, 4, 8} ").result" outgoing="_bCWObpcEEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_bCWOa5cEEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_bCWObJcEEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <value xmi:type="uml:LiteralString" xmi:id="_bCWObZcEEeKVudOPtQ6VQg" value="{1, 2, 3, 4} vs. {1, 2, 7, 4, 8} ">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </value>
+ </node>
+ </node>
+ </node>
+ </structuredNode>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Activity" xmi:id="_iPgC4JcCEeKVudOPtQ6VQg" name="$$Alf$Library$CollectionFunctions$size__any__" node="_iPgC7pcCEeKVudOPtQ6VQg _iPgC75cCEeKVudOPtQ6VQg _iPgC8JcCEeKVudOPtQ6VQg _iPgC8ZcCEeKVudOPtQ6VQg _iPgC8pcCEeKVudOPtQ6VQg" group="_iPgC8pcCEeKVudOPtQ6VQg">
+ <ownedParameter xmi:id="_iPgC5JcCEeKVudOPtQ6VQg" name="seq" visibility="package" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iPgC5ZcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iPgC5pcCEeKVudOPtQ6VQg" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_iPgC55cCEeKVudOPtQ6VQg" name="" visibility="package" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iPgC6JcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iPgC6ZcCEeKVudOPtQ6VQg" value="1"/>
+ </ownedParameter>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iPgC6pcCEeKVudOPtQ6VQg" target="_iPgC75cCEeKVudOPtQ6VQg" source="_iPgC7pcCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_iPgC65cCEeKVudOPtQ6VQg" target="_iPgC8ZcCEeKVudOPtQ6VQg" source="_iPgC85cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iPgC7JcCEeKVudOPtQ6VQg" target="_iPgC9ZcCEeKVudOPtQ6VQg" source="_iPgC75cCEeKVudOPtQ6VQg"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iPgC7ZcCEeKVudOPtQ6VQg" target="_iPgC8JcCEeKVudOPtQ6VQg" source="_iPgC-5cCEeKVudOPtQ6VQg"/>
+ <structuredNode xmi:id="_iPgC8pcCEeKVudOPtQ6VQg" name="Body(size)">
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_iPgC85cCEeKVudOPtQ6VQg" name="ReturnStatement@22536490" outgoing="_iPgC65cCEeKVudOPtQ6VQg">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_iPgC_pcCEeKVudOPtQ6VQg" target="_iPgC-5cCEeKVudOPtQ6VQg" source="_iPgC-JcCEeKVudOPtQ6VQg"/>
+ <structuredNodeOutput xmi:id="_iPgC-5cCEeKVudOPtQ6VQg" name="ReturnStatement@22536490.output" incoming="_iPgC_pcCEeKVudOPtQ6VQg" outgoing="_iPgC7ZcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iPgC_JcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iPgC_ZcCEeKVudOPtQ6VQg" value="1"/>
+ </structuredNodeOutput>
+ <node xmi:type="uml:CallBehaviorAction" xmi:id="_iPgC9JcCEeKVudOPtQ6VQg" name="Call(Size)">
+ <argument xmi:id="_iPgC9ZcCEeKVudOPtQ6VQg" name="Call(Size).argument(seq)" incoming="_iPgC7JcCEeKVudOPtQ6VQg" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iPgC9pcCEeKVudOPtQ6VQg"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iPgC95cCEeKVudOPtQ6VQg" value="*"/>
+ </argument>
+ <result xmi:id="_iPgC-JcCEeKVudOPtQ6VQg" name="Call(Size).result()" outgoing="_iPgC_pcCEeKVudOPtQ6VQg">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_iPgC-ZcCEeKVudOPtQ6VQg" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_iPgC-pcCEeKVudOPtQ6VQg" value="1"/>
+ </result>
+ <behavior xmi:type="uml:Activity" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf-Library-PrimitiveBehaviors-SequenceFunctions-Size"/>
+ </node>
+ </node>
+ </structuredNode>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="_iPgC7pcCEeKVudOPtQ6VQg" name="Input(seq)" outgoing="_iPgC6pcCEeKVudOPtQ6VQg" parameter="_iPgC5JcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ForkNode" xmi:id="_iPgC75cCEeKVudOPtQ6VQg" name="Fork(seq)" incoming="_iPgC6pcCEeKVudOPtQ6VQg" outgoing="_iPgC7JcCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="_iPgC8JcCEeKVudOPtQ6VQg" name="Return" incoming="_iPgC7ZcCEeKVudOPtQ6VQg" parameter="_iPgC55cCEeKVudOPtQ6VQg"/>
+ <node xmi:type="uml:ActivityFinalNode" xmi:id="_iPgC8ZcCEeKVudOPtQ6VQg" name="Final" incoming="_iPgC65cCEeKVudOPtQ6VQg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Activity" xmi:id="_iPgC_5cCEeKVudOPtQ6VQg">
+ <templateBinding xmi:id="_iPgDAJcCEeKVudOPtQ6VQg">
+ <parameterSubstitution xmi:id="_iPgDAZcCEeKVudOPtQ6VQg">
+ <formal xmi:type="uml:ClassifierTemplateParameter" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#_JmqbdYVoEeKRrIQMgiVHcQ"/>
+ </parameterSubstitution>
+ <signature xmi:type="uml:RedefinableTemplateSignature" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#_JmqbdIVoEeKRrIQMgiVHcQ"/>
+ </templateBinding>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Realization" xmi:id="_iPgDApcCEeKVudOPtQ6VQg" client="_iPgC4JcCEeKVudOPtQ6VQg" supplier="_iPgC_5cCEeKVudOPtQ6VQg"/>
+ <packagedElement xmi:type="uml:OpaqueBehavior" xmi:id="_42AbkNz9EeONFdeprwPg2A" name="GenerateTestReport"/>
+ <profileApplication xmi:id="_PWUOo4gVEeKtquXykzQHVw">
+ <eAnnotations xmi:id="_PWd_oIgVEeKtquXykzQHVw" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="platform:/plugin/org.eclipse.papyrus.alf/resources/ActionLanguage-Profile.profile.uml#_sYse0YZLEeKyw49uR6nx3g"/>
+ </eAnnotations>
+ <appliedProfile href="platform:/plugin/org.eclipse.papyrus.alf/resources/ActionLanguage-Profile.profile.uml#ActionLanguage"/>
+ </profileApplication>
+ </uml:Model>
+ <ActionLanguage:TextualRepresentation xmi:id="_PYjDQIgVEeKtquXykzQHVw" base_Comment="_PWUOoIgVEeKtquXykzQHVw"/>
+ <ActionLanguage:TextualRepresentation xmi:id="_cKvjYYgVEeKtquXykzQHVw" base_Comment="_cKvjYIgVEeKtquXykzQHVw"/>
+ <ActionLanguage:TextualRepresentation xmi:id="_qGNYsYgVEeKtquXykzQHVw" base_Comment="_qGNYsIgVEeKtquXykzQHVw"/>
+ <ActionLanguage:TextualRepresentation xmi:id="_2i470YgVEeKtquXykzQHVw" base_Comment="_2i470IgVEeKtquXykzQHVw"/>
+ <ActionLanguage:TextualRepresentation xmi:id="_ZaCg4YgWEeKtquXykzQHVw" base_Comment="_ZaCg4IgWEeKtquXykzQHVw"/>
+ <ActionLanguage:TextualRepresentation xmi:id="_9RFEAJGKEeKaY7tSssHhGw" base_Comment="_9Q7TDpGKEeKaY7tSssHhGw"/>
+ <ActionLanguage:TextualRepresentation xmi:id="_QCbqgZGLEeKaY7tSssHhGw" base_Comment="_QCbqgJGLEeKaY7tSssHhGw"/>
+ <ActionLanguage:TextualRepresentation xmi:id="_fY76cZGLEeKaY7tSssHhGw" base_Comment="_fY76cJGLEeKaY7tSssHhGw"/>
+ <ActionLanguage:TextualRepresentation xmi:id="_xyMJoZGLEeKaY7tSssHhGw" base_Comment="_xyMJoJGLEeKaY7tSssHhGw"/>
+ <ActionLanguage:TextualRepresentation xmi:id="_XZzW4JMsEeKsOLt3X9dUzg" base_Comment="_XZhDAJMsEeKsOLt3X9dUzg"/>
+ <ActionLanguage:TextualRepresentation xmi:id="_dnx0YJcDEeKVudOPtQ6VQg" base_Comment="_dnoDzJcDEeKVudOPtQ6VQg"/>
+</xmi:XMI>
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/Activator.java b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/Activator.java
index 1112caa..b030a14 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/Activator.java
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/Activator.java
@@ -1,43 +1,43 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.fuml.assertionlibrary;
-
-import org.eclipse.core.runtime.Plugin;
-import org.eclipse.papyrus.infra.core.log.LogHelper;
-import org.osgi.framework.BundleContext;
-
-public class Activator extends Plugin {
-
- public static LogHelper log;
-
- /*
- * (non-Javadoc)
- *
- * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
- */
- @Override
- public void start(BundleContext bundleContext) throws Exception {
- super.start(bundleContext);
- log = new LogHelper(this);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
- */
- @Override
- public void stop(BundleContext bundleContext) throws Exception {
- super.stop(bundleContext);
- }
-
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.fuml.assertionlibrary;
+
+import org.eclipse.core.runtime.Plugin;
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.osgi.framework.BundleContext;
+
+public class Activator extends Plugin {
+
+ public static LogHelper log;
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.osgi.framework.BundleActivator#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext bundleContext) throws Exception {
+ super.start(bundleContext);
+ log = new LogHelper(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.osgi.framework.BundleActivator#stop(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void stop(BundleContext bundleContext) throws Exception {
+ super.stop(bundleContext);
+ }
+
+}
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/AssertionLibraryRegistery.java b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/AssertionLibraryRegistery.java
index cfbf650..69f5eee 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/AssertionLibraryRegistery.java
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/AssertionLibraryRegistery.java
@@ -1,59 +1,59 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.fuml.assertionlibrary;
-
-import org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1.Locus;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.basic.AssertEquals;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.basic.AssertFalse;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.basic.AssertList;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.basic.AssertTrue;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.GenerateTestReport;
-import org.eclipse.papyrus.moka.fuml.registry.AbstractOpaqueBehaviorExecutionRegistry;
-
-public class AssertionLibraryRegistery extends AbstractOpaqueBehaviorExecutionRegistry {
-
- /**
- * Declared Name of the registered library
- */
- public final static String ASSERTION_LIBRARY = "AssertionLibrary";
-
- /**
- * List of qualified names of model elements (OpaqueBehavior) representing assertions
- */
- public final static String ASSERT_EQUALS = "AssertionLibrary::AssertEquals";
-
- public final static String ASSERT_FALSE = "AssertionLibrary::AssertFalse";
-
- public final static String ASSERT_TRUE = "AssertionLibrary::AssertTrue";
-
- public final static String ASSERT_LIST = "AssertionLibrary::AssertList";
-
- /**
- * Qualified name of the OpaqueBehavior responsible for generating a test report"
- */
- public final static String GENERATE_TEST_REPORT = "AssertionLibrary::GenerateTestReport";
-
- @Override
- /**
- * Register OpaqueBehaviorExecution implementing the behaviors associated
- * to OpaqueBehavior assertions
- */
- public void registerOpaqueBehaviorExecutions(Locus locus) {
- this.locus = locus;
- this.buildOpaqueBehaviorsMap(ASSERTION_LIBRARY);
- this.registerOpaqueBehaviorExecution(new AssertEquals(), ASSERT_EQUALS);
- this.registerOpaqueBehaviorExecution(new AssertFalse(), ASSERT_FALSE);
- this.registerOpaqueBehaviorExecution(new AssertTrue(), ASSERT_TRUE);
- this.registerOpaqueBehaviorExecution(new AssertList(), ASSERT_LIST);
- this.registerOpaqueBehaviorExecution(new GenerateTestReport(), GENERATE_TEST_REPORT);
- }
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.fuml.assertionlibrary;
+
+import org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1.Locus;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.basic.AssertEquals;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.basic.AssertFalse;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.basic.AssertList;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.basic.AssertTrue;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.GenerateTestReport;
+import org.eclipse.papyrus.moka.fuml.registry.AbstractOpaqueBehaviorExecutionRegistry;
+
+public class AssertionLibraryRegistery extends AbstractOpaqueBehaviorExecutionRegistry {
+
+ /**
+ * Declared Name of the registered library
+ */
+ public final static String ASSERTION_LIBRARY = "AssertionLibrary";
+
+ /**
+ * List of qualified names of model elements (OpaqueBehavior) representing assertions
+ */
+ public final static String ASSERT_EQUALS = "AssertionLibrary::AssertEquals";
+
+ public final static String ASSERT_FALSE = "AssertionLibrary::AssertFalse";
+
+ public final static String ASSERT_TRUE = "AssertionLibrary::AssertTrue";
+
+ public final static String ASSERT_LIST = "AssertionLibrary::AssertList";
+
+ /**
+ * Qualified name of the OpaqueBehavior responsible for generating a test report"
+ */
+ public final static String GENERATE_TEST_REPORT = "AssertionLibrary::GenerateTestReport";
+
+ @Override
+ /**
+ * Register OpaqueBehaviorExecution implementing the behaviors associated
+ * to OpaqueBehavior assertions
+ */
+ public void registerOpaqueBehaviorExecutions(Locus locus) {
+ this.locus = locus;
+ this.buildOpaqueBehaviorsMap(ASSERTION_LIBRARY);
+ this.registerOpaqueBehaviorExecution(new AssertEquals(), ASSERT_EQUALS);
+ this.registerOpaqueBehaviorExecution(new AssertFalse(), ASSERT_FALSE);
+ this.registerOpaqueBehaviorExecution(new AssertTrue(), ASSERT_TRUE);
+ this.registerOpaqueBehaviorExecution(new AssertList(), ASSERT_LIST);
+ this.registerOpaqueBehaviorExecution(new GenerateTestReport(), GENERATE_TEST_REPORT);
+ }
+}
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertEquals.java b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertEquals.java
index 1d13021..de25141 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertEquals.java
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertEquals.java
@@ -1,51 +1,51 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.fuml.assertionlibrary.basic;
-
-import java.util.List;
-
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.StringValue;
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Value;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.OpaqueBehaviorExecution;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.Reporter;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestDecision;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestReport;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.utils.AssertionExecutionContextHelper;
-import org.eclipse.uml2.uml.Classifier;
-
-
-public class AssertEquals extends OpaqueBehaviorExecution {
-
- @Override
- public void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters) {
- Classifier executionContext = AssertionExecutionContextHelper.getExecutionContext(this);
- StringValue label = (StringValue) inputParameters.get(0).values.get(0);
- boolean equal = true;
- if (inputParameters.get(1).values.size() == inputParameters.get(2).values.size()) {
- Integer i = 0;
- while (equal == true && i < inputParameters.get(1).values.size()) {
- equal = inputParameters.get(1).values.get(i).equals(inputParameters.get(2).values.get(i));
- i++;
- }
- } else {
- equal = false;
- }
- Reporter.INSTANCE.add(new TestReport(executionContext != null ? executionContext : null, label.value, equal ? TestDecision.SUCCESS : TestDecision.FAILED, getClass()));
- }
-
- @Override
- public Value new_() {
- return new AssertEquals();
- }
-
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.fuml.assertionlibrary.basic;
+
+import java.util.List;
+
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.StringValue;
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Value;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.OpaqueBehaviorExecution;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.Reporter;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestDecision;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestReport;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.utils.AssertionExecutionContextHelper;
+import org.eclipse.uml2.uml.Classifier;
+
+
+public class AssertEquals extends OpaqueBehaviorExecution {
+
+ @Override
+ public void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters) {
+ Classifier executionContext = AssertionExecutionContextHelper.getExecutionContext(this);
+ StringValue label = (StringValue) inputParameters.get(0).values.get(0);
+ boolean equal = true;
+ if (inputParameters.get(1).values.size() == inputParameters.get(2).values.size()) {
+ Integer i = 0;
+ while (equal == true && i < inputParameters.get(1).values.size()) {
+ equal = inputParameters.get(1).values.get(i).equals(inputParameters.get(2).values.get(i));
+ i++;
+ }
+ } else {
+ equal = false;
+ }
+ Reporter.INSTANCE.add(new TestReport(executionContext != null ? executionContext : null, label.value, equal ? TestDecision.SUCCESS : TestDecision.FAILED, getClass()));
+ }
+
+ @Override
+ public Value new_() {
+ return new AssertEquals();
+ }
+
+}
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertFalse.java b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertFalse.java
index d38fa44..9e98163 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertFalse.java
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertFalse.java
@@ -1,42 +1,42 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.fuml.assertionlibrary.basic;
-
-import java.util.List;
-
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.BooleanValue;
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.StringValue;
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Value;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.OpaqueBehaviorExecution;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.Reporter;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestDecision;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestReport;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.utils.AssertionExecutionContextHelper;
-import org.eclipse.uml2.uml.Classifier;
-
-
-public class AssertFalse extends OpaqueBehaviorExecution {
-
- @Override
- public void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters) {
- Classifier executionContext = AssertionExecutionContextHelper.getExecutionContext(this);
- StringValue label = (StringValue) inputParameters.get(0).values.get(0);
- BooleanValue assertionResult = (BooleanValue) inputParameters.get(1).values.get(0);
- Reporter.INSTANCE.add(new TestReport(executionContext != null ? executionContext : null, label.value, assertionResult.value == false ? TestDecision.SUCCESS : TestDecision.FAILED, getClass()));
- }
-
- @Override
- public Value new_() {
- return new AssertFalse();
- }
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.fuml.assertionlibrary.basic;
+
+import java.util.List;
+
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.BooleanValue;
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.StringValue;
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Value;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.OpaqueBehaviorExecution;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.Reporter;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestDecision;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestReport;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.utils.AssertionExecutionContextHelper;
+import org.eclipse.uml2.uml.Classifier;
+
+
+public class AssertFalse extends OpaqueBehaviorExecution {
+
+ @Override
+ public void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters) {
+ Classifier executionContext = AssertionExecutionContextHelper.getExecutionContext(this);
+ StringValue label = (StringValue) inputParameters.get(0).values.get(0);
+ BooleanValue assertionResult = (BooleanValue) inputParameters.get(1).values.get(0);
+ Reporter.INSTANCE.add(new TestReport(executionContext != null ? executionContext : null, label.value, assertionResult.value == false ? TestDecision.SUCCESS : TestDecision.FAILED, getClass()));
+ }
+
+ @Override
+ public Value new_() {
+ return new AssertFalse();
+ }
+}
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertList.java b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertList.java
index deb1669..b3d76d9 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertList.java
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertList.java
@@ -1,51 +1,51 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.fuml.assertionlibrary.basic;
-
-import java.util.List;
-
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.StringValue;
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Value;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.OpaqueBehaviorExecution;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.Reporter;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestDecision;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestReport;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.utils.AssertionExecutionContextHelper;
-import org.eclipse.uml2.uml.Classifier;
-
-
-public class AssertList extends OpaqueBehaviorExecution {
-
- @Override
- public void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters) {
- Classifier executionContext = AssertionExecutionContextHelper.getExecutionContext(this);
- StringValue label = (StringValue) inputParameters.get(0).values.get(0);
- boolean equal = true;
- if (inputParameters.get(1).values.size() == inputParameters.get(2).values.size()) {
- Integer i = 0;
- while (equal == true && i < inputParameters.get(1).values.size()) {
- equal = inputParameters.get(1).values.get(i).equals(inputParameters.get(2).values.get(i));
- i++;
- }
- } else {
- equal = false;
- }
- Reporter.INSTANCE.add(new TestReport(executionContext != null ? executionContext : null, label.value, equal ? TestDecision.SUCCESS : TestDecision.FAILED, getClass()));
- }
-
- @Override
- public Value new_() {
- return new AssertList();
- }
-
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.fuml.assertionlibrary.basic;
+
+import java.util.List;
+
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.StringValue;
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Value;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.OpaqueBehaviorExecution;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.Reporter;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestDecision;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestReport;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.utils.AssertionExecutionContextHelper;
+import org.eclipse.uml2.uml.Classifier;
+
+
+public class AssertList extends OpaqueBehaviorExecution {
+
+ @Override
+ public void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters) {
+ Classifier executionContext = AssertionExecutionContextHelper.getExecutionContext(this);
+ StringValue label = (StringValue) inputParameters.get(0).values.get(0);
+ boolean equal = true;
+ if (inputParameters.get(1).values.size() == inputParameters.get(2).values.size()) {
+ Integer i = 0;
+ while (equal == true && i < inputParameters.get(1).values.size()) {
+ equal = inputParameters.get(1).values.get(i).equals(inputParameters.get(2).values.get(i));
+ i++;
+ }
+ } else {
+ equal = false;
+ }
+ Reporter.INSTANCE.add(new TestReport(executionContext != null ? executionContext : null, label.value, equal ? TestDecision.SUCCESS : TestDecision.FAILED, getClass()));
+ }
+
+ @Override
+ public Value new_() {
+ return new AssertList();
+ }
+
+}
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertTrue.java b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertTrue.java
index b411e0b..c8252b6 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertTrue.java
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/basic/AssertTrue.java
@@ -1,42 +1,42 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.fuml.assertionlibrary.basic;
-
-import java.util.List;
-
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.BooleanValue;
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.StringValue;
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Value;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.OpaqueBehaviorExecution;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.Reporter;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestDecision;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestReport;
-import org.eclipse.papyrus.moka.fuml.assertionlibrary.utils.AssertionExecutionContextHelper;
-import org.eclipse.uml2.uml.Classifier;
-
-public class AssertTrue extends OpaqueBehaviorExecution {
-
- @Override
- public void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters) {
- Classifier executionContext = AssertionExecutionContextHelper.getExecutionContext(this);
- StringValue label = (StringValue) inputParameters.get(0).values.get(0);
- BooleanValue assertionResult = (BooleanValue) inputParameters.get(1).values.get(0);
- Reporter.INSTANCE.add(new TestReport(executionContext != null ? executionContext : null, label.value, assertionResult.value == true ? TestDecision.SUCCESS : TestDecision.FAILED, getClass()));
- }
-
- @Override
- public Value new_() {
- return new AssertTrue();
- }
-
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.fuml.assertionlibrary.basic;
+
+import java.util.List;
+
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.BooleanValue;
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.StringValue;
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Value;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.OpaqueBehaviorExecution;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.Reporter;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestDecision;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.reporting.TestReport;
+import org.eclipse.papyrus.moka.fuml.assertionlibrary.utils.AssertionExecutionContextHelper;
+import org.eclipse.uml2.uml.Classifier;
+
+public class AssertTrue extends OpaqueBehaviorExecution {
+
+ @Override
+ public void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters) {
+ Classifier executionContext = AssertionExecutionContextHelper.getExecutionContext(this);
+ StringValue label = (StringValue) inputParameters.get(0).values.get(0);
+ BooleanValue assertionResult = (BooleanValue) inputParameters.get(1).values.get(0);
+ Reporter.INSTANCE.add(new TestReport(executionContext != null ? executionContext : null, label.value, assertionResult.value == true ? TestDecision.SUCCESS : TestDecision.FAILED, getClass()));
+ }
+
+ @Override
+ public Value new_() {
+ return new AssertTrue();
+ }
+
+}
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/reporting/JUnit.java b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/reporting/JUnit.java
index eff803e..0631267 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/reporting/JUnit.java
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/reporting/JUnit.java
@@ -1,35 +1,35 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.fuml.assertionlibrary.reporting;
-
-
-public class JUnit {
-
- protected static final String MESSSAGE = "message"; //$NON-NLS-1$
-
- protected static final String CLASS_NAME = "classname"; //$NON-NLS-1$
-
- protected static final String NAME = "name"; //$NON-NLS-1$
-
- protected static final String TYPE = "type"; //$NON-NLS-1$
-
- protected static final String TIME = "time"; //$NON-NLS-1$
-
- protected static final String TEST_SUITE = "testsuite"; //$NON-NLS-1$
-
- protected static final String TEST_CASE = "testcase"; //$NON-NLS-1$
-
- protected static final String FAILURE = "failure"; //$NON-NLS-1$
-
- protected static final String REPORTING_SEPARATOR = "$"; //$NON-NLS-1$
-
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.fuml.assertionlibrary.reporting;
+
+
+public class JUnit {
+
+ protected static final String MESSSAGE = "message"; //$NON-NLS-1$
+
+ protected static final String CLASS_NAME = "classname"; //$NON-NLS-1$
+
+ protected static final String NAME = "name"; //$NON-NLS-1$
+
+ protected static final String TYPE = "type"; //$NON-NLS-1$
+
+ protected static final String TIME = "time"; //$NON-NLS-1$
+
+ protected static final String TEST_SUITE = "testsuite"; //$NON-NLS-1$
+
+ protected static final String TEST_CASE = "testcase"; //$NON-NLS-1$
+
+ protected static final String FAILURE = "failure"; //$NON-NLS-1$
+
+ protected static final String REPORTING_SEPARATOR = "$"; //$NON-NLS-1$
+
+}
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/reporting/TestDecision.java b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/reporting/TestDecision.java
index c4b3b74..522bdb9 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/reporting/TestDecision.java
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/reporting/TestDecision.java
@@ -1,17 +1,17 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.fuml.assertionlibrary.reporting;
-
-
-public enum TestDecision {
- FAILED, SUCCESS, SKIPPED,
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.fuml.assertionlibrary.reporting;
+
+
+public enum TestDecision {
+ FAILED, SUCCESS, SKIPPED,
+}
diff --git a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/utils/AssertionExecutionContextHelper.java b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/utils/AssertionExecutionContextHelper.java
index d7b3fb1..1303b8f 100644
--- a/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/utils/AssertionExecutionContextHelper.java
+++ b/org.eclipse.papyrus.moka.fuml.assertionlibrary/src/org/eclipse/papyrus/moka/fuml/assertionlibrary/utils/AssertionExecutionContextHelper.java
@@ -1,37 +1,37 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.fuml.assertionlibrary.utils;
-
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.Execution;
-import org.eclipse.uml2.uml.Classifier;
-
-
-public class AssertionExecutionContextHelper {
-
- public static Classifier getExecutionContext(Execution assertionExecution) {
- Classifier context = null;
- if (assertionExecution.context != null && assertionExecution != assertionExecution.context) {
- if (assertionExecution.context instanceof Execution) {
- context = getExecutionContext((Execution) assertionExecution.context);
- } else {
- if (assertionExecution.context.objectActivation != null) {
- context = assertionExecution.context.objectActivation.classifierBehaviorExecutions.get(0).classifier;
- } else {
- context = assertionExecution.context.types.get(0);
- }
- }
- } else {
- context = assertionExecution.types.get(0);
- }
- return context;
- }
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.fuml.assertionlibrary.utils;
+
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.Execution;
+import org.eclipse.uml2.uml.Classifier;
+
+
+public class AssertionExecutionContextHelper {
+
+ public static Classifier getExecutionContext(Execution assertionExecution) {
+ Classifier context = null;
+ if (assertionExecution.context != null && assertionExecution != assertionExecution.context) {
+ if (assertionExecution.context instanceof Execution) {
+ context = getExecutionContext((Execution) assertionExecution.context);
+ } else {
+ if (assertionExecution.context.objectActivation != null) {
+ context = assertionExecution.context.objectActivation.classifierBehaviorExecutions.get(0).classifier;
+ } else {
+ context = assertionExecution.context.types.get(0);
+ }
+ }
+ } else {
+ context = assertionExecution.types.get(0);
+ }
+ return context;
+ }
+}
diff --git a/org.eclipse.papyrus.moka.fuml.standardlibrary/.classpath b/org.eclipse.papyrus.moka.fuml.standardlibrary/.classpath
index 2d1a430..64c5e31 100644
--- a/org.eclipse.papyrus.moka.fuml.standardlibrary/.classpath
+++ b/org.eclipse.papyrus.moka.fuml.standardlibrary/.classpath
@@ -1,7 +1,7 @@
-<?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/J2SE-1.5"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?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/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.papyrus.moka.fuml.standardlibrary/.project b/org.eclipse.papyrus.moka.fuml.standardlibrary/.project
index edb9763..4b1344f 100644
--- a/org.eclipse.papyrus.moka.fuml.standardlibrary/.project
+++ b/org.eclipse.papyrus.moka.fuml.standardlibrary/.project
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.papyrus.moka.fuml.standardlibrary</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <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>
- </natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.moka.fuml.standardlibrary</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <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>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.papyrus.moka.fuml.standardlibrary/META-INF/MANIFEST.MF b/org.eclipse.papyrus.moka.fuml.standardlibrary/META-INF/MANIFEST.MF
index 3ae0909..ebf5554 100644
--- a/org.eclipse.papyrus.moka.fuml.standardlibrary/META-INF/MANIFEST.MF
+++ b/org.eclipse.papyrus.moka.fuml.standardlibrary/META-INF/MANIFEST.MF
@@ -1,27 +1,27 @@
-Manifest-Version: 1.0
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.papyrus.moka.fuml;bundle-version="1.2.0",
- org.eclipse.emf.common;bundle-version="2.9.0",
- org.eclipse.uml2.uml;bundle-version="4.1.0",
- org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.2.0",
- org.eclipse.emf;bundle-version="2.6.0",
- org.eclipse.papyrus.moka;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
- org.eclipse.ui.console;bundle-version="3.5.200"
-Export-Package: org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_,
- org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer,
- org.eclipse.papyrus.moka.fuml.standardlibrary.library.io,
- org.eclipse.papyrus.moka.fuml.standardlibrary.library.list,
- org.eclipse.papyrus.moka.fuml.standardlibrary.library.string,
- org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural
-Bundle-Vendor: Eclipse Modeling Project
-Bundle-ActivationPolicy: lazy
-Bundle-Version: 1.2.0.qualifier
-Bundle-Name: Moka fUML Standard Library (Incubation)
-Bundle-ManifestVersion: 2
-Bundle-Activator: org.eclipse.papyrus.moka.fuml.standardlibrary.Activator
-Bundle-Description: %pluginDescription
-Bundle-SymbolicName: org.eclipse.papyrus.moka.fuml.standardlibrary;singleton:=true
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.moka.fuml;bundle-version="1.2.0",
+ org.eclipse.emf.common;bundle-version="2.9.0",
+ org.eclipse.uml2.uml;bundle-version="4.1.0",
+ org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.2.0",
+ org.eclipse.emf;bundle-version="2.6.0",
+ org.eclipse.papyrus.moka;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.ui.console;bundle-version="3.5.200"
+Export-Package: org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_,
+ org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer,
+ org.eclipse.papyrus.moka.fuml.standardlibrary.library.io,
+ org.eclipse.papyrus.moka.fuml.standardlibrary.library.list,
+ org.eclipse.papyrus.moka.fuml.standardlibrary.library.string,
+ org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: Moka fUML Standard Library (Incubation)
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.moka.fuml.standardlibrary.Activator
+Bundle-Description: %pluginDescription
+Bundle-SymbolicName: org.eclipse.papyrus.moka.fuml.standardlibrary;singleton:=true
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.papyrus.moka.fuml.standardlibrary/about.html b/org.eclipse.papyrus.moka.fuml.standardlibrary/about.html
index 82d49bf..d35d5ae 100644
--- a/org.eclipse.papyrus.moka.fuml.standardlibrary/about.html
+++ b/org.eclipse.papyrus.moka.fuml.standardlibrary/about.html
@@ -1,28 +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>June 5, 2007</p>
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
+<!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>June 5, 2007</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
diff --git a/org.eclipse.papyrus.moka.fuml.standardlibrary/build.properties b/org.eclipse.papyrus.moka.fuml.standardlibrary/build.properties
index 31b74b6..7bb9518 100644
--- a/org.eclipse.papyrus.moka.fuml.standardlibrary/build.properties
+++ b/org.eclipse.papyrus.moka.fuml.standardlibrary/build.properties
@@ -1,10 +1,8 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- OSGI-INF/l10n/bundle.properties,\
- OSGI-INF/,\
- resources/,\
- about.html
-src.includes = about.html
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ resources/,\
+ about.html
+src.includes = about.html
diff --git a/org.eclipse.papyrus.moka.fuml.standardlibrary/plugin.xml b/org.eclipse.papyrus.moka.fuml.standardlibrary/plugin.xml
index 2e87f7a..d8f88aa 100644
--- a/org.eclipse.papyrus.moka.fuml.standardlibrary/plugin.xml
+++ b/org.eclipse.papyrus.moka.fuml.standardlibrary/plugin.xml
@@ -1,33 +1,33 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
- <extension
- point="org.eclipse.papyrus.moka.fuml.library">
- <library
- class="org.eclipse.papyrus.moka.fuml.standardlibrary.StandardLibraryRegistry">
- </library>
- </extension>
- <extension
- point="org.eclipse.papyrus.uml.extensionpoints.UMLLibrary">
- <library
- description="Standard fUML Library"
- name="FoundationalModelLibrary"
- path="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml"
- provider="CEA LIST">
- </library>
- </extension>
- <extension
- point="org.eclipse.emf.ecore.uri_mapping">
- <mapping
- source="pathmap://PAPYRUS_fUML_LIBRARY/"
- target="platform:/plugin/org.eclipse.papyrus.moka.fuml.standardlibrary/resources/">
- </mapping>
- </extension>
- <extension
- point="org.eclipse.papyrus.moka.fuml.services">
- <services
- class="org.eclipse.papyrus.moka.fuml.standardlibrary.StandardServicesRegistry">
- </services>
- </extension>
-
-</plugin>
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension
+ point="org.eclipse.papyrus.moka.fuml.library">
+ <library
+ class="org.eclipse.papyrus.moka.fuml.standardlibrary.StandardLibraryRegistry">
+ </library>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.uml.extensionpoints.UMLLibrary">
+ <library
+ description="Standard fUML Library"
+ name="FoundationalModelLibrary"
+ path="pathmap://PAPYRUS_fUML_LIBRARY/fUML_Library.uml"
+ provider="CEA LIST">
+ </library>
+ </extension>
+ <extension
+ point="org.eclipse.emf.ecore.uri_mapping">
+ <mapping
+ source="pathmap://PAPYRUS_fUML_LIBRARY/"
+ target="platform:/plugin/org.eclipse.papyrus.moka.fuml.standardlibrary/resources/">
+ </mapping>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.moka.fuml.services">
+ <services
+ class="org.eclipse.papyrus.moka.fuml.standardlibrary.StandardServicesRegistry">
+ </services>
+ </extension>
+
+</plugin>
diff --git a/org.eclipse.papyrus.moka.fuml.standardlibrary/pom.xml b/org.eclipse.papyrus.moka.fuml.standardlibrary/pom.xml
index 9d3aa84..185b2b0 100644
--- a/org.eclipse.papyrus.moka.fuml.standardlibrary/pom.xml
+++ b/org.eclipse.papyrus.moka.fuml.standardlibrary/pom.xml
@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>org.eclipse.papyrus.extra.releng</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.moka.parent</artifactId>
+ <groupId>org.eclipse.papyrus.moka</groupId>
<version>1.2.0-SNAPSHOT</version>
- <relativePath>../../../releng/extra</relativePath>
</parent>
<artifactId>org.eclipse.papyrus.moka.fuml.standardlibrary</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
- <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
+ <name>org.eclipse.papyrus.moka.fuml.standardlibrary</name>
</project>
\ No newline at end of file
diff --git a/org.eclipse.papyrus.moka.fuml.standardlibrary/resources/fUML_Library.uml b/org.eclipse.papyrus.moka.fuml.standardlibrary/resources/fUML_Library.uml
index 752947c..b844c3a 100644
--- a/org.eclipse.papyrus.moka.fuml.standardlibrary/resources/fUML_Library.uml
+++ b/org.eclipse.papyrus.moka.fuml.standardlibrary/resources/fUML_Library.uml
@@ -1,914 +1,914 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<uml:Model xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_0" name="FoundationalModelLibrary">
- <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors" name="PrimitiveBehaviors">
- <packageImport xmi:id="PrimitiveBehaviors-_packageImport.0">
- <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
- </packageImport>
- <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-IntegerFunctions" name="IntegerFunctions">
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-ToInteger" name="ToInteger" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToInteger-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToInteger-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-IntegerFunctions-ToInteger-result-_lowerValue"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-lt" name="<" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-lt-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-lt-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-lt-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-plus" name="+" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-plus-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-plus-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-plus-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-minus" name="-" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-minus-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-minus-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-minus-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-times" name="*" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-times-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-times-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-times-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Div" name="Div" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Div-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Div-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Div-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-IntegerFunctions-Div-result-_lowerValue"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Neg" name="Neg" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Neg-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Neg-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Mod" name="Mod" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Mod-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Mod-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Mod-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Max" name="Max" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Max-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Max-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Max-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Min" name="Min" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Min-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Min-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Min-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Abs" name="Abs" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Abs-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Abs-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-gt" name=">" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-gt-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-gt-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-gt-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-le" name="<=" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-le-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-le-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-le-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-ge" name=">=" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ge-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ge-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ge-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-ToString" name="ToString" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToString-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToString-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-ToUnlimitedNatural" name="ToUnlimitedNatural" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToUnlimitedNatural-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToUnlimitedNatural-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-IntegerFunctions-ToUnlimitedNatural-result-_lowerValue"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-divide" name="/" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="rimitiveBehaviors-IntegerFunctions-divide-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="rimitiveBehaviors-IntegerFunctions-divide-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="rimitiveBehaviors-IntegerFunctions-divide-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-IntegerFunctions-divide-result-_lowerValue"/>
- </ownedParameter>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-RealFunctions" name="RealFunctions">
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-ToInteger" name="ToInteger" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToInteger-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToInteger-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-lt" name="<" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-lt-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-lt-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-lt-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-plus" name="+" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-plus-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-plus-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-plus-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-minus" name="-" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-minus-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-minus-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-minus-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-times" name="*" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-times-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-times-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-times-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-divide" name="/" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-divide-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-divide-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-divide-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-RealFunctions-divide-result-_lowerValue"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Neg" name="Neg" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Neg-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Neg-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Max" name="Max" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Max-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Max-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Max-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Min" name="Min" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Min-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Min-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Min-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Abs" name="Abs" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Abs-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Abs-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-gt" name=">" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-gt-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-gt-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-gt-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-le" name="<=" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-le-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-le-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-le-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-ge" name=">=" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ge-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ge-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ge-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-ToString" name="ToString" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToString-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToString-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Floor" name="Floor" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Floor-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="_PrimitiveBehaviors-RealFunctions-Floor-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Floor-Round" name="Round" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Round-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Round-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Inv" name="Inv" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Inv-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Inv-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-ToReal" name="ToReal" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToReal-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToReal-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-RealFunctions-ToReal-result-_lowerValue"/>
- </ownedParameter>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions" name="UnlimitedNaturalFunctions">
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToUnlimitedNatural" name="ToUnlimitedNatural" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToUnlimitedNatural-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToUnlimitedNatural-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToUnlimitedNatural-result-_lowerValue"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-lt" name="<" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-lt-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-lt-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-lt-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Max" name="Max" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Max-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Max-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Max-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Min" name="Min" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Min-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Min-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Min-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-gt" name=">" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-gt-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-gt-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-gt-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-le" name="<=" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-le-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-le-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-le-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ge" name=">=" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ge-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ge-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ge-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToString" name="ToString" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToString-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToString-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToInteger" name="ToInteger" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToInteger-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToInteger-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToInteger-result-_lowerValue"/>
- </ownedParameter>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-BooleanFunctions" name="BooleanFunctions">
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-ToBoolean" name="ToBoolean" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-ToBoolean-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-ToBoolean-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-BooleanFunctions-ToBoolean-result-_lowerValue"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-ToString" name="ToString" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-ToString-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-ToString-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-Or" name="Or" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Or-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Or-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Or-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-Xor" name="Xor" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Xor-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Xor-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Xor-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-And" name="And" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-And-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-And-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-And-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-Implies" name="Implies" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Implies-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Implies-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Implies-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-Not" name="Not" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Not-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Not-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-StringFunctions" name="StringFunctions">
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-StringFunctions-Size" name="Size" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Size-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Size-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-StringFunctions-Concat" name="Concat" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Concat-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Concat-y" name="y">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Concat-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-StringFunctions-Substring" name="Substring" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Substring-x" name="x">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Substring-lower" name="lower">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Substring-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-StringFunctions-Substring-result-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Substring-upper" name="upper">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-ListFunctions" name="ListFunctions">
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-ListFunctions-ListSize" name="ListSize" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListSize-list" name="list">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListSize-list-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PrimitiveBehaviors-ListFunctions-ListSize-list-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListSize-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-ListFunctions-ListGet" name="ListGet" isAbstract="true" isReentrant="false">
- <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-list" name="list">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-list-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-list-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-result" name="result" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-result-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-index" name="index">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </packagedElement>
- <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat" name="ListConcat" isAbstract="true">
- <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list1" name="list1">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list1-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list1-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list2" name="list2">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list2-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list2-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-result" name="result" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-result-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-result-_upperValue" value="*"/>
- </ownedParameter>
- </packagedElement>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="BasicInputOutput" name="BasicInputOutput">
- <packageImport xmi:id="BasicInputOutput-_packageImport.0" importedPackage="Common"/>
- <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-Channel" name="Channel" isAbstract="true">
- <ownedOperation xmi:id="BasicInputOutput-Channel-getName" name="getName" isAbstract="true">
- <ownedParameter xmi:id="BasicInputOutput-Channel-getName-ReturnResult" name="ReturnResult" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-Channel-open" name="open" isAbstract="true">
- <ownedParameter xmi:id="BasicInputOutput-Channel-open-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-Channel-open-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-Channel-close" name="close" isAbstract="true">
- <ownedParameter xmi:id="BasicInputOutput-Channel-close-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-Channel-close-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-Channel-isOpen" name="isOpen" isAbstract="true">
- <ownedParameter xmi:id="BasicInputOutput-Channel-isOpen-ReturnResult" name="ReturnResult" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-Channel-getStatus" name="getStatus" isAbstract="true">
- <ownedParameter xmi:id="BasicInputOutput-Channel-getStatus-ReturnResult" name="ReturnResult" type="Common-Status" direction="return"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-InputChannel" name="InputChannel" isAbstract="true">
- <generalization xmi:id="BasicInputOutput-InputChannel-_generalization.0" general="BasicInputOutput-Channel"/>
- <ownedOperation xmi:id="BasicInputOutput-InputChannel-hasMore" name="hasMore" isAbstract="true">
- <ownedParameter xmi:id="BasicInputOutput-InputChannel-hasMore-ReturnResult" name="ReturnResult" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-InputChannel-read" name="read" isAbstract="true">
- <ownedParameter xmi:id="BasicInputOutput-InputChannel-read-value" name="value" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-InputChannel-read-value-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:id="BasicInputOutput-InputChannel-read-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-InputChannel-read-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-InputChannel-peek" name="peek" isAbstract="true">
- <ownedParameter xmi:id="BasicInputOutput-InputChannel-peek-value" name="value" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-InputChannel-peek-value-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:id="BasicInputOutput-InputChannel-peek-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-InputChannel-peek-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-OutputChannel" name="OutputChannel" isAbstract="true">
- <generalization xmi:id="BasicInputOutput-OutputChannel-_generalization.0" general="BasicInputOutput-Channel"/>
- <ownedOperation xmi:id="BasicInputOutput-OutputChannel-write" name="write" isAbstract="true">
- <ownedParameter xmi:id="BasicInputOutput-OutputChannel-write-value" name="value"/>
- <ownedParameter xmi:id="BasicInputOutput-OutputChannel-write-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-OutputChannel-write-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-OutputChannel-isFull" name="isFull" isAbstract="true">
- <ownedParameter xmi:id="BasicInputOutput-OutputChannel-isFull-ReturnResult" name="ReturnResult" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-TextInputChannel" name="TextInputChannel" isAbstract="true">
- <generalization xmi:id="BasicInputOutput-TextInputChannel-_generalization.0" general="BasicInputOutput-InputChannel"/>
- <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-readCharacter" name="readCharacter">
- <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readCharacter-ReturnResult" name="ReturnResult" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readCharacter-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readCharacter-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readCharacter-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-peekCharacter" name="peekCharacter">
- <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-peekCharacter-OwnedParameter" name="OwnedParameter" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-peekCharacter-OwnedParameter-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-peekCharacter-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-peekCharacter-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-readLine" name="readLine">
- <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readLine-ReturnResult" name="ReturnResult" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readLine-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readLine-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-readInteger" name="readInteger">
- <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readInteger-ReturnResult" name="ReturnResult" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readInteger-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readInteger-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readInteger-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-readBoolean" name="readBoolean">
- <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readBoolean-ReturnResult" name="ReturnResult" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readBoolean-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readBoolean-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readBoolean-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-readUnlimitedNatural" name="readUnlimitedNatural">
- <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readUnlimitedNatural-ReturnResult" name="ReturnResult" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readUnlimitedNatural-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readUnlimitedNatural-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readUnlimitedNatural-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-TextOutputChannel" name="TextOutputChannel" isAbstract="true">
- <generalization xmi:id="BasicInputOutput-TextOutputChannel-_generalization.0" general="BasicInputOutput-OutputChannel"/>
- <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeString" name="writeString">
- <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeString-value" name="value">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeString-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeString-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeNewLine" name="writeNewLine" isAbstract="true">
- <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeNewLine-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeNewLine-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeLine" name="writeLine">
- <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeLine-value" name="value">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeLine-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeLine-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeInteger" name="writeInteger">
- <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeInteger-value" name="value">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeInteger-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeInteger-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeBoolean" name="writeBoolean">
- <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeBoolean-value" name="value">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeBoolean-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeBoolean-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeUnlimitedNatural" name="writeUnlimitedNatural">
- <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeUnlimitedNatural-value" name="value">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedParameter>
- <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeUnlimitedNatural-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeUnlimitedNatural-errorStatus-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-StandardInputChannel" name="StandardInputChannel" isAbstract="true">
- <generalization xmi:id="BasicInputOutput-StandardInputChannel-_generalization.0" general="BasicInputOutput-TextInputChannel"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-StandardOutputChannel" name="StandardOutputChannel" isAbstract="true">
- <generalization xmi:id="BasicInputOutput-StandardOutputChannel-_generalization.0" general="BasicInputOutput-TextOutputChannel"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Activity" xmi:id="BasicInputOutput-WriteLine" name="WriteLine" isReentrant="false" node="BasicInputOutput-WriteLine-StandardOutputChannel BasicInputOutput-WriteLine-writeLine BasicInputOutput-WriteLine-value.1 BasicInputOutput-WriteLine-errorStatus.1">
- <ownedParameter xmi:id="BasicInputOutput-WriteLine-value" name="value">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:id="BasicInputOutput-WriteLine-errorStatus" name="errorStatus" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-errorStatus-_lowerValue"/>
- </ownedParameter>
- <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-WriteLine-_edge.0" source="BasicInputOutput-WriteLine-StandardOutputChannel-_result" target="BasicInputOutput-WriteLine-writeLine-_target">
- <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-WriteLine-_edge.0-_guard">
- <body></body>
- </guard>
- <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-_edge.0-_weight" value="1"/>
- </edge>
- <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-WriteLine-_edge.1" source="BasicInputOutput-WriteLine-value.1" target="BasicInputOutput-WriteLine-writeLine-value">
- <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-WriteLine-_edge.1-_guard">
- <body></body>
- </guard>
- <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-_edge.1-_weight" value="1"/>
- </edge>
- <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-WriteLine-_edge.2" source="BasicInputOutput-WriteLine-writeLine-errorStatus" target="BasicInputOutput-WriteLine-errorStatus.1">
- <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-WriteLine-_edge.2-_guard">
- <body></body>
- </guard>
- <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-_edge.2-_weight" value="1"/>
- </edge>
- <node xmi:type="uml:ReadExtentAction" xmi:id="BasicInputOutput-WriteLine-StandardOutputChannel" name="StandardOutputChannel" classifier="BasicInputOutput-StandardOutputChannel">
- <result xmi:id="BasicInputOutput-WriteLine-StandardOutputChannel-_result" outgoing="BasicInputOutput-WriteLine-_edge.0" type="BasicInputOutput-StandardOutputChannel">
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-StandardOutputChannel-_result-_upperBound" value="1"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-StandardOutputChannel-_result-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BasicInputOutput-WriteLine-StandardOutputChannel-_result-_upperValue" value="*"/>
- </result>
- </node>
- <node xmi:type="uml:CallOperationAction" xmi:id="BasicInputOutput-WriteLine-writeLine" name="writeLine" operation="BasicInputOutput-TextOutputChannel-writeLine">
- <argument xmi:id="BasicInputOutput-WriteLine-writeLine-value" name="value" incoming="BasicInputOutput-WriteLine-_edge.1">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-writeLine-value-_upperBound" value="1"/>
- </argument>
- <result xmi:id="BasicInputOutput-WriteLine-writeLine-errorStatus" name="errorStatus" outgoing="BasicInputOutput-WriteLine-_edge.2" type="Common-Status">
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-writeLine-errorStatus-_upperBound" value="1"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-writeLine-errorStatus-_lowerValue"/>
- </result>
- <target xmi:id="BasicInputOutput-WriteLine-writeLine-_target" incoming="BasicInputOutput-WriteLine-_edge.0" type="BasicInputOutput-TextOutputChannel">
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-writeLine-_target-_upperBound" value="1"/>
- </target>
- </node>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="BasicInputOutput-WriteLine-value.1" name="value" outgoing="BasicInputOutput-WriteLine-_edge.1" parameter="BasicInputOutput-WriteLine-value">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-value.1-_upperBound" value="1"/>
- </node>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="BasicInputOutput-WriteLine-errorStatus.1" name="errorStatus" incoming="BasicInputOutput-WriteLine-_edge.2" type="Common-Status" parameter="BasicInputOutput-WriteLine-errorStatus">
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-errorStatus.1-_upperBound" value="1"/>
- </node>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-ActiveChannel" name="ActiveChannel" isAbstract="true" isActive="true">
- <generalization xmi:id="BasicInputOutput-ActiveChannel-_generalization.0" general="BasicInputOutput-Channel"/>
- <ownedOperation xmi:id="BasicInputOutput-ActiveChannel-register" name="register">
- <ownedParameter xmi:id="BasicInputOutput-ActiveChannel-register-listener" name="listener" type="Common-Listener"/>
- </ownedOperation>
- <ownedOperation xmi:id="BasicInputOutput-ActiveChannel-unregister" name="unregister">
- <ownedParameter xmi:id="BasicInputOutput-ActiveChannel-unregister-listener" name="listener" type="Common-Listener"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Activity" xmi:id="BasicInputOutput-ReadLine" name="ReadLine" isReentrant="false" node="BasicInputOutput-ReadLine-StandardInputChannel BasicInputOutput-ReadLine-readLine BasicInputOutput-ReadLine-errorStatus.1 BasicInputOutput-ReadLine-result.1">
- <ownedParameter xmi:id="BasicInputOutput-ReadLine-errorStatus" name="errorStatus" type="Common-Status" direction="out">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-errorStatus-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:id="BasicInputOutput-ReadLine-result" name="result" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-ReadLine-_edge.0" source="BasicInputOutput-ReadLine-StandardInputChannel-_result" target="BasicInputOutput-ReadLine-readLine-_target">
- <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-ReadLine-_edge.0-_guard">
- <body></body>
- </guard>
- <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-_edge.0-_weight" value="1"/>
- </edge>
- <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-ReadLine-_edge.1" source="BasicInputOutput-ReadLine-readLine-errorStatus" target="BasicInputOutput-ReadLine-errorStatus.1">
- <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-ReadLine-_edge.1-_guard">
- <body></body>
- </guard>
- <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-_edge.1-_weight" value="1"/>
- </edge>
- <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-ReadLine-_edge.2" source="BasicInputOutput-ReadLine-readLine-_result.0" target="BasicInputOutput-ReadLine-result.1">
- <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-ReadLine-_edge.2-_guard">
- <body></body>
- </guard>
- <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-_edge.2-_weight" value="1"/>
- </edge>
- <node xmi:type="uml:ReadExtentAction" xmi:id="BasicInputOutput-ReadLine-StandardInputChannel" name="StandardInputChannel" classifier="BasicInputOutput-StandardInputChannel">
- <result xmi:id="BasicInputOutput-ReadLine-StandardInputChannel-_result" outgoing="BasicInputOutput-ReadLine-_edge.0" type="BasicInputOutput-StandardInputChannel">
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-StandardInputChannel-_result-_upperBound" value="1"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-StandardInputChannel-_result-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BasicInputOutput-ReadLine-StandardInputChannel-_result-_upperValue" value="*"/>
- </result>
- </node>
- <node xmi:type="uml:CallOperationAction" xmi:id="BasicInputOutput-ReadLine-readLine" name="readLine" operation="BasicInputOutput-TextInputChannel-readLine">
- <result xmi:id="BasicInputOutput-ReadLine-readLine-_result.0" outgoing="BasicInputOutput-ReadLine-_edge.2">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-readLine-_result.0-_upperBound" value="1"/>
- </result>
- <result xmi:id="BasicInputOutput-ReadLine-readLine-errorStatus" name="errorStatus" outgoing="BasicInputOutput-ReadLine-_edge.1" type="Common-Status">
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-readLine-errorStatus-_upperBound" value="1"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-readLine-errorStatus-_lowerValue"/>
- </result>
- <target xmi:id="BasicInputOutput-ReadLine-readLine-_target" incoming="BasicInputOutput-ReadLine-_edge.0" type="BasicInputOutput-TextInputChannel">
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-readLine-_target-_upperBound" value="1"/>
- </target>
- </node>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="BasicInputOutput-ReadLine-errorStatus.1" name="errorStatus" incoming="BasicInputOutput-ReadLine-_edge.1" type="Common-Status" parameter="BasicInputOutput-ReadLine-errorStatus">
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-errorStatus.1-_upperBound" value="1"/>
- </node>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="BasicInputOutput-ReadLine-result.1" name="result" incoming="BasicInputOutput-ReadLine-_edge.2" parameter="BasicInputOutput-ReadLine-result">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-result.1-_upperBound" value="1"/>
- </node>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="Common" name="Common">
- <packagedElement xmi:type="uml:Signal" xmi:id="Common-Notification" name="Notification">
- <ownedAttribute xmi:id="Common-Notification-content" name="content" visibility="public">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Common-Notification-content-_lowerValue"/>
- </ownedAttribute>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Common-Listener" name="Listener" isAbstract="true" isActive="true">
- <ownedReception xmi:id="Common-Listener-_ownedReception.0" name="Notification" signal="Common-Notification"/>
- </packagedElement>
- <packagedElement xmi:type="uml:DataType" xmi:id="Common-Status" name="Status">
- <ownedAttribute xmi:id="Common-Status-context" name="context" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedAttribute>
- <ownedAttribute xmi:id="Common-Status-code" name="code">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedAttribute>
- <ownedAttribute xmi:id="Common-Status-description" name="description">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedAttribute>
- </packagedElement>
- </packagedElement>
-</uml:Model>
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="20110701" xmlns:xmi="http://www.omg.org/spec/XMI/20110701" xmlns:uml="http://www.eclipse.org/uml2/4.0.0/UML" xmi:id="_0" name="FoundationalModelLibrary">
+ <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors" name="PrimitiveBehaviors">
+ <packageImport xmi:id="PrimitiveBehaviors-_packageImport.0">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#_0"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-IntegerFunctions" name="IntegerFunctions">
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-ToInteger" name="ToInteger" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToInteger-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToInteger-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-IntegerFunctions-ToInteger-result-_lowerValue"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-lt" name="<" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-lt-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-lt-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-lt-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-plus" name="+" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-plus-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-plus-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-plus-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-minus" name="-" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-minus-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-minus-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-minus-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-times" name="*" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-times-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-times-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-times-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Div" name="Div" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Div-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Div-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Div-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-IntegerFunctions-Div-result-_lowerValue"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Neg" name="Neg" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Neg-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Neg-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Mod" name="Mod" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Mod-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Mod-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Mod-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Max" name="Max" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Max-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Max-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Max-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Min" name="Min" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Min-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Min-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Min-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-Abs" name="Abs" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Abs-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-Abs-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-gt" name=">" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-gt-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-gt-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-gt-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-le" name="<=" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-le-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-le-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-le-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-ge" name=">=" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ge-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ge-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ge-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-ToString" name="ToString" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToString-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToString-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-ToUnlimitedNatural" name="ToUnlimitedNatural" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToUnlimitedNatural-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-IntegerFunctions-ToUnlimitedNatural-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-IntegerFunctions-ToUnlimitedNatural-result-_lowerValue"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-IntegerFunctions-divide" name="/" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="rimitiveBehaviors-IntegerFunctions-divide-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="rimitiveBehaviors-IntegerFunctions-divide-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="rimitiveBehaviors-IntegerFunctions-divide-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-IntegerFunctions-divide-result-_lowerValue"/>
+ </ownedParameter>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-RealFunctions" name="RealFunctions">
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-ToInteger" name="ToInteger" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToInteger-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToInteger-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-lt" name="<" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-lt-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-lt-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-lt-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-plus" name="+" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-plus-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-plus-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-plus-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-minus" name="-" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-minus-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-minus-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-minus-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-times" name="*" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-times-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-times-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-times-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-divide" name="/" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-divide-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-divide-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-divide-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-RealFunctions-divide-result-_lowerValue"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Neg" name="Neg" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Neg-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Neg-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Max" name="Max" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Max-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Max-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Max-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Min" name="Min" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Min-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Min-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Min-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Abs" name="Abs" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Abs-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Abs-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-gt" name=">" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-gt-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-gt-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-gt-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-le" name="<=" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-le-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-le-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-le-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-ge" name=">=" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ge-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ge-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ge-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-ToString" name="ToString" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToString-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToString-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Floor" name="Floor" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Floor-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="_PrimitiveBehaviors-RealFunctions-Floor-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Floor-Round" name="Round" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Round-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Round-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-Inv" name="Inv" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Inv-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-Inv-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-RealFunctions-ToReal" name="ToReal" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToReal-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-RealFunctions-ToReal-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-RealFunctions-ToReal-result-_lowerValue"/>
+ </ownedParameter>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions" name="UnlimitedNaturalFunctions">
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToUnlimitedNatural" name="ToUnlimitedNatural" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToUnlimitedNatural-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToUnlimitedNatural-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToUnlimitedNatural-result-_lowerValue"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-lt" name="<" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-lt-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-lt-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-lt-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Max" name="Max" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Max-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Max-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Max-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Min" name="Min" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Min-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Min-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-Min-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-gt" name=">" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-gt-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-gt-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-gt-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-le" name="<=" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-le-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-le-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-le-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ge" name=">=" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ge-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ge-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ge-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToString" name="ToString" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToString-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToString-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToInteger" name="ToInteger" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToInteger-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToInteger-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-UnlimitedNaturalFunctions-ToInteger-result-_lowerValue"/>
+ </ownedParameter>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-BooleanFunctions" name="BooleanFunctions">
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-ToBoolean" name="ToBoolean" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-ToBoolean-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-ToBoolean-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-BooleanFunctions-ToBoolean-result-_lowerValue"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-ToString" name="ToString" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-ToString-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-ToString-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-Or" name="Or" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Or-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Or-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Or-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-Xor" name="Xor" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Xor-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Xor-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Xor-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-And" name="And" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-And-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-And-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-And-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-Implies" name="Implies" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Implies-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Implies-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Implies-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-BooleanFunctions-Not" name="Not" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Not-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-BooleanFunctions-Not-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-StringFunctions" name="StringFunctions">
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-StringFunctions-Size" name="Size" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Size-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Size-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-StringFunctions-Concat" name="Concat" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Concat-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Concat-y" name="y">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Concat-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-StringFunctions-Substring" name="Substring" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Substring-x" name="x">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Substring-lower" name="lower">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Substring-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-StringFunctions-Substring-result-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-StringFunctions-Substring-upper" name="upper">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="PrimitiveBehaviors-ListFunctions" name="ListFunctions">
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-ListFunctions-ListSize" name="ListSize" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListSize-list" name="list">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListSize-list-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PrimitiveBehaviors-ListFunctions-ListSize-list-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListSize-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-ListFunctions-ListGet" name="ListGet" isAbstract="true" isReentrant="false">
+ <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-list" name="list">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-list-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-list-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-result" name="result" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-result-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListGet-index" name="index">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </packagedElement>
+ <packagedElement xmi:type="uml:FunctionBehavior" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat" name="ListConcat" isAbstract="true">
+ <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list1" name="list1">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list1-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list1-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list2" name="list2">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list2-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-list2-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-result" name="result" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-result-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="PrimitiveBehaviors-ListFunctions-ListConcat-result-_upperValue" value="*"/>
+ </ownedParameter>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="BasicInputOutput" name="BasicInputOutput">
+ <packageImport xmi:id="BasicInputOutput-_packageImport.0" importedPackage="Common"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-Channel" name="Channel" isAbstract="true">
+ <ownedOperation xmi:id="BasicInputOutput-Channel-getName" name="getName" isAbstract="true">
+ <ownedParameter xmi:id="BasicInputOutput-Channel-getName-ReturnResult" name="ReturnResult" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-Channel-open" name="open" isAbstract="true">
+ <ownedParameter xmi:id="BasicInputOutput-Channel-open-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-Channel-open-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-Channel-close" name="close" isAbstract="true">
+ <ownedParameter xmi:id="BasicInputOutput-Channel-close-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-Channel-close-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-Channel-isOpen" name="isOpen" isAbstract="true">
+ <ownedParameter xmi:id="BasicInputOutput-Channel-isOpen-ReturnResult" name="ReturnResult" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-Channel-getStatus" name="getStatus" isAbstract="true">
+ <ownedParameter xmi:id="BasicInputOutput-Channel-getStatus-ReturnResult" name="ReturnResult" type="Common-Status" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-InputChannel" name="InputChannel" isAbstract="true">
+ <generalization xmi:id="BasicInputOutput-InputChannel-_generalization.0" general="BasicInputOutput-Channel"/>
+ <ownedOperation xmi:id="BasicInputOutput-InputChannel-hasMore" name="hasMore" isAbstract="true">
+ <ownedParameter xmi:id="BasicInputOutput-InputChannel-hasMore-ReturnResult" name="ReturnResult" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-InputChannel-read" name="read" isAbstract="true">
+ <ownedParameter xmi:id="BasicInputOutput-InputChannel-read-value" name="value" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-InputChannel-read-value-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="BasicInputOutput-InputChannel-read-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-InputChannel-read-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-InputChannel-peek" name="peek" isAbstract="true">
+ <ownedParameter xmi:id="BasicInputOutput-InputChannel-peek-value" name="value" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-InputChannel-peek-value-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="BasicInputOutput-InputChannel-peek-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-InputChannel-peek-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-OutputChannel" name="OutputChannel" isAbstract="true">
+ <generalization xmi:id="BasicInputOutput-OutputChannel-_generalization.0" general="BasicInputOutput-Channel"/>
+ <ownedOperation xmi:id="BasicInputOutput-OutputChannel-write" name="write" isAbstract="true">
+ <ownedParameter xmi:id="BasicInputOutput-OutputChannel-write-value" name="value"/>
+ <ownedParameter xmi:id="BasicInputOutput-OutputChannel-write-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-OutputChannel-write-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-OutputChannel-isFull" name="isFull" isAbstract="true">
+ <ownedParameter xmi:id="BasicInputOutput-OutputChannel-isFull-ReturnResult" name="ReturnResult" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-TextInputChannel" name="TextInputChannel" isAbstract="true">
+ <generalization xmi:id="BasicInputOutput-TextInputChannel-_generalization.0" general="BasicInputOutput-InputChannel"/>
+ <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-readCharacter" name="readCharacter">
+ <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readCharacter-ReturnResult" name="ReturnResult" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readCharacter-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readCharacter-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readCharacter-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-peekCharacter" name="peekCharacter">
+ <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-peekCharacter-OwnedParameter" name="OwnedParameter" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-peekCharacter-OwnedParameter-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-peekCharacter-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-peekCharacter-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-readLine" name="readLine">
+ <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readLine-ReturnResult" name="ReturnResult" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readLine-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readLine-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-readInteger" name="readInteger">
+ <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readInteger-ReturnResult" name="ReturnResult" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readInteger-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readInteger-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readInteger-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-readBoolean" name="readBoolean">
+ <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readBoolean-ReturnResult" name="ReturnResult" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readBoolean-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readBoolean-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readBoolean-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-TextInputChannel-readUnlimitedNatural" name="readUnlimitedNatural">
+ <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readUnlimitedNatural-ReturnResult" name="ReturnResult" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readUnlimitedNatural-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="BasicInputOutput-TextInputChannel-readUnlimitedNatural-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextInputChannel-readUnlimitedNatural-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-TextOutputChannel" name="TextOutputChannel" isAbstract="true">
+ <generalization xmi:id="BasicInputOutput-TextOutputChannel-_generalization.0" general="BasicInputOutput-OutputChannel"/>
+ <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeString" name="writeString">
+ <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeString-value" name="value">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeString-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeString-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeNewLine" name="writeNewLine" isAbstract="true">
+ <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeNewLine-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeNewLine-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeLine" name="writeLine">
+ <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeLine-value" name="value">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeLine-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeLine-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeInteger" name="writeInteger">
+ <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeInteger-value" name="value">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeInteger-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeInteger-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeBoolean" name="writeBoolean">
+ <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeBoolean-value" name="value">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeBoolean-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeBoolean-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-TextOutputChannel-writeUnlimitedNatural" name="writeUnlimitedNatural">
+ <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeUnlimitedNatural-value" name="value">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="BasicInputOutput-TextOutputChannel-writeUnlimitedNatural-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-TextOutputChannel-writeUnlimitedNatural-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-StandardInputChannel" name="StandardInputChannel" isAbstract="true">
+ <generalization xmi:id="BasicInputOutput-StandardInputChannel-_generalization.0" general="BasicInputOutput-TextInputChannel"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-StandardOutputChannel" name="StandardOutputChannel" isAbstract="true">
+ <generalization xmi:id="BasicInputOutput-StandardOutputChannel-_generalization.0" general="BasicInputOutput-TextOutputChannel"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Activity" xmi:id="BasicInputOutput-WriteLine" name="WriteLine" isReentrant="false" node="BasicInputOutput-WriteLine-StandardOutputChannel BasicInputOutput-WriteLine-writeLine BasicInputOutput-WriteLine-value.1 BasicInputOutput-WriteLine-errorStatus.1">
+ <ownedParameter xmi:id="BasicInputOutput-WriteLine-value" name="value">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="BasicInputOutput-WriteLine-errorStatus" name="errorStatus" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-WriteLine-_edge.0" source="BasicInputOutput-WriteLine-StandardOutputChannel-_result" target="BasicInputOutput-WriteLine-writeLine-_target">
+ <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-WriteLine-_edge.0-_guard">
+ <body></body>
+ </guard>
+ <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-_edge.0-_weight" value="1"/>
+ </edge>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-WriteLine-_edge.1" source="BasicInputOutput-WriteLine-value.1" target="BasicInputOutput-WriteLine-writeLine-value">
+ <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-WriteLine-_edge.1-_guard">
+ <body></body>
+ </guard>
+ <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-_edge.1-_weight" value="1"/>
+ </edge>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-WriteLine-_edge.2" source="BasicInputOutput-WriteLine-writeLine-errorStatus" target="BasicInputOutput-WriteLine-errorStatus.1">
+ <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-WriteLine-_edge.2-_guard">
+ <body></body>
+ </guard>
+ <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-_edge.2-_weight" value="1"/>
+ </edge>
+ <node xmi:type="uml:ReadExtentAction" xmi:id="BasicInputOutput-WriteLine-StandardOutputChannel" name="StandardOutputChannel" classifier="BasicInputOutput-StandardOutputChannel">
+ <result xmi:id="BasicInputOutput-WriteLine-StandardOutputChannel-_result" outgoing="BasicInputOutput-WriteLine-_edge.0" type="BasicInputOutput-StandardOutputChannel">
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-StandardOutputChannel-_result-_upperBound" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-StandardOutputChannel-_result-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BasicInputOutput-WriteLine-StandardOutputChannel-_result-_upperValue" value="*"/>
+ </result>
+ </node>
+ <node xmi:type="uml:CallOperationAction" xmi:id="BasicInputOutput-WriteLine-writeLine" name="writeLine" operation="BasicInputOutput-TextOutputChannel-writeLine">
+ <argument xmi:id="BasicInputOutput-WriteLine-writeLine-value" name="value" incoming="BasicInputOutput-WriteLine-_edge.1">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-writeLine-value-_upperBound" value="1"/>
+ </argument>
+ <result xmi:id="BasicInputOutput-WriteLine-writeLine-errorStatus" name="errorStatus" outgoing="BasicInputOutput-WriteLine-_edge.2" type="Common-Status">
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-writeLine-errorStatus-_upperBound" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-writeLine-errorStatus-_lowerValue"/>
+ </result>
+ <target xmi:id="BasicInputOutput-WriteLine-writeLine-_target" incoming="BasicInputOutput-WriteLine-_edge.0" type="BasicInputOutput-TextOutputChannel">
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-writeLine-_target-_upperBound" value="1"/>
+ </target>
+ </node>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="BasicInputOutput-WriteLine-value.1" name="value" outgoing="BasicInputOutput-WriteLine-_edge.1" parameter="BasicInputOutput-WriteLine-value">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-value.1-_upperBound" value="1"/>
+ </node>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="BasicInputOutput-WriteLine-errorStatus.1" name="errorStatus" incoming="BasicInputOutput-WriteLine-_edge.2" type="Common-Status" parameter="BasicInputOutput-WriteLine-errorStatus">
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-WriteLine-errorStatus.1-_upperBound" value="1"/>
+ </node>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="BasicInputOutput-ActiveChannel" name="ActiveChannel" isAbstract="true" isActive="true">
+ <generalization xmi:id="BasicInputOutput-ActiveChannel-_generalization.0" general="BasicInputOutput-Channel"/>
+ <ownedOperation xmi:id="BasicInputOutput-ActiveChannel-register" name="register">
+ <ownedParameter xmi:id="BasicInputOutput-ActiveChannel-register-listener" name="listener" type="Common-Listener"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="BasicInputOutput-ActiveChannel-unregister" name="unregister">
+ <ownedParameter xmi:id="BasicInputOutput-ActiveChannel-unregister-listener" name="listener" type="Common-Listener"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Activity" xmi:id="BasicInputOutput-ReadLine" name="ReadLine" isReentrant="false" node="BasicInputOutput-ReadLine-StandardInputChannel BasicInputOutput-ReadLine-readLine BasicInputOutput-ReadLine-errorStatus.1 BasicInputOutput-ReadLine-result.1">
+ <ownedParameter xmi:id="BasicInputOutput-ReadLine-errorStatus" name="errorStatus" type="Common-Status" direction="out">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-errorStatus-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:id="BasicInputOutput-ReadLine-result" name="result" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-ReadLine-_edge.0" source="BasicInputOutput-ReadLine-StandardInputChannel-_result" target="BasicInputOutput-ReadLine-readLine-_target">
+ <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-ReadLine-_edge.0-_guard">
+ <body></body>
+ </guard>
+ <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-_edge.0-_weight" value="1"/>
+ </edge>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-ReadLine-_edge.1" source="BasicInputOutput-ReadLine-readLine-errorStatus" target="BasicInputOutput-ReadLine-errorStatus.1">
+ <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-ReadLine-_edge.1-_guard">
+ <body></body>
+ </guard>
+ <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-_edge.1-_weight" value="1"/>
+ </edge>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="BasicInputOutput-ReadLine-_edge.2" source="BasicInputOutput-ReadLine-readLine-_result.0" target="BasicInputOutput-ReadLine-result.1">
+ <guard xmi:type="uml:OpaqueExpression" xmi:id="BasicInputOutput-ReadLine-_edge.2-_guard">
+ <body></body>
+ </guard>
+ <weight xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-_edge.2-_weight" value="1"/>
+ </edge>
+ <node xmi:type="uml:ReadExtentAction" xmi:id="BasicInputOutput-ReadLine-StandardInputChannel" name="StandardInputChannel" classifier="BasicInputOutput-StandardInputChannel">
+ <result xmi:id="BasicInputOutput-ReadLine-StandardInputChannel-_result" outgoing="BasicInputOutput-ReadLine-_edge.0" type="BasicInputOutput-StandardInputChannel">
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-StandardInputChannel-_result-_upperBound" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-StandardInputChannel-_result-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="BasicInputOutput-ReadLine-StandardInputChannel-_result-_upperValue" value="*"/>
+ </result>
+ </node>
+ <node xmi:type="uml:CallOperationAction" xmi:id="BasicInputOutput-ReadLine-readLine" name="readLine" operation="BasicInputOutput-TextInputChannel-readLine">
+ <result xmi:id="BasicInputOutput-ReadLine-readLine-_result.0" outgoing="BasicInputOutput-ReadLine-_edge.2">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-readLine-_result.0-_upperBound" value="1"/>
+ </result>
+ <result xmi:id="BasicInputOutput-ReadLine-readLine-errorStatus" name="errorStatus" outgoing="BasicInputOutput-ReadLine-_edge.1" type="Common-Status">
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-readLine-errorStatus-_upperBound" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-readLine-errorStatus-_lowerValue"/>
+ </result>
+ <target xmi:id="BasicInputOutput-ReadLine-readLine-_target" incoming="BasicInputOutput-ReadLine-_edge.0" type="BasicInputOutput-TextInputChannel">
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-readLine-_target-_upperBound" value="1"/>
+ </target>
+ </node>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="BasicInputOutput-ReadLine-errorStatus.1" name="errorStatus" incoming="BasicInputOutput-ReadLine-_edge.1" type="Common-Status" parameter="BasicInputOutput-ReadLine-errorStatus">
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-errorStatus.1-_upperBound" value="1"/>
+ </node>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="BasicInputOutput-ReadLine-result.1" name="result" incoming="BasicInputOutput-ReadLine-_edge.2" parameter="BasicInputOutput-ReadLine-result">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="BasicInputOutput-ReadLine-result.1-_upperBound" value="1"/>
+ </node>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="Common" name="Common">
+ <packagedElement xmi:type="uml:Signal" xmi:id="Common-Notification" name="Notification">
+ <ownedAttribute xmi:id="Common-Notification-content" name="content" visibility="public">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Common-Notification-content-_lowerValue"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Common-Listener" name="Listener" isAbstract="true" isActive="true">
+ <ownedReception xmi:id="Common-Listener-_ownedReception.0" name="Notification" signal="Common-Notification"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:DataType" xmi:id="Common-Status" name="Status">
+ <ownedAttribute xmi:id="Common-Status-context" name="context" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="Common-Status-code" name="code">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:id="Common-Status-description" name="description">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ </packagedElement>
+ </packagedElement>
+</uml:Model>
diff --git a/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/Activator.java b/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/Activator.java
index b6f614f..a33ea5b 100644
--- a/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/Activator.java
+++ b/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/Activator.java
@@ -1,66 +1,66 @@
-/*****************************************************************************
- * Copyright (c) 2012 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.moka.fuml.standardlibrary;
-
-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.moka.fuml.standardlibrary"; //$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)
- */
- @Override
- 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)
- */
- @Override
- 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;
- }
-}
+/*****************************************************************************
+ * Copyright (c) 2012 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.moka.fuml.standardlibrary;
+
+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.moka.fuml.standardlibrary"; //$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)
+ */
+ @Override
+ 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)
+ */
+ @Override
+ 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/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/StandardLibraryRegistry.java b/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/StandardLibraryRegistry.java
index bfaf459..d8cef7a 100644
--- a/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/StandardLibraryRegistry.java
+++ b/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/StandardLibraryRegistry.java
@@ -1,162 +1,162 @@
-/*****************************************************************************
- * Copyright (c) 2012 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.moka.fuml.standardlibrary;
-
-import org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1.Locus;
-import org.eclipse.papyrus.moka.fuml.registry.AbstractOpaqueBehaviorExecutionRegistry;
-
-
-public class StandardLibraryRegistry extends AbstractOpaqueBehaviorExecutionRegistry {
-
- protected final static String FUML_LIBRARY_NAME = "FoundationalModelLibrary";
-
- @Override
- public void registerOpaqueBehaviorExecutions(Locus locus) {
- this.locus = locus;
- this.buildOpaqueBehaviorsMap(FUML_LIBRARY_NAME);
- try {
- // ////////////////////
- // Integer functions
- // Neg
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Neg(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::Neg");
- // +
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Add(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::+");
- // -
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Minus(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::-");
- // *
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Times(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::*");
- // Abs
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Abs(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::Abs");
- // Div
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Div(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::Div");
- // Mod
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Mod(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::Mod");
- // Max
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Max(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::Max");
- // Min
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Min(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::Min");
- // <
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Lower(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::<");
- // >
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Greater(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::>");
- // <=
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.LowerOrEqual(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::<=");
- // >=
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.GreaterOrEqual(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::>=");
- // ToString
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.ToString(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::ToString");
- // ToUnlimitedNatural
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.ToUnlimitedNatural(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::ToUnlimitedNatural");
- // ToInteger
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.ToInteger(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::ToInteger");
- // '/' is missing TODO
-
- // ////////////////////
- // Unlimited natural functions
- // >
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.Greater(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::>");
- // >=
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.GreaterOrEqual(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::>=");
- // <
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.Lower(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::<");
- // <=
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.LowerOrEqual(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::<=");
- // Max
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.Max(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::Max");
- // Min
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.Min(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::Min");
- // ToInteger
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.ToInteger(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::ToInteger");
- // ToString
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.ToString(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::ToString");
- // ToUnlimitedNatural
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.ToUnlimitedNatural(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::ToUnlimitedNatural");
-
- // ////////////////////
- // Boolean functions
- // Or
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_.Or(), "FoundationalModelLibrary::PrimitiveBehaviors::BooleanFunctions::Or");
- // Xor
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_.Xor(), "FoundationalModelLibrary::PrimitiveBehaviors::BooleanFunctions::Xor");
- // And
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_.And(), "FoundationalModelLibrary::PrimitiveBehaviors::BooleanFunctions::And");
- // Not
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_.Not(), "FoundationalModelLibrary::PrimitiveBehaviors::BooleanFunctions::Not");
- // Implies
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_.Implies(), "FoundationalModelLibrary::PrimitiveBehaviors::BooleanFunctions::Implies");
- // ToString
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_.ToString(), "FoundationalModelLibrary::PrimitiveBehaviors::BooleanFunctions::ToString");
- // ToBoolean
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_.ToBoolean(), "FoundationalModelLibrary::PrimitiveBehaviors::BooleanFunctions::ToBoolean");
-
- // ////////////////////
- // Real functions
- // +
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Add(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::+");
- // -
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Minus(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::-");
- // *
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Times(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::*");
- // /
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Div(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::/");
- // >
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Greater(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::>");
- // >=
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.GreaterOrEqual(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::>=");
- // <
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Lower(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::<");
- // <=
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.LowerOrEqual(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::<=");
- // Abs
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Abs(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::Abs");
- // Floor
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Floor(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::Floor");
- // Inv
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Inv(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::Inv");
- // Max
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Max(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::Max");
- // Min
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Min(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::Min");
- // Neg
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Neg(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::Neg");
- // Round
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Round(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::Round");
- // ToInteger
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.ToInteger(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::ToInteger");
- // ToReal
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.ToReal(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::ToReal");
- // ToString
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.ToString(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::ToString");
-
- // ////////////////////
- // String functions
- // Concat
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.string.Concat(), "FoundationalModelLibrary::PrimitiveBehaviors::StringFunctions::Concat");
- // Size
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.string.Size(), "FoundationalModelLibrary::PrimitiveBehaviors::StringFunctions::Size");
- // Substring
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.string.Substring(), "FoundationalModelLibrary::PrimitiveBehaviors::StringFunctions::Substring");
- // ////////////////////
- // List functions
- // ListSize
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.list.ListSize(), "FoundationalModelLibrary::PrimitiveBehaviors::ListFunctions::ListSize");
- // ListGet
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.list.ListGet(), "FoundationalModelLibrary::PrimitiveBehaviors::ListFunctions::ListGet");
- // ListConcat
- this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.list.ListConcat(), "FoundationalModelLibrary::PrimitiveBehaviors::ListFunctions::ListConcat");
- } catch (Exception e) {
- org.eclipse.papyrus.infra.core.Activator.log.error(e);
- }
- }
-}
+/*****************************************************************************
+ * Copyright (c) 2012 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.moka.fuml.standardlibrary;
+
+import org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1.Locus;
+import org.eclipse.papyrus.moka.fuml.registry.AbstractOpaqueBehaviorExecutionRegistry;
+
+
+public class StandardLibraryRegistry extends AbstractOpaqueBehaviorExecutionRegistry {
+
+ protected final static String FUML_LIBRARY_NAME = "FoundationalModelLibrary";
+
+ @Override
+ public void registerOpaqueBehaviorExecutions(Locus locus) {
+ this.locus = locus;
+ this.buildOpaqueBehaviorsMap(FUML_LIBRARY_NAME);
+ try {
+ // ////////////////////
+ // Integer functions
+ // Neg
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Neg(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::Neg");
+ // +
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Add(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::+");
+ // -
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Minus(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::-");
+ // *
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Times(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::*");
+ // Abs
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Abs(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::Abs");
+ // Div
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Div(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::Div");
+ // Mod
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Mod(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::Mod");
+ // Max
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Max(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::Max");
+ // Min
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Min(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::Min");
+ // <
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Lower(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::<");
+ // >
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.Greater(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::>");
+ // <=
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.LowerOrEqual(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::<=");
+ // >=
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.GreaterOrEqual(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::>=");
+ // ToString
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.ToString(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::ToString");
+ // ToUnlimitedNatural
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.ToUnlimitedNatural(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::ToUnlimitedNatural");
+ // ToInteger
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.integer.ToInteger(), "FoundationalModelLibrary::PrimitiveBehaviors::IntegerFunctions::ToInteger");
+ // '/' is missing TODO
+
+ // ////////////////////
+ // Unlimited natural functions
+ // >
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.Greater(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::>");
+ // >=
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.GreaterOrEqual(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::>=");
+ // <
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.Lower(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::<");
+ // <=
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.LowerOrEqual(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::<=");
+ // Max
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.Max(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::Max");
+ // Min
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.Min(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::Min");
+ // ToInteger
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.ToInteger(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::ToInteger");
+ // ToString
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.ToString(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::ToString");
+ // ToUnlimitedNatural
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.unlimitednatural.ToUnlimitedNatural(), "FoundationalModelLibrary::PrimitiveBehaviors::UnlimitedNaturalFunctions::ToUnlimitedNatural");
+
+ // ////////////////////
+ // Boolean functions
+ // Or
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_.Or(), "FoundationalModelLibrary::PrimitiveBehaviors::BooleanFunctions::Or");
+ // Xor
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_.Xor(), "FoundationalModelLibrary::PrimitiveBehaviors::BooleanFunctions::Xor");
+ // And
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_.And(), "FoundationalModelLibrary::PrimitiveBehaviors::BooleanFunctions::And");
+ // Not
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_.Not(), "FoundationalModelLibrary::PrimitiveBehaviors::BooleanFunctions::Not");
+ // Implies
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_.Implies(), "FoundationalModelLibrary::PrimitiveBehaviors::BooleanFunctions::Implies");
+ // ToString
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_.ToString(), "FoundationalModelLibrary::PrimitiveBehaviors::BooleanFunctions::ToString");
+ // ToBoolean
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.boolean_.ToBoolean(), "FoundationalModelLibrary::PrimitiveBehaviors::BooleanFunctions::ToBoolean");
+
+ // ////////////////////
+ // Real functions
+ // +
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Add(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::+");
+ // -
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Minus(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::-");
+ // *
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Times(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::*");
+ // /
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Div(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::/");
+ // >
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Greater(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::>");
+ // >=
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.GreaterOrEqual(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::>=");
+ // <
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Lower(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::<");
+ // <=
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.LowerOrEqual(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::<=");
+ // Abs
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Abs(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::Abs");
+ // Floor
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Floor(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::Floor");
+ // Inv
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Inv(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::Inv");
+ // Max
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Max(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::Max");
+ // Min
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Min(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::Min");
+ // Neg
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Neg(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::Neg");
+ // Round
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.Round(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::Round");
+ // ToInteger
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.ToInteger(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::ToInteger");
+ // ToReal
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.ToReal(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::ToReal");
+ // ToString
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.real.ToString(), "FoundationalModelLibrary::PrimitiveBehaviors::RealFunctions::ToString");
+
+ // ////////////////////
+ // String functions
+ // Concat
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.string.Concat(), "FoundationalModelLibrary::PrimitiveBehaviors::StringFunctions::Concat");
+ // Size
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.string.Size(), "FoundationalModelLibrary::PrimitiveBehaviors::StringFunctions::Size");
+ // Substring
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.string.Substring(), "FoundationalModelLibrary::PrimitiveBehaviors::StringFunctions::Substring");
+ // ////////////////////
+ // List functions
+ // ListSize
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.list.ListSize(), "FoundationalModelLibrary::PrimitiveBehaviors::ListFunctions::ListSize");
+ // ListGet
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.list.ListGet(), "FoundationalModelLibrary::PrimitiveBehaviors::ListFunctions::ListGet");
+ // ListConcat
+ this.registerOpaqueBehaviorExecution(new org.eclipse.papyrus.moka.fuml.standardlibrary.library.list.ListConcat(), "FoundationalModelLibrary::PrimitiveBehaviors::ListFunctions::ListConcat");
+ } catch (Exception e) {
+ org.eclipse.papyrus.infra.core.Activator.log.error(e);
+ }
+ }
+}
diff --git a/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/library/io/StandardInputChannelImpl.java b/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/library/io/StandardInputChannelImpl.java
index a488a88..7f99247 100644
--- a/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/library/io/StandardInputChannelImpl.java
+++ b/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/library/io/StandardInputChannelImpl.java
@@ -1,83 +1,83 @@
-/*****************************************************************************
- * 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
- *
- *****************************************************************************/
-
-package org.eclipse.papyrus.moka.fuml.standardlibrary.library.io;
-
-import java.io.BufferedReader;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.util.ArrayList;
-import java.util.List;
-
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.StringValue;
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Value;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.Execution;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
-import org.eclipse.papyrus.moka.fuml.debug.Debug;
-import org.eclipse.papyrus.moka.fuml.registry.service.framework.AbstractService;
-import org.eclipse.uml2.uml.Class;
-import org.eclipse.uml2.uml.Operation;
-
-public class StandardInputChannelImpl extends AbstractService {
-
- protected static BufferedReader bufferedReader;
-
- protected InputStream in = null;
-
- public StandardInputChannelImpl(Class service) {
- super(service);
- this.types.add(service);
- this.in = StandardOutputChannelImpl.getConsole().getInputStream();
- }
-
- @Override
- public Execution dispatch(Operation operation) {
- if (operation.getName().equals("readLine")) {
- return new ReadLineExecution(operation);
- }
- return null;
- }
-
- protected class ReadLineExecution extends AbstractService.ServiceOperationExecution {
-
- protected Operation operation;
-
- public ReadLineExecution(Operation operation) {
- super(operation);
- }
-
- @Override
- public Value new_() {
- return new ReadLineExecution(operation);
- }
-
- @Override
- public void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters) {
- // This implementation does not produce errorStatus information.
- try {
- if (bufferedReader == null) {
- bufferedReader = new BufferedReader(new InputStreamReader(in));
- }
- String line = bufferedReader.readLine();
- StringValue result = new StringValue();
- result.value = "" + line;
- List<Value> outputs = new ArrayList<Value>();
- outputs.add(result);
- outputParameters.get(0).values = outputs;
- } catch (Exception e) {
- Debug.println("An error occured during the execution of readLine " + e.getMessage());
- }
- }
- }
-}
+/*****************************************************************************
+ * 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
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.moka.fuml.standardlibrary.library.io;
+
+import java.io.BufferedReader;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.StringValue;
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Value;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.Execution;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
+import org.eclipse.papyrus.moka.fuml.debug.Debug;
+import org.eclipse.papyrus.moka.fuml.registry.service.framework.AbstractService;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Operation;
+
+public class StandardInputChannelImpl extends AbstractService {
+
+ protected static BufferedReader bufferedReader;
+
+ protected InputStream in = null;
+
+ public StandardInputChannelImpl(Class service) {
+ super(service);
+ this.types.add(service);
+ this.in = StandardOutputChannelImpl.getConsole().getInputStream();
+ }
+
+ @Override
+ public Execution dispatch(Operation operation) {
+ if (operation.getName().equals("readLine")) {
+ return new ReadLineExecution(operation);
+ }
+ return null;
+ }
+
+ protected class ReadLineExecution extends AbstractService.ServiceOperationExecution {
+
+ protected Operation operation;
+
+ public ReadLineExecution(Operation operation) {
+ super(operation);
+ }
+
+ @Override
+ public Value new_() {
+ return new ReadLineExecution(operation);
+ }
+
+ @Override
+ public void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters) {
+ // This implementation does not produce errorStatus information.
+ try {
+ if (bufferedReader == null) {
+ bufferedReader = new BufferedReader(new InputStreamReader(in));
+ }
+ String line = bufferedReader.readLine();
+ StringValue result = new StringValue();
+ result.value = "" + line;
+ List<Value> outputs = new ArrayList<Value>();
+ outputs.add(result);
+ outputParameters.get(0).values = outputs;
+ } catch (Exception e) {
+ Debug.println("An error occured during the execution of readLine " + e.getMessage());
+ }
+ }
+ }
+}
diff --git a/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/library/io/StandardOutputChannelImpl.java b/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/library/io/StandardOutputChannelImpl.java
index 4f71485..e11d167 100644
--- a/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/library/io/StandardOutputChannelImpl.java
+++ b/org.eclipse.papyrus.moka.fuml.standardlibrary/src/org/eclipse/papyrus/moka/fuml/standardlibrary/library/io/StandardOutputChannelImpl.java
@@ -1,118 +1,118 @@
-/*****************************************************************************
- * 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
- *
- *****************************************************************************/
-
-package org.eclipse.papyrus.moka.fuml.standardlibrary.library.io;
-
-import java.util.List;
-
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.StringValue;
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Value;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.Execution;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
-import org.eclipse.papyrus.moka.fuml.debug.Debug;
-import org.eclipse.papyrus.moka.fuml.registry.service.framework.AbstractService;
-import org.eclipse.ui.console.ConsolePlugin;
-import org.eclipse.ui.console.IConsole;
-import org.eclipse.ui.console.IConsoleManager;
-import org.eclipse.ui.console.IOConsole;
-import org.eclipse.ui.console.IOConsoleOutputStream;
-import org.eclipse.uml2.uml.Class;
-import org.eclipse.uml2.uml.Operation;
-
-public class StandardOutputChannelImpl extends AbstractService {
-
- protected static final String CONSOLE_NAME = "fUML Console";
-
- protected static IOConsole console = null;
-
- protected IOConsoleOutputStream out = null;
-
- public static IOConsole getConsole() {
- if (console == null) {
- console = new IOConsole(CONSOLE_NAME, null);
- IConsoleManager conMan = ConsolePlugin.getDefault().getConsoleManager();
- conMan.addConsoles(new IConsole[] { console });
- }
- return console;
- }
-
- public StandardOutputChannelImpl(Class service) {
- super(service);
- this.out = getConsole().newOutputStream();
- }
-
- @Override
- public Execution dispatch(Operation operation) {
- if (operation.getName().equals("writeLine")) {
- return new WriteLineExecution(operation);
- } else if (operation.getName().equals("write")) {
- return new Write(operation);
- }
- // TODO complete with other operations
- return null;
- }
-
- protected class WriteLineExecution extends AbstractService.ServiceOperationExecution {
-
- public WriteLineExecution(Operation operation) {
- super(operation);
- }
-
- @Override
- public Value new_() {
- return new WriteLineExecution(operation);
- }
-
- @Override
- public void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters) {
- // Supposed to have only one input argument, corresponding to parameter 'value'
- try {
- String message = "";
- message = ((StringValue) inputParameters.get(0).values.get(0)).value;
- out.write(message + "\n");
- out.flush();
- // This implementation does not produce errorStatus information.
- } catch (Exception e) {
- Debug.println("An error occured during the execution of writeLine " + e.getMessage());
- }
- }
- }
-
- protected class Write extends AbstractService.ServiceOperationExecution {
-
- protected Operation operation;
-
- public Write(Operation operation) {
- super(operation);
- }
-
- @Override
- public Value new_() {
- return new Write(operation);
- }
-
- @Override
- public void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters) {
- // Supposed to have only one input argument, corresponding to parameter 'value'
- try {
- String message = inputParameters.get(0).values.get(0).toString();
- out.write(message);
- out.flush();
- // This implementation does not produce errorStatus information.
- } catch (Exception e) {
- Debug.println("An error occured during the execution of write " + e.getMessage());
- }
- }
- }
-}
+/*****************************************************************************
+ * 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
+ *
+ *****************************************************************************/
+
+package org.eclipse.papyrus.moka.fuml.standardlibrary.library.io;
+
+import java.util.List;
+
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.StringValue;
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Value;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.Execution;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
+import org.eclipse.papyrus.moka.fuml.debug.Debug;
+import org.eclipse.papyrus.moka.fuml.registry.service.framework.AbstractService;
+import org.eclipse.ui.console.ConsolePlugin;
+import org.eclipse.ui.console.IConsole;
+import org.eclipse.ui.console.IConsoleManager;
+import org.eclipse.ui.console.IOConsole;
+import org.eclipse.ui.console.IOConsoleOutputStream;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.Operation;
+
+public class StandardOutputChannelImpl extends AbstractService {
+
+ protected static final String CONSOLE_NAME = "fUML Console";
+
+ protected static IOConsole console = null;
+
+ protected IOConsoleOutputStream out = null;
+
+ public static IOConsole getConsole() {
+ if (console == null) {
+ console = new IOConsole(CONSOLE_NAME, null);
+ IConsoleManager conMan = ConsolePlugin.getDefault().getConsoleManager();
+ conMan.addConsoles(new IConsole[] { console });
+ }
+ return console;
+ }
+
+ public StandardOutputChannelImpl(Class service) {
+ super(service);
+ this.out = getConsole().newOutputStream();
+ }
+
+ @Override
+ public Execution dispatch(Operation operation) {
+ if (operation.getName().equals("writeLine")) {
+ return new WriteLineExecution(operation);
+ } else if (operation.getName().equals("write")) {
+ return new Write(operation);
+ }
+ // TODO complete with other operations
+ return null;
+ }
+
+ protected class WriteLineExecution extends AbstractService.ServiceOperationExecution {
+
+ public WriteLineExecution(Operation operation) {
+ super(operation);
+ }
+
+ @Override
+ public Value new_() {
+ return new WriteLineExecution(operation);
+ }
+
+ @Override
+ public void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters) {
+ // Supposed to have only one input argument, corresponding to parameter 'value'
+ try {
+ String message = "";
+ message = ((StringValue) inputParameters.get(0).values.get(0)).value;
+ out.write(message + "\n");
+ out.flush();
+ // This implementation does not produce errorStatus information.
+ } catch (Exception e) {
+ Debug.println("An error occured during the execution of writeLine " + e.getMessage());
+ }
+ }
+ }
+
+ protected class Write extends AbstractService.ServiceOperationExecution {
+
+ protected Operation operation;
+
+ public Write(Operation operation) {
+ super(operation);
+ }
+
+ @Override
+ public Value new_() {
+ return new Write(operation);
+ }
+
+ @Override
+ public void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters) {
+ // Supposed to have only one input argument, corresponding to parameter 'value'
+ try {
+ String message = inputParameters.get(0).values.get(0).toString();
+ out.write(message);
+ out.flush();
+ // This implementation does not produce errorStatus information.
+ } catch (Exception e) {
+ Debug.println("An error occured during the execution of write " + e.getMessage());
+ }
+ }
+ }
+}
diff --git a/org.eclipse.papyrus.moka.fuml.validation/.classpath b/org.eclipse.papyrus.moka.fuml.validation/.classpath
index c2c5a85..4c62a80 100644
--- a/org.eclipse.papyrus.moka.fuml.validation/.classpath
+++ b/org.eclipse.papyrus.moka.fuml.validation/.classpath
@@ -1,7 +1,7 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<classpath>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?xml version="1.0" encoding="UTF-8"?>
+<classpath>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="con" path="org.eclipse.jdt.launching.JRE_CONTAINER/org.eclipse.jdt.internal.debug.ui.launcher.StandardVMType/JavaSE-1.6"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.papyrus.moka.fuml.validation/META-INF/MANIFEST.MF b/org.eclipse.papyrus.moka.fuml.validation/META-INF/MANIFEST.MF
index d7c30e2..f8af9c7 100644
--- a/org.eclipse.papyrus.moka.fuml.validation/META-INF/MANIFEST.MF
+++ b/org.eclipse.papyrus.moka.fuml.validation/META-INF/MANIFEST.MF
@@ -1,13 +1,13 @@
-Manifest-Version: 1.0
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.emf.validation;bundle-version="1.8.0",
- org.eclipse.uml2.uml;bundle-version="5.0.0"
-Bundle-Vendor: Eclipse Modeling Project
-Bundle-ActivationPolicy: lazy
-Bundle-Version: 1.2.0.qualifier
-Bundle-Name: Moka Validation Rules for fUML/PSCS models (Incubation)
-Bundle-ManifestVersion: 2
-Bundle-Activator: org.eclipse.papyrus.moka.fuml.validation.Activator
-Bundle-SymbolicName: org.eclipse.papyrus.moka.fuml.validation;singleton:=true
-Bundle-RequiredExecutionEnvironment: JavaSE-1.6
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.emf.validation;bundle-version="1.8.0",
+ org.eclipse.uml2.uml;bundle-version="5.0.0"
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: Moka Validation Rules for fUML/PSCS models (Incubation)
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.moka.fuml.validation.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.moka.fuml.validation;singleton:=true
+Bundle-RequiredExecutionEnvironment: JavaSE-1.6
diff --git a/org.eclipse.papyrus.moka.fuml.validation/pom.xml b/org.eclipse.papyrus.moka.fuml.validation/pom.xml
index dcb843f..8fa07aa 100644
--- a/org.eclipse.papyrus.moka.fuml.validation/pom.xml
+++ b/org.eclipse.papyrus.moka.fuml.validation/pom.xml
@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>org.eclipse.papyrus.extra.releng</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.moka.parent</artifactId>
+ <groupId>org.eclipse.papyrus.moka</groupId>
<version>1.2.0-SNAPSHOT</version>
- <relativePath>../../../releng/extra</relativePath>
</parent>
<artifactId>org.eclipse.papyrus.moka.fuml.validation</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
- <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
+ <name>org.eclipse.papyrus.moka.fuml.validation</name>
</project>
\ No newline at end of file
diff --git a/org.eclipse.papyrus.moka.fuml/.classpath b/org.eclipse.papyrus.moka.fuml/.classpath
index ec07c2d..2fe6748 100644
--- a/org.eclipse.papyrus.moka.fuml/.classpath
+++ b/org.eclipse.papyrus.moka.fuml/.classpath
@@ -1,8 +1,8 @@
-<?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/J2SE-1.5"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="src" path="generated"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?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/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="src" path="generated"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.papyrus.moka.fuml/.project b/org.eclipse.papyrus.moka.fuml/.project
index 2e1c3b8..4889600 100644
--- a/org.eclipse.papyrus.moka.fuml/.project
+++ b/org.eclipse.papyrus.moka.fuml/.project
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.papyrus.moka.fuml</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <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>
- </natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.moka.fuml</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <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>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.papyrus.moka.fuml/META-INF/MANIFEST.MF b/org.eclipse.papyrus.moka.fuml/META-INF/MANIFEST.MF
index 994b5f0..175ad59 100644
--- a/org.eclipse.papyrus.moka.fuml/META-INF/MANIFEST.MF
+++ b/org.eclipse.papyrus.moka.fuml/META-INF/MANIFEST.MF
@@ -1,46 +1,46 @@
-Manifest-Version: 1.0
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.2.0",
- org.eclipse.emf;bundle-version="2.6.0",
- org.eclipse.uml2.uml;bundle-version="4.1.0",
- org.eclipse.papyrus.moka;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
- org.eclipse.debug.core;bundle-version="3.8.0",
- org.eclipse.papyrus.moka.ui;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.emf;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.services.labelprovider;bundle-version="1.2.0",
- org.apache.commons.lang;bundle-version="2.6.0",
- org.eclipse.emf.ecore,
- org.eclipse.emf.codegen;bundle-version="2.9.0",
- org.eclipse.uml2.codegen.ecore;bundle-version="1.9.0"
-Export-Package: org.eclipse.papyrus.moka.fuml;uses:="org.eclipse.ui.plugin,
- org.osgi.framework",
- org.eclipse.papyrus.moka.fuml.Semantics.Actions.BasicActions,
- org.eclipse.papyrus.moka.fuml.Semantics.Actions.CompleteActions,
- org.eclipse.papyrus.moka.fuml.Semantics.Actions.IntermediateActions,
- org.eclipse.papyrus.moka.fuml.Semantics.Activities.CompleteStructuredActivities,
- org.eclipse.papyrus.moka.fuml.Semantics.Activities.ExtraStructuredActivities,
- org.eclipse.papyrus.moka.fuml.Semantics.Activities.IntermediateActivities,
- org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel,
- org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors,
- org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications,
- org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1,
- org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL2,
- org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL3,
- org.eclipse.papyrus.moka.fuml.debug,
- org.eclipse.papyrus.moka.fuml.presentation,
- org.eclipse.papyrus.moka.fuml.registry,
- org.eclipse.papyrus.moka.fuml.registry.service.framework
-Bundle-Vendor: Eclipse Modeling Project
-Bundle-ActivationPolicy: lazy
-Bundle-ClassPath: .
-Bundle-Version: 1.2.0.qualifier
-Eclipse-BuddyPolicy: registered
-Bundle-Name: Moka fUML (Incubation)
-Bundle-ManifestVersion: 2
-Bundle-Activator: org.eclipse.papyrus.moka.fuml.Activator
-Bundle-Description: %pluginDescription
-Bundle-SymbolicName: org.eclipse.papyrus.moka.fuml;singleton:=true
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.2.0",
+ org.eclipse.emf;bundle-version="2.6.0",
+ org.eclipse.uml2.uml;bundle-version="4.1.0",
+ org.eclipse.papyrus.moka;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.debug.core;bundle-version="3.8.0",
+ org.eclipse.papyrus.moka.ui;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.emf;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.services.labelprovider;bundle-version="1.2.0",
+ org.apache.commons.lang;bundle-version="2.6.0",
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.codegen;bundle-version="2.9.0",
+ org.eclipse.uml2.codegen.ecore;bundle-version="1.9.0"
+Export-Package: org.eclipse.papyrus.moka.fuml;uses:="org.eclipse.ui.plugin,
+ org.osgi.framework",
+ org.eclipse.papyrus.moka.fuml.Semantics.Actions.BasicActions,
+ org.eclipse.papyrus.moka.fuml.Semantics.Actions.CompleteActions,
+ org.eclipse.papyrus.moka.fuml.Semantics.Actions.IntermediateActions,
+ org.eclipse.papyrus.moka.fuml.Semantics.Activities.CompleteStructuredActivities,
+ org.eclipse.papyrus.moka.fuml.Semantics.Activities.ExtraStructuredActivities,
+ org.eclipse.papyrus.moka.fuml.Semantics.Activities.IntermediateActivities,
+ org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel,
+ org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors,
+ org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.Communications,
+ org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1,
+ org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL2,
+ org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL3,
+ org.eclipse.papyrus.moka.fuml.debug,
+ org.eclipse.papyrus.moka.fuml.presentation,
+ org.eclipse.papyrus.moka.fuml.registry,
+ org.eclipse.papyrus.moka.fuml.registry.service.framework
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-ActivationPolicy: lazy
+Bundle-ClassPath: .
+Bundle-Version: 1.2.0.qualifier
+Eclipse-BuddyPolicy: registered
+Bundle-Name: Moka fUML (Incubation)
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.moka.fuml.Activator
+Bundle-Description: %pluginDescription
+Bundle-SymbolicName: org.eclipse.papyrus.moka.fuml;singleton:=true
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.papyrus.moka.fuml/about.html b/org.eclipse.papyrus.moka.fuml/about.html
index 82d49bf..d35d5ae 100644
--- a/org.eclipse.papyrus.moka.fuml/about.html
+++ b/org.eclipse.papyrus.moka.fuml/about.html
@@ -1,28 +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>June 5, 2007</p>
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
+<!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>June 5, 2007</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
diff --git a/org.eclipse.papyrus.moka.fuml/build.properties b/org.eclipse.papyrus.moka.fuml/build.properties
index 9adb66f..e71a46e 100644
--- a/org.eclipse.papyrus.moka.fuml/build.properties
+++ b/org.eclipse.papyrus.moka.fuml/build.properties
@@ -1,13 +1,13 @@
-source.. = src/, generated/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- about.html,\
- build.properties,\
- generated/,\
- schema/,\
- .classpath,\
- resources/
-jre.compilation.profile = JavaSE-1.6
-src.includes = about.html
+source.. = src/, generated/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ about.html,\
+ build.properties,\
+ generated/,\
+ schema/,\
+ .classpath,\
+ resources/
+jre.compilation.profile = JavaSE-1.6
+src.includes = about.html
diff --git a/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/Actions/IntermediateActions/DefaultGetAssociationStrategy.java b/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/Actions/IntermediateActions/DefaultGetAssociationStrategy.java
index b0cd54d..c1ef101 100644
--- a/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/Actions/IntermediateActions/DefaultGetAssociationStrategy.java
+++ b/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/Actions/IntermediateActions/DefaultGetAssociationStrategy.java
@@ -1,31 +1,31 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.fuml.Semantics.Actions.IntermediateActions;
-
-import org.eclipse.uml2.uml.Association;
-import org.eclipse.uml2.uml.Property;
-import org.eclipse.uml2.uml.StructuralFeature;
-
-public class DefaultGetAssociationStrategy extends GetAssociationStrategy {
-
- @Override
- public Association getAssociation(StructuralFeature feature) {
- // If the structural feature for the action of this activation is an
- // association end,
- // then get the associated association.
- Association association = null;
- if (feature instanceof Property) {
- association = ((Property) feature).getAssociation();
- }
- return association;
- }
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.fuml.Semantics.Actions.IntermediateActions;
+
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.StructuralFeature;
+
+public class DefaultGetAssociationStrategy extends GetAssociationStrategy {
+
+ @Override
+ public Association getAssociation(StructuralFeature feature) {
+ // If the structural feature for the action of this activation is an
+ // association end,
+ // then get the associated association.
+ Association association = null;
+ if (feature instanceof Property) {
+ association = ((Property) feature).getAssociation();
+ }
+ return association;
+ }
+}
diff --git a/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/Actions/IntermediateActions/GetAssociationStrategy.java b/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/Actions/IntermediateActions/GetAssociationStrategy.java
index 73754f0..ef2686b 100644
--- a/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/Actions/IntermediateActions/GetAssociationStrategy.java
+++ b/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/Actions/IntermediateActions/GetAssociationStrategy.java
@@ -1,26 +1,26 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.fuml.Semantics.Actions.IntermediateActions;
-
-import org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1.SemanticStrategy;
-import org.eclipse.uml2.uml.Association;
-import org.eclipse.uml2.uml.StructuralFeature;
-
-public abstract class GetAssociationStrategy extends SemanticStrategy {
-
- public abstract Association getAssociation(StructuralFeature feature);
-
- @Override
- public String getName() {
- return "GetAssociationStrategy";
- }
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.fuml.Semantics.Actions.IntermediateActions;
+
+import org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1.SemanticStrategy;
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.StructuralFeature;
+
+public abstract class GetAssociationStrategy extends SemanticStrategy {
+
+ public abstract Association getAssociation(StructuralFeature feature);
+
+ @Override
+ public String getName() {
+ return "GetAssociationStrategy";
+ }
+}
diff --git a/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/Actions/IntermediateActions/RestrictiveGetAssociationStrategy.java b/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/Actions/IntermediateActions/RestrictiveGetAssociationStrategy.java
index 9a515c0..f7fe08f 100644
--- a/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/Actions/IntermediateActions/RestrictiveGetAssociationStrategy.java
+++ b/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/Actions/IntermediateActions/RestrictiveGetAssociationStrategy.java
@@ -1,35 +1,35 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.fuml.Semantics.Actions.IntermediateActions;
-
-import org.eclipse.uml2.uml.Association;
-import org.eclipse.uml2.uml.Property;
-import org.eclipse.uml2.uml.StructuralFeature;
-
-public class RestrictiveGetAssociationStrategy extends DefaultGetAssociationStrategy {
-
- @Override
- public Association getAssociation(StructuralFeature feature) {
- // If the structural feature for the action of this activation is an
- // association end,
- // then get the associated association,
- // ONLY IF THIS FEATURE IS OWNED BY THE ASSOCIATION
- Association association = null;
- if (feature instanceof Property) {
- association = ((Property) feature).getAssociation();
- }
- if (association != null && !association.getOwnedEnds().contains(feature)) {
- association = null;
- }
- return association;
- }
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.fuml.Semantics.Actions.IntermediateActions;
+
+import org.eclipse.uml2.uml.Association;
+import org.eclipse.uml2.uml.Property;
+import org.eclipse.uml2.uml.StructuralFeature;
+
+public class RestrictiveGetAssociationStrategy extends DefaultGetAssociationStrategy {
+
+ @Override
+ public Association getAssociation(StructuralFeature feature) {
+ // If the structural feature for the action of this activation is an
+ // association end,
+ // then get the associated association,
+ // ONLY IF THIS FEATURE IS OWNED BY THE ASSOCIATION
+ Association association = null;
+ if (feature instanceof Property) {
+ association = ((Property) feature).getAssociation();
+ }
+ if (association != null && !association.getOwnedEnds().contains(feature)) {
+ association = null;
+ }
+ return association;
+ }
+}
diff --git a/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/CommonBehaviors/Communications/ArrivalSignal.java b/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/CommonBehaviors/Communications/ArrivalSignal.java
index 28fdbc7..11d0bd7 100644
--- a/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/CommonBehaviors/Communications/ArrivalSignal.java
+++ b/org.eclipse.papyrus.moka.fuml/generated/org/eclipse/papyrus/moka/fuml/Semantics/CommonBehaviors/Communications/ArrivalSignal.java
@@ -1,17 +1,17 @@
-/*****************************************************************************
- * Copyright (c) 2012 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.moka.fuml.Semantics.CommonBehaviors.Communications;
-
-public class ArrivalSignal {
-}
+/*****************************************************************************
+ * Copyright (c) 2012 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.moka.fuml.Semantics.CommonBehaviors.Communications;
+
+public class ArrivalSignal {
+}
diff --git a/org.eclipse.papyrus.moka.fuml/plugin.xml b/org.eclipse.papyrus.moka.fuml/plugin.xml
index 56bf8fe..9c92bc7 100644
--- a/org.eclipse.papyrus.moka.fuml/plugin.xml
+++ b/org.eclipse.papyrus.moka.fuml/plugin.xml
@@ -1,32 +1,32 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
- <extension-point id="org.eclipse.papyrus.moka.fuml.library" name="%extension-point.name" schema="schema/org.eclipse.papyrus.moka.fuml.library.exsd"/>
- <extension-point id="org.eclipse.papyrus.moka.fuml.services" name="SystemServices" schema="schema/org.eclipse.papyrus.moka.fuml.services.exsd"/>
- <extension
- point="org.eclipse.papyrus.moka.engine">
- <engine
- class="org.eclipse.papyrus.moka.fuml.FUMLExecutionEngineForMoka"
- description="fUML Execution Engine (single-threaded implementation)"
- >
- </engine>
- </extension>
- <extension
- point="org.eclipse.emf.ecore.uri_mapping">
- <mapping
- source="pathmap://PAPYRUS_MOKA_FUML_TYPES/"
- target="platform:/plugin/org.eclipse.papyrus.moka.fuml/resources/">
- </mapping>
- </extension>
- <extension
- point="org.eclipse.papyrus.uml.extensionpoints.UMLLibrary">
- <library
- description="fUML Semantics"
- iconpath="resources/icons/moka_icon.png"
- name="fUMLSemantics"
- path="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml"
- provider="CEA LIST - 2013">
- </library>
- </extension>
-
-</plugin>
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension-point id="org.eclipse.papyrus.moka.fuml.library" name="%extension-point.name" schema="schema/org.eclipse.papyrus.moka.fuml.library.exsd"/>
+ <extension-point id="org.eclipse.papyrus.moka.fuml.services" name="SystemServices" schema="schema/org.eclipse.papyrus.moka.fuml.services.exsd"/>
+ <extension
+ point="org.eclipse.papyrus.moka.engine">
+ <engine
+ class="org.eclipse.papyrus.moka.fuml.FUMLExecutionEngineForMoka"
+ description="fUML Execution Engine (single-threaded implementation)"
+ >
+ </engine>
+ </extension>
+ <extension
+ point="org.eclipse.emf.ecore.uri_mapping">
+ <mapping
+ source="pathmap://PAPYRUS_MOKA_FUML_TYPES/"
+ target="platform:/plugin/org.eclipse.papyrus.moka.fuml/resources/">
+ </mapping>
+ </extension>
+ <extension
+ point="org.eclipse.papyrus.uml.extensionpoints.UMLLibrary">
+ <library
+ description="fUML Semantics"
+ iconpath="resources/icons/moka_icon.png"
+ name="fUMLSemantics"
+ path="pathmap://PAPYRUS_MOKA_FUML_TYPES/fUML_Semantics.uml"
+ provider="CEA LIST - 2013">
+ </library>
+ </extension>
+
+</plugin>
diff --git a/org.eclipse.papyrus.moka.fuml/pom.xml b/org.eclipse.papyrus.moka.fuml/pom.xml
index d766428..be5046f 100644
--- a/org.eclipse.papyrus.moka.fuml/pom.xml
+++ b/org.eclipse.papyrus.moka.fuml/pom.xml
@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>org.eclipse.papyrus.extra.releng</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.moka.parent</artifactId>
+ <groupId>org.eclipse.papyrus.moka</groupId>
<version>1.2.0-SNAPSHOT</version>
- <relativePath>../../../releng/extra</relativePath>
</parent>
<artifactId>org.eclipse.papyrus.moka.fuml</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
- <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
+ <name>org.eclipse.papyrus.moka.fuml</name>
</project>
\ No newline at end of file
diff --git a/org.eclipse.papyrus.moka.fuml/resources/fUML_Semantics.di b/org.eclipse.papyrus.moka.fuml/resources/fUML_Semantics.di
index 2c52bf8..ad9a184 100644
--- a/org.eclipse.papyrus.moka.fuml/resources/fUML_Semantics.di
+++ b/org.eclipse.papyrus.moka.fuml/resources/fUML_Semantics.di
@@ -1,16 +1,16 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
- <pageList>
- <availablePage/>
- <availablePage>
- <emfPageIdentifier href="fUML_Semantics.notation#_4kmfoDWSEeOZWaRFoNoLkA"/>
- </availablePage>
- <availablePage/>
- <availablePage/>
- </pageList>
- <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
- <windows>
- <children xsi:type="di:TabFolder"/>
- </windows>
- </sashModel>
-</di:SashWindowsMngr>
+<?xml version="1.0" encoding="UTF-8"?>
+<di:SashWindowsMngr xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:di="http://www.eclipse.org/papyrus/0.7.0/sashdi">
+ <pageList>
+ <availablePage/>
+ <availablePage>
+ <emfPageIdentifier href="fUML_Semantics.notation#_4kmfoDWSEeOZWaRFoNoLkA"/>
+ </availablePage>
+ <availablePage/>
+ <availablePage/>
+ </pageList>
+ <sashModel currentSelection="//@sashModel/@windows.0/@children.0">
+ <windows>
+ <children xsi:type="di:TabFolder"/>
+ </windows>
+ </sashModel>
+</di:SashWindowsMngr>
diff --git a/org.eclipse.papyrus.moka.fuml/resources/fUML_Semantics.notation b/org.eclipse.papyrus.moka.fuml/resources/fUML_Semantics.notation
index 01e391a..ba69fd2 100644
--- a/org.eclipse.papyrus.moka.fuml/resources/fUML_Semantics.notation
+++ b/org.eclipse.papyrus.moka.fuml/resources/fUML_Semantics.notation
@@ -1,8 +1,8 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" 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="_4kmfoDWSEeOZWaRFoNoLkA" type="PapyrusUMLClassDiagram" name="LociL1_Extensions" measurementUnit="Pixel">
- <styles xmi:type="notation:DiagramStyle" xmi:id="_4kmfoTWSEeOZWaRFoNoLkA"/>
- <element xmi:type="uml:Package" href="fUML_Semantics.uml#Semantics-Loci-LociL1"/>
- </notation:Diagram>
- <css:ModelStyleSheets xmi:id="_cbLtoN9WEeOMLpW5MQOjKg"/>
-</xmi:XMI>
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:css="http://www.eclipse.org/papyrus/infra/gmfdiag/css" 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="_4kmfoDWSEeOZWaRFoNoLkA" type="PapyrusUMLClassDiagram" name="LociL1_Extensions" measurementUnit="Pixel">
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_4kmfoTWSEeOZWaRFoNoLkA"/>
+ <element xmi:type="uml:Package" href="fUML_Semantics.uml#Semantics-Loci-LociL1"/>
+ </notation:Diagram>
+ <css:ModelStyleSheets xmi:id="_cbLtoN9WEeOMLpW5MQOjKg"/>
+</xmi:XMI>
diff --git a/org.eclipse.papyrus.moka.fuml/resources/fUML_Semantics.uml b/org.eclipse.papyrus.moka.fuml/resources/fUML_Semantics.uml
index 9f83e0e..f7c1b50 100644
--- a/org.eclipse.papyrus.moka.fuml/resources/fUML_Semantics.uml
+++ b/org.eclipse.papyrus.moka.fuml/resources/fUML_Semantics.uml
@@ -1,12545 +1,12545 @@
-<?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:ActionLanguage="http://www.omg.org/spec/ALF/20120827/ActionLanguage-Profile" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:standard="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.omg.org/spec/ALF/20120827/ActionLanguage-Profile pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#_Kv8EIKFXEeS_KNX0nfvIVQ">
- <uml:Model xmi:id="_0" name="fUML">
- <packageImport xmi:type="uml:PackageImport" xmi:id="_MAJPMGC9EeO8HvqR3xhj3Q">
- <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_0"/>
- </packageImport>
- <packageImport xmi:type="uml:PackageImport" xmi:id="_yjrNUGDnEeOm3qeg9F4VEw">
- <importedPackage xmi:type="uml:Model" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf"/>
- </packageImport>
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics" name="Semantics">
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Actions" name="Actions">
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Actions-BasicActions" name="BasicActions">
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Actions-BasicActions-_packageImport.0" importedPackage="Semantics-Activities-IntermediateActivities"/>
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Actions-BasicActions-_packageImport.2" importedPackage="Semantics-CommonBehaviors-Communications"/>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-SendSignalActionActivation" name="SendSignalActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-SendSignalActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-SendSignalActionActivation">
- <body>A send signal action activation is an invocation action activation for a send signal action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-SendSignalActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.CommonBehaviors.Communications.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-SendSignalActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-InvocationActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-SendSignalActionActivation-doAction" name="doAction" specification="Semantics-Actions-BasicActions-SendSignalActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the value from the target pin. If the value is not a reference, then do nothing.
-// Otherwise, construct a signal using the values from the argument pins and send it to the referent object.
-
-SendSignalAction action = (SendSignalAction)(this.node);
-Value target = this.takeTokens(action.target).getValue(0);
-
-if (target instanceof Reference) {
- Signal signal = action.signal;
-
- SignalInstance signalInstance = new SignalInstance();
- signalInstance.type = signal;
-
- PropertyList attributes = signal.ownedAttribute;
- InputPinList argumentPins = action.argument;
- for (int i = 0; i < attributes.size(); i++) {
- Property attribute = attributes.getValue(i);
- InputPin argumentPin = argumentPins.getValue(i);
- ValueList values = this.takeTokens(argumentPin);
- signalInstance.setFeatureValue(attribute, values, 0);
- }
-
- ((Reference)target).send(signalInstance);
-}
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-SendSignalActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-BasicActions-SendSignalActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-PinActivation" name="PinActivation" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-PinActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-PinActivation">
- <body>A pin activation is an object node activation for a node that is a pin.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-PinActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-PinActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ObjectNodeActivation"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-BasicActions-PinActivation-actionActivation" name="actionActivation" visibility="public" type="Semantics-Actions-BasicActions-ActionActivation" association="Semantics-Actions-BasicActions-A_pinActivations_actionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-PinActivation-actionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-PinActivation-actionActivation">
- <body>The activation of the action that owns the pin for this pin activation.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-PinActivation-actionActivation-_lowerValue"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire" name="fire" specification="Semantics-Actions-BasicActions-PinActivation-fire.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Add all incoming tokens to the pin.
-
-Debug.println("[fire] Pin " + (this.node==null? "": this.node.name + "..."));
-
-this.addTokens(incomingTokens);
-
-
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens" name="takeOfferedTokens" specification="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens-Parameter1-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens-Parameter1-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Take only a number of tokens only up to the limit allowed by
-// the multiplicity upper bound of the pin for this activation.
-
-int count = this.countUnofferedTokens();
-int upper = -1;
-
-// Note: A pin activation used in an expansion activation group
-// will have this.node == null.
-if (this.node != null) {
- upper = ((Pin)(this.node)).multiplicityElement.upper.naturalValue;
-}
-
-TokenList tokens = new TokenList();
-
-// Note: upper < 0 indicates an unbounded upper multiplicity.
-if (upper < 0 | count < upper) {
- ActivityEdgeInstanceList incomingEdges = this.incomingEdges;
- for (int i=0; i<incomingEdges.size(); i++) {
- ActivityEdgeInstance edge = incomingEdges.getValue(i);
- int incomingCount = edge.countOfferedValues();
- TokenList incomingTokens = new TokenList();
- if (upper < 0 | incomingCount < upper - count) {
- incomingTokens = edge.takeOfferedTokens();
- count = count + incomingCount;
- } else if (count < upper) {
- incomingTokens = edge.takeOfferedTokens(upper-count);
- count = upper;
- }
- for (int j = 0; j < incomingTokens.size(); j++) {
- Token token = incomingTokens.getValue(j);
- tokens.addValue(token);
- }
- }
-}
-
-return tokens;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire.1" name="fire" visibility="public" method="Semantics-Actions-BasicActions-PinActivation-fire">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire.1-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire.1-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens.1" name="takeOfferedTokens" visibility="public" method="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens.1-Parameter1-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens.1-Parameter1-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-OutputPinActivation" name="OutputPinActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-OutputPinActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-OutputPinActivation">
- <body>An output pin activation is a pin activation for an output pin.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-OutputPinActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Loci.*;
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-OutputPinActivation-_generalization.0" general="Semantics-Actions-BasicActions-PinActivation"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-InvocationActionActivation" name="InvocationActionActivation" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-InvocationActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-InvocationActionActivation">
- <body>An invocation action activation is an action activation of an invocation action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-InvocationActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Loci.*;
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-InvocationActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-InputPinActivation" name="InputPinActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-InputPinActivation">
- <body>An input pin activation is a pin activation for an input pin.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-_generalization.0" general="Semantics-Actions-BasicActions-PinActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-receiveOffer" name="receiveOffer" specification="Semantics-Actions-BasicActions-InputPinActivation-receiveOffer.1" isReentrant="false">
- <language>Java</language>
- <body>// Forward the offer to the action activation. [When all input pins are ready, the action will fire them.]
-
-this.actionActivation.receiveOffer();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-isReady" name="isReady" specification="Semantics-Actions-BasicActions-InputPinActivation-isReady.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-isReady-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return true if the total number of values already being offered by this pin plus those being offered
-// by the sources of incoming edges is at least equal to the minimum multiplicity of the pin.
-
-boolean ready = super.isReady();
-if (ready) {
- int totalValueCount = this.countUnofferedTokens() + this.countOfferedValues();
- int minimum = ((Pin)this.node).multiplicityElement.lower;
- ready = totalValueCount >= minimum;
-}
-
-return ready;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-receiveOffer.1" name="receiveOffer" visibility="public" method="Semantics-Actions-BasicActions-InputPinActivation-receiveOffer"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Actions-BasicActions-InputPinActivation-isReady">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-isReady.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-CallActionActivation" name="CallActionActivation" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-CallActionActivation">
- <body>A call action activation is an invocation action activation for a call action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-InvocationActionActivation"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-callExecutions" name="callExecutions" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" aggregation="composite" association="Semantics-Actions-BasicActions-A_callExecutions_callActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-callExecutions-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-CallActionActivation-callExecutions">
- <body>The set of execution object for currently ongoing calls made through this call action activation.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-callExecutions-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-callExecutions-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-doAction" name="doAction" specification="Semantics-Actions-BasicActions-CallActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the call execution object, set its input parameters from the argument pins and execute it.
-// Once execution completes, copy the values of the output parameters of the call execution to the result pins of the call action execution, then destroy the execution.
-
-Execution callExecution = this.getCallExecution();
-
-if (callExecution != null) {
- this.callExecutions.addValue(callExecution);
-
- CallAction callAction = (CallAction)(this.node);
- InputPinList argumentPins = callAction.argument;
- OutputPinList resultPins = callAction.result;
-
- ParameterList parameters = callExecution.getBehavior().ownedParameter;
-
- int pinNumber = 1;
- int i = 1;
- while (i <= parameters.size()) {
- Parameter parameter = parameters.getValue(i-1);
- if (parameter.direction == ParameterDirectionKind.in |
- parameter.direction == ParameterDirectionKind.inout) {
- ParameterValue parameterValue = new ParameterValue();
- parameterValue.parameter = parameter;
- parameterValue.values = this.takeTokens(argumentPins.getValue(pinNumber-1));
- callExecution.setParameterValue(parameterValue);
- pinNumber = pinNumber + 1;
- }
- i = i + 1;
- }
-
- callExecution.execute();
-
- ParameterValueList outputParameterValues = callExecution.getOutputParameterValues();
-
- pinNumber = 1;
- i = 1;
- while (i <= parameters.size()) {
- Parameter parameter = parameters.getValue(i - 1);
- if ((parameter.direction == ParameterDirectionKind.inout)
- | (parameter.direction == ParameterDirectionKind.out)
- | (parameter.direction == ParameterDirectionKind.return_)) {
- for (int j = 0; j < outputParameterValues.size(); j++) {
- ParameterValue outputParameterValue = outputParameterValues.getValue(j);
- if (outputParameterValue.parameter == parameter) {
- OutputPin resultPin = resultPins.getValue(pinNumber - 1);
- this.putTokens(resultPin, outputParameterValue.values);
- }
- }
- pinNumber = pinNumber + 1;
- }
- i = i + 1;
- }
-
- callExecution.destroy();
- this.removeCallExecution(callExecution);
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-terminate" name="terminate" specification="Semantics-Actions-BasicActions-CallActionActivation-terminate.1" isReentrant="false">
- <language>Java</language>
- <body>// Terminate all call executions (if any), then terminate the call action activation (self).
-
-for (int i = 0; i < this.callExecutions.size(); i++) {
- Execution execution = this.callExecutions.getValue(i);
- execution.terminate();
-}
-
-super.terminate();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-removeCallExecution" name="removeCallExecution" specification="Semantics-Actions-BasicActions-CallActionActivation-removeCallExecution.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-removeCallExecution-execution" name="execution" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
- <language>Java</language>
- <body>// Remove the given execution from the current list of call executions.
-
-boolean notFound = true;
-int i = 1;
-while (notFound & i <= this.callExecutions.size()) {
- if (this.callExecutions.getValue(i-1) == execution) {
- this.callExecutions.removeValue(i-1);
- notFound = false;
- }
-}
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-BasicActions-CallActionActivation-doAction"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-getCallExecution" name="getCallExecution" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-getCallExecution-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-CallActionActivation-getCallExecution">
- <body>Get the execution object for the called behavior.
-</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-getCallExecution-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Actions-BasicActions-CallActionActivation-terminate"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-removeCallExecution.1" name="removeCallExecution" visibility="public" method="Semantics-Actions-BasicActions-CallActionActivation-removeCallExecution">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-removeCallExecution.1-execution" name="execution" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation" name="CallBehaviorActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-CallBehaviorActionActivation">
- <body>A call behavior action activation is a call action activation for a call behavior action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Loci.*;
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-CallActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation-getCallExecution" name="getCallExecution" specification="Semantics-Actions-BasicActions-CallBehaviorActionActivation-getCallExecution.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation-getCallExecution-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
- <language>Java</language>
- <body>// Create and execution for the given behavior at the current locus and return the resulting execution object.
-// If the given behavior is in the context of a classifier, then pass the current context object as the context for the call.
-// Otherwise, use a null context.
-// [Note that this requires the behavior context to be compatible with the type of the current contect object.]
-
-Behavior behavior = ((CallBehaviorAction)(this.node)).behavior;
-
-Object_ context;
-if (behavior.context == null) {
- context = null;
-} else {
- // Debug.println("[getCallExecution] behavior context = " + behavior.context.name);
- context = this.getExecutionContext();
-}
-
-// Debug.println("[getCallExecution] context = " + context);
-
-return this.getExecutionLocus().factory.createExecution(behavior, context);
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation-getCallExecution.1" name="getCallExecution" visibility="public" method="Semantics-Actions-BasicActions-CallBehaviorActionActivation-getCallExecution">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation-getCallExecution.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation" name="CallOperationActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-CallOperationActionActivation">
- <body>A call operation action activation is a call action activation for a call operation action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-CallActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation-getCallExecution" name="getCallExecution" specification="Semantics-Actions-BasicActions-CallOperationActionActivation-getCallExecution.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation-getCallExecution-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
- <language>Java</language>
- <body>// If the value on the target input pin is a reference, dispatch the operation to it and return the resulting execution object.
-
-CallOperationAction action = (CallOperationAction)(this.node);
-Value target = this.takeTokens(action.target).getValue(0);
-
-Execution execution;
-if (target instanceof Reference) {
- execution = ((Reference)target).dispatch(action.operation);
-}
-else {
- execution = null;
-}
-
-return execution;
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation-getCallExecution.1" name="getCallExecution" visibility="public" method="Semantics-Actions-BasicActions-CallOperationActionActivation-getCallExecution">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation-getCallExecution.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-ActionActivation" name="ActionActivation" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-ActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-ActionActivation">
- <body>An action activation is an activity node activation for a node that is an action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-ActionActivation-_ownedComment.1">
- <body>import java.util.*;
-
-import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-ActionActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-BasicActions-ActionActivation-pinActivations" name="pinActivations" visibility="public" type="Semantics-Actions-BasicActions-PinActivation" association="Semantics-Actions-BasicActions-A_pinActivations_actionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-ActionActivation-pinActivations-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-ActionActivation-pinActivations">
- <body>The activations of the pins owned by the action of this action activation.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-pinActivations-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-pinActivations-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-BasicActions-ActionActivation-firing" name="firing" visibility="public">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-ActionActivation-firing-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-ActionActivation-firing">
- <body>Whether this action activation is already firing. This attribute is only used if the action for this action activation has isLocallyReentrant = false (the default). If isLocallyReentrant=true, then firing always just remains false.</body>
- </ownedComment>
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-run" name="run" specification="Semantics-Actions-BasicActions-ActionActivation-run.1" isReentrant="false">
- <language>Java</language>
- <body>// Run this action activation and any outoging fork node attached to it.
-
-super.run();
-
-if (this.outgoingEdges.size() > 0) {
- this.outgoingEdges.getValue(0).target.run();
-}
-
-this.firing = false;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens" name="takeOfferedTokens" specification="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens-OwnedParameter-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens-OwnedParameter-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// If the action is not locally reentrant, then mark this activation as firing.
-// Take any incoming offers of control tokens, then concurrently fire all input pin activations.
-
-// Note: This is included here to happen in the same isolation scope as the isReady test.
-this.firing = !((Action)this.node).isLocallyReentrant;
-
-TokenList offeredTokens = new TokenList();
-
-ActivityEdgeInstanceList incomingEdges = this.incomingEdges;
-for (int i = 0; i < incomingEdges.size(); i++) {
- ActivityEdgeInstance incomingEdge = incomingEdges.getValue(i);
- TokenList tokens = incomingEdge.takeOfferedTokens();
- for (int j = 0; j < tokens.size(); j++) {
- Token token = tokens.getValue(j);
- token.withdraw();
- offeredTokens.addValue(token);
- }
-}
-
-Action action = (Action)(this.node);
-
-// *** Fire all input pins concurrently. ***
-InputPinList inputPins = action.input;
-for (Iterator i = inputPins.iterator(); i.hasNext();) {
- InputPin pin = (InputPin)(i.next());
- PinActivation pinActivation = this.getPinActivation(pin);
- TokenList tokens = pinActivation.takeOfferedTokens();
- pinActivation.fire(tokens);
- for (int j = 0; j < tokens.size(); j++) {
- Token token = tokens.getValue(j);
- offeredTokens.addValue(token);
- }
-}
-
-return offeredTokens;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire" name="fire" specification="Semantics-Actions-BasicActions-ActionActivation-fire.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Do the main action behavior then concurrently fire all output pin activations
-// and offer a single control token. Then activate the action again,
-// if it is still ready to fire and has at least one token actually being
-// offered to it.
-
-do {
-
- Debug.println("[fire] Action " + this.node.name + "...");
- Debug.println("[event] Fire activity="
- + this.getActivityExecution().getBehavior().name
- + " action=" + this.node.name);
-
- this.doAction();
- incomingTokens = this.completeAction();
-
-} while (incomingTokens.size() > 0);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-terminate" name="terminate" specification="Semantics-Actions-BasicActions-ActionActivation-terminate.1" isReentrant="false">
- <language>Java</language>
- <body>// Terminate this action activation and any outgoing fork node attached to it.
-
-super.terminate();
-
-if (this.outgoingEdges.size() > 0) {
- this.outgoingEdges.getValue(0).target.terminate();
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isReady" name="isReady" specification="Semantics-Actions-BasicActions-ActionActivation-isReady.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isReady-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// In addition to the default condition, check that, if the action has isLocallyReentrant=false, then the activation is not currently firing,
-// and that the sources of all incoming edges (control flows) have offers and all input pin activations are ready.
-// [This assumes that all edges directly incoming to the action are control flows.]
-
-boolean ready = super.isReady() & (((Action)this.node).isLocallyReentrant | !this.isFiring());
-
-int i = 1;
-while (ready & i <= this.incomingEdges.size()) {
- ready = this.incomingEdges.getValue(i-1).hasOffer();
- i = i + 1;
-}
-
-InputPinList inputPins = ((Action)(this.node)).input;
-int j = 1;
-while (ready & j <= inputPins.size()) {
- ready = this.getPinActivation(inputPins.getValue(j-1)).isReady();
- j = j + 1;
-}
-
-return ready;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isFiring" name="isFiring" specification="Semantics-Actions-BasicActions-ActionActivation-isFiring.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isFiring-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Indicate whether this action activation is currently firing or not.
-
-return firing;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-sendOffers" name="sendOffers" specification="Semantics-Actions-BasicActions-ActionActivation-sendOffers.1" isReentrant="false">
- <language>Java</language>
- <body>// Fire all output pins and send offers on all outgoing control flows.
-
-Action action = (Action)(this.node);
-
-// *** Send offers from all output pins concurrently. ***
-OutputPinList outputPins = action.output;
-for (Iterator i = outputPins.iterator(); i.hasNext();) {
- OutputPin outputPin = (OutputPin)i.next();
- PinActivation pinActivation = this.getPinActivation(outputPin);
- pinActivation.sendUnofferedTokens();
-}
-
-// Send offers on all outgoing control flows.
-if (this.outgoingEdges.size() > 0) {
- TokenList tokens = new TokenList();
- tokens.addValue(new ControlToken());
- this.addTokens(tokens);
- this.outgoingEdges.getValue(0).sendOffer(tokens);
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-createNodeActivations" name="createNodeActivations" specification="Semantics-Actions-BasicActions-ActionActivation-createNodeActivations.1" isReentrant="false">
- <language>Java</language>
- <body>// Create node activations for the input and output pins of the action for this activation.
-// [Note: Pins are owned by their actions, not by the enclosing activity (or group), so they must be activated through the action activation.]
-
-Action action = (Action)(this.node);
-
-ActivityNodeList inputPinNodes = new ActivityNodeList();
-InputPinList inputPins = action.input;
-for (int i = 0; i < inputPins.size(); i++) {
- InputPin inputPin = inputPins.getValue(i);
- inputPinNodes.addValue(inputPin);
-}
-
-this.group.createNodeActivations(inputPinNodes);
-
-for (int i = 0; i < inputPinNodes.size(); i++) {
- ActivityNode node = inputPinNodes.getValue(i);
- this.addPinActivation((PinActivation)(this.group.getNodeActivation(node)));
-}
-
-ActivityNodeList outputPinNodes = new ActivityNodeList();
-OutputPinList outputPins = action.output;
-for (int i = 0; i < outputPins.size(); i++) {
- OutputPin outputPin = outputPins.getValue(i);
- outputPinNodes.addValue(outputPin);
-}
-
-this.group.createNodeActivations(outputPinNodes);
-
-for (int i = 0; i < outputPinNodes.size(); i++) {
- ActivityNode node = outputPinNodes.getValue(i);
- this.addPinActivation((PinActivation)(this.group.getNodeActivation(node)));
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addOutgoingEdge" name="addOutgoingEdge" specification="Semantics-Actions-BasicActions-ActionActivation-addOutgoingEdge.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addOutgoingEdge-edge" name="edge" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
- <language>Java</language>
- <body>// If there are no outgoing activity edge instances, create a single activity edge instance with a fork node execution at the other end.
-// Add the give edge to the fork node execution that is the target of the activity edge instance out of this action execution.
-// [This assumes that all edges directly outgoing from the action are control flows, with an implicit fork for offers out of the action.]
-
-ActivityNodeActivation forkNodeActivation;
-
-if (this.outgoingEdges.size() == 0) {
- forkNodeActivation = new ForkNodeActivation();
- ActivityEdgeInstance newEdge = new ActivityEdgeInstance();
- super.addOutgoingEdge(newEdge);
- forkNodeActivation.addIncomingEdge(newEdge);
-}
-else {
- forkNodeActivation = this.outgoingEdges.getValue(0).target;
-}
-
-forkNodeActivation.addOutgoingEdge(edge);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addPinActivation" name="addPinActivation" specification="Semantics-Actions-BasicActions-ActionActivation-addPinActivation.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addPinActivation-pinActivation" name="pinActivation" visibility="public" type="Semantics-Actions-BasicActions-PinActivation"/>
- <language>Java</language>
- <body>// Add a pin activation to this action activation.
-
-this.pinActivations.addValue(pinActivation);
-pinActivation.actionActivation = this;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getPinActivation" name="getPinActivation" specification="Semantics-Actions-BasicActions-ActionActivation-getPinActivation.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getPinActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Actions-BasicActions-PinActivation" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getPinActivation-pin" name="pin" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Pin"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Precondition: The given pin is owned by the action of the action activation.
-// Return the pin activation corresponding to the given pin.
-
-PinActivation pinActivation = null;
-int i = 1;
-while (pinActivation == null & i <= this.pinActivations.size()) {
- PinActivation thisPinActivation = this.pinActivations.getValue(i-1);
- if (thisPinActivation.node == pin) {
- pinActivation = thisPinActivation;
- }
- i = i + 1;
-}
-
-return pinActivation;
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putToken" name="putToken" specification="Semantics-Actions-BasicActions-ActionActivation-putToken.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putToken-pin" name="pin" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putToken-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <language>Java</language>
- <body>// Precondition: The action execution has fired and the given pin is owned by the action of the action execution.
-// Place a token for the given value on the pin activation corresponding to the given output pin.
-
-Debug.println("[putToken] node = " + this.node.name);
-
-ObjectToken token = new ObjectToken();
-token.value = value;
-
-PinActivation pinActivation = this.getPinActivation(pin);
-pinActivation.addToken(token);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens" name="putTokens" specification="Semantics-Actions-BasicActions-ActionActivation-putTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens-pin" name="pin" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens-values-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens-values-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Precondition: The action execution has fired and the given pin is owned by the action of the action execution.
-// Place tokens for the given values on the pin activation corresponding to the given output pin.
-
-// Debug.println("[putTokens] node = " + this.node.name);
-
-for (int i = 0; i < values.size(); i++) {
- Value value = values.getValue(i);
- this.putToken(pin, value);
-}
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens" name="getTokens" specification="Semantics-Actions-BasicActions-ActionActivation-getTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens-pin" name="pin" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens-OwnedParameter-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens-OwnedParameter-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Precondition: The action execution has fired and the given pin is owned by the action of the action execution.
-// Get any tokens held by the pin activation corresponding to the given input pin and return them
-// (but leave the tokens on the pin).
-
-Debug.println("[getTokens] node = " + this.node.name + ", pin = " + pin.name);
-
-PinActivation pinActivation = this.getPinActivation(pin);
-TokenList tokens = pinActivation.getUnofferedTokens();
-
-ValueList values = new ValueList();
-for (int i = 0; i < tokens.size(); i++) {
- Token token = tokens.getValue(i);
- Value value = ((ObjectToken)token).value;
- if (value != null) {
- values.addValue(value);
- }
-}
-
-return values;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens" name="takeTokens" specification="Semantics-Actions-BasicActions-ActionActivation-takeTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens-pin" name="pin" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Precondition: The action execution has fired and the given pin is owned by the action of the action execution.
-// Take any tokens held by the pin activation corresponding to the given input pin and return them.
-
-Debug.println("[takeTokens] node = " + this.node.name + ", pin = " + pin.name);
-
-PinActivation pinActivation = this.getPinActivation(pin);
-TokenList tokens = pinActivation.takeUnofferedTokens();
-
-ValueList values = new ValueList();
-for (int i = 0; i < tokens.size(); i++) {
- Token token = tokens.getValue(i);
- Value value = ((ObjectToken)token).value;
- if (value != null) {
- values.addValue(value);
- }
-}
-
-return values;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isSourceFor" name="isSourceFor" specification="Semantics-Actions-BasicActions-ActionActivation-isSourceFor.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isSourceFor-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isSourceFor-edgeInstance" name="edgeInstance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
- <language>Java</language>
- <body>// If this action has an outgoing fork node, check that the fork node is the source of the given edge instance.
-
-boolean isSource = false;
-if (this.outgoingEdges.size() > 0) {
- isSource = this.outgoingEdges.getValue(0).target.isSourceFor(edgeInstance);
-}
-
-return isSource;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink" name="valueParticipatesInLink" specification="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
- <language>Java</language>
- <body>// Test if the given value participates in the given link.
-
-FeatureValueList linkFeatureValues = link.getFeatureValues();
-
-boolean participates = false;
-int i = 1;
-while (!participates & i <= linkFeatureValues.size()) {
- participates = linkFeatureValues.getValue(i-1).values.getValue(0).equals(value);
- i = i + 1;
-}
-
-return participates;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue" name="makeBooleanValue" specification="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-BooleanValue" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue-value" name="value" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Make a Boolean value using the built-in Boolean primitive type.
-// [This ensures that Boolean values created internally are the same as the default used for evaluating Boolean literals.]
-
-LiteralBoolean booleanLiteral = new LiteralBoolean();
-booleanLiteral.value = value;
-return (BooleanValue)(this.getExecutionLocus().executor.evaluate(booleanLiteral));
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-completeAction" name="completeAction" specification="Semantics-Actions-BasicActions-ActionActivation-completeAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Concurrently fire all output pin activations and offer a single
-// control token. Then check if the action should fire again
-// and, if so, return additional incoming tokens for this.
-
-this.sendOffers();
-
-Debug.println("[fire] Checking if " + this.node.name
- + " should fire again...");
-
-_beginIsolation();
-TokenList incomingTokens = new TokenList();
-this.firing = false;
-if (this.isReady()) {
- incomingTokens = this.takeOfferedTokens();
- this.firing = this.isFiring() & incomingTokens.size() > 0;
-}
-_endIsolation();
-
-return incomingTokens;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-run.1" name="run" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-run"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens.1" name="takeOfferedTokens" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens.1-OwnedParameter-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens.1-OwnedParameter-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire.1" name="fire" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-fire">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire.1-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire.1-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-terminate"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-completeAction.1" name="completeAction" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-completeAction">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-completeAction.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-completeAction.1-Parameter1-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-completeAction.1-Parameter1-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-isReady">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isReady.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isFiring.1" name="isFiring" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-isFiring">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isFiring.1-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-doAction" name="doAction" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-ActionActivation-doAction-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-ActionActivation-doAction">
- <body>Do the required action behavior.
-</body>
- </ownedComment>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-sendOffers.1" name="sendOffers" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-sendOffers"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-createNodeActivations.1" name="createNodeActivations" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-createNodeActivations"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addOutgoingEdge.1" name="addOutgoingEdge" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-addOutgoingEdge">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addOutgoingEdge.1-edge" name="edge" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addPinActivation.1" name="addPinActivation" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-addPinActivation">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addPinActivation.1-pinActivation" name="pinActivation" visibility="public" type="Semantics-Actions-BasicActions-PinActivation"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getPinActivation.1" name="getPinActivation" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-getPinActivation">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getPinActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Actions-BasicActions-PinActivation" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getPinActivation.1-pin" name="pin" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Pin"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putToken.1" name="putToken" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-putToken">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putToken.1-pin" name="pin" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putToken.1-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens.1" name="putTokens" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-putTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens.1-pin" name="pin" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens.1-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens.1-values-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens.1-values-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens.1" name="getTokens" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-getTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens.1-pin" name="pin" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens.1-OwnedParameter-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens.1-OwnedParameter-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens.1" name="takeTokens" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-takeTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens.1-pin" name="pin" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isSourceFor.1" name="isSourceFor" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-isSourceFor">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isSourceFor.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isSourceFor.1-edgeInstance" name="edgeInstance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink.1" name="valueParticipatesInLink" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink.1-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink.1-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue.1" name="makeBooleanValue" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-BooleanValue" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue.1-value" name="value" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Actions-BasicActions-A_pinActivations_actionActivation" name="A_pinActivations_actionActivation" visibility="private" memberEnd="Semantics-Actions-BasicActions-PinActivation-actionActivation Semantics-Actions-BasicActions-ActionActivation-pinActivations"/>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Actions-BasicActions-A_callExecutions_callActionActivation" name="A_callExecutions_callActionActivation" visibility="private" memberEnd="Semantics-Actions-BasicActions-A_callExecutions_callActionActivation-_ownedEnd.0 Semantics-Actions-BasicActions-CallActionActivation-callExecutions">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Actions-BasicActions-A_callExecutions_callActionActivation-_ownedEnd.0" visibility="private" type="Semantics-Actions-BasicActions-CallActionActivation" association="Semantics-Actions-BasicActions-A_callExecutions_callActionActivation">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-A_callExecutions_callActionActivation-_ownedEnd.0-_lowerValue"/>
- </ownedEnd>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Actions-IntermediateActions" name="IntermediateActions">
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Actions-IntermediateActions-_packageImport.0" importedPackage="Semantics-Actions-BasicActions"/>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-WriteLinkActionActivation" name="WriteLinkActionActivation" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-WriteLinkActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-WriteLinkActionActivation">
- <body>A write link action activation is a link action activation for a write link action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-WriteLinkActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-WriteLinkActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-LinkActionActivation"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation" name="WriteStructuralFeatureActionActivation" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation">
- <body>A write structural feature action activation is a structural feature action activation for a write structural feature action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position" name="position" specification="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position-list" name="list" visibility="public" type="Semantics-Classes-Kernel-Value">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position-list-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position-list-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position-startAt" name="startAt" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the position (counting from 1) of the first occurance of the given value in the given list at or after the starting index, or 0 if it is not found.
-
-boolean found = false;
-int i = startAt;
-while (!found & i <= list.size()) {
- found = list.getValue(i-1).equals(value);
- i = i + 1;
-}
-
-if (!found) {
- i = 1;
-}
-
-return i - 1;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1" name="position" visibility="public" method="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1-list" name="list" visibility="public" type="Semantics-Classes-Kernel-Value">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1-list-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1-list-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1-startAt" name="startAt" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation" name="ValueSpecificationActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation">
- <body>A value specification action activation is an action activation for a value specification action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Evaluate the value specification for the action and place the result on the result pin of the action.
-
-ValueSpecificationAction action = (ValueSpecificationAction)(this.node);
-
-Value value = this.getExecutionLocus().executor.evaluate(action.value);
-this.putToken(action.result, value);
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-TestIdentityActionActivation" name="TestIdentityActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-TestIdentityActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-TestIdentityActionActivation">
- <body>A test identity action activation is an action activation for a test identity action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-TestIdentityActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-TestIdentityActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-TestIdentityActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-TestIdentityActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the values from the first and second input pins and test if they are equal. (Note the equality of references is defined to be that they have identical referents.)
-// If they are equal, place true on the pin execution for the result output pin, otherwise place false.
-
-TestIdentityAction action = (TestIdentityAction)(this.node);
-
-Value firstValue = this.takeTokens(action.first).getValue(0);
-Value secondValue = this.takeTokens(action.second).getValue(0);
-
-Value testResult = this.makeBooleanValue(firstValue.equals(secondValue));
-this.putToken(action.result, testResult);
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-TestIdentityActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-TestIdentityActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation" name="StructuralFeatureActionActivation" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation">
- <body>A structural feature action activation is an action activation for a structural feature action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation" name="getAssociation" specification="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation-feature" name="feature" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation-Parameter1-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// If the structural feature for the action of this activation is an association end,
-// then get the associated association.
-
-Association association = null;
-if (feature instanceof Property) {
- association = ((Property)feature).association;
-}
-
-return association;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks" name="getMatchingLinks" specification="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks-association" name="association" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks-end" name="end" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks-oppositeValue" name="oppositeValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks-Parameter1" name="Parameter1" visibility="public" type="Semantics-Classes-Kernel-Link" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks-Parameter1-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks-Parameter1-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the links of the given binary association whose end opposite
-// to the given end has the given value
-
-Property oppositeEnd = this.getOppositeEnd(association, end);
-
-ExtensionalValueList extent = this.getExecutionLocus().getExtent(association);
-
-LinkList links = new LinkList();
-for (int i = 0; i<extent.size(); i++) {
- ExtensionalValue link = extent.getValue(i);
- if (link.getFeatureValue(oppositeEnd).values.getValue(0).equals(oppositeValue)) {
- if (!end.multiplicityElement.isOrdered | links.size() == 0) {
- links.addValue((Link)link);
- } else {
- int n = link.getFeatureValue(end).position;
- boolean continueSearching = true;
- int j = 0;
- while (continueSearching & j < links.size()) {
- j = j + 1;
- continueSearching = links.getValue(j-1).getFeatureValue(end).position < n;
- }
- if (continueSearching) {
- links.addValue((Link)link);
- } else {
- links.addValue(j–1, (Link)link);
- }
- }
- }
-}
-
-return links;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd" name="getOppositeEnd" specification="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd-association" name="association" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd-end" name="end" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the end of a binary association opposite to the given end.
-
-Property oppositeEnd = association.memberEnd.getValue(0);
-if (oppositeEnd == end) {
- oppositeEnd = association.memberEnd.getValue(1);
-}
-
-return oppositeEnd;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation.1" name="getAssociation" visibility="public" method="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation.1-feature" name="feature" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation.1-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation.1-Parameter1-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1" name="getMatchingLinks" visibility="public" method="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1-association" name="association" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1-end" name="end" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1-oppositeValue" name="oppositeValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Classes-Kernel-Link" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1-Parameter1-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1-Parameter1-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd.1" name="getOppositeEnd" visibility="public" method="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd.1-association" name="association" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd.1-end" name="end" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd.1-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation" name="RemoveStructuralFeatureValueActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation">
- <body>A remove structural feature action activation is a write structural feature action activation for a remove structural feature value action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.LociL1.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the values of the object and value input pins.
-// If the given feature is an association end, then destroy any matching links.
-// Otherwise, if the object input is a structural value, remove values from the given feature.
-// If isRemoveDuplicates is true, then destroy all current matching links or remove all values equal to the input value.
-// If isRemoveDuplicates is false and there is no removeAt input pin, remove any one feature value equal to the input value (if there are any that are equal).
-// If isRemoveDuplicates is false, and there is a removeAt input pin remove the feature value at that position.
-
-RemoveStructuralFeatureValueAction action = (RemoveStructuralFeatureValueAction)(this.node);
-StructuralFeature feature = action.structuralFeature;
-Association association = this.getAssociation(feature);
-
-Value value = this.takeTokens(action.object).getValue(0);
-
-Value inputValue = null;
-if (action.value != null) {
- // NOTE: Multiplicity of the value input pin is required to be 1..1.
- inputValue = this.takeTokens(action.value).getValue(0);
-}
-
-int removeAt = 0;
-if (action.removeAt != null) {
- removeAt = ((UnlimitedNaturalValue)this.takeTokens(action.removeAt).getValue(0)).value.naturalValue;
-}
-
-if (association != null) {
- LinkList links = this.getMatchingLinks(association, feature, value);
-
- if (action.isRemoveDuplicates) {
- for (int i = 0; i < links.size(); i++) {
- Link link = links.getValue(i);
- link.destroy();
- }
-
- } else if (action.removeAt == null) {
- // *** If there is more than one matching link, non-deterministically choose one. ***
- if (links.size() > 0) {
- int i = ((ChoiceStrategy)this.getExecutionLocus().factory.getStrategy("choice")).choose(links.size());
- links.getValue(i-1).destroy();
- }
-
- } else {
- boolean notFound = true;
- int i = 1;
- while (notFound & i < links.size()) {
- Link link = links.getValue(i-1);
- if (link.getFeatureValue(feature).position == removeAt) {
- notFound = false;
- link.destroy();
- }
- }
- }
-
-} else if (value instanceof StructuredValue) {
- // If the value is a data value, then it must be copied before
- // any change is made.
- if (!(value instanceof Reference)) {
- value = value.copy();
- }
-
- FeatureValue featureValue = ((StructuredValue)value).getFeatureValue(action.structuralFeature);
-
- if (action.isRemoveDuplicates) {
- int j = this.position(inputValue, featureValue.values, 1);
- while (j > 0) {
- featureValue.values.remove(j-1);
- j = this.position(inputValue, featureValue.values, j);
- }
-
- } else if (action.removeAt == null) {
- intList positions = new intList();
- int j = this.position(inputValue, featureValue.values, 1);
- while (j > 0) {
- positions.addValue(j);
- j = this.position(inputValue, featureValue.values, j);
- }
-
- if (positions.size()>0) {
- // *** Nondeterministically choose which value to remove. ***
- int k = ((ChoiceStrategy)this.getExecutionLocus().factory.getStrategy("choice")).choose(positions.size());
- featureValue.values.remove(positions.getValue(k-1) - 1);
- }
-
- } else {
- if (featureValue.values.size() >= removeAt) {
- featureValue.values.remove(removeAt-1);
- }
- }
-}
-
-if (action.result != null) {
- this.putToken(action.result, value);
-}
-
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-ReadLinkActionActivation" name="ReadLinkActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ReadLinkActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-ReadLinkActionActivation">
- <body>A read link action activation is a link action activation for a read link action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ReadLinkActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-ReadLinkActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-LinkActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-ReadLinkActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-ReadLinkActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the extent, at the current execution locus, of the association to which the action applies.
-// For all links that match the link end data, place the value of the remaining "open" end on the result pin.
-
-ReadLinkAction action = (ReadLinkAction)(this.node);
-LinkEndDataList endDataList = action.endData;
-LinkEndData openEnd = null;
-
-int i = 1;
-while((openEnd == null) & i <= endDataList.size()) {
- if (endDataList.getValue(i-1).value == null) {
- openEnd = endDataList.getValue(i-1);
- }
- i = i + 1;
-}
-
-ExtensionalValueList extent = this.getExecutionLocus().getExtent(this.getAssociation());
-
-FeatureValueList featureValues = new FeatureValueList();
-for (int j = 0; j < extent.size(); j++) {
- ExtensionalValue value = extent.getValue(j);
- Link link = (Link)value;
- if (this.linkMatchesEndData(link, endDataList)) {
- FeatureValue featureValue = link.getFeatureValue(openEnd.end);
- if (!openEnd.end.multiplicityElement.isOrdered | featureValues.size() == 0) {
- featureValues.addValue(featureValue);
- } else {
- int n = featureValue.position;
- boolean continueSearching = true;
- int k = 0;
- while (continueSearching & k < featureValues.size()) {
- k = k + 1;
- continueSearching = featureValues.getValue(k-1).position < n;
- }
- if (continueSearching) {
- featureValue.addValue(featureValue);
- } else {
- featureValue.addValue(k-1, featureValue);
- }
- }
- }
-}
-
-
-for (int j = 0; j < featureValues.size(); j++) {
- FeatureValue featureValue = featureValues.getValue(j);
- this.putToken(action.result, featureValue.values.getValue(0));
-}
-
-// Now that matching is done, ensure that all tokens on end data input pins
-// are consumed.
-for (int k=0; k<endDataList.size(); k++) {
- LinkEndData endData = endDataList.getValue(k);
- if (endData.value != null) {
- this.takeTokens(endData.value);
- }
-}
-
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-ReadLinkActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-ReadLinkActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-ReadSelfActionActivation" name="ReadSelfActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ReadSelfActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-ReadSelfActionActivation">
- <body>A read self action activation is an action activation for a read self action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ReadSelfActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-ReadSelfActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-ReadSelfActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-ReadSelfActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the context object of the activity execution containing this action activation and place a reference to it on the result output pin.
-
-// Debug.println("[ReadSelfActionActivation] Start...");
-
-Reference context = new Reference();
-context.referent = this.getExecutionContext();
-
-// Debug.println("[ReadSelfActionActivation] context object = " + context.referent);
-
-OutputPin resultPin = ((ReadSelfAction)(this.node)).result;
-this.putToken(resultPin, context);
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-ReadSelfActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-ReadSelfActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation" name="ReadStructuralFeatureActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation">
- <body>A read structural feature action activation is an action activation for a read structural feature action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the value of the object input pin.
-// If the given feature is an association end, then get all values of the that end.
-// for which the opposite end has the object input value and place them on the result pin.
-// Otherwise, if the object input value is a structural value, then get the values
-// of the appropriate feature of the input value and place them on the result output pin.
-
-ReadStructuralFeatureAction action = (ReadStructuralFeatureAction)(this.node);
-StructuralFeature feature = action.structuralFeature;
-Association association = this.getAssociation(feature);
-
-Value value = this.takeTokens(action.object).getValue(0);
-ValueList resultValues = new ValueList();
-
-if (association != null) {
- LinkList links = this.getMatchingLinks(association, feature, value);
- for (int i = 0; i < links.size(); i++) {
- Link link = links.getValue(i);
- resultValues.addValue(link.getFeatureValue(feature).values.getValue(0));
- }
-} else if (value instanceof StructuredValue) {
-// Debug.println("[ReadStructuralFeatureActionActivation] value = " + value +", structural feature = " + feature.name);
- resultValues = ((StructuredValue)value).getFeatureValue(feature).values;
-}
-
-this.putTokens(action.result, resultValues);
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation" name="LinkActionActivation" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-LinkActionActivation">
- <body>A link action activation is an action activation for a link action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData" name="linkMatchesEndData" specification="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData-endDataList" name="endDataList" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#LinkEndData"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData-endDataList-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData-endDataList-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Test whether the given link matches the given end data.
-
-boolean matches = true;
-int i = 1;
-while (matches & i <= endDataList.size()) {
- matches = this.endMatchesEndData(link, endDataList.getValue(i-1));
- i = i + 1;
-}
-
-return matches;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData" name="endMatchesEndData" specification="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData-endData" name="endData" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#LinkEndData"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Test whether the appropriate end of the given link matches the given end data.
-
-boolean matches = false;
-if (endData.value == null) {
- matches = true;
-} else {
- Property end = endData.end;
- FeatureValue linkFeatureValue = link.getFeatureValue(end);
- Value endValue = this.getTokens(endData.value).getValue(0);
- if (endData instanceof LinkEndDestructionData) {
- if (!((LinkEndDestructionData)endData).isDestroyDuplicates & !end.multiplicityElement.isUnique & end.multiplicityElement.isOrdered) {
- int destroyAt = ((UnlimitedNaturalValue)(this.getTokens(((LinkEndDestructionData)endData).destroyAt).getValue(0))).value.naturalValue;
- matches = linkFeatureValue.values.getValue(0).equals(endValue) && linkFeatureValue.position == destroyAt;
- } else {
- matches = linkFeatureValue.values.getValue(0).equals(endValue);
- }
- } else {
- matches = linkFeatureValue.values.getValue(0).equals(endValue);
- }
-}
-
-return matches;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-getAssociation" name="getAssociation" specification="Semantics-Actions-IntermediateActions-LinkActionActivation-getAssociation.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-getAssociation-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the association for the link action of this activation.
-
-return (Association)(((LinkAction)(this.node)).endData.getValue(0).end.association);
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData.1" name="linkMatchesEndData" visibility="public" method="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData.1-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData.1-endDataList" name="endDataList" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#LinkEndData"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData.1-endDataList-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData.1-endDataList-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData.1" name="endMatchesEndData" visibility="public" method="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData.1-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData.1-endData" name="endData" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#LinkEndData"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-getAssociation.1" name="getAssociation" visibility="public" method="Semantics-Actions-IntermediateActions-LinkActionActivation-getAssociation">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-getAssociation.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation" name="DestroyLinkActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation">
- <body>A destroy link action activation is a write link action activation for a destroy link action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.LociL1.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-WriteLinkActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the extent, at the current execution locus, of the association for which links are being destroyed.
-// Destroy all links that match the given link end destruction data.
-// For unique ends, or non-unique ends for which isDestroyDuplicates is true, match links with a matching value for that end.
-// For non-unique, ordered ends for which isDestroyDuplicates is false, match links with an end value at the given destroyAt position. [Must a value be given, too, in this case?]
-// For non-unique, non-ordered ends for which isDestroyDuplicates is false, pick one matching link (if any) non-deterministically. [The semantics of this case is not clear from the current spec.]
-
-Debug.println("[doAction] DestroyLinkAction...");
-
-DestroyLinkAction action = (DestroyLinkAction)(this.node);
-LinkEndDestructionDataList destructionDataList = action.endData;
-
-Debug.println("[doAction] end data size = " + destructionDataList.size());
-
-boolean destroyOnlyOne = false;
-int j = 1;
-while (!destroyOnlyOne & j <= destructionDataList.size()) {
- LinkEndDestructionData endData = destructionDataList.getValue(j-1);
- destroyOnlyOne = !endData.end.multiplicityElement.isUnique & !endData.end.multiplicityElement.isOrdered & !endData.isDestroyDuplicates;
- j = j + 1;
-}
-
-LinkEndDataList endDataList = new LinkEndDataList();
-for (int i = 0; i < destructionDataList.size(); i++) {
- LinkEndDestructionData endData = destructionDataList.getValue(i);
- Debug.println("[doAction] Matching end = " + endData.end.name);
- endDataList.addValue(endData);
-}
-
-ExtensionalValueList extent = this.getExecutionLocus().getExtent(this.getAssociation());
-ExtensionalValueList matchingLinks = new ExtensionalValueList();
-
-for (int i = 0; i < extent.size(); i++) {
- ExtensionalValue value = extent.getValue(i);
- Link link = (Link)value;
- if (this.linkMatchesEndData(link, endDataList)) {
- matchingLinks.addValue(link);
- }
-}
-
-// Now that matching is done, ensure that all tokens on end data input pins
-// are consumed.
-for (int i = 0; i < destructionDataList.size(); i++) {
- LinkEndDestructionData endData = destructionDataList.getValue(i);
- Property end = endData.end;
- if (!endData.isDestroyDuplicates
- & !end.multiplicityElement.isUnique & end.multiplicityElement.isOrdered) {
- this.takeTokens(endData.destroyAt);
- }
- Debug.println("[doAction] Consuming tokens for end " + end.name);
- this.takeTokens(endData.value);
-}
-
-if (destroyOnlyOne) {
- // *** If there is more than one matching link, non-deterministically choose one. ***
- if (matchingLinks.size() > 0) {
- int i = ((ChoiceStrategy)this.getExecutionLocus().factory.getStrategy("choice")).choose(matchingLinks.size());
- matchingLinks.getValue(i-1).destroy();
- }
-} else {
- for (int i = 0; i < matchingLinks.size(); i++) {
- ExtensionalValue matchingLink = matchingLinks.getValue(i);
- matchingLink.destroy();
- }
-}
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation" name="DestroyObjectActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation">
- <body>A destroy object action activation is an action activation for a destroy object action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the value on the target input pin.
-// If the value is not a reference, then the action has no effect. Otherwise, do the following.
-// If isDestroyLinks is true, destroy all links in which the referent participates.
-// If isDestroyOwnedObjects is true, destroy all objects owned by the referent via composition links.
-// Destroy the referent object.
-
-DestroyObjectAction action = (DestroyObjectAction)(this.node);
-Value value = this.takeTokens(action.target).getValue(0);
-
-this.destroyObject(value, action.isDestroyLinks, action.isDestroyOwnedObjects);
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject" name="destroyObject" specification="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject-isDestroyLinks" name="isDestroyLinks" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject-isDestroyOwnedObjects" name="isDestroyOwnedObjects" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// If the given value is a reference, then destroy the referenced object, per the given destroy action attribute values.
-
-// Debug.println("[destroyObject] object = " + value.objectId());
-
-if (value instanceof Reference) {
- Reference reference = (Reference)value;
-
- if (isDestroyLinks | isDestroyOwnedObjects) {
- Debug.println("[destroyObject] Destroying links...");
- ExtensionalValueList extensionalValues = this.getExecutionLocus().extensionalValues;
- for (int i = 0; i < extensionalValues.size(); i++) {
- ExtensionalValue extensionalValue = extensionalValues.getValue(i);
- if (extensionalValue instanceof Link) {
- Link link = (Link)extensionalValue;
- if (this.valueParticipatesInLink(reference, link)) {
- if (isDestroyLinks | this.objectIsComposite(reference, link)) {
- // Debug.println("[destroyObject] Destroying link " + link.objectId());
- link.destroy();
- }
- }
- }
- }
- }
-
- if (isDestroyOwnedObjects) {
- Debug.println("[destroyObject] Destroying owned objects...");
- FeatureValueList objectFeatureValues = reference.getFeatureValues();
- for (int i = 0; i < objectFeatureValues.size(); i++) {
- FeatureValue featureValue = objectFeatureValues.getValue(i);
- if (((Property)featureValue.feature).aggregation == AggregationKind.composite) {
- ValueList values = featureValue.values;
- for (int j = 0; j < values.size(); j++) {
- Value ownedValue = values.getValue(j);
- this.destroyObject(ownedValue, isDestroyLinks, isDestroyOwnedObjects);
- }
- }
- }
- }
-
- reference.destroy();
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite" name="objectIsComposite" specification="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite-reference" name="reference" visibility="public" type="Semantics-Classes-Kernel-Reference"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
- <language>Java</language>
- <body>// Test whether the given reference participates in the given link as a composite.
-
-FeatureValueList linkFeatureValues = link.getFeatureValues();
-
-boolean isComposite = false;
-int i = 1;
-while (!isComposite & i <= linkFeatureValues.size()) {
- FeatureValue featureValue = linkFeatureValues.getValue(i-1);
- if (!featureValue.values.getValue(0).equals(reference) &
- ((Property)featureValue.feature).aggregation == AggregationKind.composite) {
- isComposite = true;
- }
- i = i + 1;
-}
-
-return isComposite;
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-doAction"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject.1" name="destroyObject" visibility="public" method="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject.1-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject.1-isDestroyLinks" name="isDestroyLinks" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject.1-isDestroyOwnedObjects" name="isDestroyOwnedObjects" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite.1" name="objectIsComposite" visibility="public" method="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite.1-reference" name="reference" visibility="public" type="Semantics-Classes-Kernel-Reference"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite.1-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-CreateLinkActionActivation" name="CreateLinkActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-CreateLinkActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-CreateLinkActionActivation">
- <body>A create link action activation is a write link action activation for a create link action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-CreateLinkActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-CreateLinkActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-WriteLinkActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-CreateLinkActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-CreateLinkActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// If the association has any unique ends, then destroy an existing link
-// that matches all ends of the link being created.
-// Get the extent at the current execution locus of the association for which a link is being created.
-// Destroy all links that have a value for any end for which isReplaceAll is true.
-// Create a new link for the association, at the current locus, with the given end data values,
-// inserted at the given insertAt position (for ordered ends).
-
-CreateLinkAction action = (CreateLinkAction)(this.node);
-LinkEndCreationDataList endDataList = action.endData;
-
-Association linkAssociation = this.getAssociation();
-ExtensionalValueList extent = this.getExecutionLocus().getExtent(linkAssociation);
-
-boolean unique = false;
-for (int i = 0; i < endDataList.size(); i++) {
- if (endDataList.getValue(i).end.multiplicityElement.isUnique) {
- unique = true;
- }
-}
-
-for (int i = 0; i < extent.size(); i++) {
- ExtensionalValue value = extent.getValue(i);
- Link link = (Link) value;
-
- boolean match = true;
- boolean destroy = false;
- int j = 1;
- while (j <= endDataList.size()) {
- LinkEndCreationData endData = endDataList.getValue(j - 1);
- if (this.endMatchesEndData(link, endData)) {
- if (endData.isReplaceAll) {
- destroy = true;
- }
- } else {
- match = false;
- }
- j = j + 1;
- }
- if (destroy | unique & match ) {
- link.destroy();
- }
-}
-
-for (int i = 0; i < extent.size(); i++) {
- ExtensionalValue value = extent.getValue(i);
- Link link = (Link)value;
-
- boolean noMatch = true;
- int j = 1;
- while (noMatch & j <= endDataList.size()) {
- LinkEndCreationData endData = endDataList.getValue(j-1);
- if (endData.isReplaceAll & this.endMatchesEndData(link, endData)) {
- oldLink = link;
- link.destroy();
- noMatch = false;
- }
- j = j + 1;
- }
-}
-
-Link newLink = new Link();
-newLink.type = linkAssociation;
-
-for (int i = 0; i < endDataList.size(); i++) {
- LinkEndCreationData endData = endDataList.getValue(i);
-
- int insertAt = 0;
- if (endData.insertAt != null) {
- insertAt = ((UnlimitedNaturalValue) (this
- .takeTokens(endData.insertAt).getValue(0))).value.naturalValue;
- }
-
- newLink.setFeatureValue(endData.end,
- this.takeTokens(endData.value), insertAt);
-}
-
-newLink.addTo(this.getExecutionLocus());
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-CreateLinkActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-CreateLinkActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-CreateObjectActionActivation" name="CreateObjectActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-CreateObjectActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-CreateObjectActionActivation">
- <body>A create object action activation is an action activation for a create object action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-CreateObjectActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-CreateObjectActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-CreateObjectActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-CreateObjectActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Create an object with the given classifier (which must be a class) as its type, at the same locus as the action activation.
-// Place a reference to the object on the result pin of the action.
-
-CreateObjectAction action = (CreateObjectAction)(this.node);
-
-Reference reference = new Reference();
-reference.referent = this.getExecutionLocus().instantiate((Class)(action.classifier));
-
-this.putToken(action.result, reference);
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-CreateObjectActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-CreateObjectActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation" name="ClearAssociationActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation">
- <body>A clear association action activation is an action activation for a clear association action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the extent, at the current execution locus, of the given association.
-// Read the object input pin. Destroy all links in which the object participates.
-
-ClearAssociationAction action = (ClearAssociationAction)(this.node);
-
-ExtensionalValueList extent = this.getExecutionLocus().getExtent(action.association);
-Value objectValue = this.takeTokens(action.object).getValue(0);
-
-for (int i = 0; i < extent.size(); i++) {
- Link link = (Link)(extent.getValue(i));
- if (this.valueParticipatesInLink(objectValue, link)) {
- link.destroy();
- }
-}
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation" name="ClearStructuralFeatureActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation">
- <body>A clear structural feature action activation is a structural feature action activation for a clear structural feature action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the value of the object input pin.
-// If the given feature is an association end, then
-// destroy all links that have the object input on the opposite end.
-// Otherwise, if the object input is a structured value, then
-// set the appropriate feature of the input value to be empty.
-
-ClearStructuralFeatureAction action = (ClearStructuralFeatureAction)(this.node);
-StructuralFeature feature = action.structuralFeature;
-Association association = this.getAssociation(feature);
-
-Value value = this.takeTokens(action.object).getValue(0);
-
-if (association != null) {
- LinkList links = this.getMatchingLinks(association, feature, value);
- for (int i = 0; i < links.size(); i++) {
- Link link = links.getValue(i);
- link.destroy();
- }
-} else if (value instanceof StructuredValue) {
- // If the value is a data value, then it must be copied before
- // any change is made.
- if (!(value instanceof Reference)) {
- value = value.copy();
- }
-
- ((StructuredValue)value).setFeatureValue(action.structuralFeature, new ValueList(), 0);
-}
-
-if (action.result != null) {
- this.putToken(action.result, value);
-}
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation" name="AddStructuralFeatureValueActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation-_ownedComment.0">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.LociL1.*;
-
-</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation-_ownedComment.1" annotatedElement="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation">
- <body>An add structural feature action value activation is a write structural feature action activation for an add structural feature value action.</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the values of the object and value input pins.
-// If the given feature is an association end, then create a link between the object and value inputs.
-// Otherwise, if the object input is a structural value, then add a value to the values for the feature.
-// If isReplaceAll is true, first remove all current matching links or feature values.
-// If isReplaceAll is false and there is an insertAt pin, insert the value at the appropriate position.
-
-AddStructuralFeatureValueAction action = (AddStructuralFeatureValueAction)(this.node);
-StructuralFeature feature = action.structuralFeature;
-Association association = this.getAssociation(feature);
-
-Value value = this.takeTokens(action.object).getValue(0);
-ValueList inputValues = this.takeTokens(action.value);
-
-// NOTE: Multiplicity of the value input pin is required to be 1..1.
-Value inputValue = inputValues.getValue(0);
-
-int insertAt = 0;
-if (action.insertAt != null) {
- insertAt = ((UnlimitedNaturalValue)this.takeTokens(action.insertAt).getValue(0)).value.naturalValue;
-}
-
-if (association != null) {
- LinkList links = this.getMatchingLinks(association, feature, value);
-
- Property oppositeEnd = this.getOppositeEnd(association, feature);
- int position = 0;
- if (oppositeEnd.multiplicityElement.isOrdered) {
- position = -1;
- }
-
- if (action.isReplaceAll) {
- for (int i = 0; i < links.size(); i++) {
- Link link = links.getValue(i);
- link.destroy();
- }
- } else if (feature.multiplicityElement.isUnique) {
- int i = 1;
- boolean destroyed = false;
- while (!destroyed & i <= links.size()) {
- Link link = links.getValue(i - 1);
- FeatureValue featureValue = link.getFeatureValue(feature);
- if (featureValue.values.getValue(0).equals(inputValue)) {
- position = link.getFeatureValue(oppositeEnd).position;
- link.destroy();
- destroyed = true;
- }
- i = i + 1;
- }
- }
-
- Link newLink = new Link();
- newLink.type = association;
-
- newLink.setFeatureValue(feature, inputValues, insertAt);
-
- ValueList oppositeValues = new ValueList();
- oppositeValues.addValue(value);
- newLink.setFeatureValue(oppositeEnd, oppositeValues, position);
-
- newlink.addTo(this.getExecutionLocus());
-
-} else if (value instanceof StructuredValue) {
- // If the value is a data value, then it must be copied before
- // any change is made.
- if (!(value instanceof Reference)) {
- value = value.copy();
- }
-
- StructuredValue structuredValue = (StructuredValue)value;
-
- if (action.isReplaceAll) {
- structuredValue.setFeatureValue(feature, inputValues, 0);
- } else {
- FeatureValue featureValue = structuredValue.getFeatureValue(feature);
-
- if (featureValue.values.size() > 0 & insertAt == 0 ) {
- // *** If there is no insertAt pin, then the structural feature must be unordered, and the insertion position is immaterial. ***
- insertAt = ((ChoiceStrategy)this.getExecutionLocus().factory.getStrategy("choice")).choose(featureValue.values.size());
- }
-
- if (feature.multiplicityElement.isUnique) {
- // Remove any existing value that duplicates the input value
- int j = position(inputValue, featureValue.values, 1);
- if (j > 0) {
- featureValue.values.remove(j-1);
- }
- }
-
- if (insertAt <= 0) { // Note: insertAt = -1 indicates an unlimited value of "*"
- featureValue.values.addValue(inputValue);
- } else {
- featureValue.values.addValue(insertAt - 1, inputValue);
- }
- }
-}
-
-if (action.result != null) {
- this.putToken(action.result, value);
-}
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation-doAction"/>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Actions-CompleteActions" name="CompleteActions">
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Actions-CompleteActions-_packageImport.0" importedPackage="Semantics-Actions-BasicActions"/>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation" name="StartClassifierBehaviorActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation">
- <body>A start classifier behavior action activation is an action activation for a start classifier behavior action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-import fUML.Syntax.Actions.CompleteActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Actions.IntermediateActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation-doAction" name="doAction" specification="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the value on the object input pin. If it is not a reference, then do nothing.
-// Start the classifier behavior of the referent object for the classifier given as the type of the object input pin.
-// If the object input pin has no type, then start the classifier behaviors of all types of the referent object. [The required behavior in this case is not clear from the spec.]
-
-StartClassifierBehaviorAction action = (StartClassifierBehaviorAction)(this.node);
-
-Value object = this.takeTokens(action.object).getValue(0);
-
-if (object instanceof Reference) {
- ((Reference)object).startBehavior((Class)(action.object.typedElement.type), new ParameterValueList());
-}
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation" name="StartObjectBehaviorActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation">
- <body>A start behavior action activation is an action activation for a start behavior action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-import fUML.Syntax.Actions.CompleteActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Actions.IntermediateActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-InvocationActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation-doAction" name="doAction" specification="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the value on the object input pin. If it is not a reference, then do nothing.
-// Start the behavior of the referent object for the classifier given as the type of the object input pin, with parameter values taken from the argument input pins.
-// If the object input pin has no type, then start the classifier behaviors of all types of the referent object.
-
-StartObjectBehaviorAction action = (StartObjectBehaviorAction)(this.node);
-
-Value object = this.takeTokens(action.object).getValue(0);
-
-if (object instanceof Reference) {
- Class type = (Class)(action.object.typedElement.type);
- InputPinList argumentPins = action.argument;
-
- ParameterValueList inputs = new ParameterValueList();
-
- if (type != null) {
- Behavior behavior;
-
- if (type instanceof Behavior) {
- behavior = (Behavior)type;
- } else {
- behavior = type.classifierBehavior;
- }
-
- if (behavior != null) {
- ParameterList parameters = behavior.ownedParameter;
-
- int pinNumber = 1;
- int i = 1;
- while (i <= parameters.size()) {
- Parameter parameter = parameters.getValue(i-1);
- int j = pinNumber;
- if (parameter.direction == ParameterDirectionKind.in |
- parameter.direction == ParameterDirectionKind.inout) {
- ParameterValue parameterValue = new ParameterValue();
- parameterValue.parameter = parameter;
- parameterValue.values = this.takeTokens(argumentPins.getValue(j-1));
- inputs.addValue(parameterValue);
- j = j + 1;
- }
- pinNumber = j;
- i = i + 1;
- }
- }
- }
-
- ((Reference)object).startBehavior(type, inputs);
-}
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation" name="ReduceActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-ReduceActionActivation">
- <body>A reduce action activation is an action activation for a reduce action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-import fUML.Syntax.Actions.CompleteActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Actions.IntermediateActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-currentExecution" name="currentExecution" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" association="Semantics-Actions-CompleteActions-A_currentExecution_reduceActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-currentExecution-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-ReduceActionActivation-currentExecution">
- <body>The current execution of the reducer behavior.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-currentExecution-_lowerValue"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-doAction" name="doAction" specification="Semantics-Actions-CompleteActions-ReduceActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the values of the collection input pin.
-// If the input pin has no values, then do nothing. Otherwise, do the following.
-// Repeatedly invoke the reducer behavior on successive pairs to reduce the collection to a single value, and place that value on the result pin.
-// To invoke the reducer behavior, compile it to create an execution, make the execution the current execution, place the appropriate values on its input parameters, and execute it.
-
-ReduceAction action = (ReduceAction)(this.node);
-
-ValueList values = this.takeTokens(action.collection);
-
-if (values.size() > 0) {
- ParameterList parameters = action.reducer.ownedParameter;
- Parameter input1 = null;
- Parameter input2 = null;
- Parameter output = null;
-
- int i = 1;
- while (i <= parameters.size()) {
- Parameter parameter = parameters.getValue(i-1);
- if (parameter.direction == ParameterDirectionKind.in) {
- if (input1 == null) {
- input1 = parameter;
- }
- else {
- input2 = parameter;
- }
- }
- else if (parameter.direction == ParameterDirectionKind.outout |
- parameter.direction == ParameterDirectionKind.return_) {
- output = parameter;
- }
- i = i + 1;
- }
-
- ParameterValue parameterValue1 = new ParameterValue();
- parameterValue1.parameter = input1;
- parameterValue1.values = new ValueList();
- parameterValue1.values.addValue(values.getValue(0));
-
- int j = 2;
- while (j <= values.size()) {
- this.currentExecution = this.getExecutionLocus().factory.createExecution(action.reducer, this.getExecutionContext());
-
- this.currentExecution.setParameterValue(parameterValue1);
-
- ParameterValue parameterValue2 = new ParameterValue();
- parameterValue2.parameter = input2;
- parameterValue2.values = new ValueList();
- parameterValue2.values.addValue(values.getValue(j-1));
- this.currentExecution.setParameterValue(parameterValue2);
-
- this.currentExecution.execute();
-
- parameterValue1.values = this.currentExecution.getParameterValue(output).values;
-
- j = j + 1;
-
- if (parameterValue1.values.isEmpty() & j <= values.size()) {
- parameterValue1.values.add(values.getValue(j - 1));
- j = j + 1;
- }
-
- }
-
- this.putTokens(action.result, parameterValue1.values);
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-terminate" name="terminate" specification="Semantics-Actions-CompleteActions-ReduceActionActivation-terminate.1" isReentrant="false">
- <language>Java</language>
- <body>// If there is a current execution, terminate it. Then terminate self.
-
-if (this.currentExecution != null) {
- this.currentExecution.terminate();
-}
-
-super.terminate();
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-CompleteActions-ReduceActionActivation-doAction"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Actions-CompleteActions-ReduceActionActivation-terminate"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation" name="ReadIsClassifiedObjectActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation">
- <body>A read-is-classified object activation is an action activation for a read-is-classified object action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-import fUML.Syntax.Actions.CompleteActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Actions.IntermediateActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-doAction" name="doAction" specification="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the value on the object input pin and determine if it is classified by the classifier specified in the action.
-// If the isDirect attribute of the action is false, then place true on the result output pin if the input object has the specified classifier or of one its (direct or indirect) descendants as a type.
-// If the isDirect attribute of the action is true, then place true on the result output pin if the input object has the specified classifier as a type.
-// Otherwise place false on the result output pin.
-
-ReadIsClassifiedObjectAction action = (ReadIsClassifiedObjectAction)(this.node);
-
-Value input = this.takeTokens(action.object).getValue(0);
-ClassifierList types = input.getTypes();
-
-boolean result = false;
-int i = 1;
-while (!result & i <= types.size()) {
- Classifier type = types.getValue(i-1);
-
- if (type == action.classifier) {
- result = true;
- }
- else if (!action.isDirect) {
- result = this.checkAllParents(type, action.classifier);
- }
-
- i = i + 1;
-}
-
-ValueList values = new ValueList();
-values.addValue(this.makeBooleanValue(result));
-
-this.putTokens(action.result, values);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents" name="checkAllParents" specification="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents-type" name="type" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents-classifier" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Check if the given classifier matches any of the direct or indirect ancestors of a given type.
-
-ClassifierList directParents = type.general;
-boolean matched = false;
-int i = 1;
-while (!matched & i <= directParents.size()) {
- Classifier directParent = directParents.getValue(i-1);
- if (directParent == classifier) {
- matched = true;
- } else {
- matched = this.checkAllParents(directParent, classifier);
- }
- i = i + 1;
-}
-
-return matched;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-doAction"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents.1" name="checkAllParents" visibility="public" method="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents.1-type" name="type" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents.1-classifier" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation" name="ReclassifyObjectActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation">
- <body>A reclassify object activation is an action activation for a reclassify object action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-import fUML.Syntax.Actions.CompleteActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Actions.IntermediateActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation-doAction" name="doAction" specification="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the value of the object input pin. If it is not a reference, then do nothing. Otherwise, do the following.
-// Remove all types from the referent object that are in the set of old classifiers but not the set of new classifiers (or just all types that are not new classifiers, if isReplaceAll is true).
-// Remove the feature values from the referent object for all classifiers that are removed.
-// Add all new classifiers as types of the referent object that are not already types.
-// Add (empty) feature values to the referent object for the structural features of all added classifiers.
-
-ReclassifyObjectAction action = (ReclassifyObjectAction)(this.node);
-ClassifierList newClassifiers = action.newClassifier;
-ClassifierList oldClassifiers = action.oldClassifier;
-
-Value input = this.takeTokens(action.object).getValue(0);
-
-if (input instanceof Reference) {
- Object_ object = ((Reference)input).referent;
-
- int i = 1;
- while (i <= object.types.size()) {
- Class type = object.types.getValue(i-1);
-
- boolean toBeRemoved = true;
- int j = 1;
- while (toBeRemoved & j <= newClassifiers.size()) {
- toBeRemoved = (type != newClassifiers.getValue(j-1));
- j = j + 1;
- }
-
- if (toBeRemoved & !action.isReplaceAll) {
- boolean notInOld = true;
- int k = 1;
- while (notInOld & k <= oldClassifiers.size()) {
- notInOld = (type != oldClassifiers.getValue(k-1));
- k = k + 1;
- }
- toBeRemoved = !notInOld;
- }
-
- if (toBeRemoved) {
- object.types.removeValue(i-1);
- object.removeFeatureValues(type);
- } else {
- i = i + 1;
- }
- }
-
- for (int n = 0; n < newClassifiers.size(); n++) {
- Classifier classifier = newClassifiers.getValue(n);
-
- boolean toBeAdded = true;
- int j = 1;
- while (toBeAdded & j <= object.types.size()) {
- toBeAdded = (classifier != object.types.getValue(j-1));
- j = j + 1;
- }
-
- if (toBeAdded) {
- object.types.addValue((Class)classifier);
- NamedElementList members = classifier.member;
- for (int k = 0; k < members.size(); k++) {
- NamedElement member = members.getValue(k);
- if (member instanceof StructuralFeature) {
- object.setFeatureValue((StructuralFeature)member, new ValueList(), 0);
- }
- }
- }
- }
-}
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-ReadExtentActionActivation" name="ReadExtentActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReadExtentActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-ReadExtentActionActivation">
- <body>A read extent action activation is an action activation for a read extent action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReadExtentActionActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-import fUML.Syntax.Actions.CompleteActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Actions.IntermediateActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-ReadExtentActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-ReadExtentActionActivation-doAction" name="doAction" specification="Semantics-Actions-CompleteActions-ReadExtentActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the extent, at the current execution locus, of the classifier (which must be a class) identified in the action.
-// Place references to the resulting set of objects on the result pin.
-
-ReadExtentAction action = (ReadExtentAction)(this.node);
-ExtensionalValueList objects = this.getExecutionLocus().getExtent(action.classifier);
-
-// Debug.println("[doAction] " + action.classifier.name + " has " + objects.size() + " instance(s).");
-
-ValueList references = new ValueList();
-for (int i = 0; i < objects.size(); i++) {
- Value object = objects.getValue(i);
- Reference reference = new Reference();
- reference.referent = (Object_)object;
- references.addValue(reference);
-}
-
-this.putTokens(action.result, references);
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-ReadExtentActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-CompleteActions-ReadExtentActionActivation-doAction"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation" name="AcceptEventActionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-AcceptEventActionActivation">
- <body>An accept event action activation is an action activation for an accept event action.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-_ownedComment.1">
- <body>import java.util.Iterator;
-
-import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-import fUML.Syntax.Actions.CompleteActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Actions.IntermediateActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-eventAccepter" name="eventAccepter" visibility="public" type="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter" association="Semantics-Actions-CompleteActions-A_actionActivation_eventAccepter">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-eventAccepter-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-AcceptEventActionActivation-eventAccepter">
- <body>If the accept event action activation is waiting for an event, then this is the accepter it has registered for the event.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-eventAccepter-_lowerValue"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-waiting" name="waiting" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-run" name="run" specification="Semantics-Actions-CompleteActions-AcceptEventActionActivation-run.1" isReentrant="false">
- <language>Java</language>
- <body>// Create an event accepter and initialize waiting to false.
-
-super.run();
-
-this.eventAccepter = new AcceptEventActionEventAccepter();
-this.eventAccepter.actionActivation = this;
-
-this.waiting = false;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire" name="fire" specification="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Register the event accepter for this accept event action activation with the context object of the enclosing activity execution
-// and wait for an event to be accepted.
-
-Debug.println("[fire] Action " + this.node.name + "...");
-
-this.getExecutionContext().register(this.eventAccepter);
-this.waiting = true;
-this.firing = false;
-
-this.suspend();</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-isReady" name="isReady" specification="Semantics-Actions-CompleteActions-AcceptEventActionActivation-isReady.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-isReady-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// An accept event action activiation is ready to fire only if it is not already waiting for an event.
-
-boolean ready;
-if (this.waiting) {
- ready = false;
-} else {
- ready = super.isReady();
-}
-
-return ready;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-doAction" name="doAction" specification="Semantics-Actions-CompleteActions-AcceptEventActionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Do nothing. [This will never be called.]
-
-return;</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-accept" name="accept" specification="Semantics-Actions-CompleteActions-AcceptEventActionActivation-accept.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-accept-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
- <language>Java</language>
- <body>// Accept a signal occurance for the given signal instance.
-// If the action does not unmarshall, then place the signal instance on the result pin, if any.
-// If the action does unmarshall, then get the feature values of the signal instance, and place the values for each feature on the corresponding output pin.
-// Concurrently fire all output pins while offering a single control token.
-// If there are no incoming edges, then re-register this accept event action execution with the context object.
-
-AcceptEventAction action = (AcceptEventAction)(this.node);
-OutputPinList resultPins = action.result;
-
-Debug.println("[accept] action = " + action.name + ", signalinstance = " + signalInstance);
-
-if (this.running) {
- if (!action.isUnmarshall) {
- ValueList result = new ValueList();
- result.addValue(signalInstance);
- if (resultPins.size() > 0) {
- this.putTokens(resultPins.getValue(0), result);
- }
- } else {
- FeatureValueList featureValues = signalInstance.getFeatureValues();
- for (int i = 0; i < featureValues.size(); i++) {
- FeatureValue featureValue = featureValues.getValue(i);
- OutputPin resultPin = resultPins.getValue(i);
- this.putTokens(resultPin, featureValue.values);
- }
- }
-
- this.sendOffers();
-
- this.waiting = false;
-
- Debug.println("[fire] Checking if " + this.node.name + " should fire again...");
- this.receiveOffer();
-
- this.resume();
-}
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match" name="match" specification="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
- <language>Java</language>
- <body>// Return true if the given signal instance matches a trigger of the accept action of this activation.
-
-AcceptEventAction action = (AcceptEventAction)(this.node);
-TriggerList triggers = action.trigger;
-Signal signal = signalInstance.type;
-
-boolean matches = false;
-int i = 1;
-while (!matches & i <= triggers.size()) {
- matches = ((SignalEvent)(triggers.getValue(i-1).event)).signal == signal;
- i = i + 1;
-}
-
-return matches;</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-terminate" name="terminate" specification="Semantics-Actions-CompleteActions-AcceptEventActionActivation-terminate.1" isReentrant="false">
- <language>Java</language>
- <body>// Terminate this action and unregister its event accepter.
-
-super.terminate();
-
-if (this.waiting) {
- this.getExecutionContext().unregister(this.eventAccepter);
- this.waiting = false;
-}</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-run.1" name="run" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionActivation-run"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire.1" name="fire" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire.1-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire.1-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionActivation-isReady">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-isReady.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionActivation-doAction"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-accept.1" name="accept" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionActivation-accept">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-accept.1-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match.1" name="match" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match.1-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionActivation-terminate"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter" name="AcceptEventActionEventAccepter">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter">
- <body>An accept event action event accepter handles signal reception events on the behalf of a specific accept event action activation.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-import fUML.Syntax.Actions.CompleteActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Actions.IntermediateActions.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-_generalization.0" general="Semantics-CommonBehaviors-Communications-EventAccepter"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-actionActivation" name="actionActivation" visibility="public" type="Semantics-Actions-CompleteActions-AcceptEventActionActivation" association="Semantics-Actions-CompleteActions-A_actionActivation_eventAccepter">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-actionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-actionActivation">
- <body>The accept event action activation on behalf of which this event accepter is waiting.</body>
- </ownedComment>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept" name="accept" specification="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
- <language>Java</language>
- <body>// Accept a signal occurance for the given signal instance.
-// Forward the signal occuranceto the action activation.
-
-this.actionActivation.accept(signalInstance);</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match" name="match" specification="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return true if the given signal instance matches a trigger of the accept action of the action activation.
-
-return this.actionActivation.match(signalInstance);
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept.1" name="accept" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept.1-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept.1">
- <body>Accept a signal occurance for the given signal instance.</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept.1-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match.1" name="match" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match.1-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match.1">
- <body>Determine if the given signal instance matches a trigger of the accept action of the action activation.</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match.1-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Actions-CompleteActions-A_actionActivation_eventAccepter" name="A_actionActivation_eventAccepter" visibility="private" memberEnd="Semantics-Actions-CompleteActions-AcceptEventActionActivation-eventAccepter Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-actionActivation"/>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Actions-CompleteActions-A_currentExecution_reduceActionActivation" name="A_currentExecution_reduceActionActivation" visibility="private" memberEnd="Semantics-Actions-CompleteActions-A_currentExecution_reduceActionActivation-_ownedEnd.0 Semantics-Actions-CompleteActions-ReduceActionActivation-currentExecution">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Actions-CompleteActions-A_currentExecution_reduceActionActivation-_ownedEnd.0" visibility="private" type="Semantics-Actions-CompleteActions-ReduceActionActivation" association="Semantics-Actions-CompleteActions-A_currentExecution_reduceActionActivation">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-CompleteActions-A_currentExecution_reduceActionActivation-_ownedEnd.0-_lowerValue"/>
- </ownedEnd>
- </packagedElement>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Activities" name="Activities">
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Activities-CompleteStructuredActivities" name="CompleteStructuredActivities">
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Activities-CompleteStructuredActivities-_packageImport.1" importedPackage="Semantics-Actions-BasicActions"/>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation" name="StructuredActivityNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation">
- <body>A structured activity node activation is an action activation for an action that is a structured activity node.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-_ownedComment.1">
- <body>import java.util.*;
-
-import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Activities.CompleteStructuredActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-activationGroup" name="activationGroup" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup" aggregation="composite" association="Semantics-Activities-CompleteStructuredActivities-A_activationGroup_containingNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-activationGroup-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-activationGroup">
- <body>The group of activations of the activity nodes contained in the structured activity node.</body>
- </ownedComment>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doAction" name="doAction" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// If the structured activity node has mustIsolate=true, then carry out its behavior with isolation.
-// Otherwise just activate it normally.
-
-if (((StructuredActivityNode)(this.node)).mustIsolate) {
- _beginIsolation();
- this.doStructuredActivity();
- _endIsolation();
-} else {
- this.doStructuredActivity();
-}
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doStructuredActivity" name="doStructuredActivity" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doStructuredActivity.1" isReentrant="false">
- <language>Java</language>
- <body>// Run all activations of contained nodes. When this is complete, return.
-// (This is the default behavior for a structured activity node used simply as a group. It is overridden for the execution of conditional and loop nodes.)
-
-Action action = (Action)(this.node);
-
-// *** Concurrently send offers from all input pins. ***
-InputPinList inputPins = action.input;
-for (Iterator i = inputPins.iterator(); i.hasNext();) {
- InputPin inputPin = (InputPin)i.next();
- PinActivation pinActivation = this.getPinActivation(inputPin);
- pinActivation.sendUnofferedTokens();
-}
-
-this.activationGroup.run(this.activationGroup.nodeActivations);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminate" name="terminate" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminate.1" isReentrant="false">
- <language>Java</language>
- <body>// Terminate the execution of all contained node activations (which
-// completes the performance of the structured activity node
-// activation), and then terminate this node itself.
-
-this.terminateAll();
-super.terminate();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation" name="getNodeActivation" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation-node" name="node" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- </ownedParameter>
- <language>Java</language>
- <body>// If this structured activity node activation is not for the given node, then check if there is an activation for the node in the activation group.
-
-ActivityNodeActivation thisActivation = super.getNodeActivation(node);
-
-ActivityNodeActivation activation = null;
-if (thisActivation != null) {
- activation = thisActivation;
-} else if (this.activationGroup != null) {
- activation = this.activationGroup.getNodeActivation(node);
-}
-
-return activation;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList" name="makeActivityNodeList" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList-nodes" name="nodes" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ExecutableNode"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList-nodes-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList-nodes-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return an activity node list containing the given list of executable nodes
-// and any pins that they own.
-
-ActivityNodeList activityNodes = new ActivityNodeList();
-
-for (int i = 0; i < nodes.size(); i++) {
- ActivityNode node = nodes.getValue(i);
- activityNodes.addValue(node);
-
- if (node instanceof Action) {
- Action action = (Action)node;
-
- InputPinList inputPins = action.input;
- for (int j = 0; j < inputPins.size(); j++) {
- InputPin inputPin = inputPins.getValue(j);
- activityNodes.addValue(inputPin);
- }
-
- OutputPinList outputPins = action.output;
- for (int j = 0; j < outputPins.size(); j++) {
- OutputPin outputPin = outputPins.getValue(j);
- activityNodes.addValue(outputPin);
- }
- }
-}
-
-return activityNodes;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues" name="getPinValues" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues-pin" name="pin" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the values of the tokens on the pin activation corresponding to the given pin in the internal activation group for this node activation.
-
-PinActivation pinActivation = (PinActivation)(this.activationGroup.getNodeActivation(pin));
-TokenList tokens = pinActivation.getTokens();
-
-ValueList values = new ValueList();
-for (int i = 0; i < tokens.size(); i++) {
- Token token = tokens.getValue(i);
- Value value = ((ObjectToken)token).value;
- if (value != null) {
- values.addValue(value);
- }
-}
-
-return values;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues" name="putPinValues" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues-pin" name="pin" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues-values-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues-values-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Place tokens for the given values on the pin activation corresponding to the given output pin on the internal activation group for this node activation.
-
-PinActivation pinActivation = (PinActivation)(this.activationGroup.getNodeActivation(pin));
-
-for (int i = 0; i < values.size(); i++) {
- Value value = values.getValue(i);
- ObjectToken token = new ObjectToken();
- token.value = value;
- pinActivation.addToken(token);
-}
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createNodeActivations" name="createNodeActivations" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createNodeActivations.1" isReentrant="false">
- <language>Java</language>
- <body>// Create an activation group and create node activations for all the nodes within the structured activity node.
-
-super.createNodeActivations();
-
-this.activationGroup = new ActivityNodeActivationGroup();
-this.activationGroup.containingNodeActivation = this;
-this.activationGroup.createNodeActivations(((StructuredActivityNode)(this.node)).node);
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createEdgeInstances" name="createEdgeInstances" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createEdgeInstances.1" isReentrant="false">
- <language>Java</language>
- <body>// Create instances for all edges owned by this node.
-
-this.activationGroup.createEdgeInstances(((StructuredActivityNode)(this.node)).edge);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSourceFor" name="isSourceFor" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSourceFor.1" isReentrant="false">
- <language>Java</language>
- <body>// Returns true if this node is either the source for the given
-// edgeInstance itself or if it contains the source in its
-// activation group.
-
-boolean isSource = super.isSourceFor(edgeInstance);
-if (!isSource) {
- isSource = this.activationGroup.hasSourceFor(edgeInstance);
-}
-return isSource;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminateAll" name="terminateAll" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminateAll.1" isReentrant="false">
- <language>Java</language>
- <body>// Terminate the execution of all contained node activations (which
-// completes the performance of the structured activity node
-// activation).
-
-this.activationGroup.terminateAll();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSuspended" name="isSuspended" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSuspended.1" isReentrant="false">
- <language>Java</language>
- <body>// Check if the activation group for this node is suspended.
-
-return this.activationGroup.isSuspended();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-completeAction" name="completeAction" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-completeAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Only actually complete this structured activity node if it is not
-// suspended.
-
-TokenList incomingTokens = new TokenList();
-if (!this.isSuspended()) {
- incomingTokens = super.completeAction();
-}
-return incomingTokens;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-resume" name="resume" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-resume.1" isReentrant="false">
- <language>Java</language>
- <body>// Only actually complete this structured activity node if it is not
-// suspended.
-
-TokenList incomingTokens = new TokenList();
-if (!this.isSuspended()) {
- incomingTokens = super.completeAction();
-}
-return incomingTokens;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doAction"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doStructuredActivity.1" name="doStructuredActivity" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doStructuredActivity"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminate"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation.1" name="getNodeActivation" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation.1-node" name="node" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1" name="makeActivityNodeList" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1-nodes" name="nodes" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ExecutableNode"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1-nodes-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1-nodes-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues.1" name="getPinValues" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues.1-pin" name="pin" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues.1" name="putPinValues" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues.1-pin" name="pin" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues.1-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues.1-values-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues.1-values-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createNodeActivations.1" name="createNodeActivations" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createNodeActivations"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createEdgeInstances.1" name="createEdgeInstances" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createEdgeInstances"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSourceFor.1" name="isSourceFor" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSourceFor">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSourceFor.1-edgeInstance" name="edgeInstance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSourceFor.1-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminateAll.1" name="terminateAll" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminateAll"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSuspended.1" name="isSuspended" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSuspended">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSuspended.1-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-completeAction.1" name="completeAction" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-completeAction">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-completeAction.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-completeAction.1-Parameter1-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-completeAction.1-Parameter1-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-resume.1" name="resume" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-resume"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation" name="LoopNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation">
- <body>A loop node activation is a structured activity node activation for a node that is a loop node.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Activities.CompleteStructuredActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-_generalization.0" general="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-bodyOutputLists" name="bodyOutputLists" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-Values" aggregation="composite" association="Semantics-Activities-CompleteStructuredActivities-A_bodyOutputLists_loopNodeActivation">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-bodyOutputLists-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-bodyOutputLists-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doStructuredActivity" name="doStructuredActivity" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doStructuredActivity.1" isReentrant="false">
- <language>Java</language>
- <body>// Set the initial values for the body outputs to the values of the loop variable input pins.
-// If isTestedFirst is true, then repeatedly run the test part and the body part of the loop, copying values from the body outputs to the loop variables.
-// If isTestedFirst is false, then repeatedly run the body part and the test part of the loop, copying values from the body outputs to the loop variables.
-// When the test fails, copy the values of the body outputs to the loop outputs.
-// [Note: The body outputs are used for the loop outputs, rather than the loop variables, since values on the loop variables may be consumed when running the test for the last time.]
-
-LoopNode loopNode = (LoopNode)(this.node);
-InputPinList loopVariableInputs = loopNode.loopVariableInput;
-OutputPinList loopVariables = loopNode.loopVariable;
-OutputPinList resultPins = loopNode.result;
-
-ValuesList bodyOutputLists = this.bodyOutputLists;
-for (int i = 0; i < loopVariableInputs.size(); i++) {
- InputPin loopVariableInput = loopVariableInputs.getValue(i);
- Values bodyOutputList = new Values();
- bodyOutputList.values = this.takeTokens(loopVariableInput);
- this.bodyOutputLists.addValue(bodyOutputList);
-}
-
-this.doLoop(true);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runTest" name="runTest" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runTest.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runTest-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Run the test part of the loop node for this node activation.
-// Return the value on the decider pin.
-
-Debug.println("[runTest] Running test...");
-
-LoopNode loopNode = (LoopNode)(this.node);
-
-this.activationGroup.runNodes(this.makeActivityNodeList(loopNode.test));
-
-ValueList values = this.getPinValues(loopNode.decider);
-
-// If there is no decider value, treat it as false.
-boolean decision = false;
-if (values.size() > 0) {
- decision = ((BooleanValue)(values.getValue(0))).value;
-}
-
-Debug.println("[runTest] " + (decision? "Test succeeded.": "Test failed."));
-
-return decision;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runBody" name="runBody" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runBody.1" isReentrant="false">
- <language>Java</language>
- <body>// Run the body part of the loop node for this node activation and save the body outputs.
-
-Debug.println("[runBody] Running body...");
-
-LoopNode loopNode = (LoopNode)this.node;
-
-this.activationGroup.runNodes(this.makeActivityNodeList(loopNode.bodyPart));
-
-if (!this.isSuspended()) {
- this.saveBodyOutputs();
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runLoopVariables" name="runLoopVariables" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runLoopVariables.1" isReentrant="false">
- <language>Java</language>
- <body>// Run the loop variable pins of the loop node for this node activation.
-
-this.activationGroup.runNodes(this.makeLoopVariableList());
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-createNodeActivations" name="createNodeActivations" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-createNodeActivations.1" isReentrant="false">
- <language>Java</language>
- <body>// In addition to creating activations for contained nodes, create activations for any loop variables.
-
-super.createNodeActivations();
-this.activationGroup.createNodeActivations(this.makeLoopVariableList());
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList" name="makeLoopVariableList" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return an activity node list containing the loop variable pins for the loop node of this activation.
-
-LoopNode loopNode = (LoopNode)(this.node);
-ActivityNodeList nodes = new ActivityNodeList();
-
-OutputPinList loopVariables = loopNode.loopVariable;
-for (int i = 0; i < loopVariables.size(); i++) {
- OutputPin loopVariable = loopVariables.getValue(i);
- nodes.addValue(loopVariable);
-}
-
-return nodes;
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-terminateAll" name="terminateAll" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-terminateAll.1" isReentrant="false">
- <language>Java</language>
- <body>// Copy the values of the body outputs to the loop outputs, and then
-// terminate all activations in the loop.
-
-OutputPinList resultPins = ((LoopNode)this.node).result;
-
-for (int i = 0; i < bodyOutputLists.size(); i++) {
- Values bodyOutputList = bodyOutputLists.getValue(i);
- OutputPin resultPin = resultPins.getValue(i);
- this.putTokens(resultPin, bodyOutputList.values);
-}
-
-super.terminateAll();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doLoop" name="doLoop" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doLoop.1" isReentrant="false">
- <language>Java</language>
- <body>// If isTestedFirst is true, then repeatedly run the test part and the
-// body part of the loop, copying values from the body outputs to the
-// loop variables.
-// If isTestedFirst is false, then repeatedly run the body part and the
-// test part of the loop, copying values from the body outputs to the
-// loop variables.
-
-LoopNode loopNode = (LoopNode) (this.node);
-OutputPinList loopVariables = loopNode.loopVariable;
-OutputPinList resultPins = loopNode.result;
-
-while (continuing) {
-
- // Set loop variable values
- this.runLoopVariables();
- for (int i = 0; i < loopVariables.size(); i++) {
- OutputPin loopVariable = loopVariables.getValue(i);
- Values bodyOutputList = bodyOutputLists.getValue(i);
- ValueList values = bodyOutputList.values;
- this.putPinValues(loopVariable, values);
- ((OutputPinActivation) this.activationGroup
- .getNodeActivation(loopVariable)).sendUnofferedTokens();
- }
-
- // Run all the non-executable, non-pin nodes in the conditional
- // node.
- ActivityNodeActivationList nodeActivations = this.activationGroup.nodeActivations;
- ActivityNodeActivationList nonExecutableNodeActivations =
- new ActivityNodeActivationList();
- for (int i = 0; i < nodeActivations.size(); i++) {
- ActivityNodeActivation nodeActivation = nodeActivations
- .getValue(i);
- if (!(nodeActivation.node instanceof ExecutableNode |
- nodeActivation.node instanceof Pin)) {
- nonExecutableNodeActivations.addValue(nodeActivation);
- }
- }
- this.activationGroup.run(nonExecutableNodeActivations);
-
- // Run the loop
- if (loopNode.isTestedFirst) {
- continuing = this.runTest();
- if (continuing) {
- this.runBody();
- }
- } else {
- this.runBody();
- if (this.isRunning() & !this.isSuspended()) {
- continuing = this.runTest();
- }
- }
-
- if (this.isRunning() && !this.isSuspended()) {
- this.activationGroup.terminateAll();
- } else {
- continuing = false;
- }
-
- Debug.println("[doStructuredActivity] "
- + (continuing? "Continuing." :
- this.isSuspended()? "Suspended":
- "Done."));
-
-}
-
-if (this.isRunning() && !this.isSuspended()) {
- for (int i = 0; i < bodyOutputLists.size(); i++) {
- Values bodyOutputList = bodyOutputLists.getValue(i);
- OutputPin resultPin = resultPins.getValue(i);
- this.putTokens(resultPin, bodyOutputList.values);
- }
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-saveBodyOutputs" name="saveBodyOutputs" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-saveBodyOutputs.1" isReentrant="false">
- <language>Java</language>
- <body>// Save the body outputs for use in the next iteration.
-
-LoopNode loopNode = (LoopNode) this.node;
-OutputPinList bodyOutputs = loopNode.bodyOutput;
-ValuesList bodyOutputLists = this.bodyOutputLists;
-for (int i = 0; i < bodyOutputs.size(); i++) {
- OutputPin bodyOutput = bodyOutputs.getValue(i);
- Values bodyOutputList = bodyOutputLists.getValue(i);
- bodyOutputList.values = this.getPinValues(bodyOutput);
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-resume" name="resume" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-resume.1" isReentrant="false">
- <language>Java</language>
- <body>// When this loop node is resumed after being suspended, continue with
-// its next iteration (if any). Once the loop has completed execution
-// without being suspended again, complete the action.
-
-LoopNode loopNode = (LoopNode) (this.node);
-
-this.saveBodyOutputs();
-
-if (loopNode.mustIsolate) {
- _beginIsolation();
- this.continueLoop();
- _endIsolation();
-} else {
- this.continueLoop();
-}
-
-if (this.isSuspended()) {
- // NOTE: If the subsequent iteration of the loop suspends it again,
- // then it is necessary to remove the previous suspension from the
- // containing activity node activation group.
- this.group.resume(this);
-} else {
- super.resume();
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-continueLoop" name="continueLoop" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-continueLoop.1" isReentrant="false">
- <language>Java</language>
- <body>// Continue the loop node when it is resumed after being suspended. If
-// isTestedFirst is true, then continue executing the loop. If
-// isTestedFirst is false, then run the test to determine whether
-// the loop should be continued or completed.
-// [Note that this presumes that an accept event action is not allowed
-// in the test part of a loop node.]
-
-LoopNode loopNode = (LoopNode) (this.node);
-
-boolean continuing = true;
-if (!loopNode.isTestedFirst) {
- continuing = this.runTest();
-}
-
-if (this.isRunning()) {
- this.activationGroup.terminateAll();
- this.doLoop(continuing);
-}
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doStructuredActivity.1" name="doStructuredActivity" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doStructuredActivity"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doLoop.1" name="doLoop" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doLoop">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doLoop.1-continuing" name="continuing" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runTest.1" name="runTest" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runTest">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runTest.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runBody.1" name="runBody" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runBody"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-saveBodyOutputs.1" name="saveBodyOutputs" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-saveBodyOutputs"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runLoopVariables.1" name="runLoopVariables" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runLoopVariables"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-createNodeActivations.1" name="createNodeActivations" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-createNodeActivations"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList.1" name="makeLoopVariableList" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-terminateAll.1" name="terminateAll" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-terminateAll"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-resume.1" name="resume" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-resume"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-continueLoop.1" name="continueLoop" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-continueLoop"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation" name="ConditionalNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation">
- <body>A conditional node activation is a structured activity node activation for a node that is a conditional node.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-_ownedComment.1">
- <body>import java.util.Iterator;
-
-import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Activities.CompleteStructuredActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.LociL1.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-_generalization.0" general="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-clauseActivations" name="clauseActivations" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" aggregation="composite" association="Semantics-Activities-CompleteStructuredActivities-A_clauseActivations_conditionalNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-clauseActivations-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-clauseActivations">
- <body>The activations for each clause in the conditional node for this node activation.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-clauseActivations-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-clauseActivations-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectedClauses" name="selectedClauses" visibility="public" association="Semantics-Activities-CompleteStructuredActivities-A_selectedClauses_clauseActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectedClauses-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectedClauses">
- <body>The set of clauses which meet the conditions to have their bodies activated.</body>
- </ownedComment>
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectedClauses-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectedClauses-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-doStructuredActivity" name="doStructuredActivity" specification="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-doStructuredActivity.1" isReentrant="false">
- <language>Java</language>
- <body>// Run all the non-executable, non-pin nodes in the conditional node.
-// Activate all clauses in the conditional node and pass control to those that are ready (i.e., have no predecessors).
-// If one or more clauses have succeeded in being selected, choose one non-deterministically and run its body, then copy the outputs of that clause to the output pins of the node.
-
-ConditionalNode node = (ConditionalNode)(this.node);
-
-ActivityNodeActivationList nodeActivations = this.activationGroup.nodeActivations;
-ActivityNodeActivationList nonExecutableNodeActivations = new ActivityNodeActivationList();
-for (int i = 0; i < nodeActivations.size(); i++) {
- ActivityNodeActivation nodeActivation = nodeActivations.getValue(i);
- if (!(nodeActivation.node instanceof ExecutableNode | nodeActivation.node instanceof Pin)) {
- nonExecutableNodeActivations.addValue(nodeActivation);
- }
-}
-
-this.activationGroup.run(nonExecutableNodeActivations);
-
-this.clauseActivations.clear();
-ClauseList clauses = node.clause;
-for (int i = 0; i < clauses.size(); i++) {
- Clause clause = clauses.getValue(i);
- ClauseActivation clauseActivation = new ClauseActivation();
- clauseActivation.clause = clause;
- clauseActivation.conditionalNodeActivation = this;
- this.clauseActivations.addValue(clauseActivation);
-}
-
-this.selectedClauses.clear();
-
-ClauseActivationList readyClauseActivations = new ClauseActivationList();
-for (int i = 0; i < this.clauseActivations.size(); i++) {
- ClauseActivation clauseActivation = this.clauseActivations.getValue(i);
- Debug.println("[doStructuredActivity] clauseActivations[" + i + "] = " + clauseActivation);
- if (clauseActivation.isReady()) {
- Debug.println("[doStructuredActivity] Clause activation is ready.");
- readyClauseActivations.addValue(clauseActivation);
- }
-}
-
-// *** Give control to all ready clauses concurrently. ***
-for (Iterator i = readyClauseActivations.iterator(); i.hasNext() ;) {
- ClauseActivation clauseActivation = (ClauseActivation)i.next();
- Debug.println("[doStructuredActivity] Giving control to " + clauseActivation + "...");
- clauseActivation.receiveControl();
-}
-
-this.selectedClause = null;
-if (this.selectedClauses.size() > 0 & this.isRunning()) {
- Debug.println("[doStructuredActivity] " + this.selectedClauses.size() + " clause(s) selected.");
-
- // *** If multiple clauses are selected, choose one non-deterministically. ***
- int i = ((ChoiceStrategy)this.getExecutionLocus().factory.getStrategy("choice")).choose(this.selectedClauses.size());
- Clause selectedClause = this.selectedClauses.getValue(i-1);
-
- Debug.println("[doStructuredActivity] Running selectedClauses[" + i + "] = " + selectedClause);
-
- for (int j = 0; j < clauses.size(); j++) {
- Clause clause = clauses.getValue(j);
- if (clause != selectedClause) {
- ExecutableNodeList testNodes = clause.test;
- for (int k = 0; k < testNodes.size(); k++) {
- ExecutableNode testNode = testNodes.getValue(k);
- this.activationGroup.getNodeActivation(testNode).terminate();
- }
- }
- }
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation" name="getClauseActivation" specification="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation-clause" name="clause" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the clause activation corresponding to the given clause.
-
-// Debug.println("[getClauseActivation] clause = " + clause);
-
-ClauseActivation selectedClauseActivation = null;
-int i = 1;
-while ((selectedClauseActivation == null) & i <= this.clauseActivations.size()) {
- ClauseActivation clauseActivation = this.clauseActivations.getValue(i-1);
- // Debug.println("[getClauseActivations] clauseActivations[" + i + "].clause = " + clauseActivation.clause);
- if (clauseActivation.clause == clause) {
- selectedClauseActivation = clauseActivation;
- }
- i = i + 1;
-}
-
-return selectedClauseActivation;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-runTest" name="runTest" specification="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-runTest.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-runTest-clause" name="clause" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Run the test for the given clause.
-
-if (this.isRunning()) {
- this.activationGroup.runNodes(this.makeActivityNodeList(clause.test));
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectBody" name="selectBody" specification="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectBody.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectBody-clause" name="clause" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Add the clause to the list of selected clauses.
-
-this.selectedClauses.addValue(clause);
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeBody" name="completeBody" specification="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeBody.1" isReentrant="false">
- <language>Java</language>
- <body> // Complete the activation of the body of a conditional note by
- // copying the outputs of the selected clause (if any) to the output
- // pins of the node and terminating the activation of all nested nodes.
-
- if (this.selectedClause != null) {
- ConditionalNode node = (ConditionalNode) (this.node);
- OutputPinList resultPins = node.result;
- OutputPinList bodyOutputPins = this.selectedClause.bodyOutput;
- for (int k = 0; k < resultPins.size(); k++) {
- OutputPin resultPin = resultPins.getValue(k);
- OutputPin bodyOutputPin = bodyOutputPins.getValue(k);
- this.putTokens(resultPin, this.getPinValues(bodyOutputPin));
- }
- }
- this.activationGroup.terminateAll();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeAction" name="completeAction" specification="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeAction.1" isReentrant="false">
- <language>Java</language>
- <body>// Only complete the conditional node if it is not suspended.
-
-if (!this.isSuspended()) {
- completeBody();
-}
-return super.completeAction();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-resume" name="resume" specification="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-resume.1" isReentrant="false">
- <language>Java</language>
- <body>// When this conditional node is resumed after being suspended, complete
-// its body and then resume it as a structured activity node.
-// [Note that this presumes that accept event actions are not allowed
-// in the test part of a clause of a conditional node.]
-
-completeBody();
-super.resume();
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-doStructuredActivity.1" name="doStructuredActivity" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-doStructuredActivity"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeBody.1" name="completeBody" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeBody"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeAction.1" name="completeAction" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeAction">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeAction.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeAction.1-Parameter1-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeAction.1-Parameter1-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation.1" name="getClauseActivation" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation.1-clause" name="clause" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-runTest.1" name="runTest" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-runTest">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-runTest.1-clause" name="clause" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectBody.1" name="selectBody" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectBody">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectBody.1-clause" name="clause" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-resume.1" name="resume" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-resume"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" name="ClauseActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-ClauseActivation">
- <body>A clause activation defines the behavior of a clause within the context of a specific activation of the conditional node containing the clause.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-_ownedComment.1">
- <body>import java.util.Iterator;
-
-import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Activities.CompleteStructuredActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-conditionalNodeActivation" name="conditionalNodeActivation" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation" association="Semantics-Activities-CompleteStructuredActivities-A_clauseActivations_conditionalNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-conditionalNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-conditionalNodeActivation">
- <body>The activation of the conditional node that contains the clause for this clause activation.</body>
- </ownedComment>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-clause" name="clause" visibility="public" association="Semantics-Activities-CompleteStructuredActivities-A_clause_clauseActivation">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-receiveControl" name="receiveControl" specification="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-receiveControl.1" isReentrant="false">
- <language>Java</language>
- <body>// If all predecessors to the clause for this activation have run their tests and failed, then run the test for this clause.
-// If the test succeeds, then terminate any other clauses that may be running and run the body of this clause.
-// If the test fails, then pass control to successor clauses.
-
-Debug.println("[receiveControl] clauseActivation = " + this);
-
-if (this.isReady()) {
- Debug.println("[receiveControl] Running test...");
- this.runTest();
-
- BooleanValue decision = this.getDecision();
-
- // Note that the decision may be null if the test was terminated before completion.
- if (decision != null) {
- if (decision.value == true) {
- Debug.println("[receiveControl] Test succeeded.");
- this.selectBody();
- } else {
- Debug.println("[receiveControl] Test failed.");
-
- ClauseActivationList successors = this.getSuccessors();
-
- // *** Give control to all successors concurrently. ***
- for (Iterator i = successors.iterator(); i.hasNext();) {
- ClauseActivation successor = (ClauseActivation)i.next();
- successor.receiveControl();
- }
- }
- }
-}
- </body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-isReady" name="isReady" specification="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-isReady.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-isReady-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Test if all predecessors to this clause activation have failed.
-
-ClauseActivationList predecessors = this.getPredecessors();
-
-boolean ready = true;
-int i = 1;
-while (ready & i <= predecessors.size()) {
- ClauseActivation predecessor = predecessors.getValue(i-1);
- BooleanValue decisionValue = predecessor.getDecision();
-
- // Note that the decision will be null if the predecessor clause has not run yet.
- if (decisionValue == null) {
- ready = false;
- } else {
- ready = !decisionValue.value;
- }
-
- i = i + 1;
-}
-
-return ready;
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-runTest" name="runTest" specification="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-runTest.1" isReentrant="false">
- <language>Java</language>
- <body>// Run the test of the clause for this clause activation.
-
-this.conditionalNodeActivation.runTest(this.clause);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-selectBody" name="selectBody" specification="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-selectBody.1" isReentrant="false">
- <language>Java</language>
- <body>// Select the body of the clause for this clause activation.
-
-this.conditionalNodeActivation.selectBody(this.clause);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision" name="getDecision" specification="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-BooleanValue" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the value (if any) on the decider pin of the clause for this clause activation.
-
-ValueList deciderValues = this.conditionalNodeActivation.getPinValues(this.clause.decider);
-
-BooleanValue deciderValue = null;
-if (deciderValues.size() > 0) {
- deciderValue = (BooleanValue)(deciderValues.getValue(0));
-}
-
-return deciderValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors" name="getPredecessors" specification="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the clause activations for the predecessors of the clause for this clause activation.
-
-ClauseActivationList predecessors = new ClauseActivationList();
-
-ClauseList predecessorClauses = this.clause.predecessorClause;
-for (int i = 0; i < predecessorClauses.size(); i++) {
- Clause predecessorClause = predecessorClauses.getValue(i);
- predecessors.addValue(this.conditionalNodeActivation.getClauseActivation(predecessorClause));
-}
-
-return predecessors;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors" name="getSuccessors" specification="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the clause activations for the successors of the clause for this clause activation.
-
-ClauseActivationList successors = new ClauseActivationList();
-
-ClauseList successorClauses = this.clause.successorClause;
-for (int i = 0; i < successorClauses.size(); i++) {
- Clause successorClause = successorClauses.getValue(i);
- successors.addValue(this.conditionalNodeActivation.getClauseActivation(successorClause));
-}
-
-return successors;
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-receiveControl.1" name="receiveControl" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-receiveControl"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-isReady">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-isReady.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-runTest.1" name="runTest" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-runTest"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-selectBody.1" name="selectBody" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-selectBody"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision.1" name="getDecision" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-BooleanValue" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors.1" name="getPredecessors" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors.1" name="getSuccessors" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_clause_clauseActivation" name="A_clause_clauseActivation" visibility="private" memberEnd="Semantics-Activities-CompleteStructuredActivities-A_clause_clauseActivation-_ownedEnd.0 Semantics-Activities-CompleteStructuredActivities-ClauseActivation-clause">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_clause_clauseActivation-_ownedEnd.0" visibility="private" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" association="Semantics-Activities-CompleteStructuredActivities-A_clause_clauseActivation">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_clause_clauseActivation-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_clause_clauseActivation-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_clauseActivations_conditionalNodeActivation" name="A_clauseActivations_conditionalNodeActivation" visibility="private" memberEnd="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-conditionalNodeActivation Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-clauseActivations"/>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_selectedClauses_clauseActivation" name="A_selectedClauses_clauseActivation" visibility="private" memberEnd="Semantics-Activities-CompleteStructuredActivities-A_selectedClauses_clauseActivation-_ownedEnd.0 Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectedClauses">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_selectedClauses_clauseActivation-_ownedEnd.0" visibility="private" type="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation" association="Semantics-Activities-CompleteStructuredActivities-A_selectedClauses_clauseActivation"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_activationGroup_containingNodeActivation" name="A_activationGroup_containingNodeActivation" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-containingNodeActivation Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-activationGroup"/>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-CompleteStructuredActivities-Values" name="Values">
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-Values-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value" association="Semantics-Activities-CompleteStructuredActivities-A_values_values">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-Values-values-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-Values-values-_upperValue" value="*"/>
- </ownedAttribute>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_bodyOutputLists_loopNodeActivation" name="A_bodyOutputLists_loopNodeActivation" visibility="private" memberEnd="Semantics-Activities-CompleteStructuredActivities-A_bodyOutputLists_loopNodeActivation-_ownedEnd.0 Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-bodyOutputLists">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_bodyOutputLists_loopNodeActivation-_ownedEnd.0" visibility="private" type="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation" association="Semantics-Activities-CompleteStructuredActivities-A_bodyOutputLists_loopNodeActivation">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_bodyOutputLists_loopNodeActivation-_ownedEnd.0-_lowerValue"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_values_values" name="A_values_values" visibility="private" memberEnd="Semantics-Activities-CompleteStructuredActivities-A_values_values-_ownedEnd.0 Semantics-Activities-CompleteStructuredActivities-Values-values">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_values_values-_ownedEnd.0" visibility="private" type="Semantics-Activities-CompleteStructuredActivities-Values" association="Semantics-Activities-CompleteStructuredActivities-A_values_values">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_values_values-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_values_values-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Activities-IntermediateActivities" name="IntermediateActivities">
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Activities-IntermediateActivities-_packageImport.1" importedPackage="Semantics-CommonBehaviors-BasicBehaviors"/>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-Token" name="Token" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Token-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-Token">
- <body>A token is an individual element of data or control that may flow across an activity edge.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Token-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-Token-holder" name="holder" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" association="Semantics-Activities-IntermediateActivities-A_heldTokens_holder">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-Token-holder-_lowerValue"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Token-transfer" name="transfer" specification="Semantics-Activities-IntermediateActivities-Token-transfer.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-transfer-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-transfer-holder" name="holder" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
- <language>Java</language>
- <body>// if this token does not have any holder, make the given holder its holder.
-// Otherwise, remove this token from its holder and return a copy of it transfered to a new holder.
-
-Token token = this;
-if (this.holder != null) {
- this.withdraw();
- token = this.copy();
-}
-
-token.holder = holder;
-return token;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Token-withdraw" name="withdraw" specification="Semantics-Activities-IntermediateActivities-Token-withdraw.1" isReentrant="false">
- <language>Java</language>
- <body>// Remove this token from its holder, withdrawing any offers for it.
-
-if (!this.isWithdrawn()) {
- // Debug.println("[withdraw] Taking token with value = " + this.getValue());
- this.holder.removeToken(this);
- this.holder = null;
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Token-isWithdrawn" name="isWithdrawn" specification="Semantics-Activities-IntermediateActivities-Token-isWithdrawn.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-isWithdrawn-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Test if this token has been withdrawn.
-
-return this.holder == null;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Token-transfer.1" name="transfer" visibility="public" method="Semantics-Activities-IntermediateActivities-Token-transfer">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-transfer.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-transfer.1-holder" name="holder" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Token-withdraw.1" name="withdraw" visibility="public" method="Semantics-Activities-IntermediateActivities-Token-withdraw"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Token-equals" name="equals" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Token-equals-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-Token-equals">
- <body>Test if this token is equal to another token.
-</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-equals-other" name="other" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Token-copy" name="copy" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Token-copy-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-Token-copy">
- <body>// Make a copy of this token.
-</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Token-isWithdrawn.1" name="isWithdrawn" visibility="public" method="Semantics-Activities-IntermediateActivities-Token-isWithdrawn">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-isWithdrawn.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Token-isControl" name="isControl" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Token-isControl-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-Token-isControl">
- <body>Test whether this is a control token.
-</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-isControl-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Token-getValue" name="getValue" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Token-getValue-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-Token-getValue">
- <body>Get the value associated with this token (if any).</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-getValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-Token-getValue-ReturnResult-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-Offer" name="Offer">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Offer-_ownedComment.0">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Offer-_ownedComment.1" annotatedElement="Semantics-Activities-IntermediateActivities-Offer">
- <body>An offer is a group of tokens offered together. The grouping of offered tokens into offers usually does not matter for how the tokens may be accepted. However, control and object tokens may become grouped together in the same offer due to a join node that has both incoming control and object flows. In this case, the control tokens are implicitly accepted once all the object tokens in the same offer have been accepted.</body>
- </ownedComment>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-Offer-offeredTokens" name="offeredTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" association="Semantics-Activities-IntermediateActivities-A_offeredTokens_offer">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-Offer-offeredTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-Offer-offeredTokens-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Offer-countOfferedValues" name="countOfferedValues" specification="Semantics-Activities-IntermediateActivities-Offer-countOfferedValues.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-countOfferedValues-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the number of values being offered on object tokens.
-// Remove any tokens that have already been withdrawn and don't include them in the count.
-
-this.removeWithdrawnTokens();
-
-int count = 0;
-for (int i = 0; i < this.offeredTokens.size(); i++) {
- if (this.offeredTokens.getValue(i).getValue() != null) {
- count = count + 1;
- }
-}
-
-return count;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens" name="getOfferedTokens" specification="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens-OwnedParameter-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens-OwnedParameter-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the offered tokens, removing any that have been withdrawn.
-
-this.removeWithdrawnTokens();
-
-TokenList tokens = new TokenList();
-TokenList offeredTokens = this.offeredTokens;
-for (int i = 0; i < this.offeredTokens.size() ; i++) {
- Token offeredToken = offeredTokens.getValue(i);
- // Debug.println("[getOfferedTokens] token value = " + offeredToken.getValue());
- tokens.addValue(offeredToken);
-}
-
-return tokens;
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Offer-removeOfferedValues" name="removeOfferedValues" specification="Semantics-Activities-IntermediateActivities-Offer-removeOfferedValues.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-removeOfferedValues-count" name="count" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Remove the given number of non-null object tokens from those in this offer.
-
-int n = count;
-int i = 1;
-while (n > 0) {
- if (this.offeredTokens.getValue(i-1).getValue() != null) {
- this.offeredTokens.removeValue(i-1);
- } else {
- i = i + 1;
- }
- n = n - 1;
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Offer-removeWithdrawnTokens" name="removeWithdrawnTokens" specification="Semantics-Activities-IntermediateActivities-Offer-removeWithdrawnTokens.1" isReentrant="false">
- <language>Java</language>
- <body>// Remove any tokens that have already been consumed.
-
-TokenList offeredTokens = this.offeredTokens;
-int i = 1;
-while (i <= this.offeredTokens.size()) {
- if (this.offeredTokens.getValue(i-1).isWithdrawn()) {
- this.offeredTokens.remove(i-1);
- i = i - 1;
- }
- i = i + 1;
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Offer-hasTokens" name="hasTokens" specification="Semantics-Activities-IntermediateActivities-Offer-hasTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-hasTokens-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Check whether this offer has any tokens that have not been withdrawn.
-
-this.removeWithdrawnTokens();
-return this.offeredTokens.size() > 0;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Offer-countOfferedValues.1" name="countOfferedValues" visibility="public" method="Semantics-Activities-IntermediateActivities-Offer-countOfferedValues">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-countOfferedValues.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens.1" name="getOfferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens.1-OwnedParameter-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens.1-OwnedParameter-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Offer-removeOfferedValues.1" name="removeOfferedValues" visibility="public" method="Semantics-Activities-IntermediateActivities-Offer-removeOfferedValues">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-removeOfferedValues.1-count" name="count" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Offer-removeWithdrawnTokens.1" name="removeWithdrawnTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-Offer-removeWithdrawnTokens"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Offer-hasTokens.1" name="hasTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-Offer-hasTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-hasTokens.1-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken" name="ObjectToken">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ObjectToken">
- <body>An object token represents the passing of data along an object flow edge.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-_generalization.0" general="Semantics-Activities-IntermediateActivities-Token"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value" aggregation="composite" association="Semantics-Activities-IntermediateActivities-A_value_objectToken">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-value-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ObjectToken-value">
- <body>The value carried by this token. A token may have no value, in which case it is a "null token".</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-value-_lowerValue"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-equals" name="equals" specification="Semantics-Activities-IntermediateActivities-ObjectToken-equals.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-equals-other" name="other" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
- <language>Java</language>
- <body>// Test if this object token is the same as the other token.
-
-return this == other;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-copy" name="copy" specification="Semantics-Activities-IntermediateActivities-ObjectToken-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
- <language>Java</language>
- <body>// Return a new object token with the same value as this token.
-// [Note: the holder of the copy is not set.]
-
-ObjectToken copy = new ObjectToken();
-copy.value = this.value;
-
-return copy;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-isControl" name="isControl" specification="Semantics-Activities-IntermediateActivities-ObjectToken-isControl.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-isControl-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return false for an object token.
-
-return false;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-getValue" name="getValue" specification="Semantics-Activities-IntermediateActivities-ObjectToken-getValue.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-getValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-getValue-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the value of this object token.
-
-return this.value;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-equals.1" name="equals" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectToken-equals">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-equals.1-other" name="other" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-copy.1" name="copy" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectToken-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-isControl.1" name="isControl" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectToken-isControl">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-isControl.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-getValue.1" name="getValue" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectToken-getValue">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-getValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-getValue.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation" name="ObjectNodeActivation" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ObjectNodeActivation">
- <body>An object node activation is an activity node activation for a node that is an object node.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-offeredTokenCount" name="offeredTokenCount" visibility="public">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-offeredTokenCount-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-offeredTokenCount">
- <body>The number of held tokens that have already been offered.</body>
- </ownedComment>
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-run" name="run" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-run.1" isReentrant="false">
- <language>Java</language>
- <body>// Initialize the offered token count to zero.
-
-super.run();
-this.offeredTokenCount = 0;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers" name="sendOffers" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers-tokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers-tokens-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// If the set of tokens to be sent is empty, then offer a null token instead.
-// Otherwise, offer the given tokens as usual.
-
-if (tokens.size() == 0) {
- ObjectToken token = new ObjectToken();
- token.holder = this
- tokens.addValue(token);
-}
-
-super.sendOffers(tokens);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-terminate" name="terminate" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-terminate.1" isReentrant="false">
- <language>Java</language>
- <body>// Remove any offered tokens and terminate.
-
-this.clearTokens();
-super.terminate();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-addToken" name="addToken" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-addToken.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-addToken-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
- <language>Java</language>
- <body>// Transfer the given token to be held by this node only if it is a non-null object token.
-// If it is a control token or a null token, consume it without holding it.
-
-if (token.getValue() == null) {
- token.withdraw();
-} else {
- super.addToken(token);
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken" name="removeToken" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
- <language>Java</language>
- <body>// Remove the given token, if it is held by this node activation.
-
-int i = super.removeToken(token);
-if (i > 0 & i <= this.offeredTokenCount) {
- this.offeredTokenCount = this.offeredTokenCount - 1;
-}
-
-return i;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-clearTokens" name="clearTokens" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-clearTokens.1" isReentrant="false">
- <language>Java</language>
- <body>// Remove all held tokens.
-
-super.clearTokens();
-this.offeredTokenCount = 0;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countOfferedValues" name="countOfferedValues" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countOfferedValues.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countOfferedValues-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Count the total number of non-null object tokens being offered to this node activation.
-
-int totalValueCount = 0;
-int i = 1;
-while (i <= this.incomingEdges.size()) {
- totalValueCount = totalValueCount + this.incomingEdges.getValue(i-1).countOfferedValues();
- i = i + 1;
-}
-
-return totalValueCount;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendUnofferedTokens" name="sendUnofferedTokens" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendUnofferedTokens.1" isReentrant="false">
- <language>Java</language>
- <body>// Send offers over all outgoing edges, if there are any tokens to be offered.
-
-TokenList tokens = this.getUnofferedTokens();
-this.offeredTokenCount = this.offeredTokenCount + tokens.size();
-
-this.sendOffers(tokens);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countUnofferedTokens" name="countUnofferedTokens" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countUnofferedTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countUnofferedTokens-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the number of unoffered tokens that are to be offered next.
-// (By default, this is all unoffered tokens.)
-
-if (this.heldTokens.size() == 0) {
- this.offeredTokenCount = 0;
-}
-
-return this.heldTokens.size() - this.offeredTokenCount;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens" name="getUnofferedTokens" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the next set of unoffered tokens to be offered and return it.
-// [Note: This effectively treats all object flows as if they have weight=*, rather than the weight=1 default in the current superstructure semantics.]
-
-TokenList tokens = new TokenList();
-
-int i = 1;
-while (i <= this.countUnofferedTokens()) {
- tokens.addValue(this.heldTokens.getValue(this.offeredTokenCount + i - 1));
- i = i + 1;
-}
-
-return tokens;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens" name="takeUnofferedTokens" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens-OwnedParameter-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens-OwnedParameter-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Take the next set of unoffered tokens to be offered from this node activation and return them.
-
-TokenList tokens = this.getUnofferedTokens();
-for (int i = 0; i < tokens.size(); i++) {
- Token token = tokens.getValue(i);
- token.withdraw();
-}
-return tokens;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-run.1" name="run" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-run"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers.1" name="sendOffers" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers.1-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers.1-tokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers.1-tokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-terminate"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-addToken.1" name="addToken" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-addToken">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-addToken.1-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken.1" name="removeToken" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken.1-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-clearTokens.1" name="clearTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-clearTokens"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countOfferedValues.1" name="countOfferedValues" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countOfferedValues">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countOfferedValues.1-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendUnofferedTokens.1" name="sendUnofferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendUnofferedTokens"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countUnofferedTokens.1" name="countUnofferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countUnofferedTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countUnofferedTokens.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens.1" name="getUnofferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens.1" name="takeUnofferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens.1-OwnedParameter-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens.1-OwnedParameter-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-MergeNodeActivation" name="MergeNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-MergeNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-MergeNodeActivation">
- <body>A merge node activation is a control node activation for a node that is a merge node.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-MergeNodeActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-MergeNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ControlNodeActivation"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation" name="JoinNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-JoinNodeActivation">
- <body>A join node activation is a control node activation for a node that is a join node.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ControlNodeActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation-isReady" name="isReady" specification="Semantics-Activities-IntermediateActivities-JoinNodeActivation-isReady.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation-isReady-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Check that all incoming edges have sources that are offering tokens.
-
-boolean ready = true;
-int i = 1;
-while (ready & i <=this.incomingEdges.size()) {
- ready = this.incomingEdges.getValue(i-1).hasOffer();
- i = i + 1;
-}
-
-return ready;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Activities-IntermediateActivities-JoinNodeActivation-isReady">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation-isReady.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken" name="ForkedToken">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ForkedToken">
- <body>A forked token is a proxy for a token that has been offered through a fork node. If the token is accepted through the fork node, then the original token is withdrawn from its holder, but the forked token remains held by the fork node activation until all outstanding offers on all outgoing edges are accepted.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-_generalization.0" general="Semantics-Activities-IntermediateActivities-Token"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-baseToken" name="baseToken" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" association="Semantics-Activities-IntermediateActivities-A_baseToken_forkedToken"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-remainingOffersCount" name="remainingOffersCount" visibility="public">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-remainingOffersCount-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ForkedToken-remainingOffersCount">
- <body>The remaining number of outstanding offers for this token on outgoing edges of the fork node.</body>
- </ownedComment>
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-baseTokenIsWithdrawn" name="baseTokenIsWithdrawn" visibility="public">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-baseTokenIsWithdrawn-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ForkedToken-baseTokenIsWithdrawn">
- <body>Indicates whether withdraw() has been called on the base token.</body>
- </ownedComment>
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-isControl" name="isControl" specification="Semantics-Activities-IntermediateActivities-ForkedToken-isControl.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-isControl-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Test if the base token is a control token.
-
-return this.baseToken.isControl();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-withdraw" name="withdraw" specification="Semantics-Activities-IntermediateActivities-ForkedToken-withdraw.1" isReentrant="false">
- <language>Java</language>
- <body>// If the base token is not withdrawn, then withdraw it.
-// Decrement the remaining offers count.
-// When the remaining number of offers is zero, then remove this token from its holder.
-
-if (!this.baseTokenIsWithdrawn & !this.baseToken.isWithdrawn()) {
- this.baseToken.withdraw();
-
- // NOTE: This keeps a base token that is a forked token from being
- // withdrawn more than once, since withdrawing a forked token may
- // not actually remove it from its fork node holder.
- this.baseTokenIsWithdrawn = true;
-}
-
-if (this.remainingOffersCount > 0) {
- this.remainingOffersCount = this.remainingOffersCount - 1;
-}
-
-if (this.remainingOffersCount == 0) {
- super.withdraw();
-}</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-copy" name="copy" specification="Semantics-Activities-IntermediateActivities-ForkedToken-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
- <language>Java</language>
- <body>// Return a copy of the base token.
-
-return this.baseToken.copy();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-equals" name="equals" specification="Semantics-Activities-IntermediateActivities-ForkedToken-equals.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-equals-otherToken" name="otherToken" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
- <language>Java</language>
- <body>// Test if this token is equal to another token.
-
-return this == otherToken;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-getValue" name="getValue" specification="Semantics-Activities-IntermediateActivities-ForkedToken-getValue.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-getValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-getValue-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the value of the base token.
-
-return this.baseToken.getValue();
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-isControl.1" name="isControl" visibility="public" method="Semantics-Activities-IntermediateActivities-ForkedToken-isControl">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-isControl.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-withdraw.1" name="withdraw" visibility="public" method="Semantics-Activities-IntermediateActivities-ForkedToken-withdraw"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-copy.1" name="copy" visibility="public" method="Semantics-Activities-IntermediateActivities-ForkedToken-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-equals.1" name="equals" visibility="public" method="Semantics-Activities-IntermediateActivities-ForkedToken-equals">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-equals.1-otherToken" name="otherToken" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-getValue.1" name="getValue" visibility="public" method="Semantics-Activities-IntermediateActivities-ForkedToken-getValue">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-getValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-getValue.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation" name="ForkNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ForkNodeActivation">
- <body>A fork node activation is a control node activation for a node that is a fork node.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ControlNodeActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire" name="fire" specification="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Create forked tokens for all incoming tokens and offer them on all outgoing edges.
-
-if (this.node == null) {
- Debug.println("[fire] Anonymous fork node.");
-} else {
- Debug.println("[fire] Fork node " + this.node.name + "...");
-}
-
-ActivityEdgeInstanceList outgoingEdges = this.outgoingEdges;
-int outgoingEdgeCount = outgoingEdges.size();
-
-TokenList forkedTokens = new TokenList();
-for (int i = 0; i < incomingTokens.size(); i++) {
- Token token = incomingTokens.getValue(i);
- ForkedToken forkedToken = new ForkedToken();
- forkedToken.baseToken = token;
- forkedToken.remainingOffersCount = outgoingEdgeCount;
- forkedToken.baseTokenIsWithdrawn = false;
- forkedTokens.addValue(forkedToken);
-}
-
-this.addTokens(forkedTokens);
-
-this.sendOffers(forkedTokens);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-terminate" name="terminate" specification="Semantics-Activities-IntermediateActivities-ForkNodeActivation-terminate.1" isReentrant="false">
- <language>Java</language>
- <body>// Remove any offered tokens and terminate.
-
-this.clearTokens();
-super.terminate();
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire.1-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Activities-IntermediateActivities-ForkNodeActivation-terminate"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation" name="InitialNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-InitialNodeActivation">
- <body>An initial node activation is a control node activation for a node that is an initial node.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ControlNodeActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire" name="fire" specification="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Create a single token and send offers for it.
-
-TokenList tokens = new TokenList();
-tokens.addValue(new ControlToken());
-this.addTokens(tokens);
-
-this.sendOffers(tokens);
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire.1-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation" name="DecisionNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-_ownedComment.0">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ControlNodeActivation"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-decisionInputExecution" name="decisionInputExecution" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" aggregation="composite" association="Semantics-Activities-IntermediateActivities-A_decisionInputExecution_decisionNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-decisionInputExecution-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-decisionInputExecution">
- <body>The current execution of the decision input behavior (if any).</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-decisionInputExecution-_lowerValue"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire" name="fire" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the decision values and test them on each guard.
-// Forward the offer over the edges for which the test succeeds.
-
-Debug.println("[fire] Decision node " + this.node.name + "...");
-
-//TokenList incomingTokens = this.takeOfferedTokens();
-TokenList removedControlTokens = this.removeJoinedControlTokens(incomingTokens);
-ValueList decisionValues = this.getDecisionValues(incomingTokens);
-
-ActivityEdgeInstanceList outgoingEdges = this.outgoingEdges;
-for (int i = 0; i < outgoingEdges.size(); i++) {
- ActivityEdgeInstance edgeInstance = outgoingEdges.getValue(i);
- ValueSpecification guard = edgeInstance.edge.guard;
-
- TokenList offeredTokens = new TokenList();
- for (int j = 0; j < incomingTokens.size(); j++) {
- Token incomingToken = incomingTokens.getValue(j);
- Value decisionValue = decisionValues.getValue(j);
- if (this.test(guard, decisionValue)) {
- offeredTokens.addValue(incomingToken);
- }
- }
-
- if (offeredTokens.size() > 0) {
- for (int j = 0; j < removedControlTokens.size(); j++) {
- Token removedControlToken = removedControlTokens.getValue(j);
- offeredTokens.addValue(removedControlToken);
- }
- edgeInstance.sendOffer(offeredTokens);
- }
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues" name="getDecisionValues" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// If there is neither a decision input flow nor a decision input behavior, then return the set of values from the incoming tokens.
-// [In this case, the single incoming edge must be an object flow.]
-// If there is a decision input flow, but no decision input behavior, then return a list of the decision input values equal in size to the number of incoming tokens.
-// If there is both a decision input flow and a decision input behavior, then execute the decision input behavior once for each incoming token and return the set of resulting values.
-// If the primary incoming edge is an object flow, then the value on each object token is passed to the decision input behavior, along with the decision input flow value, if any.
-// If the primary incoming edge is a control flow, then the decision input behavior only receives the decision input flow, if any.
-
-
-Value decisionInputValue = this.getDecisionInputFlowValue();
-
-ValueList decisionValues = new ValueList();
-for (int i = 0; i < incomingTokens.size(); i++) {
- Token incomingToken = incomingTokens.getValue(i);
- Value value = this.executeDecisionInputBehavior(incomingToken.getValue(), decisionInputValue);
- decisionValues.addValue(value);
-}
-
-// Debug.println("[getDecisionValues] " + decisionValues.size() + " decision value(s):");
-for (int i = 0; i < decisionValues.size(); i++) {
- Value decisionValue = decisionValues.getValue(i);
- Debug.println("[getDecisionValues] decisionValues[" + i + "] = " + decisionValue);
-}
-
-return decisionValues;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior" name="executeDecisionInputBehavior" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior-inputValue" name="inputValue" visibility="public" type="Semantics-Classes-Kernel-Value">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior-inputValue-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior-decisionInputValue" name="decisionInputValue" visibility="public" type="Semantics-Classes-Kernel-Value">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior-decisionInputValue-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Create the decision input execution from the decision input behavior.
-// If the behavior has input parameter(s), set the input parameter(s) of the execution to the given value(s).
-// Execute the decision input execution and then remove it.
-// Return the value of the output parameter of the execution.
-// If there is no decision input behavior, the decision input value is returned, if one is given, otherwise the input value is used as the decision value.
-
-Debug.println("[executeDecisionBehavior] inputValue = " + inputValue);
-
-Behavior decisionInputBehavior = ((DecisionNode)(this.node)).decisionInput;
-
-Value decisionInputResult = null;
-
-if (decisionInputBehavior == null) {
-
- if (decisionInputValue != null) {
- decisionInputResult = decisionInputValue;
- } else {
- decisionInputResult = inputValue;
- }
-
-} else {
-
- this.decisionInputExecution = this.getExecutionLocus().factory.createExecution(decisionInputBehavior, this.getExecutionContext());
-
- int i = 1;
- int j = 0;
- while ((j == 0 | (j == 1 & decisionInputValue != null)) & i <= decisionInputBehavior.ownedParameter.size()) {
- Parameter parameter = decisionInputBehavior.ownedParameter.getValue(i-1);
- if (parameter.direction.equals(ParameterDirectionKind.in) |
- parameter.direction.equals(ParameterDirectionKind.inout)) {
- ParameterValue inputParameterValue = new ParameterValue();
- inputParameterValue.parameter = parameter;
-
- j = j +1;
- if (j == 1 && inputValue != null) {
- inputParameterValue.values.addValue(inputValue);
- } else {
- inputParameterValue.values.addValue(decisionInputValue);
- }
-
- this.decisionInputExecution.setParameterValue(inputParameterValue);
-
- }
- i = i + 1;
- }
-
- this.decisionInputExecution.execute();
-
- ParameterValueList outputParameterValues = this.decisionInputExecution.getOutputParameterValues();
- decisionInputExecution.destroy();
-
- decisionInputResult = outputParameterValues.getValue(0).values.getValue(0);
-
-}
-
-return decisionInputResult;</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-terminate" name="terminate" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-terminate.1" isReentrant="false">
- <language>Java</language>
- <body>// Terminate the decision input execution, if any, and then terminate this activation.
-
-if (this.decisionInputExecution != null) {
- this.decisionInputExecution.terminate();
-}
-
-super.terminate();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-isReady" name="isReady" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-isReady.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-isReady-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Check that all incoming edges have sources that are offering tokens.
-// [This should be at most two incoming edges, if there is a decision input flow.]
-
-int i = 1;
-boolean ready = true;
-while (ready & i <= this.incomingEdges.size()) {
- ready = this.incomingEdges.getValue(i-1).hasOffer();
- i = i + 1;
-}
-
-return ready;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens" name="takeOfferedTokens" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get tokens from the incoming edge that is not the decision input flow.
-
-ObjectFlow decisionInputFlow = ((DecisionNode)(this.node)).decisionInputFlow;
-
-TokenList allTokens = new TokenList();
-ActivityEdgeInstanceList incomingEdges = this.incomingEdges;
-for (int i = 0; i < incomingEdges.size(); i++) {
- ActivityEdgeInstance edgeInstance = incomingEdges.getValue(i);
- if (edgeInstance.edge != decisionInputFlow) {
- TokenList tokens = edgeInstance.takeOfferedTokens();
- for (int j = 0; j < tokens.size(); j++) {
- allTokens.addValue(tokens.getValue(j));
- }
- }
-}
-
-return allTokens;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue" name="getDecisionInputFlowValue" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Take the next token available on the decision input flow, if any, and return its value.
-
-ActivityEdgeInstance decisionInputFlowInstance = this.getDecisionInputFlowInstance();
-
-Value value = null;
-if (decisionInputFlowInstance != null) {
- TokenList tokens = decisionInputFlowInstance.takeOfferedTokens();
- if (tokens.size() > 0) {
- value = tokens.getValue(0).getValue();
- }
-}
-
-return value;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance" name="getDecisionInputFlowInstance" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the activity edge instance for the decision input flow, if any.
-
-ActivityEdge decisionInputFlow = ((DecisionNode)(this.node)).decisionInputFlow;
-
-ActivityEdgeInstance edgeInstance = null;
-if (decisionInputFlow != null) {
- int i = 1;
- while (edgeInstance == null & i <=this.incomingEdges.size()) {
- ActivityEdgeInstance incomingEdge = this.incomingEdges.getValue(i-1);
- if (incomingEdge.edge == decisionInputFlow) {
- edgeInstance = incomingEdge;
- }
- i = i + 1;
- }
-}
-
-return edgeInstance;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test" name="test" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test-guard" name="guard" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <language>Java</language>
- <body>// Test if the given value matches the guard. If there is no guard, return true.
-
-boolean guardResult = true;
-if (guard != null) {
- Value guardValue = this.getExecutionLocus().executor.evaluate(guard);
- guardResult = guardValue.equals(value);
-}
-
-return guardResult;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens" name="removeJoinedControlTokens" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens-OwnedParameter-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens-OwnedParameter-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// If the primary incoming edge is an object flow, then remove any control tokens from the incoming tokens and return them.
-// [Control tokens may effectively be offered on an object flow outgoing from a join node that has both control and object flows incoming.]
-
-TokenList removedControlTokens = new TokenList();
-
-if (this.hasObjectFlowInput()) {
- int i = 1;
- while (i <= incomingTokens.size()) {
- Token token = incomingTokens.getValue(i-1);
- if (token.isControl()) {
- removedControlTokens.addValue(token);
- incomingTokens.removeValue(i-1);
- i = i - 1;
- }
- i = i + 1;
- }
-}
-
-return removedControlTokens;</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-hasObjectFlowInput" name="hasObjectFlowInput" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-hasObjectFlowInput.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-hasObjectFlowInput-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Check that the primary incoming edge is an object flow.
-
-ActivityEdge decisionInputFlow = ((DecisionNode)(this.node)).decisionInputFlow;
-
-boolean isObjectFlow = false;
-int i = 1;
-while (!isObjectFlow & i <= this.incomingEdges.size()) {
- ActivityEdge edge = this.incomingEdges.getValue(i-1).edge;
- isObjectFlow = edge != decisionInputFlow & edge instanceof ObjectFlow;
- i = i + 1;
-}
-
-return isObjectFlow;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire.1-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1" name="getDecisionValues" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior.1" name="executeDecisionInputBehavior" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior.1-inputValue" name="inputValue" visibility="public" type="Semantics-Classes-Kernel-Value">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior.1-inputValue-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior.1-decisionInputValue" name="decisionInputValue" visibility="public" type="Semantics-Classes-Kernel-Value">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior.1-decisionInputValue-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-terminate"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-isReady">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-isReady.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens.1" name="takeOfferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue.1" name="getDecisionInputFlowValue" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance.1" name="getDecisionInputFlowInstance" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test.1" name="test" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test.1-guard" name="guard" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test.1-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1" name="removeJoinedControlTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1-OwnedParameter-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1-OwnedParameter-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-hasObjectFlowInput.1" name="hasObjectFlowInput" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-hasObjectFlowInput">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-hasObjectFlowInput.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken" name="ControlToken">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ControlToken">
- <body>A control token represents the passing of control along a control flow edge.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-_generalization.0" general="Semantics-Activities-IntermediateActivities-Token"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-equals" name="equals" specification="Semantics-Activities-IntermediateActivities-ControlToken-equals.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-equals-other" name="other" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
- <language>Java</language>
- <body>// Return true if the other token is a control token, because control tokens are interchangable.
-
-return other instanceof ControlToken;
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-copy" name="copy" specification="Semantics-Activities-IntermediateActivities-ControlToken-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
- <language>Java</language>
- <body>// Return a new control token.
-
-return new ControlToken();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-isControl" name="isControl" specification="Semantics-Activities-IntermediateActivities-ControlToken-isControl.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-isControl-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return true for a control token.
-
-return true;</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-getValue" name="getValue" specification="Semantics-Activities-IntermediateActivities-ControlToken-getValue.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-getValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-getValue-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Control tokens do not have values.
-
-return null;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-equals.1" name="equals" visibility="public" method="Semantics-Activities-IntermediateActivities-ControlToken-equals">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-equals.1-other" name="other" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-copy.1" name="copy" visibility="public" method="Semantics-Activities-IntermediateActivities-ControlToken-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-isControl.1" name="isControl" visibility="public" method="Semantics-Activities-IntermediateActivities-ControlToken-isControl">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-isControl.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-getValue.1" name="getValue" visibility="public" method="Semantics-Activities-IntermediateActivities-ControlToken-getValue">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-getValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-getValue.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation" name="ControlNodeActivation" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ControlNodeActivation">
- <body>A control node activation is an activity node activation for a node that is a control node.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire" name="fire" specification="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// By default, offer all tokens on all outgoing edges.
-
-if (this.node != null) {
- Debug.println("[fire] Control node " + this.node.name + "...");
-}
-
-this.sendOffers(incomingTokens);
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire.1-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" name="ActivityEdgeInstance">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance">
- <body>An activity edge instance is a connection between activity node activations corresponding to an edge between the corresponding nodes of those activations</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-edge" name="edge" visibility="public" association="Semantics-Activities-IntermediateActivities-A_edge_activityEdgeInstance">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-edge-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-edge">
- <body>The activity edge of which this is an instance.
-[This is optional to allow for an implicit fork node execution to be connected to its action execution by an edge instance which does not have a corresponding node in the model.]</body>
- </ownedComment>
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityEdge"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-edge-_lowerValue"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-group" name="group" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup" association="Semantics-Activities-IntermediateActivities-A_edgeInstances_group">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-group-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-group">
- <body>The activity group that contains this activity edge instance. </body>
- </ownedComment>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-source" name="source" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" association="Semantics-Activities-IntermediateActivities-A_source_outgoingEdges">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-source-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-source">
- <body>The source of this activity edge instance.
-The node of the source must be the same as the source of the edge of this edge instance.</body>
- </ownedComment>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-target" name="target" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" association="Semantics-Activities-IntermediateActivities-A_incomingEdges_target">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-target-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-target">
- <body>The target of this activity edge instance.
-The node of the target must be the same as the target of the edge of this edge instance.</body>
- </ownedComment>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-offers" name="offers" visibility="public" type="Semantics-Activities-IntermediateActivities-Offer" association="Semantics-Activities-IntermediateActivities-A_offers_activityEdgeInstance">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-offers-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-offers-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer" name="sendOffer" specification="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer-tokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer-tokens-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Send an offer from the source to the target.
-// Keep the offered tokens until taken by the target.
-// (Note that any one edge should only be handling either all object tokens or all control tokens.)
-
-Offer offer = new Offer();
-
-for (int i = 0; i < tokens.size(); i++) {
- Token token = tokens.getValue(i);
- // Debug.println("[sendOffer] token value = " + token.getValue());
- offer.offeredTokens.addValue(token);
-}
-
-this.offers.addValue(offer);
-
-this.target.receiveOffer();
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-countOfferedValues" name="countOfferedValues" specification="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-countOfferedValues.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-countOfferedValues-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the number of values being offered in object tokens.
-
-int count = 0;
-OfferList offers = this.offers;
-for (int i = 0; i < offers.size(); i++) {
- count = count + offers.getValue(i).countOfferedValues();
-}
-
-return count;</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens" name="takeOfferedTokens" specification="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Take all the offered tokens and return them.
-
-TokenList tokens = new TokenList();
-
-while (this.offers.size() > 0) {
- TokenList offeredTokens = this.offers.getValue(0).getOfferedTokens();
- for (int i = 0; i < offeredTokens.size(); i++) {
- tokens.addValue(offeredTokens.getValue(i));
- }
- this.offers.removeValue(0);
-}
-
-return tokens;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens1" name="takeOfferedTokens1" specification="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.2" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens1-maxCount" name="maxCount" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Take all the offered tokens, up to the given maximum count of non-null object tokens, and return them.
-
-TokenList tokens = new TokenList();
-int remainingCount = maxCount;
-
-while (this.offers.size() > 0 & remainingCount > 0) {
- Offer offer = this.offers.getValue(0);
- TokenList offeredTokens = offer.getOfferedTokens();
- int count = offer.countOfferedValues();
- if (count <= remainingCount) {
- for (int i = 0; i < offeredTokens.size(); i++) {
- tokens.addValue(offeredTokens.getValue(i));
- }
- remainingCount = remainingCount - count;
- this.offers.removeValue(0);
- } else {
- for (int i = 0; i < remainingCount; i++) {
- Token token = offeredTokens.getValue(i);
- if (token.getValue() != null) {
- tokens.addValue(token);
- }
- }
- offer.removeOfferedValues(remainingCount);
- remainingCount = 0;
- }
-}
-
-return tokens;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens" name="getOfferedTokens" specification="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the offered tokens (after which the tokens will still be offered).
-
-TokenList tokens = new TokenList();
-OfferList offers = this.offers;
-
-for (int i = 0; i < offers.size(); i++) {
- TokenList offeredTokens = offers.getValue(i).getOfferedTokens();
- for (int j = 0; j < offeredTokens.size(); j++) {
- tokens.addValue(offeredTokens.getValue(j));
- }
-}
-
-return tokens;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-hasOffer" name="hasOffer" specification="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-hasOffer.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-hasOffer-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return true if there are any pending offers.
-
-boolean hasTokens = false;
-int i = 1;
-while (!hasTokens & i <= this.offers.size()) {
- hasTokens = this.offers.getValue(i-1).hasTokens();
- i = i + 1;
-}
-
-return hasTokens;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer.1" name="sendOffer" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer.1-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer.1-tokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer.1-tokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-countOfferedValues.1" name="countOfferedValues" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-countOfferedValues">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-countOfferedValues.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.1" name="takeOfferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.2" name="takeOfferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens1">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.2-maxCount" name="maxCount" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.2-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.2-Parameter1-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.2-Parameter1-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens.1" name="getOfferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-hasOffer.1" name="hasOffer" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-hasOffer">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-hasOffer.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution" name="ActivityExecution">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityExecution">
- <body>An activity execution is used to execute a specific activity. The type of the activity execution must be an activity.
-When executed, the activity execution creates activity edge instances for all activity edges, activity node activations for all activity nodes and makes offers to all nodes with no incoming edges.
-Execution terminates when either all node activations are complete, or an activity final node is executed.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-_generalization.0" general="Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-activationGroup" name="activationGroup" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup" aggregation="composite" association="Semantics-Activities-IntermediateActivities-A_activationGroup_activityExecution">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-activationGroup-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityExecution-activationGroup">
- <body>The group of activations of the activity nodes of the activity.</body>
- </ownedComment>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-execute" name="execute" specification="Semantics-Activities-IntermediateActivities-ActivityExecution-execute.1" isReentrant="false">
- <language>Java</language>
- <body>// Execute the activity for this execution by creating an activity node activation group and activating all the activity nodes in the activity.
-// When this is complete, copy the values on the tokens offered by output parameter nodes to the corresponding output parameters.
-
-Activity activity = (Activity)(this.getTypes().getValue(0));
-
-Debug.println("[execute] Activity " + activity.name + "...");
-// Debug.println("[execute] context = " + this.context.objectId());
-Debug.println("[event] Execute activity=" + activity.name);
-
-this.activationGroup = new ActivityNodeActivationGroup();
-this.activationGroup.activityExecution = this;
-this.activationGroup.activate(activity.node, activity.edge);
-
-// Debug.println("[execute] Getting output parameter node activations...");
-
-ActivityParameterNodeActivationList outputActivations = this.activationGroup.getOutputParameterNodeActivations();
-
-// Debug.println("[execute] There are " + outputActivations.size() + " output parameter node activations.");
-
-for (int i = 0; i < outputActivations.size(); i++) {
- ActivityParameterNodeActivation outputActivation = outputActivations.getValue(i);
-
- ParameterValue parameterValue = new ParameterValue();
- parameterValue.parameter = ((ActivityParameterNode)(outputActivation.node)).parameter;
-
- TokenList tokens = outputActivation.getTokens();
- for (int j = 0; j < tokens.size(); j++) {
- Token token = tokens.getValue(j);
- Value value = ((ObjectToken)token).value;
- if (value != null) {
- parameterValue.values.addValue(value);
- Debug.println("[event] Output activity="+ activity.name + " parameter=" + parameterValue.parameter.name + " value=" + value);
- }
- }
-
- this.setParameterValue(parameterValue);
-}
-
-Debug.println("[execute] Activity " + activity.name + " completed.");
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-copy" name="copy" specification="Semantics-Activities-IntermediateActivities-ActivityExecution-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new activity execution that is a copy of this execution.
-// [Note: This currently just returns a non-executing execution for the same activity as this execution.]
-
-return super.copy();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-new_" name="new_" specification="Semantics-Activities-IntermediateActivities-ActivityExecution-new_.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new activity execution with empty properties.
-
-return new ActivityExecution();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-terminate" name="terminate" specification="Semantics-Activities-IntermediateActivities-ActivityExecution-terminate.1" isReentrant="false">
- <language>Java</language>
- <body>// Terminate all node activations (which will ultimately result in the activity execution completing).
-
-this.activationGroup.terminateAll();
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-execute.1" name="execute" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityExecution-execute"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-copy.1" name="copy" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityExecution-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-new_.1" name="new_" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityExecution-new_">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-terminate.1" name="terminate" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityExecution-terminate"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation" name="ActivityFinalNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation">
- <body>An activity final node activation is a control node activation for a node that is an activity final node.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ControlNodeActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire" name="fire" specification="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Terminate the activity execution or structured node activation
-// containing this activation.
-
-Debug.println("[fire] Activity final node " + this.node.name + "...");
-
-if (incomingTokens.size() > 0 | this.incomingEdges.size() == 0) {
- if (this.group.activityExecution != null) {
- this.group.activityExecution.terminate();
- } else if (this.group.containingNodeActivation != null) {
- this.group.containingNodeActivation.terminateAll();
- } else if (this.group instanceof ExpansionActivationGroup){
- ((ExpansionActivationGroup)this.group).regionActivation.terminate();
- }
-}
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire.1-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" name="ActivityNodeActivation" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivation">
- <body>An activity node activation is used to define the behavior of an activity node in the context of a containing activity or structured activity node.
-</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-_ownedComment.1">
- <body>import java.util.Iterator;
-
-import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-_generalization.0" general="Semantics-Loci-LociL1-SemanticVisitor"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-group" name="group" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup" association="Semantics-Activities-IntermediateActivities-A_nodeActivations_group">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-group-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-group">
- <body>The group that contains this activity node activation.</body>
- </ownedComment>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-node" name="node" visibility="public" association="Semantics-Activities-IntermediateActivities-A_node_activityNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-node-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-node">
- <body>The activity node being activated by this activity node activation. The node must be owned by the activity (type) of the activity execution of this node activation.
-[This is optional, to allow for fork node edge queues and implicit fork and join node activations for actions to not have nodes in the model.]</body>
- </ownedComment>
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-node-_lowerValue"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-incomingEdges" name="incomingEdges" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" association="Semantics-Activities-IntermediateActivities-A_incomingEdges_target">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-incomingEdges-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-incomingEdges">
- <body>The set of activity edge instances for the incoming edges of the node.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-incomingEdges-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-incomingEdges-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-outgoingEdges" name="outgoingEdges" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" association="Semantics-Activities-IntermediateActivities-A_source_outgoingEdges">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-outgoingEdges-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-outgoingEdges">
- <body>The set of activity edge instances for the outgoing edges of the node.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-outgoingEdges-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-outgoingEdges-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-running" name="running" visibility="public">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-running-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-running">
- <body>If true, this node activation is enabled for execution once all its other prerequesites are satisfied.</body>
- </ownedComment>
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-heldTokens" name="heldTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" aggregation="composite" association="Semantics-Activities-IntermediateActivities-A_heldTokens_holder">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-heldTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-heldTokens-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-run" name="run" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-run.1" isReentrant="false">
- <language>Java</language>
- <body>// Run the activation of this node.
-
-if (this.node != null) {
- Debug.println("[run] node = " + this.node.name);
-} else {
- Debug.println("[run] Anonymous activation of type " + this.getClass().getName());
-}
-
-this.running = true;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-receiveOffer" name="receiveOffer" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-receiveOffer.1" isReentrant="false">
- <language>Java</language>
- <body>// Receive an offer from an incoming edge.
-// Check if all prerequisites have been satisfied. If so, fire.
-
-if (this.node != null) {
- Debug.println("[receiveOffer] node = " + this.node.name);
-}
-
-_beginIsolation();
-
- boolean ready = this.isReady();
-
- TokenList tokens = new TokenList();
- if (ready) {
- Debug.println("[receiveOffer] Firing.");
- tokens = this.takeOfferedTokens();
- }
-
-_endIsolation();
-
-if (ready) {
- this.fire(tokens);
-}
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens" name="takeOfferedTokens" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get tokens from all incoming edges.
-
-TokenList allTokens = new TokenList();
-ActivityEdgeInstanceList incomingEdges = this.incomingEdges;
-for (int i = 0; i < incomingEdges.size(); i++) {
- ActivityEdgeInstance incomingEdge = incomingEdges.getValue(i);
- TokenList tokens = incomingEdge.takeOfferedTokens();
- for (int j = 0; j < tokens.size(); j ++) {
- Token token = tokens.getValue(j);
- allTokens.addValue(token);
- }
-}
-
-return allTokens;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers" name="sendOffers" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers-tokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers-tokens-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Send offers for the given set of tokens over all outgoing edges (if there are any tokens actually being offered).
-
-if (tokens.size()>0) {
-
- // *** Send all outgoing offers concurrently. ***
- ActivityEdgeInstanceList outgoingEdges = this.outgoingEdges;
- for (Iterator i = outgoingEdges.iterator(); i.hasNext();) {
- ActivityEdgeInstance outgoingEdge = (ActivityEdgeInstance)i.next();
- // Debug.println("[sendOffers] Sending offer to " + outgoingEdge.target.node.name + ".");
- outgoingEdge.sendOffer(tokens);
- }
-
-}
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-terminate" name="terminate" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-terminate.1" isReentrant="false">
- <language>Java</language>
- <body>// Terminate the activation of this node.
-
-if (this.running) {
- if (this.node != null) {
- Debug.println("[terminate] node = " + this.node.name);
- } else {
- Debug.println("[terminate] Anonymous activation of type " + this.getClass().getName());
- }
-}
-
-this.running = false;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isReady" name="isReady" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isReady.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isReady-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Check if all the prerequisites for this node have been satisfied.
-// By default, check that this node is running.
-
-return this.isRunning();
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isRunning" name="isRunning" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isRunning.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isRunning-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Test whether this node activation is running.
-
-return this.running;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addOutgoingEdge" name="addOutgoingEdge" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addOutgoingEdge.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addOutgoingEdge-edge" name="edge" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
- <language>Java</language>
- <body>// Add an activity edge instance as an outgoing edge of this activity node activation.
-
-edge.source = this;
-this.outgoingEdges.addValue(edge);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addIncomingEdge" name="addIncomingEdge" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addIncomingEdge.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addIncomingEdge-edge" name="edge" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
- <language>Java</language>
- <body>// Add an activity edge instance as an incoming edge of this activity node activation.
-
-edge.target = this;
-this.incomingEdges.addValue(edge);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createNodeActivations" name="createNodeActivations" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createNodeActivations.1" isReentrant="false">
- <language>Java</language>
- <body>// Create node activations for any subnodes of the node for this activation.
-// For most kinds of nodes, this does nothing.
-
-return;
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createEdgeInstances" name="createEdgeInstances" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createEdgeInstances.1" isReentrant="false">
- <language>Java</language>
- <body>// Create edge instances for any edge instances owned by the node for this activation.
-// For most kinds of nodes, this does nothing.
-
-return;
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor" name="isSourceFor" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor-edgeInstance" name="edgeInstance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
- <language>Java</language>
- <body>// Check if this node activation is the effective source for the given edge instance.
-
-return edgeInstance.source == this;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getActivityExecution" name="getActivityExecution" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getActivityExecution.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getActivityExecution-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityExecution" direction="return"/>
- <language>Java</language>
- <body>// Return the activity execution that contains this activity node activation, directly or indirectly.
-
-return this.group.getActivityExecution();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionContext" name="getExecutionContext" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionContext.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionContext-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Object" direction="return"/>
- <language>Java</language>
- <body>// Get the context object for the containing activity execution.
-
-return this.getActivityExecution().context;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionLocus" name="getExecutionLocus" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionLocus.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionLocus-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-Locus" direction="return"/>
- <language>Java</language>
- <body>// Get the locus of the containing activity execution.
-
-return this.getActivityExecution().locus;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation" name="getNodeActivation" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation-node" name="node" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the activity node activation corresponding to the given activity node, in the context of this activity node activation.
-// By default, return this activity node activation, if it is for the given node, otherwise return nothing.
-
-ActivityNodeActivation activation = null;
-if (node == this.node) {
- activation = this;
-}
-
-return activation;</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addToken" name="addToken" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addToken.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addToken-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
- <language>Java</language>
- <body>// Transfer the given token to be held by this node.
-
-if (this.node == null) {
- Debug.println("[addToken] ...");
-} else {
- Debug.println("[addToken] node = " + this.node.name);
-}
-
-Token transferredToken = token.transfer(this);
-// Debug.println("[addToken] Adding token with value = " + transferredToken.getValue());
-this.heldTokens.addValue(transferredToken);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken" name="removeToken" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
- <language>Java</language>
- <body>// Remove the given token, if it is held by this node activation.
-// Return the position (counting from 1) of the removed token (0 if there is none removed).
-
-boolean notFound = true;
-int i = 1;
-while (notFound & i <= this.heldTokens.size()) {
- if (this.heldTokens.getValue(i-1) == token) {
- if (this.node == null) {
- Debug.println("[removeToken] ...");
- } else {
- Debug.println("[removeToken] node = " + this.node.name);
- }
- this.heldTokens.remove(i-1);
- notFound = false;
- }
- i = i + 1;
-}
-
-if (notFound) {
- i = 0;
-} else {
- i = i - 1;
-}
-
-return i ;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens" name="addTokens" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens-tokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens-tokens-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Transfer the given tokens to be the held tokens for this node.
-
-// if (this.node == null) {
-// Debug.println("[addTokens] ...");
-// } else {
-// Debug.println("[addTokens] node = " + this.node.name);
-// }
-
-for (int i = 0; i < tokens.size(); i++) {
- Token token = tokens.getValue(i);
- this.addToken(token);
-}</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens" name="takeTokens" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Take the tokens held by this node activation.
-
-TokenList tokens = this.getTokens();
-this.clearTokens();
-
-return tokens;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-clearTokens" name="clearTokens" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-clearTokens.1" isReentrant="false">
- <language>Java</language>
- <body>// Remove all held tokens.
-
-while (this.heldTokens.size() > 0) {
- this.heldTokens.getValue(0).withdraw();
-}
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens" name="getTokens" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the tokens held by this node activation.
-
-// Debug.println("[getTokens] node = " + this.node.name);
-
-TokenList tokens = new TokenList();
-TokenList heldTokens = this.heldTokens;
-for (int i = 0; i < heldTokens.size(); i++) {
- Token heldToken = heldTokens.getValue(i);
- // Debug.println("[getTokens] token value = " + heldTokens.getValue());
- tokens.addValue(heldToken);
-}
-
-return tokens;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-suspend" name="suspend" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-suspend.1" isReentrant="false">
- <language>Java</language>
- <body>// Suspend this activation within the activation group that contains it.
-
-this.group.suspend(this);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-resume" name="resume" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-resume.1" isReentrant="false">
- <language>Java</language>
- <body>// Resume this activation within the activation group that contains it.
-
-this.group.resume(this);
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-run.1" name="run" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-run"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-receiveOffer.1" name="receiveOffer" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-receiveOffer"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens.1" name="takeOfferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-fire" name="fire" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-fire-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-fire">
- <body>Carry out the main behavior of this activity node.
-</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-fire-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers.1" name="sendOffers" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers.1-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers.1-tokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers.1-tokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-terminate"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isReady">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isReady.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isRunning.1" name="isRunning" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isRunning">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isRunning.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addOutgoingEdge.1" name="addOutgoingEdge" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addOutgoingEdge">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addOutgoingEdge.1-edge" name="edge" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addIncomingEdge.1" name="addIncomingEdge" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addIncomingEdge">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addIncomingEdge.1-edge" name="edge" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createNodeActivations.1" name="createNodeActivations" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createNodeActivations"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createEdgeInstances.1" name="createEdgeInstances" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createEdgeInstances"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor.1" name="isSourceFor" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor.1-edgeInstance" name="edgeInstance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getActivityExecution.1" name="getActivityExecution" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getActivityExecution">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getActivityExecution.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityExecution" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionContext.1" name="getExecutionContext" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionContext">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionContext.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Object" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionLocus.1" name="getExecutionLocus" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionLocus">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionLocus.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-Locus" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation.1" name="getNodeActivation" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation.1-node" name="node" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addToken.1" name="addToken" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addToken">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addToken.1-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken.1" name="removeToken" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken.1-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens.1" name="addTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens.1-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens.1-tokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens.1-tokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens.1" name="takeTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-clearTokens.1" name="clearTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-clearTokens"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens.1" name="getTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-suspend.1" name="suspend" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-suspend"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-resume.1" name="resume" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-resume"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup" name="ActivityNodeActivationGroup">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup">
- <body>An activity node group is a group of nodes that are activated together, either directly in the context of an activity execution, or in the context of </body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-_ownedComment.1">
- <body>import java.util.Iterator;
-
-import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-edgeInstances" name="edgeInstances" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" aggregation="composite" association="Semantics-Activities-IntermediateActivities-A_edgeInstances_group">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-edgeInstances-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-edgeInstances">
- <body>The set of activity edge instances for this group. 
-</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-edgeInstances-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-edgeInstances-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-nodeActivations" name="nodeActivations" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" aggregation="composite" association="Semantics-Activities-IntermediateActivities-A_nodeActivations_group">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-nodeActivations-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-nodeActivations">
- <body>The set of activity node executions for this group. 
-</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-nodeActivations-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-nodeActivations-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activityExecution" name="activityExecution" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityExecution" association="Semantics-Activities-IntermediateActivities-A_activationGroup_activityExecution">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activityExecution-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activityExecution">
- <body>The activity execution to which this group belongs.
-(This will be empty if the group is for a structured activity node activation.)</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activityExecution-_lowerValue"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-containingNodeActivation" name="containingNodeActivation" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation" association="Semantics-Activities-CompleteStructuredActivities-A_activationGroup_containingNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-containingNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-containingNodeActivation">
- <body>The structured activity node activation to which this group belongs.
-(This will be empty if the group is for an activity execution.)</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-containingNodeActivation-_lowerValue"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspendedActivations" name="suspendedActivations" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" association="Semantics-Activities-IntermediateActivities-_packagedElement.32">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspendedActivations-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspendedActivations">
- <body>Activity node activations in this activation group that are suspended waiting for an event occurrence. If an activation group has a containing node activation and any suspended activations, then the containing node activation will also be suspended.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspendedActivations-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspendedActivations-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run" name="run" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run-activations" name="activations" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run-activations-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run-activations-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Run the given node activations and then (concurrently) send an offer to all activations for nodes with no incoming edges within the given set.
-
-for (int i = 0; i < activations.size(); i++) {
- ActivityNodeActivation activation = activations.getValue(i);
- activation.run();
-}
-
-Debug.println("[run] Checking for enabled nodes...");
-
-ActivityNodeActivationList enabledActivations = new ActivityNodeActivationList();
-
-for (int i = 0; i < activations.size(); i++) {
- ActivityNodeActivation activation = activations.getValue(i);
-
- Debug.println("[run] Checking node " + activation.node.name + "...");
-
- if (activation instanceof ActionActivation |
- activation instanceof ControlNodeActivation |
- activation instanceof ActivityParameterNodeActivation) {
-
- boolean isEnabled = this.checkIncomingEdges(activation.incomingEdges, activations);
-
- // For an action activation, also consider incoming edges to input pins
- if (isEnabled & activation instanceof ActionActivation) {
- InputPinList inputPins = ((Action)activation.node).input;
- int j = 1;
- while (j <= inputPins.size() & isEnabled) {
- InputPin inputPin = inputPins.getValue(j-1);
- ActivityEdgeInstanceList inputEdges = ((ActionActivation)activation).getPinActivation(inputPin).incomingEdges;
- isEnabled = this.checkIncomingEdges(inputEdges, activations);
- j = j + 1;
- }
- }
-
- if (isEnabled) {
- Debug.println("[run] Node " + activation.node.name + " is enabled.");
- enabledActivations.addValue(activation);
- }
- }
-}
-
-// Debug.println("[run] " + enabledActivations.size() + " node(s) are enabled.");
-
-// *** Send offers to all enabled nodes concurrently. ***
-for (Iterator i = enabledActivations.iterator(); i.hasNext();) {
- ActivityNodeActivation activation = (ActivityNodeActivation)i.next();
- Debug.println("[run] Sending offer to node " + activation.node.name + ".");
- activation.receiveOffer();
-}</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges" name="checkIncomingEdges" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges-incomingEdges" name="incomingEdges" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges-incomingEdges-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges-incomingEdges-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges-activations" name="activations" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges-activations-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges-activations-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Check if any incoming edges have a source in a given set of activations.
-
-int j = 1;
-boolean notFound = true;
-
-while (j <= incomingEdges.size() & notFound) {
- int k = 1;
- while (k <= activations.size() & notFound) {
- if (activations.getValue(k-1).isSourceFor(incomingEdges.getValue(j-1))) {
- notFound = false;
- }
- k = k + 1;
- }
- j = j + 1;
-}
-
-return notFound;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes" name="runNodes" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes-nodes" name="nodes" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes-nodes-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes-nodes-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Run the node activations associated with the given nodes in this activation group.
-
-ActivityNodeActivationList nodeActivations = new ActivityNodeActivationList();
-
-for (int i = 0; i < nodes.size(); i++) {
- ActivityNode node = nodes.getValue(i);
- ActivityNodeActivation nodeActivation = this.getNodeActivation(node);
- if (nodeActivation != null) {
- nodeActivations.addValue(nodeActivation);
- }
-}
-
-this.run(nodeActivations);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate" name="activate" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate-nodes" name="nodes" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate-nodes-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate-nodes-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate-edges" name="edges" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityEdge"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate-edges-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate-edges-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Activate and run the given set of nodes with the given set of edges, within this activation group.
-
-this.createNodeActivations(nodes);
-this.createEdgeInstances(edges);
-this.run(this.nodeActivations);
-
-// Debug.println("[activate] Exiting.");
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-terminateAll" name="terminateAll" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-terminateAll.1" isReentrant="false">
- <language>Java</language>
- <body>// Terminate all node activations in the group.
-
-Debug.println("[terminateAll] Terminating activation group for " +
- (this.activityExecution != null? "activity " + this.activityExecution.getTypes().getValue(0).name:
- this.containingNodeActivation != null? "node " + this.containingNodeActivation.node.name:
- "expansion region") + ".");
-
-ActivityNodeActivationList nodeActivations = this.nodeActivations;
-for (int i = 0; i < nodeActivations.size(); i++) {
- ActivityNodeActivation nodeActivation = nodeActivations.getValue(i);
- nodeActivation.terminate();
-}
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations" name="createNodeActivations" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations-nodes" name="nodes" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations-nodes-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations-nodes-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Add activity node activations for the given set of nodes to this group and create edge instances between them.
-
-for (int i = 0; i < nodes.size(); i++) {
- ActivityNode node = nodes.getValue(i);
-
- Debug.println("[createNodeActivations] Creating a node activation for " + node.name + "...");
- this.createNodeActivation(node);
-
-}
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation" name="createNodeActivation" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation-node" name="node" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return"/>
- <language>Java</language>
- <body>// Create an activity node activation for a given activity node in this activity node activation group.
-
-ActivityNodeActivation activation = (ActivityNodeActivation)(this.getActivityExecution().locus.factory.instantiateVisitor(node));
-activation.node = node;
-activation.running = false;
-
-this.addNodeActivation(activation);
-
-activation.createNodeActivations();
-
-return activation;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addNodeActivation" name="addNodeActivation" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addNodeActivation.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addNodeActivation-activation" name="activation" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
- <language>Java</language>
- <body>// Add the given node activation to this group.
-
-activation.group = this;
-this.nodeActivations.addValue(activation);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation" name="getNodeActivation" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation-node" name="node" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the node activation (if any) in this group,
-// or any nested group, corresponding to the given activity node.
-// If this is a group for a structured activity node activation,
-// also include the pin activations for that node activation.
-
-ActivityNodeActivation activation = null;
-
-if (this.containingNodeActivation != null && node instanceof Pin) {
- activation = this.containingNodeActivation.getPinActivation((Pin)node);
-}
-
-if (activation == null) {
- int i = 1;
- while (activation == null & i <= this.nodeActivations.size()) {
- activation = this.nodeActivations.getValue(i-1).getNodeActivation(node);
- i = i + 1;
- }
-}
-
-return activation;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances" name="createEdgeInstances" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances-edges" name="edges" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityEdge"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances-edges-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances-edges-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Create instance edges for the given activity edges, as well as for edge instances within any nodes activated in this group.
-
-for (int i = 0; i < edges.size(); i++) {
- ActivityEdge edge = edges.getValue(i);
-
- Debug.println("[createEdgeInstances] Creating an edge instance from " + edge.source.name + " to " + edge.target.name + ".");
-
- ActivityEdgeInstance edgeInstance = new ActivityEdgeInstance();
- edgeInstance.edge = edge;
-
- this.addEdgeInstance(edgeInstance);
- this.getNodeActivation(edge.source).addOutgoingEdge(edgeInstance);
- this.getNodeActivation(edge.target).addIncomingEdge(edgeInstance);
-
- // Debug.println("[createEdgeInstances] Edge instance created...");
-}
-
-ActivityNodeActivationList nodeActivations = this.nodeActivations;
-for (int i = 0; i < nodeActivations.size(); i++) {
- ActivityNodeActivation nodeActivation = nodeActivations.getValue(i);
- nodeActivation.createEdgeInstances();
-}
-
-// Debug.println("[createEdgeInstances] Done creating edge instances.");
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addEdgeInstance" name="addEdgeInstance" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addEdgeInstance.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addEdgeInstance-instance" name="instance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
- <language>Java</language>
- <body>// Add the given edge instance to this group.
-
-instance.group = this;
-this.edgeInstances.addValue(instance);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getActivityExecution" name="getActivityExecution" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getActivityExecution.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getActivityExecution-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityExecution" direction="return"/>
- <language>Java</language>
- <body>// Return the activity execution to which this group belongs, directly or indirectly.
-
-ActivityExecution activityExecution = this.activityExecution;
-if (activityExecution == null) {
- activityExecution = this.containingNodeActivation.group.getActivityExecution();
-}
-
-// Debug.println("[getActivityExecution] activityExecution = " + activityExecution);
-
-return activityExecution;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations" name="getOutputParameterNodeActivations" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the set of all activations in this group of activity parameter nodes for output (inout, out and return) parameters.
-
-ActivityParameterNodeActivationList parameterNodeActivations = new ActivityParameterNodeActivationList();
-ActivityNodeActivationList nodeActivations = this.nodeActivations;
-for (int i = 0; i < nodeActivations.size(); i++) {
- ActivityNodeActivation activation = nodeActivations.getValue(i);
- if (activation instanceof ActivityParameterNodeActivation) {
- ParameterDirectionKind direction = ((ActivityParameterNode)(activation.node)).parameter.direction;
- if (activation.incomingEdges.size() > 0) {
- parameterNodeActivations.addValue((ActivityParameterNodeActivation)activation);
- }
- }
-}
-
-return parameterNodeActivations;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-hasSourceFor" name="hasSourceFor" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-hasSourceFor.1" isReentrant="false">
- <language>Java</language>
- <body>// Returns true if this activation group has a node activation
-// corresponding to the source of the given edge instance.
-
-boolean hasSource = false;
-ActivityNodeActivationList activations = this.nodeActivations;
-int i = 1;
-while (!hasSource & i <= activations.size()) {
- hasSource = activations.getValue(i-1).isSourceFor(edgeInstance);
- i = i + 1;
-}
-return hasSource;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-isSuspended" name="isSuspended" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-isSuspended.1" isReentrant="false">
- <language>Java</language>
- <body>// Check if this activitation group has any suspended activations and is,
-// therefore, itself suspended.
-
-return this.suspendedActivations.size() > 0;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspend" name="suspend" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspend.1" isReentrant="false">
- <language>Java</language>
- <body>// Suspend the given activation in this activation group. If this is
-// the only suspended activation, and the activation group has a
-// containing node activation, then suspend that containing activation.
-
-if (!this.isSuspended()) {
- StructuredActivityNodeActivation containingNodeActivation = this.containingNodeActivation;
- if (containingNodeActivation != null) {
- containingNodeActivation.suspend();
- }
-}
-this.suspendedActivations.addValue(activation);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-resume" name="resume" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-resume.1" isReentrant="false">
- <language>Java</language>
- <body>// Resume the given activation by removing it from the suspended
-// activation list for this activation group. If this is the last
-// suspended activation, and the activation group has a containing
-// node activation, then resume that containing activation.
-
-boolean found = false;
-int i = 1;
-while (!found & i <= this.suspendedActivations.size()) {
- if (this.suspendedActivations.get(i-1) == activation) {
- this.suspendedActivations.removeValue(i-1);
- found = true;
- }
- i = i + 1;
-}
-if (!this.isSuspended()) {
- StructuredActivityNodeActivation containingNodeActivation = this.containingNodeActivation;
- if (containingNodeActivation != null) {
- containingNodeActivation.resume();
- }
-}
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run.1" name="run" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run.1-activations" name="activations" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run.1-activations-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run.1-activations-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1" name="checkIncomingEdges" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1-incomingEdges" name="incomingEdges" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1-incomingEdges-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1-incomingEdges-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1-activations" name="activations" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1-activations-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1-activations-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes.1" name="runNodes" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes.1-nodes" name="nodes" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes.1-nodes-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes.1-nodes-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1" name="activate" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1-nodes" name="nodes" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1-nodes-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1-nodes-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1-edges" name="edges" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityEdge"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1-edges-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1-edges-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-terminateAll.1" name="terminateAll" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-terminateAll"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations.1" name="createNodeActivations" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations.1-nodes" name="nodes" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations.1-nodes-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations.1-nodes-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation.1" name="createNodeActivation" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation.1-node" name="node" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addNodeActivation.1" name="addNodeActivation" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addNodeActivation">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addNodeActivation.1-activation" name="activation" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation.1" name="getNodeActivation" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation.1-node" name="node" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances.1" name="createEdgeInstances" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances.1-edges" name="edges" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityEdge"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances.1-edges-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances.1-edges-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addEdgeInstance.1" name="addEdgeInstance" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addEdgeInstance">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addEdgeInstance.1-instance" name="instance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getActivityExecution.1" name="getActivityExecution" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getActivityExecution">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getActivityExecution.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityExecution" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations.1" name="getOutputParameterNodeActivations" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-hasSourceFor.1" name="hasSourceFor" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-hasSourceFor">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-hasSourceFor.1-edgeInstance" name="edgeInstance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-hasSourceFor.1-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-isSuspended.1" name="isSuspended" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-isSuspended">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-isSuspended.1-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspend.1" name="suspend" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspend">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspend.1-activation" name="activation" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-resume.1" name="resume" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-resume">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-resume.1-activation" name="activation" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation" name="ActivityParameterNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation">
- <body>An activity parameter node activation is an object node activation for a node that is an activity parameter node.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ObjectNodeActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire" name="fire" specification="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// If there are no incoming edges, this is an activation of an input activity parameter node.
-// Get the values from the input parameter indicated by the activity parameter node and offer those values as object tokens.
-
-if (this.node.incoming.size() == 0) {
- Debug.println("[fire] Input activity parameter node " + this.node.name + "...");
- Parameter parameter = ((ActivityParameterNode)(this.node)).parameter;
- ParameterValue parameterValue = this.getActivityExecution().getParameterValue(parameter);
- // Debug.println("[fire] parameter = " + parameter.name);
- if (parameterValue != null) {
- Debug.println("[fire] Parameter has " + parameterValue.values.size() + " value(s).");
- TokenList tokens = new TokenList();
- ValueList values = parameterValue.values;
- for (int i = 0; i < values.size(); i++) {
- Value value = values.getValue(i);
- ObjectToken token = new ObjectToken();
- token.value = value;
- this.addToken(token);
- }
- this.sendUnofferedTokens();
- }
-}
-
-// If there are one or more incoming edges, this is an activation of an output activity parameter node.
-// Take the tokens offered on incoming edges and add them to the set of tokens being offered.
-// [Note that an output activity parameter node may fire multiple times, accumulating tokens offered to it.]
-
-else {
- Debug.println("[fire] Output activity parameter node " + this.node.name + "...");
- this.addTokens(incomingTokens);
-}
-
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-clearTokens" name="clearTokens" specification="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-clearTokens.1" isReentrant="false">
- <language>Java</language>
- <body>// Clear all held tokens only if this is an input parameter node.
-
-if (this.node.incoming.size() == 0) {
- super.clearTokens();
-}
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire.1-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-clearTokens.1" name="clearTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-clearTokens"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_nodeActivations_group" name="A_nodeActivations_group" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-group Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-nodeActivations"/>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_edgeInstances_group" name="A_edgeInstances_group" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-group Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-edgeInstances"/>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_heldTokens_holder" name="A_heldTokens_holder" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-Token-holder Semantics-Activities-IntermediateActivities-ActivityNodeActivation-heldTokens"/>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_node_activityNodeActivation" name="A_node_activityNodeActivation" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-A_node_activityNodeActivation-_ownedEnd.0 Semantics-Activities-IntermediateActivities-ActivityNodeActivation-node">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-A_node_activityNodeActivation-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" association="Semantics-Activities-IntermediateActivities-A_node_activityNodeActivation">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-A_node_activityNodeActivation-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-A_node_activityNodeActivation-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_incomingEdges_target" name="A_incomingEdges_target" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-target Semantics-Activities-IntermediateActivities-ActivityNodeActivation-incomingEdges"/>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_activationGroup_activityExecution" name="A_activationGroup_activityExecution" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activityExecution Semantics-Activities-IntermediateActivities-ActivityExecution-activationGroup"/>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_edge_activityEdgeInstance" name="A_edge_activityEdgeInstance" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-A_edge_activityEdgeInstance-_ownedEnd.0 Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-edge">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-A_edge_activityEdgeInstance-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" association="Semantics-Activities-IntermediateActivities-A_edge_activityEdgeInstance">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-A_edge_activityEdgeInstance-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-A_edge_activityEdgeInstance-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_source_outgoingEdges" name="A_source_outgoingEdges" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-outgoingEdges Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-source"/>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_offers_activityEdgeInstance" name="A_offers_activityEdgeInstance" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-A_offers_activityEdgeInstance-_ownedEnd.0 Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-offers">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-A_offers_activityEdgeInstance-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" association="Semantics-Activities-IntermediateActivities-A_offers_activityEdgeInstance">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-A_offers_activityEdgeInstance-_ownedEnd.0-_lowerValue"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_decisionInputExecution_decisionNodeActivation" name="A_decisionInputExecution_decisionNodeActivation" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-A_decisionInputExecution_decisionNodeActivation-_ownedEnd.0 Semantics-Activities-IntermediateActivities-DecisionNodeActivation-decisionInputExecution">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-A_decisionInputExecution_decisionNodeActivation-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-DecisionNodeActivation" association="Semantics-Activities-IntermediateActivities-A_decisionInputExecution_decisionNodeActivation"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_baseToken_forkedToken" name="A_baseToken_forkedToken" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-A_baseToken_forkedToken-_ownedEnd.0 Semantics-Activities-IntermediateActivities-ForkedToken-baseToken">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-A_baseToken_forkedToken-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-ForkedToken" association="Semantics-Activities-IntermediateActivities-A_baseToken_forkedToken">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-A_baseToken_forkedToken-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-A_baseToken_forkedToken-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_value_objectToken" name="A_value_objectToken" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-A_value_objectToken-_ownedEnd.0 Semantics-Activities-IntermediateActivities-ObjectToken-value">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-A_value_objectToken-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-ObjectToken" association="Semantics-Activities-IntermediateActivities-A_value_objectToken"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_offeredTokens_offer" name="A_offeredTokens_offer" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-A_offeredTokens_offer-_ownedEnd.0 Semantics-Activities-IntermediateActivities-Offer-offeredTokens">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-A_offeredTokens_offer-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-Offer" association="Semantics-Activities-IntermediateActivities-A_offeredTokens_offer">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-A_offeredTokens_offer-_ownedEnd.0-_lowerValue"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation" name="FlowFinalNodeActivation">
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ControlNodeActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-fire" name="fire" specification="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-fire.1" isReentrant="false">
- <language>Java</language>
- <body>// Consume all incoming tokens.
-
-Debug.println("[fire] Flow final node " + this.node.name + "...");
-
-for (int i = 0; i < incomingTokens.size(); i++) {
- Token token = incomingTokens.getValue(i);
- token.withdraw();
-}
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-fire">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-fire.1-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-_packagedElement.32" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-_packagedElement.32-_ownedEnd.0 Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspendedActivations">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-_packagedElement.32-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup" association="Semantics-Activities-IntermediateActivities-_packagedElement.32">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-_packagedElement.32-_ownedEnd.0-_lowerValue"/>
- </ownedEnd>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Activities-ExtraStructuredActivities" name="ExtraStructuredActivities">
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Activities-ExtraStructuredActivities-_packageImport.1" importedPackage="Semantics-Activities-CompleteStructuredActivities"/>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup" name="ExpansionActivationGroup">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup">
- <body>An expansion activation group is an activity node activation group used for activating nodes inside an expansion region.
-It functions just like a normal activation group, except it has output pin activations corresponding to the input pins and the expansion nodes of the expansion region.
-Instances of edges from nodes inside the expansion region that connect to region input pins, input expansion nodes or output expansion nodes are redirected to connect to the corresponding "region input", "group input" or "group output" pin, respectively.
-</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Activities.CompleteStructuredActivities.*;
-import fUML.Syntax.Activities.ExtraStructuredActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.CommonBehaviors.Communications.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Activities.CompleteStructuredActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-_generalization.0" general="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionInputs" name="regionInputs" visibility="public" type="Semantics-Actions-BasicActions-OutputPinActivation" aggregation="composite" association="Semantics-Activities-ExtraStructuredActivities-A_regionInputs_expansionActivationGroup">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionInputs-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionInputs">
- <body>Output pin activations corresponding, in order, to the input pins of the expansion region of this activation group.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionInputs-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionInputs-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupInputs" name="groupInputs" visibility="public" type="Semantics-Actions-BasicActions-OutputPinActivation" aggregation="composite" association="Semantics-Activities-ExtraStructuredActivities-A_groupInputs_expansionActivationGroup">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupInputs-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupInputs">
- <body>Output pin activations corresponding, in order, to the input expansion nodes of the expansion region of this activation group.</body>
- </ownedComment>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupInputs-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionActivation" name="regionActivation" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation" association="Semantics-Activities-ExtraStructuredActivities-A_activationGroups_regionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionActivation-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionActivation">
- <body>The expansion region activation this activation group is for.</body>
- </ownedComment>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupOutputs" name="groupOutputs" visibility="public" type="Semantics-Actions-BasicActions-OutputPinActivation" aggregation="composite" association="Semantics-Activities-ExtraStructuredActivities-A_groupOutputs_expansionActivationGroup">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupOutputs-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupOutputs">
- <body>Output pin activations corresponding, in order, to the output expansion nodes of the expansion region of this activation group.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupOutputs-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupOutputs-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-index" name="index" visibility="public">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-index-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-index">
- <body>The index (starting at 1) of this activation group in the list held by the expansion region activation.</body>
- </ownedComment>
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation" name="getNodeActivation" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation-node" name="node" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- </ownedParameter>
- <language>Java</language>
- <body>// If the given node is an input pin of the expansion region, then return the corresponding region-input output-pin activation.
-// If the given node is an input expansion node of the expansion region, then return the corresponding group-input output-pin activation.
-// If the given node is an output expansion node of the expansion region, then return the corresponding group-output output-pin activation.
-// Otherwise return the node activation from the activation group, as usual.
-
-ExpansionRegion region = (ExpansionRegion)(this.regionActivation.node);
-
-InputPinList inputs = region.input;
-ActivityNodeActivation activation = null;
-
-int i = 1;
-while (activation == null & i <= region.input.size()) {
- if (node == region.input.getValue(i-1)) {
- activation = this.regionInputs.getValue(i-1);
- }
- i = i + 1;
-}
-
-int j = 1;
-while (activation == null & j <= region.inputElement.size()) {
- if (node == region.inputElement.getValue(j - 1)) {
- activation = this.groupInputs.getValue(j - 1);
- }
- j = j + 1;
-}
-
-int k = 1;
-while (activation == null & k <= region.outputElement.size()) {
- if (node == region.outputElement.getValue(k - 1)) {
- activation = this.groupOutputs.getValue(k - 1);
- }
- k = k + 1;
-}
-
-if (activation == null) {
- activation = super.getNodeActivation(node);
-}
-
-return activation;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getActivityExecution" name="getActivityExecution" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getActivityExecution.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getActivityExecution-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityExecution" direction="return"/>
- <language>Java</language>
- <body>// Get the activity execution that contains the expansion region activation for this activation group.
-
-return this.regionActivation.getActivityExecution();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-suspend" name="suspend" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-suspend.1" isReentrant="false">
- <language>Java</language>
- <body>// Suspend the given activation in this activation group. If this is
-// the only suspended activation, then suspend the associated region
-// activation.
-
-if (!this.isSuspended()) {
- this.regionActivation.suspend();
-}
-super.suspend(activation);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-resume" name="resume" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-resume.1" isReentrant="false">
- <language>Java</language>
- <body>// Resume the given activation in this activation group. If this is the
-// last suspended activation, then resume the associated region
-// activation.
-
-super.resume(activation);
-if (!this.isSuspended()) {
- this.regionActivation.resume(this);
-}
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation.1" name="getNodeActivation" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation.1-node" name="node" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getActivityExecution.1" name="getActivityExecution" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getActivityExecution">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getActivityExecution.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityExecution" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-suspend.1" name="suspend" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-suspend">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-suspend.1-activation" name="activation" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-resume.1" name="resume" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-resume">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-resume.1-activation" name="activation" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation" name="ExpansionNodeActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-_ownedComment.0">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Activities.CompleteStructuredActivities.*;
-import fUML.Syntax.Activities.ExtraStructuredActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.CommonBehaviors.Communications.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Activities.CompleteStructuredActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ObjectNodeActivation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire" name="fire" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Take tokens from all incoming edges.
-
-Debug.println("[fire] Expansion node " + this.node.name + "...");
-
-this.addTokens(incomingTokens);
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-receiveOffer" name="receiveOffer" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-receiveOffer.1" isReentrant="false">
- <language>Java</language>
- <body>// Forward the offer on to the expansion region.
-
-this.getExpansionRegionActivation().receiveOffer();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-isReady" name="isReady" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-isReady.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-isReady-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <language>Java</language>
- <body>// An expansion node is always fired by its expansion region.
-
-return false;</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-getExpansionRegionActivation" name="getExpansionRegionActivation" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-getExpansionRegionActivation.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-getExpansionRegionActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation" direction="return"/>
- <language>Java</language>
- <body>// Return the expansion region activation corresponding to this expansion node, in the context of the activity node activation group this expansion node activation is in.
-
-ExpansionNode node = (ExpansionNode)(this.node);
-
-ExpansionRegion region = node.regionAsInput;
-if (region == null) {
- region = node.regionAsOutput;
-}
-
-return (ExpansionRegionActivation)(this.group.getNodeActivation(region));
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire.1-incomingTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-receiveOffer.1" name="receiveOffer" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-receiveOffer"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-isReady">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-isReady.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-getExpansionRegionActivation.1" name="getExpansionRegionActivation" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-getExpansionRegionActivation">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-getExpansionRegionActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation" direction="return"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation" name="ExpansionRegionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation">
- <body>An expansion region activation is an action activation for a node that is an expansion region.
-[Note that even though an expansion region is a structured activity node, an expansion region activation is not a structured activity activation because of the special nature of expansion region behavior.]</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-_ownedComment.1">
- <body>import java.util.Iterator;
-
-import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Activities.CompleteStructuredActivities.*;
-import fUML.Syntax.Activities.ExtraStructuredActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.CommonBehaviors.Communications.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Activities.CompleteStructuredActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-activationGroups" name="activationGroups" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup" aggregation="composite" association="Semantics-Activities-ExtraStructuredActivities-A_activationGroups_regionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-activationGroups-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-activationGroups">
- <body>The set of expansion activation groups for this expansion region activation. One activation group is created corresponding to each token held by the first input expansion node activation for the expansion region.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-activationGroups-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-activationGroups-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputTokens" name="inputTokens" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-TokenSet" aggregation="composite" association="Semantics-Activities-ExtraStructuredActivities-A_inputTokens_expansionRegionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputTokens-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputTokens">
- <body>The tokens taken from each of the input pin activations for this expansion region activation. These are preserved for initializing the region inputs of each of the activation groups.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputTokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputTokens-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputExpansionTokens" name="inputExpansionTokens" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-TokenSet" aggregation="composite" association="Semantics-Activities-ExtraStructuredActivities-A_inputExpansionTokens_expansionRegionActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputExpansionTokens-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputExpansionTokens">
- <body>The tokens taken from each of the input expansion node activations for this expansion region activation. These are preserved for initializing the group input of each of the activation groups.</body>
- </ownedComment>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputExpansionTokens-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-next" name="next" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-next-_lowerValue"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens" name="takeOfferedTokens" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens-OwnedParameter-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens-OwnedParameter-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Take the tokens from the input pin and input expansion node activations and save them.
-
-super.takeOfferedTokens();
-
-ExpansionRegion region = (ExpansionRegion)(this.node);
-InputPinList inputPins = region.input;
-ExpansionNodeList inputElements = region.inputElement;
-
-this.inputTokens.clear();
-this.inputExpansionTokens.clear();
-
-for (int i = 0; i < inputPins.size(); i++) {
- InputPin inputPin = inputPins.getValue(i);
- TokenSet tokenSet = new TokenSet();
- tokenSet.tokens = this.getPinActivation(inputPin).takeTokens();
- this.inputTokens.addValue(tokenSet);
-}
-
-int n = this.numberOfValues();
-
-for (int i = 0; i < inputElements.size(); i++) {
- ExpansionNode inputElement = inputElements.getValue(i);
- ExpansionNodeActivation expansionNodeActivation = this.getExpansionNodeActivation(inputElement);
- expansionNodeActivation.fire(expansionNodeActivation.takeOfferedTokens());
- TokenList tokens = expansionNodeActivation.takeTokens();
- TokenSet tokenSet = new TokenSet();
- int j = 1;
- while (j <= n) {
- tokenSet.tokens.add(tokens.getValue(j-1));
- j = j + 1;
- }
- this.inputExpansionTokens.addValue(tokenSet);
-}
-
-return new TokenList();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doAction" name="doAction" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doAction.1" isReentrant="false">
- <language>Java</language>
- <body>// If the expansion region has mustIsolate=true, then carry out its behavior with isolation.
-// Otherwise just activate it normally.
-
-if (((StructuredActivityNode)(this.node)).mustIsolate) {
- _beginIsolation();
- this.doStructuredActivity();
- _endIsolation();
-} else {
- this.doStructuredActivity();
-}
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doStructuredActivity" name="doStructuredActivity" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doStructuredActivity.1" isReentrant="false">
- <language>Java</language>
- <body>// Create a number of expansion region activation groups equal to the number of values expanded in the region,
-// setting the region inputs and group inputs for each group.
-// Run the body of the region in each group, either iteratively or in parallel.
-// Add the outputs of each activation group to the corresonding output expansion node activations.
-
-ExpansionRegion region = (ExpansionRegion)this.node;
-InputPinList inputPins = region.input;
-ExpansionNodeList inputElements = region.inputElement;
-ExpansionNodeList outputElements = region.outputElement;
-
-this.activationGroups.clear();
-int n = this.inputExpansionTokens.getValue(0).tokens.size();
-int k = 1;
-while (k <= n) {
- ExpansionActivationGroup activationGroup = new ExpansionActivationGroup();
- activationGroup.regionActivation = this;
- activationGroup.index = k;
-
- int j = 1;
- while (j <= inputPins.size()) {
- OutputPinActivation regionInput = new OutputPinActivation();
- regionInput.run();
- activationGroup.regionInputs.addValue(regionInput);
- j = j + 1;
- }
-
- j = 1;
- while (j <= inputElements.size()) {
- OutputPinActivation groupInput = new OutputPinActivation();
- groupInput.run();
- activationGroup.groupInputs.addValue(groupInput);
- j = j + 1;
- }
-
- j = 1;
- while (j <= outputElements.size()) {
- OutputPinActivation groupOutput = new OutputPinActivation();
- groupOutput.run();
- activationGroup.groupOutputs.addValue(new OutputPinActivation());
- j = j + 1;
- }
-
- activationGroup.createNodeActivations(region.node);
- activationGroup.createEdgeInstances(region.edge);
- this.activationGroups.addValue(activationGroup);
-
- k = k + 1;
-}
-
-ExpansionActivationGroupList activationGroups = this.activationGroups;
-
-if (region.mode == ExpansionKind.iterative) {
- Debug.println("[doStructuredActivity] Expansion mode = iterative");
- this.next = 1;
- this.runIterative();
-}
-else if (region.mode == ExpansionKind.parallel) {
- Debug.println("[doStructuredActivity] Expansion mode = parallel");
- this.runParallel();
-}
-
-this.doOutput();
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminate" name="terminate" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminate.1" isReentrant="false">
- <language>Java</language>
- <body>// Terminate the execution of all contained node activations (which completes the performance of the expansion region activation).
-
-ExpansionActivationGroupList activationGroups = this.activationGroups;
-for (int i = 0; i < activationGroups.size(); i++) {
- ExpansionActivationGroup activationGroup = this.activationGroups.getValue(i);
-
- OutputPinActivationList groupOutputs = activationGroup.groupOutputs;
-
- _beginIsolation();
- for (int j = 0; j < groupOutputs.size(); j++) {
- OutputPinActivation groupOutput = groupOutputs.getValue(j);
- groupOutput.fire(groupOutput.takeOfferedTokens());
- }
- activationGroup.terminateAll();
- _endIsolation();
-}
-
-super.terminate();</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-sendOffers" name="sendOffers" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-sendOffers.1" isReentrant="false">
- <language>Java</language>
- <body>// Fire all output expansion nodes and send offers on all outgoing control flows.
-
-ExpansionRegion region = (ExpansionRegion)(this.node);
-
-// *** Send offers from all output expansion nodes concurrently. ***
-ExpansionNodeList outputElements = region.outputElement;
-for (Iterator i = outputElements.iterator(); i.hasNext();) {
- ExpansionNode outputElement = (ExpansionNode)i.next();
- this.getExpansionNodeActivation(outputElement).sendUnofferedTokens();
-}
-
-// Send offers on all outgoing control flows.
-super.sendOffers();
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runGroup" name="runGroup" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runGroup.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runGroup-activationGroup" name="activationGroup" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup"/>
- <language>Java</language>
- <body>// Set up the inputs for the group with the given index, run the group and then fire the group outputs.
-
-if (this.isRunning()) {
- Debug.println("[runGroup] groupInput[0] = " + this.inputExpansionTokens.getValue(0).tokens.getValue(activationGroup.index-1).getValue());
-
- TokenSetList inputTokens = this.inputTokens;
- for (int j = 0; j < inputTokens.size(); j++) {
- TokenSet tokenSet = inputTokens.getValue(j);
- OutputPinActivation regionInput = activationGroup.regionInputs.getValue(j);
- regionInput.clearTokens();
- regionInput.addTokens(tokenSet.tokens);
- regionInput.sendUnofferedTokens();
- }
-
- TokenSetList inputExpansionTokens = this.inputExpansionTokens;
- for (int j = 0; j < inputExpansionTokens.size(); j++) {
- TokenSet tokenSet = inputExpansionTokens.getValue(j);
- OutputPinActivation groupInput = activationGroup.groupInputs.getValue(j);
- groupInput.clearTokens();
- if (tokenSet.tokens.size() >= activationGroup.index) {
- groupInput.addToken(tokenSet.tokens.getValue(activationGroup.index - 1));
- }
- groupInput.sendUnofferedTokens();
- }
-
- activationGroup.run(activationGroup.nodeActivations);
-
- this.terminateGroup(activationGroup);
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation" name="getExpansionNodeActivation" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation-node" name="node" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ExpansionNode"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the expansion node activation corresponding to the given expansion node, in the context of the activity node activation group this expansion region activation is in.
-// [Note: Expansion regions do not own their expansion nodes. Instead, they are own as object nodes by the enclosing activity or group.
-// Therefore, they will already be activated along with their expansion region.]
-
-return (ExpansionNodeActivation)(this.group.getNodeActivation(node));
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-numberOfValues" name="numberOfValues" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-numberOfValues.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-numberOfValues-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the number of values to be acted on by the expansion region of
-// this activation, which is the minimum of the number of values offered
-// to each of the input expansion nodes of the activation.
-
-ExpansionRegion region = (ExpansionRegion) (this.node);
-ExpansionNodeList inputElements = region.inputElement;
-
-int n = this.getExpansionNodeActivation(inputElements.getValue(0))
- .countOfferedValues();
-int i = 2;
-while (i <= inputElements.size()) {
- int count = this.getExpansionNodeActivation(
- inputElements.getValue(i - 1)).countOfferedValues();
- if (count < n) {
- n = count;
- }
- i = i + 1;
-}
-
-return n;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runIterative" name="runIterative" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runIterative.1" isReentrant="false">
- <language>Java</language>
- <body>// Run the body of the region iteratively, either until all activation
-// groups have run or until the region is suspended.
-
-ExpansionActivationGroupList activationGroups = this.activationGroups;
-
-while (this.next <= activationGroups.size() & !this.isSuspended()) {
- ExpansionActivationGroup activationGroup = activationGroups
- .getValue(this.next-1);
- this.runGroup(activationGroup);
- this.next = this.next + 1;
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runParallel" name="runParallel" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runParallel.1" isReentrant="false">
- <language>Java</language>
- <body>// Run the body of the region concurrently.
-
-ExpansionActivationGroupList activationGroups = this.activationGroups;
-
-// *** Activate all groups concurrently. ***
-for (Iterator i = activationGroups.iterator(); i.hasNext();) {
- ExpansionActivationGroup activationGroup = (ExpansionActivationGroup) i
- .next();
- this.runGroup(activationGroup);
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doOutput" name="doOutput" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doOutput.1" isReentrant="false">
- <language>Java</language>
- <body>// Place tokens on the output expansion nodes.
-
-ExpansionRegion region = (ExpansionRegion) this.node;
-ExpansionNodeList outputElements = region.outputElement;
-
-Debug.println("[doOutput] Expansion region " + region.name + " is " +
- (this.isSuspended()? "suspended.": "completed."));
-
-if (!this.isSuspended()) {
- for (int i = 0; i < activationGroups.size(); i++) {
- ExpansionActivationGroup activationGroup = activationGroups
- .getValue(i);
- OutputPinActivationList groupOutputs = activationGroup.groupOutputs;
- for (int j = 0; j < groupOutputs.size(); j++) {
- OutputPinActivation groupOutput = groupOutputs.getValue(j);
- ExpansionNode outputElement = outputElements.getValue(j);
- this.getExpansionNodeActivation(outputElement).addTokens(
- groupOutput.takeTokens());
- }
- }
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminateGroup" name="terminateGroup" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminateGroup.1" isReentrant="false">
- <language>Java</language>
- <body>// Terminate the given activation group, after preserving any group outputs.
-if (this.isRunning() & !this.isSuspended()) {
- OutputPinActivationList groupOutputs = activationGroup.groupOutputs;
- for (int i = 0; i < groupOutputs.size(); i++) {
- OutputPinActivation groupOutput = groupOutputs.getValue(i);
- groupOutput.fire(groupOutput.takeOfferedTokens());
- }
-
- activationGroup.terminateAll();
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-isSuspended" name="isSuspended" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-isSuspended.1" isReentrant="false">
- <language>Java</language>
- <body>// Check if the activation group for this node is suspended.
-
-boolean suspended = false;
-int i = 1;
-while (i <= this.activationGroups.size() & !suspended) {
- ActivityNodeActivationGroup group = this.activationGroups.get(i-1);
- suspended = group.isSuspended();
- i = i + 1;
-}
-
-return suspended;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-resume" name="resume" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-resume.1" isReentrant="false">
- <language>Java</language>
- <body>// Resume an expansion region after the suspension of the given
-// activation group. If the region is iterative, then continue with the
-// iteration. If the region is parallel, and there are no more suspended
-// activation groups, then generate the expansion node output.
-
-ExpansionRegion region = (ExpansionRegion) this.node;
-
-this.resume();
-this.terminateGroup(activationGroup);
-if (region.mode == ExpansionKind.iterative) {
- this.runIterative();
-}
-
-this.doOutput();
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens.1" name="takeOfferedTokens" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens.1-OwnedParameter-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens.1-OwnedParameter-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doAction"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doStructuredActivity.1" name="doStructuredActivity" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doStructuredActivity"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runIterative.1" name="runIterative" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runIterative"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runParallel.1" name="runParallel" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runParallel"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doOutput.1" name="doOutput" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doOutput"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminate"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-sendOffers.1" name="sendOffers" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-sendOffers"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runGroup.1" name="runGroup" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runGroup">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runGroup.1-activationGroup" name="activationGroup" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminateGroup.1" name="terminateGroup" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminateGroup">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminateGroup.1-activationGroup" name="activationGroup" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation.1" name="getExpansionNodeActivation" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation.1-node" name="node" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ExpansionNode"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-numberOfValues.1" name="numberOfValues" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-numberOfValues">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-numberOfValues.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-isSuspended.1" name="isSuspended" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-isSuspended">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-isSuspended.1-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-resume.1" name="resume" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-resume">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-resume.1-activationGroup" name="activationGroup" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_activationGroups_regionActivation" name="A_activationGroups_regionActivation" visibility="private" memberEnd="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionActivation Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-activationGroups"/>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_regionInputs_expansionActivationGroup" name="A_regionInputs_expansionActivationGroup" visibility="private" memberEnd="Semantics-Activities-ExtraStructuredActivities-A_regionInputs_expansionActivationGroup-_ownedEnd.0 Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionInputs">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_regionInputs_expansionActivationGroup-_ownedEnd.0" visibility="private" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup" association="Semantics-Activities-ExtraStructuredActivities-A_regionInputs_expansionActivationGroup">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_regionInputs_expansionActivationGroup-_ownedEnd.0-_lowerValue"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_groupInputs_expansionActivationGroup" name="A_groupInputs_expansionActivationGroup" visibility="private" memberEnd="Semantics-Activities-ExtraStructuredActivities-A_groupInputs_expansionActivationGroup-_ownedEnd.0 Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupInputs">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_groupInputs_expansionActivationGroup-_ownedEnd.0" visibility="private" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup" association="Semantics-Activities-ExtraStructuredActivities-A_groupInputs_expansionActivationGroup">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_groupInputs_expansionActivationGroup-_ownedEnd.0-_lowerValue"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_groupOutputs_expansionActivationGroup" name="A_groupOutputs_expansionActivationGroup" visibility="private" memberEnd="Semantics-Activities-ExtraStructuredActivities-A_groupOutputs_expansionActivationGroup-_ownedEnd.0 Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupOutputs">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_groupOutputs_expansionActivationGroup-_ownedEnd.0" visibility="private" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup" association="Semantics-Activities-ExtraStructuredActivities-A_groupOutputs_expansionActivationGroup">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_groupOutputs_expansionActivationGroup-_ownedEnd.0-_lowerValue"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-ExtraStructuredActivities-TokenSet" name="TokenSet">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-TokenSet-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-TokenSet">
- <body>A set of tokens taken from an input pin activation or input expansion node activation for an expansion region.</body>
- </ownedComment>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-TokenSet-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" association="Semantics-Activities-ExtraStructuredActivities-A_tokens_tokenSet">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-TokenSet-tokens-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-TokenSet-tokens">
- <body>The set of tokens in this input set.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-TokenSet-tokens-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-TokenSet-tokens-_upperValue" value="*"/>
- </ownedAttribute>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_inputTokens_expansionRegionActivation" name="A_inputTokens_expansionRegionActivation" visibility="private" memberEnd="Semantics-Activities-ExtraStructuredActivities-A_inputTokens_expansionRegionActivation-_ownedEnd.0 Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputTokens">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_inputTokens_expansionRegionActivation-_ownedEnd.0" visibility="private" type="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation" association="Semantics-Activities-ExtraStructuredActivities-A_inputTokens_expansionRegionActivation"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_inputExpansionTokens_expansionRegionActivation" name="A_inputExpansionTokens_expansionRegionActivation" visibility="private" memberEnd="Semantics-Activities-ExtraStructuredActivities-A_inputExpansionTokens_expansionRegionActivation-_ownedEnd.0 Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputExpansionTokens">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_inputExpansionTokens_expansionRegionActivation-_ownedEnd.0" visibility="private" type="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation" association="Semantics-Activities-ExtraStructuredActivities-A_inputExpansionTokens_expansionRegionActivation"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_tokens_tokenSet" name="A_tokens_tokenSet" visibility="private" memberEnd="Semantics-Activities-ExtraStructuredActivities-A_tokens_tokenSet-_ownedEnd.0 Semantics-Activities-ExtraStructuredActivities-TokenSet-tokens">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_tokens_tokenSet-_ownedEnd.0" visibility="private" type="Semantics-Activities-ExtraStructuredActivities-TokenSet" association="Semantics-Activities-ExtraStructuredActivities-A_tokens_tokenSet">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_tokens_tokenSet-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_tokens_tokenSet-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Classes" name="Classes">
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Classes-Kernel" name="Kernel">
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Classes-Kernel-_packageImport.0" importedPackage="Semantics-CommonBehaviors-Communications"/>
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Classes-Kernel-_packageImport.1" importedPackage="Semantics-Loci-LociL1"/>
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Classes-Kernel-_packageImport.3" importedPackage="Semantics-CommonBehaviors-BasicBehaviors"/>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-StructuredValue" name="StructuredValue" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-StructuredValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-StructuredValue">
- <body>A structured value is a Value whose type has structural features: a data type (but not a primitive type or enumeration), a class or an association.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-StructuredValue-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-StructuredValue-_generalization.0" general="Semantics-Classes-Kernel-Value"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-StructuredValue-specify" name="specify" specification="Semantics-Classes-Kernel-StructuredValue-specify.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-specify-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return an instance value that specifies this structured value.
-
-// Debug.println("[specify] StructuredValue...");
-
-InstanceValue instanceValue = new InstanceValue();
-InstanceSpecification instance = new InstanceSpecification();
-
-instanceValue.type = null;
-instanceValue.instance = instance;
-
-instance.classifier = this.getTypes();
-
-FeatureValueList featureValues = this.getFeatureValues();
-// Debug.println("[specify] " + featureValues.size() + " feature(s).");
-
-for (int i = 0; i < featureValues.size(); i++) {
- FeatureValue featureValue = featureValues.getValue(i);
-
- Slot slot = new Slot();
- slot.definingFeature = featureValue.feature;
-
- // Debug.println("[specify] feature = " + featureValue.feature.name + ", " + featureValue.values.size() + " value(s).");
-
- ValueList values = featureValue.values;
- for (int j = 0; j < values.size(); j++) {
- Value value = values.getValue(j);
- // Debug.println("[specify] value = " + value);
- slot.value.addValue(value.specify());
- }
-
- instance.slot.addValue(slot);
-}
-
-return instanceValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-StructuredValue-createFeatureValues" name="createFeatureValues" specification="Semantics-Classes-Kernel-StructuredValue-createFeatureValues.1" isReentrant="false">
- <language>Java</language>
- <body>// Create empty feature values for all structural features, direct and inherited, of the types of this structured value.
-
-ClassifierList types = this.getTypes();
-
-for (int i = 0; i < types.size(); i++) {
- Classifier type = types.getValue(i);
- NamedElementList members = type.member;
-
- for (int j = 0; j < members.size(); j++) {
- NamedElement member = members.getValue(j);
- if (member instanceof StructuralFeature) {
- this.setFeatureValue((StructuralFeature)member, new ValueList(), 0);
- }
- }
-}
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StructuredValue-specify.1" name="specify" visibility="public" method="Semantics-Classes-Kernel-StructuredValue-specify">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-specify.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValue" name="getFeatureValue" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-StructuredValue-getFeatureValue">
- <body>Get the feature value associated with the given feature. 
-The given feature must be a structural feature of the type of the structured value.
-</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValue-feature" name="feature" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue" name="setFeatureValue" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-StructuredValue-setFeatureValue">
- <body>Set the value(s) and, optionally, the position index associated with the given feature. 
-The given feature must be a structural feature of the type of the structured value.
-</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue-feature" name="feature" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue-values-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue-values-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue-position" name="position" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue-position-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValues" name="getFeatureValues" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValues-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-StructuredValue-getFeatureValues">
- <body>Return the feature values associated with this structural value.
-</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValues-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValues-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValues-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StructuredValue-createFeatureValues.1" name="createFeatureValues" visibility="public" method="Semantics-Classes-Kernel-StructuredValue-createFeatureValues"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue" name="UnlimitedNaturalValue">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-UnlimitedNaturalValue">
- <body>An unlimited natural value is a primitive value whose type is UnlimitedNatural.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-_generalization.0" general="Semantics-Classes-Kernel-PrimitiveValue"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-value" name="value" visibility="public">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-value-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-UnlimitedNaturalValue-value">
- <body>The actual unlimited natural value.</body>
- </ownedComment>
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-specify" name="specify" specification="Semantics-Classes-Kernel-UnlimitedNaturalValue-specify.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-specify-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return a literal unlimited natural with the value of this unlimited natural value.
-
-LiteralUnlimitedNatural literal = new LiteralUnlimitedNatural();
-
-literal.type = this.type;
-literal.value = this.value;
-
-return literal;</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals" name="equals" specification="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <language>Java</language>
- <body>// Test if this unlimited natural value is equal to the otherValue.
-// To be equal, the otherValue must have the same value as this unlimited natural value.
-
-boolean isEqual = false;
-if (otherValue instanceof UnlimitedNaturalValue) {
- isEqual = ((UnlimitedNaturalValue)otherValue).value == this.value;
-}
-
-return isEqual;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-copy" name="copy" specification="Semantics-Classes-Kernel-UnlimitedNaturalValue-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new unlimited natural value with the same value as this value.
-
-UnlimitedNaturalValue newValue = (UnlimitedNaturalValue)(super.copy());
-
-newValue.value = this.value;
-return newValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-new_" name="new_" specification="Semantics-Classes-Kernel-UnlimitedNaturalValue-new_.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new unlimited natural value with no value.
-
-return new UnlimitedNaturalValue();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-toString" name="toString" specification="Semantics-Classes-Kernel-UnlimitedNaturalValue-toString.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <language>Java</language>
- <body>String stringValue = "*";
-
-if (this.value.naturalValue >= 0) {
- IntegerValue integerValue = new IntegerValue();
- integerValue.value = this.value.naturalValue;
- stringValue = integerValue.toString();
-}
-
-return stringValue;
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-specify.1" name="specify" visibility="public" method="Semantics-Classes-Kernel-UnlimitedNaturalValue-specify">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-specify.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-UnlimitedNaturalValue-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-UnlimitedNaturalValue-new_">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-UnlimitedNaturalValue-toString">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-toString.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-Value" name="Value" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Value-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Value">
- <body>A value is an instance of one or more classifiers, which are its types. A value is always representable using a value specification.
-
-[Note: Value specializes SemanticVisitor to allow the Execution subclass to be a semantic visitor, without requiring multiple generalization of Execution.]</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Value-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-Value-_generalization.0" general="Semantics-Loci-LociL1-SemanticVisitor"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Value-equals" name="equals" specification="Semantics-Classes-Kernel-Value-equals.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <language>Java</language>
- <body>// Test if this value is equal to otherValue. To be equal, this value must have the same type as otherValue.
-// This operation must be overridden in Value subclasses to check for equality of properties defined in those subclasses.
-
-ClassifierList myTypes = this.getTypes();
-ClassifierList otherTypes = otherValue.getTypes();
-
-boolean isEqual = true;
-
-// Debug.println("[equals] Value...");
-// Debug.println("[equals] this has " + myTypes.size() + "types, other has " + otherTypes.size() + ".");
-if (myTypes.size() != otherTypes.size()) {
- isEqual = false;
-
-} else {
- // Debug.println("[equals] " + myTypes.size() + " type(s).");
-
- int i = 1;
- while (isEqual & i <= myTypes.size()) {
-
- // Debug.println("[equals] this type = " + myTypes.getValue(i-1).name);
-
- boolean matched = false;
- int j = 1;
- while (!matched & j <= otherTypes.size()) {
- // Debug.println("[equals] other type = " + otherTypes.getValue(j-1).name);
- matched = (otherTypes.getValue(j-1) == myTypes.getValue(i-1));
- j = j + 1;
- }
-
- isEqual = matched;
- i = i + 1;
- }
-}
-
-return isEqual;</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Value-copy" name="copy" specification="Semantics-Classes-Kernel-Value-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new value that is equal to this value.
-// By default, this operation simply creates a new value with empty properties.
-// It must be overridden in each Value subclass to do the superclass copy and then appropriately set properties defined in the subclass.
-
-return this.new_();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Value-hasType" name="hasType" specification="Semantics-Classes-Kernel-Value-hasType.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-hasType-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-hasType-type" name="type" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Check if this object has the given classifier as a type.
-
-ClassifierList types = this.getTypes();
-
-boolean found = false;
-int i = 1;
-while (!found & i <= types.size()) {
- found = (types.getValue(i-1) == type);
- i = i + 1;
-}
-
-return found;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Value-objectId" name="objectId" specification="Semantics-Classes-Kernel-Value-objectId.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-objectId-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return an identifier for this object.
-// [Non-normative.]
-
-return super.toString();
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-specify" name="specify" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Value-specify-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Value-specify">
- <body>Return a value specification whose evaluation gives a value equal to this value.
-</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-specify-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-Value-equals">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-Value-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-new_" name="new_" visibility="protected" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Value-new_-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Value-new_">
- <body>Create a new value of the same Value subclass as this value, with all properties empty (even if this violates multiplicity constraints). 
-This operation must be defined in each concrete Value subclass to create an instance of that subclass.
-
-</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-getTypes" name="getTypes" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Value-getTypes-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Value-getTypes">
- <body>Gets all the classifiers under which this value is currently classifier.
-</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Value-getTypes-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Value-getTypes-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-hasType.1" name="hasType" visibility="public" method="Semantics-Classes-Kernel-Value-hasType">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-hasType.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-hasType.1-type" name="type" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-toString" name="toString" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Value-toString-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Value-toString">
- <body>Return a string representation of this value.
-</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-objectId.1" name="objectId" visibility="public" method="Semantics-Classes-Kernel-Value-objectId">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-objectId.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-StringValue" name="StringValue">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-StringValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-StringValue">
- <body>A string value is a primitive value whose type is String.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-StringValue-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-StringValue-_generalization.0" general="Semantics-Classes-Kernel-PrimitiveValue"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-StringValue-value" name="value" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-StringValue-specify" name="specify" specification="Semantics-Classes-Kernel-StringValue-specify.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-specify-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return a literal string with the value of this string value.
-
-LiteralString literal = new LiteralString();
-
-literal.type = this.type;
-literal.value = this.value;
-
-return literal;</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-StringValue-equals" name="equals" specification="Semantics-Classes-Kernel-StringValue-equals.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <language>Java</language>
- <body>// Test if this string value is equal to the otherValue.
-// To be equal, the otherValue must have the same value as this string value.
-
-boolean isEqual = false;
-if (otherValue instanceof StringValue) {
- isEqual = ((StringValue)otherValue).value.equals(this.value);
-}
-
-return isEqual;</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-StringValue-copy" name="copy" specification="Semantics-Classes-Kernel-StringValue-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new string value with the same value as this string value.
-
-StringValue newValue = (StringValue)(super.copy());
-
-newValue.value = this.value;
-return newValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-StringValue-new_" name="new_" specification="Semantics-Classes-Kernel-StringValue-new_.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new string value with no value.
-
-return new StringValue();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-StringValue-toString" name="toString" specification="Semantics-Classes-Kernel-StringValue-toString.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <language>Java</language>
- <body>return value;</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StringValue-specify.1" name="specify" visibility="public" method="Semantics-Classes-Kernel-StringValue-specify">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-specify.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StringValue-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-StringValue-equals">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StringValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-StringValue-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StringValue-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-StringValue-new_">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StringValue-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-StringValue-toString">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-toString.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-Reference" name="Reference">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Reference-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Reference">
- <body>A reference is an access path to a specific object. There may be multiple references to the same object.
-As a structured value, the reference acts just the same as its referent in terms of type, features, operations, etc.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Reference-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-Reference-_generalization.0" general="Semantics-Classes-Kernel-StructuredValue"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-Reference-referent" name="referent" visibility="public" type="Semantics-Classes-Kernel-Object" association="Semantics-Classes-Kernel-A_reference_reference"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior" name="startBehavior" specification="Semantics-Classes-Kernel-Reference-startBehavior.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior-classifier" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior-classifier-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior-inputs-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior-inputs-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Asynchronously start the behavior of the given classifier for the referent object.
-
-this.referent.startBehavior(classifier, inputs);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-dispatch" name="dispatch" specification="Semantics-Classes-Kernel-Reference-dispatch.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-dispatch-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-dispatch-operation" name="operation" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Dispatch the given operation to the referent object.
-
-return this.referent.dispatch(operation);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-send" name="send" specification="Semantics-Classes-Kernel-Reference-send.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-send-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
- <language>Java</language>
- <body>// Send the given signal instance to the referent object.
-
-this.referent.send(signalInstance);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-destroy" name="destroy" specification="Semantics-Classes-Kernel-Reference-destroy.1" isReentrant="false">
- <language>Java</language>
- <body>// Destroy the referent.
-
-this.referent.destroy();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-equals" name="equals" specification="Semantics-Classes-Kernel-Reference-equals.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <language>Java</language>
- <body>// Test if this reference is equal to the otherValue.
-// To be equal, the otherValue must also be a reference, with the same referent as this reference.
-
-boolean isEqual = false;
-if (otherValue instanceof Reference) {
- isEqual = (((Reference)otherValue).referent == this.referent);
-}
-
-return isEqual;
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-copy" name="copy" specification="Semantics-Classes-Kernel-Reference-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new reference with the same referent as this reference.
-
-Reference newValue = (Reference)(super.copy());
-
-newValue.referent = this.referent;
-
-return newValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-new_" name="new_" specification="Semantics-Classes-Kernel-Reference-new_.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new reference with no referent.
-
-return new Reference();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-getTypes" name="getTypes" specification="Semantics-Classes-Kernel-Reference-getTypes.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-getTypes-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-getTypes-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the types of the referent object.
-
-return this.referent.getTypes();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValue" name="getFeatureValue" specification="Semantics-Classes-Kernel-Reference-getFeatureValue.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValue-feature" name="feature" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the feature value associated with the given feature in the referent object.
-
-return this.referent.getFeatureValue(feature);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue" name="setFeatureValue" specification="Semantics-Classes-Kernel-Reference-setFeatureValue.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue-feature" name="feature" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue-values-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue-values-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue-position" name="position" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue-position-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Set the values associated with the given feature in the referent object.
-
-this.referent.setFeatureValue(feature, values, position);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues" name="getFeatureValues" specification="Semantics-Classes-Kernel-Reference-getFeatureValues.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the feature values of the referent.
-
-return this.referent.getFeatureValues();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-toString" name="toString" specification="Semantics-Classes-Kernel-Reference-toString.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <language>Java</language>
- <body>return "Reference to " + this.referent.toString();
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior.1" name="startBehavior" visibility="public" method="Semantics-Classes-Kernel-Reference-startBehavior">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior.1-classifier" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior.1-classifier-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior.1-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior.1-inputs-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior.1-inputs-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-dispatch.1" name="dispatch" visibility="public" method="Semantics-Classes-Kernel-Reference-dispatch">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-dispatch.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-dispatch.1-operation" name="operation" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-send.1" name="send" visibility="public" method="Semantics-Classes-Kernel-Reference-send">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-send.1-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-destroy.1" name="destroy" visibility="public" method="Semantics-Classes-Kernel-Reference-destroy"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-Reference-equals">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-Reference-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-Reference-new_">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-getTypes.1" name="getTypes" visibility="public" method="Semantics-Classes-Kernel-Reference-getTypes">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getTypes.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-getTypes.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-getTypes.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValue.1" name="getFeatureValue" visibility="public" method="Semantics-Classes-Kernel-Reference-getFeatureValue">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValue.1-feature" name="feature" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue.1" name="setFeatureValue" visibility="public" method="Semantics-Classes-Kernel-Reference-setFeatureValue">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue.1-feature" name="feature" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue.1-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue.1-values-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue.1-values-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue.1-position" name="position" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue.1-position-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues.1" name="getFeatureValues" visibility="public" method="Semantics-Classes-Kernel-Reference-getFeatureValues">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-Reference-toString">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-toString.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-PrimitiveValue" name="PrimitiveValue" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-PrimitiveValue">
- <body>A primitive value is a value whose (single) type is a primitive type.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-_generalization.0" general="Semantics-Classes-Kernel-Value"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-type" name="type" visibility="public" association="Semantics-Classes-Kernel-A_type_primitiveValue">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-copy" name="copy" specification="Semantics-Classes-Kernel-PrimitiveValue-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new value that is equal to this primitive value.
-
-PrimitiveValue newValue = (PrimitiveValue)(super.copy());
-
-newValue.type = this.type;
-return newValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes" name="getTypes" specification="Semantics-Classes-Kernel-PrimitiveValue-getTypes.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the single primitive type of this value.
-
-ClassifierList types = new ClassifierList();
-types.addValue(this.type);
-return types;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-PrimitiveValue-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes.1" name="getTypes" visibility="public" method="Semantics-Classes-Kernel-PrimitiveValue-getTypes">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-Object" name="Object">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Object-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Object">
- <body>An object is an extensional value that may have multiple types, all of which must be classes. (Note that a destroyed object has no types.)
-An object has a unique identity. Usually, references to objects are manipulated, rather than the objects themselves, and there may be multiple references to the same object.
-If an object is active, it has an object activation that handle the execution of its classifier behavior(s).</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Object-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.CommonBehaviors.Communications.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-Object-_generalization.0" general="Semantics-Classes-Kernel-ExtensionalValue"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-Object-types" name="types" visibility="public" association="Semantics-Classes-Kernel-A_types_object">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Object-types-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Object-types">
- <body>The classes under which this object is currently classified. (A destroyed object has no types.)</body>
- </ownedComment>
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-types-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Object-types-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-Object-objectActivation" name="objectActivation" visibility="public" type="Semantics-CommonBehaviors-Communications-ObjectActivation" aggregation="composite" association="Semantics-Classes-Kernel-A_objectActivation_object">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Object-objectActivation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Object-objectActivation">
- <body>The object activation handling the active behavior of this object.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-objectActivation-_lowerValue"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-startBehavior" name="startBehavior" specification="Semantics-Classes-Kernel-Object-startBehavior.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-startBehavior-classifier" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-startBehavior-classifier-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-startBehavior-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-startBehavior-inputs-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Object-startBehavior-inputs-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Create an object activation for this object (if one does not already exist) and start its behavior(s).
-
-// Debug.println("[startBehavior] On object...");
-
-if (this.objectActivation == null) {
- this.objectActivation = new ObjectActivation();
- this.objectActivation.object = this;
-}
-
-// Debug.println("[startBehavior] objectActivation = " + objectActivation);
-
-this.objectActivation.startBehavior(classifier, inputs);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-dispatch" name="dispatch" specification="Semantics-Classes-Kernel-Object-dispatch.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-dispatch-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-dispatch-operation" name="operation" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Dispatch the given operation to a method execution, using a dispatch strategy.
-
-return ((DispatchStrategy)this.locus.factory.getStrategy("dispatch")).dispatch(this, operation);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-send" name="send" specification="Semantics-Classes-Kernel-Object-send.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-send-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
- <language>Java</language>
- <body>// If the object is active, add the given signal instance to the event pool and signal that a new signal instance has arrived.
-
-if (this.objectActivation != null) {
- this.objectActivation.send(signalInstance);
-}
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-destroy" name="destroy" specification="Semantics-Classes-Kernel-Object-destroy.1" isReentrant="false">
- <language>Java</language>
- <body>// Stop the object activation (if any), clear all types and destroy the object as an extensional value.
-
-Debug.println("[destroy] object = " + this.objectId());
-
-if (this.objectActivation != null) {
- this.objectActivation.stop();
- this.objectActivation = null;
-}
-
-this.types.clear();
-super.destroy();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-register" name="register" specification="Semantics-Classes-Kernel-Object-register.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-register-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
- <language>Java</language>
- <body>// Register the given accept event accepter to wait for a dispatched signal event.
-
-if (this.objectActivation != null) {
- this.objectActivation.register(accepter);
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-unregister" name="unregister" specification="Semantics-Classes-Kernel-Object-unregister.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-unregister-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
- <language>Java</language>
- <body>// Remove the given event accepter for the list of waiting event accepters.
-
-if (this.objectActivation != null) {
- this.objectActivation.unregister(accepter);
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-copy" name="copy" specification="Semantics-Classes-Kernel-Object-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new object that is a copy of this object at the same locus as this object.
-// However, the new object will NOT have any object activation (i.e, its classifier behaviors will not be started).
-
-Object_ newObject = (Object_)(super.copy());
-
-ClassList types = this.types;
-for (int i = 0; i < types.size(); i++) {
- Class type = types.getValue(i);
- newObject.types.addValue(type);
-}
-
-return newObject;
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-new_" name="new_" specification="Semantics-Classes-Kernel-Object-new_.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new object with no type, feature values or locus.
-
-return new Object_();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-getTypes" name="getTypes" specification="Semantics-Classes-Kernel-Object-getTypes.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-getTypes-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Object-getTypes-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the types of this object.
-
-ClassifierList types = new ClassifierList();
-ClassList myTypes = this.types;
-for (int i = 0; i < myTypes.size(); i++) {
- Class type = myTypes.getValue(i);
- types.addValue(type);
-}
-
-return types;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-startBehavior.1" name="startBehavior" visibility="public" method="Semantics-Classes-Kernel-Object-startBehavior">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-startBehavior.1-classifier" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-startBehavior.1-classifier-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-startBehavior.1-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-startBehavior.1-inputs-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Object-startBehavior.1-inputs-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-dispatch.1" name="dispatch" visibility="public" method="Semantics-Classes-Kernel-Object-dispatch">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-dispatch.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-dispatch.1-operation" name="operation" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-send.1" name="send" visibility="public" method="Semantics-Classes-Kernel-Object-send">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-send.1-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-destroy.1" name="destroy" visibility="public" method="Semantics-Classes-Kernel-Object-destroy"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-register.1" name="register" visibility="public" method="Semantics-Classes-Kernel-Object-register">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-register.1-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-unregister.1" name="unregister" visibility="public" method="Semantics-Classes-Kernel-Object-unregister">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-unregister.1-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-Object-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-Object-new_">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-getTypes.1" name="getTypes" visibility="public" method="Semantics-Classes-Kernel-Object-getTypes">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-getTypes.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-getTypes.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Object-getTypes.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation" name="LiteralBooleanEvaluation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-LiteralBooleanEvaluation">
- <body>A boolean evaluation is an evaluation whose specification is a literal boolean.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-_generalization.0" general="Semantics-Classes-Kernel-LiteralEvaluation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate" name="evaluate" specification="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Evaluate a literal boolean, producing a boolean value.
-
-LiteralBoolean literal = (LiteralBoolean)specification;
-BooleanValue booleanValue = new BooleanValue();
-booleanValue.type = this.getType("Boolean");
-booleanValue.value = literal.value;
-
-return booleanValue;
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate.1" name="evaluate" visibility="public" method="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation" name="LiteralEvaluation" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-LiteralEvaluation">
- <body>A literal evaluation is an evaluation whose specification is a Literal Specification.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-_generalization.0" general="Semantics-Classes-Kernel-Evaluation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-getType" name="getType" specification="Semantics-Classes-Kernel-LiteralEvaluation-getType.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-getType-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-getType-builtInTypeName" name="builtInTypeName" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the type of the specification. If that is null, then use the built-in type of the given name.
-
-PrimitiveType type = (PrimitiveType)(this.specification.type);
-
-if (type == null) {
- type = this.locus.factory.getBuiltInType(builtInTypeName);
-}
-
-return type;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-getType.1" name="getType" visibility="public" method="Semantics-Classes-Kernel-LiteralEvaluation-getType">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-getType.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-getType.1-builtInTypeName" name="builtInTypeName" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation" name="LiteralIntegerEvaluation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-LiteralIntegerEvaluation">
- <body>A literal integer evaluation is an evaluation whose specification is a literal integer.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-_generalization.0" general="Semantics-Classes-Kernel-LiteralEvaluation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate" name="evaluate" specification="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Evaluate a literal integer, producing an integer value.
-
-LiteralInteger literal = (LiteralInteger)specification;
-IntegerValue integerValue = new IntegerValue();
-integerValue.type = this.getType("Integer");
-integerValue.value = literal.value;
-
-return integerValue;
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate.1" name="evaluate" visibility="public" method="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation" name="LiteralNullEvaluation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-LiteralNullEvaluation">
- <body>A literal null evaluation is an evaluation whose specification is a literal null.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-_generalization.0" general="Semantics-Classes-Kernel-LiteralEvaluation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate" name="evaluate" specification="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Evaluate a literal null, returning nothing (since a null represents an "absence of any value").
-
-return null;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate.1" name="evaluate" visibility="public" method="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation" name="LiteralStringEvaluation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-LiteralStringEvaluation">
- <body>A literal string evaluation is an evaluation whose specification is a literal string.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-_generalization.0" general="Semantics-Classes-Kernel-LiteralEvaluation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate" name="evaluate" specification="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Evaluate a literal string, producing a string value.
-
-LiteralString literal = (LiteralString)specification;
-StringValue stringValue = new StringValue();
-stringValue.type = this.getType("String");
-stringValue.value = literal.value;
-
-return stringValue;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate.1" name="evaluate" visibility="public" method="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation" name="LiteralUnlimitedNaturalEvaluation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation">
- <body>A literal unlimited natural evaluation is an evaluation whose specification is a literal unlimited natural.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-_generalization.0" general="Semantics-Classes-Kernel-LiteralEvaluation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate" name="evaluate" specification="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Evaluate a literal unlimited natural producing an unlimited natural value.
-
-LiteralUnlimitedNatural literal = (LiteralUnlimitedNatural)specification;
-UnlimitedNaturalValue unlimitedNaturalValue = new UnlimitedNaturalValue();
-unlimitedNaturalValue.type = this.getType("UnlimitedNatural");
-unlimitedNaturalValue.value = literal.value;
-
-return unlimitedNaturalValue;
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate.1" name="evaluate" visibility="public" method="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-Link" name="Link">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Link-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Link">
- <body>A link is an extensional value whose (single) type is an association. (However, if the link has been destroyed, then it has no type.)
-A link must at have most one feature value for each structural feature owned by its type.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Link-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-Link-_generalization.0" general="Semantics-Classes-Kernel-ExtensionalValue"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-Link-type" name="type" visibility="public" association="Semantics-Classes-Kernel-A_type_Link">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Link-type-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Link-type">
- <body>The type of this link.</body>
- </ownedComment>
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Link-type-_lowerValue"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Link-destroy" name="destroy" specification="Semantics-Classes-Kernel-Link-destroy.1" isReentrant="false">
- <language>Java</language>
- <body>// Remove the type of this link and destroy it.
-// Shift the positions of the feature values of any remaining links in
-// the extent of the same association, for ends that are ordered.
-
-Debug.println("[destroy] link = " + this.objectId());
-
-PropertyList ends = this.type.memberEnd;
-ExtensionalValueList extent = this.locus.getExtent(this.type);
-
-for (int i = 0; i < extent.size(); i++) {
- ExtensionalValue otherLink = extent.getValue(i);
- for (int j=0; j < ends.size(); j++) {
- Property end = ends.getValue(j);
- if (end.multiplicityElement.isOrdered) {
- FeatureValue featureValue = otherLink.getFeatureValue(end);
- if (this.getFeatureValue(end).position < featureValue.position) {
- featureValue.position = featureValue.position - 1;
- }
- }
- }
-}
-
-this.type = null;
-super.destroy();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Link-copy" name="copy" specification="Semantics-Classes-Kernel-Link-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new link with the same type, locus and feature values as this link.
-
-Link newValue = (Link)(super.copy());
-
-newValue.type = this.type;
-
-return newValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Link-new_" name="new_" specification="Semantics-Classes-Kernel-Link-new_.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new link with no type or properies.
-
-return new Link();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Link-getTypes" name="getTypes" specification="Semantics-Classes-Kernel-Link-getTypes.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Link-getTypes-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Link-getTypes-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the single type of this link (if any).
-
-ClassifierList types = null;
-
-if (this.type == null) {
- types = new ClassifierList();
-} else {
- types = new ClassifierList();
- types.addValue(this.type);
-}
-
-return types;
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Link-isMatchingLink" name="isMatchingLink" specification="Semantics-Classes-Kernel-Link-isMatchingLink.1" isReentrant="false">
- <language>Java</language>
- <body>// Test whether the given link matches the values of this link on all
-// ends other than the given end.
-
-PropertyList ends = this.type.memberEnd;
-
-boolean matches = true;
-int i = 1;
-while (matches & i <= ends.size()) {
- Property otherEnd = ends.getValue(i - 1);
- if (otherEnd != end &
- !this.getFeatureValue(otherEnd).values.getValue(0).equals(
- link.getFeatureValue(otherEnd).values.getValue(0))) {
- matches = false;
- }
- i = i + 1;
-}
-
-return matches;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Link-getOtherFeatureValues" name="getOtherFeatureValues" specification="Semantics-Classes-Kernel-Link-getOtherFeatureValues.1" isReentrant="false">
- <language>Java</language>
- <body>// Return all feature values for the given end of links in the given
-// extent whose other ends match this link.
-
-FeatureValueList featureValues = new FeatureValueList();
-for (int i = 0; i < extent.size(); i++) {
- ExtensionalValue link = extent.getValue(i);
- if (link != this) {
- if (isMatchingLink(link, end)) {
- featureValues.addValue(link.getFeatureValue(end));
- }
- }
-}
-return featureValues;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Link-addTo" name="addTo" specification="Semantics-Classes-Kernel-Link-addTo.1" isReentrant="false">
- <language>Java</language>
- <body>// Add this link to the extent of its association at the given locus.
-// Shift the positions of ends of other links, as appropriate, for ends
-// that are ordered.
-
-Debug.println("[addTo] link = " + this.objectId());
-
-PropertyList ends = this.type.memberEnd;
-ExtensionalValueList extent = locus.getExtent(this.type);
-
-for (int i = 0; i < ends.size(); i++) {
- Property end = ends.getValue(i);
- if (end.multiplicityElement.isOrdered) {
- FeatureValue featureValue = this.getFeatureValue(end);
- FeatureValueList otherFeatureValues =
- this.getOtherFeatureValues(extent, end);
- int n = otherFeatureValues.size();
- if (featureValue.position < 0 | featureValue.position > n) {
- featureValue.position = n + 1;
- } else {
- if (featureValue.position == 0) {
- featureValue.position = 1;
- }
- for (int j = 0; j < otherFeatureValues.size(); j++) {
- FeatureValue otherFeatureValue = otherFeatureValues.getValue(j);
- if (featureValue.position <= otherFeatureValue.position) {
- otherFeatureValue.position = otherFeatureValue.position + 1;
- }
- }
- }
- }
-}
-
-locus.add(this);
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Link-destroy.1" name="destroy" visibility="public" method="Semantics-Classes-Kernel-Link-destroy"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Link-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-Link-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Link-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-Link-new_">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Link-getTypes.1" name="getTypes" visibility="public" method="Semantics-Classes-Kernel-Link-getTypes">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-getTypes.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Link-getTypes.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Link-getTypes.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Link-isMatchingLink.1" name="isMatchingLink" visibility="public" method="Semantics-Classes-Kernel-Link-isMatchingLink">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-isMatchingLink.1-link" name="link" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-isMatchingLink.1-end" name="end" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-isMatchingLink.1-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Link-getOtherFeatureValues.1" name="getOtherFeatureValues" visibility="public" method="Semantics-Classes-Kernel-Link-getOtherFeatureValues">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-getOtherFeatureValues.1-extent" name="extent" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Link-getOtherFeatureValues.1-extent-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Link-getOtherFeatureValues.1-extent-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-getOtherFeatureValues.1-end" name="end" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Link-addTo.1" name="addTo" visibility="public" method="Semantics-Classes-Kernel-Link-addTo">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-addTo.1-locus" name="locus" visibility="public" type="Semantics-Loci-LociL1-Locus"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation" name="InstanceValueEvaluation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-InstanceValueEvaluation">
- <body>An instance value evaluation is an evaluation whose specification is an instance value. </body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-_generalization.0" general="Semantics-Classes-Kernel-Evaluation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate" name="evaluate" specification="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// If the instance specification is for an enumeration, then return the identified enumeration literal.
-// If the instance specification is for a data type (but not a primitive value or an enumeration), then create a data value of the given data type.
-// If the instance specification is for an object, then create an object at the current locus with the specified types.
-// Set each feature of the created value to the result of evaluating the value specifications for the specified slot for the feature.
-
-// Debug.println("[evaluate] InstanceValueEvaluation...");
-
-InstanceSpecification instance = ((InstanceValue)this.specification).instance;
-ClassifierList types = instance.classifier;
-Classifier myType = types.getValue(0);
-
-Debug.println("[evaluate] type = " + myType.name);
-
-Value value;
-if (instance instanceof EnumerationLiteral) {
- // Debug.println("[evaluate] Type is an enumeration.");
- EnumerationValue enumerationValue = new EnumerationValue();
- enumerationValue.type = (Enumeration)myType;
- enumerationValue.literal = (EnumerationLiteral)instance;
- value = enumerationValue;
-}
-else {
- StructuredValue structuredValue = null;
-
- if (myType instanceof DataType) {
- // Debug.println("[evaluate] Type is a data type.");
- DataValue dataValue = new DataValue();
- dataValue.type = (DataType)myType;
- structuredValue = dataValue;
- }
- else {
- Object_ object = null;
- if (myType instanceof Behavior) {
- // Debug.println("[evaluate] Type is a behavior.");
- object = this.locus.factory.createExecution((Behavior)myType, null);
- }
- else {
- // Debug.println("[evaluate] Type is a class.");
- object = new Object_();
- for (int i = 0; i < types.size(); i++) {
- Classifier type = types.getValue(i);
- object.types.addValue((Class)type);
- }
- }
-
- this.locus.add(object);
-
- Reference reference = new Reference();
- reference.referent = object;
- structuredValue = reference;
- }
-
- structuredValue.createFeatureValues();
-
- // Debug.println("[evaluate] " + instance.slot.size() + " slot(s).");
-
- SlotList instanceSlots = instance.slot;
- for (int i = 0; i < instanceSlots.size(); i++) {
- Slot slot = instanceSlots.getValue(i);
- ValueList values = new ValueList();
-
- // Debug.println("[evaluate] feature = " + slot.definingFeature.name + ", " + slot.value.size() + " value(s).");
- ValueSpecificationList slotValues = slot.value;
- for (int j = 0; j < slotValues.size(); j++) {
- ValueSpecification slotValue = slotValues.getValue(j);
- // Debug.println("[evaluate] Value = " + slotValue.getClass().getName());
- values.addValue(this.locus.executor.evaluate(slotValue));
- }
- structuredValue.setFeatureValue(slot.definingFeature, values, 0);
- }
-
- value = structuredValue;
-}
-
-return value;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate.1" name="evaluate" visibility="public" method="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-IntegerValue" name="IntegerValue">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-IntegerValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-IntegerValue">
- <body>An integer value is a primitive value whose type is Integer.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-IntegerValue-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-IntegerValue-_generalization.0" general="Semantics-Classes-Kernel-PrimitiveValue"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-IntegerValue-value" name="value" visibility="public">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-IntegerValue-value-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-IntegerValue-value">
- <body>The actual Integer value.</body>
- </ownedComment>
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-IntegerValue-specify" name="specify" specification="Semantics-Classes-Kernel-IntegerValue-specify.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-specify-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return a literal integer with the value of this integer value.
-
-LiteralInteger literal = new LiteralInteger();
-
-literal.type = this.type;
-literal.value = this.value;
-
-return literal;</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-IntegerValue-equals" name="equals" specification="Semantics-Classes-Kernel-IntegerValue-equals.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <language>Java</language>
- <body>// Test if this integer value is equal to the otherValue.
-// To be equal, the otherValue must have the same value as this integer value.
-
-boolean isEqual = false;
-if (otherValue instanceof IntegerValue) {
- isEqual = ((IntegerValue)otherValue).value == this.value;
-}
-
-return isEqual;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-IntegerValue-copy" name="copy" specification="Semantics-Classes-Kernel-IntegerValue-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new integer value with the same value as this integer value.
-
-IntegerValue newValue = (IntegerValue)(super.copy());
-
-newValue.value = this.value;
-return newValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-IntegerValue-new_" name="new_" specification="Semantics-Classes-Kernel-IntegerValue-new_.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new integer value with no value.
-
-return new IntegerValue();</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-IntegerValue-toString" name="toString" specification="Semantics-Classes-Kernel-IntegerValue-toString.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <language>Java</language>
- <body>String stringValue = "";
-
-if (this.value == 0) {
- stringValue = "0";
-} else {
- int positiveValue = this.value;
-
- if (positiveValue < 0) {
- positiveValue = -positiveValue;
- }
-
- do {
- int digit = positiveValue % 10;
-
- if (digit == 0) {
- stringValue = "0" + stringValue;
- } else if (digit == 1) {
- stringValue = "1" + stringValue;
- } else if (digit == 2) {
- stringValue = "2" + stringValue;
- } else if (digit == 3) {
- stringValue = "3" + stringValue;
- } else if (digit == 4) {
- stringValue = "4" + stringValue;
- } else if (digit == 5) {
- stringValue = "5" + stringValue;
- } else if (digit == 6) {
- stringValue = "6" + stringValue;
- } else if (digit == 7) {
- stringValue = "7" + stringValue;
- } else if (digit == 8) {
- stringValue = "8" + stringValue;
- } else if (digit == 9) {
- stringValue = "9" + stringValue;
- }
-
- positiveValue = positiveValue / 10;
- } while (positiveValue > 0);
-
- if (this.value < 0) {
- stringValue = "-" + stringValue;
- }
-}
-
-return stringValue;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-IntegerValue-specify.1" name="specify" visibility="public" method="Semantics-Classes-Kernel-IntegerValue-specify">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-specify.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-IntegerValue-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-IntegerValue-equals">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-IntegerValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-IntegerValue-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-IntegerValue-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-IntegerValue-new_">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-IntegerValue-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-IntegerValue-toString">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-toString.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-FeatureValue" name="FeatureValue">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-FeatureValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-FeatureValue">
- <body>A feature value gives the value(s) that a single structural feature has in a specific structured value.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-FeatureValue-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-FeatureValue-feature" name="feature" visibility="public" association="Semantics-Classes-Kernel-A_feature_featureValue">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-FeatureValue-feature-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-FeatureValue-feature">
- <body>The structural feature being given value(s).</body>
- </ownedComment>
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-FeatureValue-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value" isOrdered="true" isUnique="false" aggregation="composite" association="Semantics-Classes-Kernel-A_values_featureValue">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-FeatureValue-values-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-FeatureValue-values">
- <body>The values of for the feature. Zero or more values are possible, as constrained by the multiplicity of the feature.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-FeatureValue-values-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-FeatureValue-values-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-FeatureValue-position" name="position" visibility="public">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-FeatureValue-position-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-FeatureValue-position">
- <body>The position of this feature value in a set of ordered values for a feature of an association.
-[This is only relevant if the feature value is for a link and the feature is ordered.]</body>
- </ownedComment>
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-FeatureValue-position-_lowerValue"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-FeatureValue-hasEqualValues" name="hasEqualValues" specification="Semantics-Classes-Kernel-FeatureValue-hasEqualValues.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-FeatureValue-hasEqualValues-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-FeatureValue-hasEqualValues-other" name="other" visibility="public" type="Semantics-Classes-Kernel-FeatureValue"/>
- <language>Java</language>
- <body>// Determine if this feature value has an equal set of values as another feature value.
-// If the feature is ordered, then the values also have to be in the same order.
-
-boolean equal = true;
-
-if (this.values.size() != other.values.size()) {
- equal = false;
-
-} else {
-
- // Debug.println("[hasEqualValues] feature = " + this.feature.name + ", " + this.values.size() + " value(s).");
-
- if (this.feature.multiplicityElement.isOrdered) {
- int i = 1;
- while (equal & i <= this.values.size()) {
- equal = this.values.getValue(i-1).equals(other.values.getValue(i-1));
- i = i + 1;
- }
-
- } else {
- // Note: otherFeatureValues is used here solely as a holder for a copy of the list of other values,
- // since the Java to UML mapping conventions do not allow "remove" on a local list variable.
- FeatureValue otherFeatureValues = new FeatureValue();
- ValueList values = other.values;
- for (int i=0; i < values.size(); i++) {
- Value value = values.getValue(i);
- otherFeatureValues.values.addValue(value);
- }
-
- int i = 1;
- while (equal & i <= this.values.size()) {
- // Debug.println("[hasEqualValues] This value [" + (i-1) + "] = " + this.values.getValue(i-1));
-
- boolean matched = false;
- int j = 1;
- while (!matched & j <= otherFeatureValues.values.size()) {
- if (this.values.getValue(i-1).equals(otherFeatureValues.values.getValue(j-1))) {
- // Debug.println("[hasEqualValues] Other value [" + (j-1) + "] = " + otherFeatureValues.values.getValue(j-1));
- matched = true;
- otherFeatureValues.values.remove(j-1);
- }
- j = j + 1;
- }
-
- equal = matched;
- i = i + 1;
- }
- }
-}
-
-return equal;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-FeatureValue-copy" name="copy" specification="Semantics-Classes-Kernel-FeatureValue-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-FeatureValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return"/>
- <language>Java</language>
- <body>// Create a copy of this feature value.
-
-FeatureValue newValue = new FeatureValue();
-
-newValue.feature = this.feature;
-newValue.position = this.position;
-
-ValueList values = this.values;
-for (int i = 0; i < values.size(); i ++) {
- Value value = values.getValue(i);
- newValue.values.addValue(value.copy());
-}
-
-return newValue;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-FeatureValue-hasEqualValues.1" name="hasEqualValues" visibility="public" method="Semantics-Classes-Kernel-FeatureValue-hasEqualValues">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-FeatureValue-hasEqualValues.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-FeatureValue-hasEqualValues.1-other" name="other" visibility="public" type="Semantics-Classes-Kernel-FeatureValue"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-FeatureValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-FeatureValue-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-FeatureValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-ExtensionalValue" name="ExtensionalValue" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-ExtensionalValue">
- <body>An extensional value is a data value that is part of the extent of some classifier at a specific locus.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-_generalization.0" general="Semantics-Classes-Kernel-CompoundValue"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-locus" name="locus" visibility="public" type="Semantics-Loci-LociL1-Locus" association="Semantics-Classes-Kernel-A_locus_extensionalValues">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-locus-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-ExtensionalValue-locus">
- <body>The locus of the extent of which this value is a member. (If the value has been destroyed, it has no locus.)</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-locus-_lowerValue"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-destroy" name="destroy" specification="Semantics-Classes-Kernel-ExtensionalValue-destroy.1" isReentrant="false">
- <language>Java</language>
- <body>// Remove this value from its locus (if it has not already been destroyed).
-
-if (this.locus != null) {
- this.locus.remove(this);
-}</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-copy" name="copy" specification="Semantics-Classes-Kernel-ExtensionalValue-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new extensional value with the same feature values at the same locus as this one.
-
-ExtensionalValue newValue = (ExtensionalValue)(super.copy());
-
-if (this.locus != null) {
- this.locus.add(newValue);
-}
-
-return newValue;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-destroy.1" name="destroy" visibility="public" method="Semantics-Classes-Kernel-ExtensionalValue-destroy"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-ExtensionalValue-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-Evaluation" name="Evaluation" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Evaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Evaluation">
- <body>An evaluation is used to evaluate a value specification to produce a value.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Evaluation-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-Evaluation-_generalization.0" general="Semantics-Loci-LociL1-SemanticVisitor"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-Evaluation-specification" name="specification" visibility="public" association="Semantics-Classes-Kernel-A_specification_evaluation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Evaluation-specification-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Evaluation-specification">
- <body>The value specification to be evaluated.</body>
- </ownedComment>
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-Evaluation-locus" name="locus" visibility="public" type="Semantics-Loci-LociL1-Locus" association="Semantics-Classes-Kernel-A_locus_evaluation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Evaluation-locus-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Evaluation-locus">
- <body>The locus at which this evaluation is taking place.</body>
- </ownedComment>
- </ownedAttribute>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Evaluation-evaluate" name="evaluate" visibility="public" isAbstract="true" isQuery="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Evaluation-evaluate-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Evaluation-evaluate">
- <body>Evaluate the specification, returning the resulting value.
-</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Evaluation-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Evaluation-evaluate-ReturnResult-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-EnumerationValue" name="EnumerationValue">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-EnumerationValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-EnumerationValue">
- <body>An enumeration value is a value whose (single) type is an enumeration. 
-It's literal must be an owned literal of it's type.
-
-
-</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-EnumerationValue-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-EnumerationValue-_generalization.0" general="Semantics-Classes-Kernel-Value"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-EnumerationValue-literal" name="literal" visibility="public" association="Semantics-Classes-Kernel-A_literal_enumerationValue">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-EnumerationValue-literal-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-EnumerationValue-literal">
- <body>The literal value of this enumeration value.</body>
- </ownedComment>
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#EnumerationLiteral"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-EnumerationValue-type" name="type" visibility="public" association="Semantics-Classes-Kernel-A_type_enumerationValue">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Enumeration"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-EnumerationValue-specify" name="specify" specification="Semantics-Classes-Kernel-EnumerationValue-specify.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-specify-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return an instance value with literal as the instance.
-
-InstanceValue instanceValue = new InstanceValue();
-InstanceSpecification instance = new InstanceSpecification();
-
-instanceValue.type = this.type;
-instanceValue.instance = this.literal;
-
-return instanceValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-EnumerationValue-equals" name="equals" specification="Semantics-Classes-Kernel-EnumerationValue-equals.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <language>Java</language>
- <body>// Test if this enumeration value is equal to the otherValue.
-// To be equal, the otherValue must also be an enumeration value with the same literal as this enumeration value.
-
-boolean isEqual = false;
-if (otherValue instanceof EnumerationValue) {
- isEqual = ((EnumerationValue)otherValue).literal == this.literal;
-}
-
-return isEqual;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-EnumerationValue-copy" name="copy" specification="Semantics-Classes-Kernel-EnumerationValue-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new enumeration value with the same literal as this enumeration value.
-
-EnumerationValue newValue = (EnumerationValue)(super.copy());
-
-newValue.type = this.type;
-newValue.literal = this.literal;
-
-return newValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-EnumerationValue-new_" name="new_" specification="Semantics-Classes-Kernel-EnumerationValue-new_.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new enumeration value with no literal.
-
-return new EnumerationValue();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes" name="getTypes" specification="Semantics-Classes-Kernel-EnumerationValue-getTypes.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the single type of this enumeration value.
-
-ClassifierList types = new ClassifierList();
-types.addValue(this.type);
-
-return types;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-EnumerationValue-toString" name="toString" specification="Semantics-Classes-Kernel-EnumerationValue-toString.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <language>Java</language>
- <body>return literal.name;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-EnumerationValue-specify.1" name="specify" visibility="public" method="Semantics-Classes-Kernel-EnumerationValue-specify">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-specify.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-EnumerationValue-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-EnumerationValue-equals">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-EnumerationValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-EnumerationValue-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-EnumerationValue-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-EnumerationValue-new_">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes.1" name="getTypes" visibility="public" method="Semantics-Classes-Kernel-EnumerationValue-getTypes">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-EnumerationValue-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-EnumerationValue-toString">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-toString.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-DataValue" name="DataValue">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-DataValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-DataValue">
- <body>A data value is a compund value whose (single) type is a data type other than a primitive type or an enumeration.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-DataValue-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-DataValue-_generalization.0" general="Semantics-Classes-Kernel-CompoundValue"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-DataValue-type" name="type" visibility="public" association="Semantics-Classes-Kernel-A_type_dataValue">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-DataValue-type-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-DataValue-type">
- <body>The type of this data value. This must not be a primitive or an enumeration.</body>
- </ownedComment>
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataType"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes" name="getTypes" specification="Semantics-Classes-Kernel-DataValue-getTypes.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the single type of this data value.
-
-ClassifierList types = new ClassifierList();
-types.addValue(this.type);
-
-return types;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-DataValue-copy" name="copy" specification="Semantics-Classes-Kernel-DataValue-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DataValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new data value with the same type and feature values as this data value.
-
-DataValue newValue = (DataValue)(super.copy());
-
-newValue.type = this.type;
-
-return newValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-DataValue-new_" name="new_" specification="Semantics-Classes-Kernel-DataValue-new_.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DataValue-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new data value with no type or feature values.
-
-return new DataValue();</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes.1" name="getTypes" visibility="public" method="Semantics-Classes-Kernel-DataValue-getTypes">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-DataValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-DataValue-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DataValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-DataValue-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-DataValue-new_">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DataValue-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-CompoundValue" name="CompoundValue" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-CompoundValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-CompoundValue">
- <body>A compound value is a structured value with by-value semantics. Values are associated with each structural feature specified by the type(s) of the compound value.
-</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-CompoundValue-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-CompoundValue-_generalization.0" general="Semantics-Classes-Kernel-StructuredValue"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-CompoundValue-featureValues" name="featureValues" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" aggregation="composite" association="Semantics-Classes-Kernel-A_featureValues_compoundValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-CompoundValue-featureValues-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-CompoundValue-featureValues-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-CompoundValue-equals" name="equals" specification="Semantics-Classes-Kernel-CompoundValue-equals.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <language>Java</language>
- <body>// Test if this data value is equal to the otherValue.
-// To be equal, the otherValue must also be a compund value with the same types and equal values for each feature.
-
-// Debug.println("[equals] othervalue instanceof CompoundValue = " + (otherValue instanceof CompoundValue));
-// Debug.println("[equals] super.equals(otherValue) = " + super.equals(otherValue));
-
-boolean isEqual = otherValue instanceof CompoundValue;
-
- if (isEqual) {
-
- CompoundValue otherCompoundValue = (CompoundValue)otherValue;
- // Debug.println("[equals] " + this.featureValues.size() + " feature(s).");
-
- isEqual = super.equals(otherValue) & otherCompoundValue.featureValues.size() == this.featureValues.size();
-
- int i = 1;
- while (isEqual & i <= this.featureValues.size()) {
- FeatureValue thisFeatureValue = this.featureValues.getValue(i-1);
-
- boolean matched = false;
- int j = 1;
- while (!matched & j <= otherCompoundValue.featureValues.size()) {
- FeatureValue otherFeatureValue = otherCompoundValue.featureValues.getValue(j-1);
- if (thisFeatureValue.feature == otherFeatureValue.feature) {
- matched = thisFeatureValue.hasEqualValues(otherFeatureValue);
- }
- j = j + 1;
- }
-
- isEqual = matched;
- i = i + 1;
- }
-}
-
-return isEqual;</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-CompoundValue-copy" name="copy" specification="Semantics-Classes-Kernel-CompoundValue-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new data value with the same featureValues as this data value.
-
-CompoundValue newValue = (CompoundValue)(super.copy());
-
-FeatureValueList featureValues = this.featureValues;
-for (int i = 0; i < featureValues.size(); i++) {
- FeatureValue featureValue = featureValues.getValue(i);
- newValue.featureValues.addValue(featureValue.copy());
-}
-
-return newValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValue" name="getFeatureValue" specification="Semantics-Classes-Kernel-CompoundValue-getFeatureValue.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValue-feature" name="feature" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the value(s) of the member of featureValues for the given feature.
-
-FeatureValue featureValue = null;
-int i = 1;
-while (featureValue == null & i <= this.featureValues.size()) {
- if (this.featureValues.getValue(i-1).feature == feature) {
- featureValue = this.featureValues.getValue(i-1);
- }
- i = i + 1;
-}
-
-return featureValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue" name="setFeatureValue" specification="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue-feature" name="feature" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue-values-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue-values-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue-position" name="position" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue-position-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Set the value(s) of the member of featureValues for the given feature.
-
-FeatureValue featureValue = this.getFeatureValue(feature);
-
-if (featureValue == null) {
- featureValue = new FeatureValue();
- this.featureValues.addValue(featureValue);
-}
-
-featureValue.feature = feature;
-featureValue.values = values;
-featureValue.position = position;
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues" name="getFeatureValues" specification="Semantics-Classes-Kernel-CompoundValue-getFeatureValues.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the feature values for this compound value.
-
-return this.featureValues;
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-CompoundValue-removeFeatureValues" name="removeFeatureValues" specification="Semantics-Classes-Kernel-CompoundValue-removeFeatureValues.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-removeFeatureValues-classifier" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Remove all feature values for features whose type is the given classifier.
-
-int i = 1;
-while (i <= this.featureValues.size()) {
- if (this.featureValues.getValue(i-1).feature.typedElement.type == classifier) {
- this.featureValues.remove(i-1);
- }
- else {
- i = i + 1;
- }
-}
- </body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-CompoundValue-toString" name="toString" specification="Semantics-Classes-Kernel-CompoundValue-toString.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <language>Java</language>
- <body>String buffer = "(" + this.objectId() + ":";
-
-ClassifierList types = this.getTypes();
-
-int i = 1;
-while (i <= types.size()) {
- buffer = buffer +" " + types.getValue(i-1).name;
- i = i + 1;
-}
-
-int k = 1;
-while (k <= this.featureValues.size()) {
- FeatureValue featureValue = this.featureValues.getValue(k-1);
- buffer = buffer + "\n\t\t" + featureValue.feature.name + "[" + featureValue.position + "] =";
-
- int j = 1;
- while (j <= featureValue.values.size()) {
- buffer = buffer + " " + featureValue.values.getValue(j-1).toString();
- j = j + 1;
- }
-
- k = k + 1;
-}
-
-return buffer + ")";
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-CompoundValue-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-CompoundValue-equals">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-CompoundValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-CompoundValue-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValue.1" name="getFeatureValue" visibility="public" method="Semantics-Classes-Kernel-CompoundValue-getFeatureValue">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValue.1-feature" name="feature" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1" name="setFeatureValue" visibility="public" method="Semantics-Classes-Kernel-CompoundValue-setFeatureValue">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1-feature" name="feature" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1-values-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1-values-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1-position" name="position" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1-position-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues.1" name="getFeatureValues" visibility="public" method="Semantics-Classes-Kernel-CompoundValue-getFeatureValues">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-CompoundValue-removeFeatureValues.1" name="removeFeatureValues" visibility="public" method="Semantics-Classes-Kernel-CompoundValue-removeFeatureValues">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-removeFeatureValues.1-classifier" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-CompoundValue-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-CompoundValue-toString">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-toString.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-BooleanValue" name="BooleanValue">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-BooleanValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-BooleanValue">
- <body>A boolean value is a primitive value whose type is Boolean.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-BooleanValue-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-BooleanValue-_generalization.0" general="Semantics-Classes-Kernel-PrimitiveValue"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-BooleanValue-value" name="value" visibility="public">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-BooleanValue-value-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-BooleanValue-value">
- <body>The actual Boolean value.</body>
- </ownedComment>
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-BooleanValue-specify" name="specify" specification="Semantics-Classes-Kernel-BooleanValue-specify.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-specify-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return a literal boolean with the value of this boolean value.
-
-LiteralBoolean literal = new LiteralBoolean();
-
-literal.type = this.type;
-literal.value = this.value;
-
-return literal;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-BooleanValue-equals" name="equals" specification="Semantics-Classes-Kernel-BooleanValue-equals.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <language>Java</language>
- <body>// Test if this boolean value is equal to the otherValue.
-// To be equal, the otherValue must have the same value as this boolean value.
-
-boolean isEqual = false;
-if (otherValue instanceof BooleanValue) {
- isEqual = ((BooleanValue)otherValue).value == this.value;
-}
-
-return isEqual;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-BooleanValue-copy" name="copy" specification="Semantics-Classes-Kernel-BooleanValue-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new boolean value with the same value as this boolean value.
-
-BooleanValue newValue = (BooleanValue)(super.copy());
-
-newValue.value = this.value;
-return newValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-BooleanValue-new_" name="new_" specification="Semantics-Classes-Kernel-BooleanValue-new_.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Return a new boolean value with no value.
-
-return new BooleanValue();</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-BooleanValue-toString" name="toString" specification="Semantics-Classes-Kernel-BooleanValue-toString.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <language>Java</language>
- <body>String stringValue = "false";
-
-if (this.value) {
- stringValue = "true";
-}
-
-return stringValue;
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-BooleanValue-specify.1" name="specify" visibility="public" method="Semantics-Classes-Kernel-BooleanValue-specify">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-specify.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-BooleanValue-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-BooleanValue-equals">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-BooleanValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-BooleanValue-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-BooleanValue-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-BooleanValue-new_">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-BooleanValue-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-BooleanValue-toString">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-toString.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_featureValues_compoundValue" name="A_featureValues_compoundValue" visibility="private" memberEnd="Semantics-Classes-Kernel-A_featureValues_compoundValue-_ownedEnd.0 Semantics-Classes-Kernel-CompoundValue-featureValues">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_featureValues_compoundValue-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-CompoundValue" association="Semantics-Classes-Kernel-A_featureValues_compoundValue"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_type_dataValue" name="A_type_dataValue" visibility="private" memberEnd="Semantics-Classes-Kernel-A_type_dataValue-_ownedEnd.0 Semantics-Classes-Kernel-DataValue-type">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_type_dataValue-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-DataValue" association="Semantics-Classes-Kernel-A_type_dataValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_type_dataValue-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_type_dataValue-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_type_enumerationValue" name="A_type_enumerationValue" visibility="private" memberEnd="Semantics-Classes-Kernel-A_type_enumerationValue-_ownedEnd.0 Semantics-Classes-Kernel-EnumerationValue-type">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_type_enumerationValue-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-EnumerationValue" association="Semantics-Classes-Kernel-A_type_enumerationValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_type_enumerationValue-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_type_enumerationValue-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_literal_enumerationValue" name="A_literal_enumerationValue" visibility="private" memberEnd="Semantics-Classes-Kernel-A_literal_enumerationValue-_ownedEnd.0 Semantics-Classes-Kernel-EnumerationValue-literal">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_literal_enumerationValue-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-EnumerationValue" association="Semantics-Classes-Kernel-A_literal_enumerationValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_literal_enumerationValue-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_literal_enumerationValue-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_specification_evaluation" name="A_specification_evaluation" visibility="private" memberEnd="Semantics-Classes-Kernel-A_specification_evaluation-_ownedEnd.0 Semantics-Classes-Kernel-Evaluation-specification">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_specification_evaluation-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-Evaluation" association="Semantics-Classes-Kernel-A_specification_evaluation">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_specification_evaluation-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_specification_evaluation-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_locus_evaluation" name="A_locus_evaluation" visibility="private" memberEnd="Semantics-Classes-Kernel-A_locus_evaluation-_ownedEnd.0 Semantics-Classes-Kernel-Evaluation-locus">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_locus_evaluation-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-Evaluation" association="Semantics-Classes-Kernel-A_locus_evaluation">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_locus_evaluation-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_locus_evaluation-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_locus_extensionalValues" name="A_locus_extensionalValues" visibility="private" memberEnd="Semantics-Loci-LociL1-Locus-extensionalValues Semantics-Classes-Kernel-ExtensionalValue-locus"/>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_values_featureValue" name="A_values_featureValue" visibility="private" memberEnd="Semantics-Classes-Kernel-A_values_featureValue-_ownedEnd.0 Semantics-Classes-Kernel-FeatureValue-values">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_values_featureValue-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-FeatureValue" association="Semantics-Classes-Kernel-A_values_featureValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_values_featureValue-_ownedEnd.0-_lowerValue"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_feature_featureValue" name="A_feature_featureValue" visibility="private" memberEnd="Semantics-Classes-Kernel-A_feature_featureValue-_ownedEnd.0 Semantics-Classes-Kernel-FeatureValue-feature">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_feature_featureValue-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-FeatureValue" association="Semantics-Classes-Kernel-A_feature_featureValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_feature_featureValue-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_feature_featureValue-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_type_Link" name="A_type_Link" visibility="private" memberEnd="Semantics-Classes-Kernel-A_type_Link-_ownedEnd.0 Semantics-Classes-Kernel-Link-type">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_type_Link-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-Link" association="Semantics-Classes-Kernel-A_type_Link">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_type_Link-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_type_Link-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_objectActivation_object" name="A_objectActivation_object" visibility="private" memberEnd="Semantics-CommonBehaviors-Communications-ObjectActivation-object Semantics-Classes-Kernel-Object-objectActivation"/>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_types_object" name="A_types_object" visibility="private" memberEnd="Semantics-Classes-Kernel-A_types_object-_ownedEnd.0 Semantics-Classes-Kernel-Object-types">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_types_object-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-Object" association="Semantics-Classes-Kernel-A_types_object">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_types_object-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_types_object-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_type_primitiveValue" name="A_type_primitiveValue" visibility="private" memberEnd="Semantics-Classes-Kernel-A_type_primitiveValue-_ownedEnd.0 Semantics-Classes-Kernel-PrimitiveValue-type">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_type_primitiveValue-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-PrimitiveValue" association="Semantics-Classes-Kernel-A_type_primitiveValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_type_primitiveValue-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_type_primitiveValue-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_reference_reference" name="A_reference_reference" visibility="private" memberEnd="Semantics-Classes-Kernel-A_reference_reference-_ownedEnd.0 Semantics-Classes-Kernel-Reference-referent">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_reference_reference-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-Reference" association="Semantics-Classes-Kernel-A_reference_reference">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_reference_reference-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_reference_reference-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-DispatchStrategy" name="DispatchStrategy" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-DispatchStrategy">
- <body>A dispatch strategy is a semantic strategy for the polymorphic dispatching of an operation to an execution of a method for that operation.</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-_generalization.0" general="Semantics-Loci-LociL1-SemanticStrategy"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getName" name="getName" specification="Semantics-Classes-Kernel-DispatchStrategy-getName.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getName-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Dispatch strategies are always named "dispatch".
-
-return "dispatch";
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch" name="dispatch" specification="Semantics-Classes-Kernel-DispatchStrategy-dispatch.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch-object" name="object" visibility="public" type="Semantics-Classes-Kernel-Object"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch-operation" name="operation" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
- <language>Java</language>
- <body>// Get the behavior for the given operation as determined by the type(s) of the given object, compile the behavior at the locus of the object, and return the resulting execution object.
-
-return object.locus.factory.createExecution(this.getMethod(object,operation), object);</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getName.1" name="getName" visibility="public" method="Semantics-Classes-Kernel-DispatchStrategy-getName">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getName.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch.1" name="dispatch" visibility="public" method="Semantics-Classes-Kernel-DispatchStrategy-dispatch">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch.1-object" name="object" visibility="public" type="Semantics-Classes-Kernel-Object"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch.1-operation" name="operation" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getMethod" name="getMethod" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getMethod-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-DispatchStrategy-getMethod">
- <body>// Get the method that corresponds to the given operation for the given object.</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getMethod-object" name="object" visibility="public" type="Semantics-Classes-Kernel-Object"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getMethod-operation" name="operation" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getMethod-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy" name="RedefinitionBasedDispatchStrategy">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy">
- <body>A redefinition-based dispatch strategy is one that requires:
-- each non-abstract operation to have exactly one method 
-- an overriding subclass operation to explicitly redefine the overridden superclass operation.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.CommonBehaviors.Communications.*;
-import fUML.Semantics.Loci.*;
-
-
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-_generalization.0" general="Semantics-Classes-Kernel-DispatchStrategy"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod" name="getMethod" specification="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod-object" name="object" visibility="public" type="Semantics-Classes-Kernel-Object"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod-operation" name="operation" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the method that corresponds to the given operation for the given object.
-// [If there is more than one type with a method for the operation, then the first one is arbitrarily chosen.]
-
-Behavior method = null;
-int i = 1;
-while (method == null & i <= object.types.size()) {
- Class type = object.types.getValue(i-1);
- NamedElementList members = type.member;
- int j = 1;
- while (method == null & j <= members.size()) {
- NamedElement member = members.getValue(j-1);
- if (member instanceof Operation) {
- Operation memberOperation = (Operation)member;
- if (this.operationsMatch(memberOperation, operation)) {
- method = memberOperation.method.getValue(0);
- }
- }
- j = j + 1;
- }
- i = i + 1;
-}
-
-return method;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch" name="operationsMatch" specification="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch-ownedOperation" name="ownedOperation" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch-baseOperation" name="baseOperation" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Check if the owned operation is equal to or a redefinition (directly or indirectly) of the base operation.
-
-boolean matches = false;
-if (ownedOperation == baseOperation) {
- matches = true;
-} else {
- int i = 1;
- while (!matches & i <= ownedOperation.redefinedOperation.size()) {
- matches = this.operationsMatch(ownedOperation.redefinedOperation.getValue(i-1), baseOperation);
- i = i + 1;
- }
-}
-
-return matches;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod.1" name="getMethod" visibility="public" method="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod.1-object" name="object" visibility="public" type="Semantics-Classes-Kernel-Object"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod.1-operation" name="operation" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch.1" name="operationsMatch" visibility="public" method="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch.1-ownedOperation" name="ownedOperation" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch.1-baseOperation" name="baseOperation" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-LiteralRealEvaluation" name="LiteralRealEvaluation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralRealEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-LiteralRealEvaluation">
- <body>A literal real evaluation is an evaluation whose specification is a literal real.</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-LiteralRealEvaluation-_generalization.0" general="Semantics-Classes-Kernel-LiteralEvaluation"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-LiteralRealEvaluation-evaluate" name="evaluate" specification="Semantics-Classes-Kernel-LiteralRealEvaluation-evaluate.1" isReentrant="false">
- <language>Java</language>
- <body>// Evaluate a real integer, producing a real value.
-
-LiteralReal literal = (LiteralReal)specification;
-RealValue realValue = new RealValue();
-realValue.type = this.getType("Real");
-realValue.value = literal.value;
-return realValue;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-LiteralRealEvaluation-evaluate.1" name="evaluate" visibility="public" method="Semantics-Classes-Kernel-LiteralRealEvaluation-evaluate">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralRealEvaluation-evaluate.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralRealEvaluation-evaluate.1-Parameter1-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-RealValue" name="RealValue">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-RealValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-RealValue">
- <body>A real value is a primitive value whose type is Real.</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-RealValue-_generalization.0" general="Semantics-Classes-Kernel-PrimitiveValue"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-RealValue-value" name="value" visibility="public">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-RealValue-value-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-RealValue-value">
- <body>The actual Real value.</body>
- </ownedComment>
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-RealValue-copy" name="copy" specification="Semantics-Classes-Kernel-RealValue-copy.1" isReentrant="false">
- <language>Java</language>
- <body>// Create a new real value with the same value as this real value.
-
-RealValue newValue = (RealValue)(super.copy());
-
-newValue.value = this.value;
-return newValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-RealValue-equals" name="equals" specification="Semantics-Classes-Kernel-RealValue-equals.1" isReentrant="false">
- <language>Java</language>
- <body>// Test if this real value is equal to the otherValue.?
-// To be equal, the otherValue must have the same value as this real value.
-
-boolean isEqual = false;
-if (otherValue instanceof RealValue) {
- isEqual = ((RealValue)otherValue).value == this.value;
-}
-
-return isEqual;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-RealValue-new_" name="new_" specification="Semantics-Classes-Kernel-RealValue-new_.1" isReentrant="false">
- <language>Java</language>
- <body>// Test if this real value is equal to the otherValue.

-// To be equal, the otherValue must have the same value as this real value.
-
-boolean isEqual = false;
-if (otherValue instanceof RealValue) {
- isEqual = ((RealValue)otherValue).value == this.value;
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-RealValue-specify" name="specify" specification="Semantics-Classes-Kernel-RealValue-specify.1" isReentrant="false">
- <language>Java</language>
- <body>// Return a literal real with the value of this real value.
-
-LiteralReal literal = new LiteralReal();
-
-literal.type = this.type;
-literal.value = this.value;
-
-return literal;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-RealValue-toString" name="toString" specification="Semantics-Classes-Kernel-RealValue-toString.1" isReentrant="false">
- <language>Java</language>
- <body>String stringValue = "";
-
-if (this.value == 0) {
- stringValue = "0";
-} else {
- float positiveValue = this.value;
-
- if (positiveValue < 0) {
- positiveValue = -positiveValue;
- }
-
- int exponent = 0;
-
- if (postiveValue < .1) {
- while (positiveValue < .1) {
- positiveValue = positiveValue * 10;
- exponent = exponent - 1;
- }
- else if (positiveValue > 1) {
- while (positiveValue > 1) {
- positiveValue = positiveValue / 10;
- exponent = exponent + 1;
- }
- }
-
- // This gives 10 significant digits in the mantissa.
- for (int i=0; i<10; i++) {
- positiveValue = positiveValue * 10;
- }
-
- IntegerValue integerValue = new IntegerValue();
- integerValue.value = (int)positiveValue;
- stringValue = “0.” + integerValue.toString();
- integerValue.value = exponent;
- stringValue = stringValue + “E” + integerValue.toString;
-
- if (this.value < 0) {
- stringValue = "-" + stringValue;
- }
-}
-
-return stringValue;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-RealValue-specify.1" name="specify" visibility="public" method="Semantics-Classes-Kernel-RealValue-specify">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RealValue-specify.1-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-RealValue-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-RealValue-equals">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RealValue-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RealValue-equals.1-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-RealValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-RealValue-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RealValue-copy.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-RealValue-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-RealValue-new_">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RealValue-new_.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-RealValue-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-RealValue-toString">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RealValue-toString.1-Parameter1" name="Parameter1" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-CommonBehaviors" name="CommonBehaviors">
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-CommonBehaviors-BasicBehaviors" name="BasicBehaviors">
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-_packageImport.0" importedPackage="Semantics-Classes-Kernel"/>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" name="ParameterValue">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
- <body>A parameter value gives the value(s) for a specific parameter.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-parameter" name="parameter" visibility="public" association="Semantics-CommonBehaviors-BasicBehaviors-A_parameter_parameterValue">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value" aggregation="composite" association="Semantics-CommonBehaviors-BasicBehaviors-A_values_parameterValue">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-values-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-values">
- <body>The values of for the parameter. Zero or more values are possible, as constrained by the multiplicity of the parameter.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-values-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-values-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-copy" name="copy" specification="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" direction="return"/>
- <language>Java</language>
- <body>// Create a new parameter value for the same parameter as this parameter value, but with copies of the values of this parameter value.
-
-ParameterValue newValue = new ParameterValue();
-
-newValue.parameter = this.parameter;
-
-ValueList values = this.values;
-for (int i = 0; i < values.size(); i++) {
- Value value = values.getValue(i);
- newValue.values.addValue(value.copy());
-}
-
-return newValue;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-copy.1" name="copy" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" direction="return"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution" name="OpaqueBehaviorExecution" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution">
- <body>An opaque execution is an execution for an opaque behavior. 
-Opaque behaviors are used to define primitive behaviors.
-The actual definition of the primitive behavior should be given in a concrete subclass of OpaqueBehaviorExecution.
-</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-_generalization.0" general="Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-execute" name="execute" specification="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-execute.1" isReentrant="false">
- <language>Java</language>
- <body>// Execute the body of the opaque behavior.
-
-Debug.println("[execute] Opaque behavior " + this.getBehavior().name + "...");
-
-ParameterList parameters = this.getBehavior().ownedParameter;
-
-ParameterValueList inputs = new ParameterValueList();
-ParameterValueList outputs = new ParameterValueList();
-
-for (int i = 0; i < parameters.size(); i++) {
- Parameter parameter = parameters.getValue(i);
-
- if ((parameter.direction == ParameterDirectionKind.in) |
- (parameter.direction == ParameterDirectionKind.inout)) {
- inputs.addValue(this.getParameterValue(parameter));
- }
-
- if ((parameter.direction == ParameterDirectionKind.inout) |
- (parameter.direction == ParameterDirectionKind.out) |
- (parameter.direction == ParameterDirectionKind.return_)) {
- ParameterValue parameterValue = new ParameterValue();
- parameterValue.parameter = parameter;
- this.setParameterValue(parameterValue);
- outputs.addValue(parameterValue);
- }
-}
-
-this.doBody(inputs, outputs);
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-execute.1" name="execute" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-execute"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody" name="doBody" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody">
- <body>The actual definition of the behavior of an Opaque Behavior should be given in a concrete subclass that defines this operation.
-The values of the inputParameters are set when the operation is called.
-The values of the outputParmeters should be set during the execution of the operation.</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody-inputParameters" name="inputParameters" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody-inputParameters-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody-inputParameters-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody-outputParameters" name="outputParameters" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody-outputParameters-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody-outputParameters-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution" name="Execution" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-Execution">
- <body>An execution is used to execute a specific behavior. Since a behavior is a kind of class, an execution is an object with the behavior as its type.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.Loci.*;
-
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-_generalization.0" general="Semantics-Classes-Kernel-Object"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-context" name="context" visibility="public" type="Semantics-Classes-Kernel-Object" association="Semantics-CommonBehaviors-BasicBehaviors-A_context_execution">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-context-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-Execution-context">
- <body>The object that provides the context for this execution. 
-The type of the context of the execution must be the context of the type (behavior) of the execution.</body>
- </ownedComment>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-parameterValues" name="parameterValues" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" aggregation="composite" association="Semantics-CommonBehaviors-BasicBehaviors-A_parameterValues_execution">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-parameterValues-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-Execution-parameterValues">
- <body>The parameterValues for this execution. All parameterValues must have a parameter that is a parameter of the type of this execution.
-The values of all input (in and in-out) parameters must be set before the execution is executed.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-parameterValues-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-parameterValues-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-terminate" name="terminate" specification="Semantics-CommonBehaviors-BasicBehaviors-Execution-terminate.1" isReentrant="false">
- <language>Java</language>
- <body>// Terminate an ongoing execution. By default, do nothing.
-
-return;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-copy" name="copy" specification="Semantics-CommonBehaviors-BasicBehaviors-Execution-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new execution that has the same behavior and parameterValues as this execution.
-
-// Debug.println("[Copy] execution = " + this);
-
-Execution newValue = (Execution)(super.copy());
-
-newValue.context = this.context;
-
-ParameterValueList parameterValues = this.parameterValues;
-for (int i = 0; i < parameterValues.size(); i++) {
- ParameterValue parameterValue = parameterValues.getValue(i);
- newValue.parameterValues.addValue(parameterValue.copy());
-}
-
-// Debug.println("[Copy] Done.");
-
-return newValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-setParameterValue" name="setParameterValue" specification="Semantics-CommonBehaviors-BasicBehaviors-Execution-setParameterValue.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-setParameterValue-parameterValue" name="parameterValue" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue"/>
- <language>Java</language>
- <body>// Set the given parameter value for this execution.
-// If a parameter value already existed for the parameter of the given parameter value, then replace its value.
-
-// Debug.println("[setParameterValue] parameter = " + parameterValue.parameter.name + " with " + parameterValue.values.size() + " values");
-
-ParameterValue existingParameterValue = this.getParameterValue(parameterValue.parameter);
-
-if (existingParameterValue == null) {
- this.parameterValues.addValue(parameterValue);
-}
-else {
- existingParameterValue.values = parameterValue.values;
-}
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue" name="getParameterValue" specification="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue-parameter" name="parameter" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the parameter value of this execution corresponding to the given parameter (if any).
-
-ParameterValue parameterValue = null;
-int i = 1;
-while (parameterValue == null & i <= this.parameterValues.size()) {
- if (this.parameterValues.getValue(i-1).parameter == parameter) {
- parameterValue = this.parameterValues.getValue(i-1);
- }
- i = i + 1;
-}
-
-return parameterValue;
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues" name="getOutputParameterValues" specification="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the parameter values for output (in-out, out and return) parameters.
-
-ParameterValueList outputs = new ParameterValueList();
-ParameterValueList parameterValues = this.parameterValues;
-for (int i = 0; i < parameterValues.size(); i++) {
- ParameterValue parameterValue = parameterValues.getValue(i);
- Parameter parameter = parameterValue.parameter;
- if ((parameter.direction == ParameterDirectionKind.inout) |
- (parameter.direction == ParameterDirectionKind.out) |
- (parameter.direction == ParameterDirectionKind.return_)) {
- outputs.addValue(parameterValue);
- }
-}
-
-return outputs;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getBehavior" name="getBehavior" specification="Semantics-CommonBehaviors-BasicBehaviors-Execution-getBehavior.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getBehavior-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the behavior that is the type of this execution.
-
-return (Behavior)(this.getTypes().getValue(0));</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-execute" name="execute" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-execute-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-Execution-execute">
- <body>Execute the behavior given by the type of this execution. 
-The parameterValues for any input (in or in-out) parameters of the behavior should be set before the execution.
-The parameteValues for any output (in-out, out or return) parameters of the behavior will be set by the execution.
-</body>
- </ownedComment>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-terminate.1" name="terminate" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-Execution-terminate"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-copy.1" name="copy" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-Execution-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-new_" name="new_" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-new_-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-Execution-new_">
- <body>Create a new execution with no behavior or parameterValues.
-</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-setParameterValue.1" name="setParameterValue" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-Execution-setParameterValue">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-setParameterValue.1-parameterValue" name="parameterValue" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue.1" name="getParameterValue" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue.1-parameter" name="parameter" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues.1" name="getOutputParameterValues" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getBehavior.1" name="getBehavior" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-Execution-getBehavior">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getBehavior.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_context_execution" name="A_context_execution" visibility="private" memberEnd="Semantics-CommonBehaviors-BasicBehaviors-A_context_execution-_ownedEnd.0 Semantics-CommonBehaviors-BasicBehaviors-Execution-context">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_context_execution-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" association="Semantics-CommonBehaviors-BasicBehaviors-A_context_execution">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_context_execution-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_context_execution-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_parameterValues_execution" name="A_parameterValues_execution" visibility="private" memberEnd="Semantics-CommonBehaviors-BasicBehaviors-A_parameterValues_execution-_ownedEnd.0 Semantics-CommonBehaviors-BasicBehaviors-Execution-parameterValues">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_parameterValues_execution-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" association="Semantics-CommonBehaviors-BasicBehaviors-A_parameterValues_execution"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_parameter_parameterValue" name="A_parameter_parameterValue" visibility="private" memberEnd="Semantics-CommonBehaviors-BasicBehaviors-A_parameter_parameterValue-_ownedEnd.0 Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-parameter">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_parameter_parameterValue-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" association="Semantics-CommonBehaviors-BasicBehaviors-A_parameter_parameterValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_parameter_parameterValue-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_parameter_parameterValue-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_values_parameterValue" name="A_values_parameterValue" visibility="private" memberEnd="Semantics-CommonBehaviors-BasicBehaviors-A_values_parameterValue-_ownedEnd.0 Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-values">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_values_parameterValue-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" association="Semantics-CommonBehaviors-BasicBehaviors-A_values_parameterValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_values_parameterValue-_ownedEnd.0-_lowerValue"/>
- </ownedEnd>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-CommonBehaviors-Communications" name="Communications">
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-CommonBehaviors-Communications-_packageImport.0" importedPackage="Semantics-CommonBehaviors-BasicBehaviors"/>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter" name="EventAccepter" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-EventAccepter">
- <body>An event accepter handles signal reception events.
-This is an abstract class intended to provide a common interface for different kinds of event accepters.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-accept" name="accept" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-accept-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-EventAccepter-accept">
- <body>Accept a signal occurance for the given signal instance.</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-accept-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-match" name="match" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-match-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-EventAccepter-match">
- <body>Determine if the given signal instance matches a trigger of this event accepter.</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-match-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-match-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution" name="ClassifierBehaviorExecution" classifierBehavior="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity" isActive="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution">
- <body>A classifier behavior execution executes the classifier behavior from a specific active class. </body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execution" name="execution" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" association="Semantics-CommonBehaviors-Communications-A_execution_classifierBehaviorExecution">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execution-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execution">
- <body>The execution of the associated classifier behavior for a certain object.</body>
- </ownedComment>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-classifier" name="classifier" visibility="public" association="Semantics-CommonBehaviors-Communications-A_classifier_classifierBehaviorExecution">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-classifier-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-classifier">
- <body>The classifier whose behavior is being executed. (This must be an active class.)</body>
- </ownedComment>
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-objectActivation" name="objectActivation" visibility="public" type="Semantics-CommonBehaviors-Communications-ObjectActivation" association="Semantics-CommonBehaviors-Communications-A_classifierBehaviorExecutions_objectActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-objectActivation-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-objectActivation">
- <body>The object activation that owns this classifier behavior execution.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-objectActivation-_lowerValue"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:Activity" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity" name="ClassifierBehaviorExecutionActivity" isReentrant="false">
- <ownedBehavior xmi:type="uml:Activity" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-OwnedBehaviorActivity1" name="OwnedBehaviorActivity1" isReentrant="false"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.0" visibility="public" target="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-ReadSelf" source="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_node.3">
- <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.0-_guard">
- <body></body>
- </guard>
- <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.0-_weight" value="1"/>
- </edge>
- <edge xmi:type="uml:ControlFlow" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.1" visibility="public" target="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_node.1" source="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Call20execute">
- <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.1-_guard">
- <body></body>
- </guard>
- <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.1-_weight" value="1"/>
- </edge>
- <edge xmi:type="uml:ObjectFlow" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.2" visibility="public" target="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Read20execution-_object" source="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-ReadSelf-_result">
- <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.2-_guard">
- <body></body>
- </guard>
- <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.2-_weight" value="1"/>
- </edge>
- <edge xmi:type="uml:ObjectFlow" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.3" visibility="public" target="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Call20execute-_target" source="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Read20execution-_result">
- <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.3-_guard">
- <language>Java</language>
- <body></body>
- </guard>
- <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.3-_weight" value="1"/>
- </edge>
- <node xmi:type="uml:CallOperationAction" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Call20execute" name="Call execute" visibility="public" outgoing="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.1" operation="Semantics-CommonBehaviors-BasicBehaviors-Execution-execute">
- <target xmi:type="uml:InputPin" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Call20execute-_target" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.3" type="Semantics-CommonBehaviors-BasicBehaviors-Execution">
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Call20execute-_target-_upperBound" value="1024"/>
- </target>
- </node>
- <node xmi:type="uml:ActivityFinalNode" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_node.1" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.1"/>
- <node xmi:type="uml:ReadSelfAction" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-ReadSelf" name="ReadSelf" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.0">
- <result xmi:type="uml:OutputPin" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-ReadSelf-_result" visibility="public" outgoing="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.2" type="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution"/>
- </node>
- <node xmi:type="uml:InitialNode" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_node.3" visibility="public" outgoing="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.0"/>
- <node xmi:type="uml:ReadStructuralFeatureAction" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Read20execution" name="Read execution" visibility="public" structuralFeature="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execution">
- <object xmi:type="uml:InputPin" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Read20execution-_object" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.2">
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Read20execution-_object-_upperBound" value="1"/>
- </object>
- <result xmi:type="uml:OutputPin" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Read20execution-_result" visibility="public" outgoing="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.3">
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Read20execution-_result-_upperBound" value="1"/>
- </result>
- </node>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute" name="execute" specification="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute-classifier" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute-inputs-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute-inputs-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Set the classifier for this classifier behavior execution to the given class.
-// If the given class is a behavior, set the execution to be the object of the object activation of the classifier behavior execution.
-// Otherwise the class must be an active class, so get an execution object for the classifier behavior for the class.
-// Set the input parameters for the execution to the given values.
-// Then start the active behavior of this ClassifierBehaviorExecution object, which will execute the execution object on a separate thread of control.
-
-// Debug.println("[execute] Executing behavior for " + classifier.name + "...");
-
-this.classifier = classifier;
-Object_ object = this.objectActivation.object;
-
-if (classifier instanceof Behavior) {
- this.execution = (Execution)object;
-} else {
- this.execution = object.locus.factory.createExecution(classifier.classifierBehavior, object);
-}
-
-if (inputs != null) {
- for (int i = 0; i < inputs.size(); i++) {
- ParameterValue input = inputs.getValue(i);
- this.execution.setParameterValue(input);
- }
-}
-
-_startObjectBehavior();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-terminate" name="terminate" specification="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-terminate.1" isReentrant="false">
- <language>Java</language>
- <body>// Terminate the associated execution.
-// If the execution is not itself the object of the object activation, then destroy it.
-
-//Debug.println("[terminate] Terminating behavior for " + classifier.name + "...");
-
-this.execution.terminate();
-
-if (this.execution != this.objectActivation.object) {
- this.execution.destroy();
-}
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute.1" name="execute" visibility="public" method="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute.1-classifier" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute.1-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute.1-inputs-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute.1-inputs-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-terminate.1" name="terminate" visibility="public" method="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-terminate"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Signal" xmi:id="Semantics-CommonBehaviors-Communications-ArrivalSignal" name="ArrivalSignal" visibility="private"/>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance" name="SignalInstance">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-_ownedComment.0">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Loci.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-_generalization.0" general="Semantics-Classes-Kernel-CompoundValue"/>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-type" name="type" visibility="public" association="Semantics-CommonBehaviors-Communications-A_type_signalInstance">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Signal"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes" name="getTypes" specification="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the single type of this signal instance.
-
-ClassifierList types = new ClassifierList();
-
-types.addValue(this.type);
-
-return types;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-new_" name="new_" specification="Semantics-CommonBehaviors-Communications-SignalInstance-new_.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new signal instance with no type or feature values.
-
-return new SignalInstance();</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-copy" name="copy" specification="Semantics-CommonBehaviors-Communications-SignalInstance-copy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <language>Java</language>
- <body>// Create a new signal instance with the same type and feature values as this signal instance.
-
-SignalInstance newValue = (SignalInstance)(super.copy());
-
-newValue.type = this.type;
-
-return newValue;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:Activity" xmi:id="_HQzZIGDnEeOv67MuWcLvIw" name="signalInstance_constructor" specification="_xXvbIGDmEeOv67MuWcLvIw" node="_17dBcGDnEeOm3qeg9F4VEw _17dBcWDnEeOm3qeg9F4VEw _19khUGDnEeOm3qeg9F4VEw" group="_19khUGDnEeOm3qeg9F4VEw">
- <ownedComment xmi:type="uml:Comment" xmi:id="_1_fM4GDnEeOm3qeg9F4VEw">
- <body>/* Generated textual representation of Activity fUML::Semantics::CommonBehaviors::Communications::SignalInstance::signalInstance_constructor */
-
-namespace fUML::Semantics::CommonBehaviors::Communications::SignalInstance ;
-
-activity SignalInstance(): SignalInstance {
- return this;
-}</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_LGKhIGDnEeOv67MuWcLvIw" name="returnResult" type="Semantics-CommonBehaviors-Communications-SignalInstance" direction="return"/>
- <edge xmi:type="uml:ControlFlow" xmi:id="_1_B54GDnEeOm3qeg9F4VEw" target="_17dBcWDnEeOm3qeg9F4VEw" source="_19khUWDnEeOm3qeg9F4VEw"/>
- <edge xmi:type="uml:ObjectFlow" xmi:id="_1_B54WDnEeOm3qeg9F4VEw" target="_17dBcGDnEeOm3qeg9F4VEw" source="_19khVmDnEeOm3qeg9F4VEw"/>
- <structuredNode xmi:type="uml:StructuredActivityNode" xmi:id="_19khUGDnEeOm3qeg9F4VEw" name="Body(SignalInstance)">
- <node xmi:type="uml:StructuredActivityNode" xmi:id="_19khUWDnEeOm3qeg9F4VEw" name="ReturnStatement@67c2bb9e" outgoing="_1_B54GDnEeOm3qeg9F4VEw">
- <edge xmi:type="uml:ObjectFlow" xmi:id="_19khWWDnEeOm3qeg9F4VEw" target="_19khVmDnEeOm3qeg9F4VEw" source="_19khU2DnEeOm3qeg9F4VEw"/>
- <structuredNodeOutput xmi:type="uml:OutputPin" xmi:id="_19khVmDnEeOm3qeg9F4VEw" name="ReturnStatement@67c2bb9e.output" incoming="_19khWWDnEeOm3qeg9F4VEw" outgoing="_1_B54WDnEeOm3qeg9F4VEw" type="Semantics-CommonBehaviors-Communications-SignalInstance" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_19khV2DnEeOm3qeg9F4VEw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_19khWGDnEeOm3qeg9F4VEw" value="1"/>
- </structuredNodeOutput>
- <node xmi:type="uml:ReadSelfAction" xmi:id="_19khUmDnEeOm3qeg9F4VEw" name="ReadSelf">
- <result xmi:type="uml:OutputPin" xmi:id="_19khU2DnEeOm3qeg9F4VEw" name="ReadSelf.result" outgoing="_19khWWDnEeOm3qeg9F4VEw" type="Semantics-CommonBehaviors-Communications-SignalInstance" isOrdered="true" isUnique="false">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_19khVGDnEeOm3qeg9F4VEw" value="1"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_19khVWDnEeOm3qeg9F4VEw" value="1"/>
- </result>
- </node>
- </node>
- </structuredNode>
- <node xmi:type="uml:ActivityParameterNode" xmi:id="_17dBcGDnEeOm3qeg9F4VEw" name="Return" incoming="_1_B54WDnEeOm3qeg9F4VEw" parameter="_LGKhIGDnEeOv67MuWcLvIw"/>
- <node xmi:type="uml:ActivityFinalNode" xmi:id="_17dBcWDnEeOm3qeg9F4VEw" name="Final" incoming="_1_B54GDnEeOm3qeg9F4VEw"/>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes.1" name="getTypes" visibility="public" method="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-new_.1" name="new_" visibility="public" method="Semantics-CommonBehaviors-Communications-SignalInstance-new_">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-copy.1" name="copy" visibility="public" method="Semantics-CommonBehaviors-Communications-SignalInstance-copy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="_xXvbIGDmEeOv67MuWcLvIw" name="SignalInstance" method="_HQzZIGDnEeOv67MuWcLvIw">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="_ELcKsGDnEeOv67MuWcLvIw" name="returnResult" type="Semantics-CommonBehaviors-Communications-SignalInstance" direction="return"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation" name="ObjectActivation" classifierBehavior="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop" isActive="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ObjectActivation">
- <body>An object activation handles the active behavior of an active object.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-_ownedComment.1">
- <body>import java.util.Iterator;
-
-import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-import fUML.Syntax.CommonBehaviors.Communications.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-import fUML.Semantics.Loci.LociL1.*;
-</body>
- </ownedComment>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-classifierBehaviorExecutions" name="classifierBehaviorExecutions" visibility="public" type="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution" aggregation="composite" association="Semantics-CommonBehaviors-Communications-A_classifierBehaviorExecutions_objectActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-classifierBehaviorExecutions-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ObjectActivation-classifierBehaviorExecutions">
- <body>The executing classifier behaviors for this object activation.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-classifierBehaviorExecutions-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-classifierBehaviorExecutions-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-waitingEventAccepters" name="waitingEventAccepters" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter" association="Semantics-CommonBehaviors-Communications-A_waitingEventAcceptors_objectActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-waitingEventAccepters-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ObjectActivation-waitingEventAccepters">
- <body>The set of event accepters waiting for signals to be received by the object of this object activation.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-waitingEventAccepters-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-waitingEventAccepters-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-eventPool" name="eventPool" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance" isOrdered="true" aggregation="composite" association="Semantics-CommonBehaviors-Communications-A_eventPool_objectActivation">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-eventPool-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ObjectActivation-eventPool">
- <body>The pool of signals sent to the object of this object activation, pending dispatching as events.
-(All the data values in the pool must be signal instances -- that is, they must have a single type that is a signal.)</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-eventPool-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-eventPool-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-object" name="object" visibility="public" type="Semantics-Classes-Kernel-Object" association="Semantics-Classes-Kernel-A_objectActivation_object">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-object-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ObjectActivation-object">
- <body>The object whose active behavior is being handled by this active object.</body>
- </ownedComment>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:Activity" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop" name="EventDispatchLoop" isReentrant="false">
- <edge xmi:type="uml:ControlFlow" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.0" visibility="public" target="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_node.4" source="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Call20dispatchNextEvent">
- <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.0-_guard"/>
- <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.0-_weight" value="1"/>
- </edge>
- <edge xmi:type="uml:ObjectFlow" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.1" visibility="public" target="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Call20dispatchNextEvent-_target" source="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-ReadSelf-_result">
- <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.1-_guard">
- <body></body>
- </guard>
- <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.1-_weight" value="1"/>
- </edge>
- <edge xmi:type="uml:ControlFlow" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.2" visibility="public" target="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-ReadSelf" source="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Accept20ArrivalSignal">
- <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.2-_guard">
- <body></body>
- </guard>
- <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.2-_weight" value="1"/>
- </edge>
- <edge xmi:type="uml:ControlFlow" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.3" visibility="public" target="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_node.4" source="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_node.0">
- <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.3-_guard">
- <body></body>
- </guard>
- <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.3-_weight" value="1"/>
- </edge>
- <edge xmi:type="uml:ControlFlow" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.4" visibility="public" target="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Accept20ArrivalSignal" source="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_node.4">
- <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.4-_guard">
- <body></body>
- </guard>
- <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.4-_weight" value="1"/>
- </edge>
- <node xmi:type="uml:InitialNode" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_node.0" visibility="public" outgoing="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.3"/>
- <node xmi:type="uml:CallOperationAction" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Call20dispatchNextEvent" name="Call dispatchNextEvent" visibility="public" outgoing="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.0" operation="Semantics-CommonBehaviors-Communications-ObjectActivation-dispatchNextEvent.1">
- <target xmi:type="uml:InputPin" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Call20dispatchNextEvent-_target" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.1" type="Semantics-CommonBehaviors-Communications-ObjectActivation">
- <upperBound xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Call20dispatchNextEvent-_target-_upperBound" value="1024"/>
- </target>
- </node>
- <node xmi:type="uml:ReadSelfAction" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-ReadSelf" name="ReadSelf" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.2">
- <result xmi:type="uml:OutputPin" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-ReadSelf-_result" visibility="public" outgoing="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.1" type="Semantics-CommonBehaviors-Communications-ObjectActivation"/>
- </node>
- <node xmi:type="uml:AcceptEventAction" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Accept20ArrivalSignal" name="Accept ArrivalSignal" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.4" outgoing="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.2">
- <trigger xmi:type="uml:Trigger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Accept20ArrivalSignal-_trigger.0" visibility="public" event="Semantics-CommonBehaviors-Communications-ArrivalSignalEvent"/>
- </node>
- <node xmi:type="uml:MergeNode" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_node.4" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.3 Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.0" outgoing="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.4"/>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-stop" name="stop" specification="Semantics-CommonBehaviors-Communications-ObjectActivation-stop.1" isReentrant="false">
- <language>Java</language>
- <body>// Stop this object activation by terminating all classifier behavior executions.
-
-ClassifierBehaviorExecutionList classifierBehaviorExecutions = this.classifierBehaviorExecutions;
-for (int i = 0; i < classifierBehaviorExecutions.size(); i++) {
- ClassifierBehaviorExecution classifierBehaviorExecution = classifierBehaviorExecutions.getValue(i);
- classifierBehaviorExecution.terminate();
-}
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-register" name="register" specification="Semantics-CommonBehaviors-Communications-ObjectActivation-register.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-register-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
- <language>Java</language>
- <body>// Register the given event accepter to wait for a dispatched signal event.
-
-Debug.println("[register] object = " + this.object);
-Debug.println("[register] accepter = " + accepter);
-
-this.waitingEventAccepters.addValue(accepter);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-unregister" name="unregister" specification="Semantics-CommonBehaviors-Communications-ObjectActivation-unregister.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-unregister-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
- <language>Java</language>
- <body>// Remove the given event accepter for the list of waiting event accepters.
-
-Debug.println("[unregister] object = " + this.object);
-Debug.println("[unregister] accepter = " + accepter);
-
-boolean notFound = true;
-int i = 1;
-while (notFound & i <= this.waitingEventAccepters.size()) {
- if (this.waitingEventAccepters.getValue(i-1) == accepter) {
- this.waitingEventAccepters.remove(i-1);
- notFound = false;
- }
- i = i + 1;
-}
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-dispatchNextEvent" name="dispatchNextEvent" specification="Semantics-CommonBehaviors-Communications-ObjectActivation-dispatchNextEvent.1" isReentrant="false">
- <language>Java</language>
- <body>// Get the next signal instance out of the event pool.
-// If there is one or more waiting event accepters with triggers that match the signal instance, then dispatch it to exactly one of those waiting accepters.
-
-if (this.eventPool.size() > 0) {
- SignalInstance signalInstance = this.getNextEvent();
-
- Debug.println("[dispatchNextEvent] signalInstance = " + signalInstance);
-
- intList matchingEventAccepterIndexes = new intList();
- EventAccepterList waitingEventAccepters = this.waitingEventAccepters;
- for (int i = 0; i < waitingEventAccepters.size(); i++) {
- EventAccepter eventAccepter = waitingEventAccepters.getValue(i);
- if (eventAccepter.match(signalInstance)) {
- matchingEventAccepterIndexes.addValue(i);
- }
- }
-
- if (matchingEventAccepterIndexes.size() > 0) {
- // *** Choose one matching event accepter non-deterministically. ***
- int j = ((ChoiceStrategy)this.object.locus.factory.getStrategy("choice")).choose(matchingEventAccepterIndexes.size());
- EventAccepter selectedEventAccepter = this.waitingEventAccepters.getValue(matchingEventAccepterIndexes.getValue(j-1));
- this.waitingEventAccepters.removeValue(j-1);
- selectedEventAccepter.accept(signalInstance);
- }
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-getNextEvent" name="getNextEvent" specification="Semantics-CommonBehaviors-Communications-ObjectActivation-getNextEvent.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-getNextEvent-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance" direction="return"/>
- <language>Java</language>
- <body>// Get the next event from the event pool, using a get next event strategy.
-
-return ((GetNextEventStrategy)this.object.locus.factory.getStrategy("getNextEvent")).getNextEvent(this);
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-stop.1" name="stop" visibility="public" method="Semantics-CommonBehaviors-Communications-ObjectActivation-stop"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-register.1" name="register" visibility="public" method="Semantics-CommonBehaviors-Communications-ObjectActivation-register">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-register.1-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-unregister.1" name="unregister" visibility="public" method="Semantics-CommonBehaviors-Communications-ObjectActivation-unregister">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-unregister.1-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-dispatchNextEvent.1" name="dispatchNextEvent" visibility="public" method="Semantics-CommonBehaviors-Communications-ObjectActivation-dispatchNextEvent"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-getNextEvent.1" name="getNextEvent" visibility="public" method="Semantics-CommonBehaviors-Communications-ObjectActivation-getNextEvent">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-getNextEvent.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance" direction="return"/>
- </ownedOperation>
- <ownedReception xmi:type="uml:Reception" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-_ownedReception.0" visibility="public" signal="Semantics-CommonBehaviors-Communications-ArrivalSignal"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-Communications-A_classifierBehaviorExecutions_objectActivation" name="A_classifierBehaviorExecutions_objectActivation" visibility="private" memberEnd="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-objectActivation Semantics-CommonBehaviors-Communications-ObjectActivation-classifierBehaviorExecutions"/>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-Communications-A_waitingEventAcceptors_objectActivation" name="A_waitingEventAcceptors_objectActivation" visibility="private" memberEnd="Semantics-CommonBehaviors-Communications-A_waitingEventAcceptors_objectActivation-_ownedEnd.0 Semantics-CommonBehaviors-Communications-ObjectActivation-waitingEventAccepters">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-A_waitingEventAcceptors_objectActivation-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-Communications-ObjectActivation" association="Semantics-CommonBehaviors-Communications-A_waitingEventAcceptors_objectActivation">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-A_waitingEventAcceptors_objectActivation-_ownedEnd.0-_lowerValue"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-Communications-A_eventPool_objectActivation" name="A_eventPool_objectActivation" visibility="private" memberEnd="Semantics-CommonBehaviors-Communications-A_eventPool_objectActivation-_ownedEnd.0 Semantics-CommonBehaviors-Communications-ObjectActivation-eventPool">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-A_eventPool_objectActivation-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-Communications-ObjectActivation" association="Semantics-CommonBehaviors-Communications-A_eventPool_objectActivation">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-A_eventPool_objectActivation-_ownedEnd.0-_lowerValue"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-Communications-A_type_signalInstance" name="A_type_signalInstance" visibility="private" memberEnd="Semantics-CommonBehaviors-Communications-A_type_signalInstance-_ownedEnd.0 Semantics-CommonBehaviors-Communications-SignalInstance-type">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-A_type_signalInstance-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-Communications-SignalInstance" association="Semantics-CommonBehaviors-Communications-A_type_signalInstance">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-A_type_signalInstance-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-A_type_signalInstance-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-Communications-A_classifier_classifierBehaviorExecution" name="A_classifier_classifierBehaviorExecution" visibility="private" memberEnd="Semantics-CommonBehaviors-Communications-A_classifier_classifierBehaviorExecution-_ownedEnd.0 Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-classifier">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-A_classifier_classifierBehaviorExecution-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution" association="Semantics-CommonBehaviors-Communications-A_classifier_classifierBehaviorExecution">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-A_classifier_classifierBehaviorExecution-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-A_classifier_classifierBehaviorExecution-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-Communications-A_execution_classifierBehaviorExecution" name="A_execution_classifierBehaviorExecution" visibility="private" memberEnd="Semantics-CommonBehaviors-Communications-A_execution_classifierBehaviorExecution-_ownedEnd.0 Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execution">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-A_execution_classifierBehaviorExecution-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution" association="Semantics-CommonBehaviors-Communications-A_execution_classifierBehaviorExecution">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-A_execution_classifierBehaviorExecution-_ownedEnd.0-_lowerValue"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:SignalEvent" xmi:id="Semantics-CommonBehaviors-Communications-ArrivalSignalEvent" name="ArrivalSignalEvent" signal="Semantics-CommonBehaviors-Communications-ArrivalSignal"/>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy" name="GetNextEventStrategy" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-GetNextEventStrategy">
- <body>A get next event strategy is a semantic strategy that determines the order in which signal instances are retrieved from the event pool of an object activation.</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-_generalization.0" general="Semantics-Loci-LociL1-SemanticStrategy"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getName" name="getName" specification="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getName.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getName-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get next event strategies are always named "getNextEvent".
-
-return "getNextEvent";
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getName.1" name="getName" visibility="public" method="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getName">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getName.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getNextEvent" name="getNextEvent" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getNextEvent-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getNextEvent">
- <body>Get the next event from the event pool of the given object activation. The event is removed from the pool.
-</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getNextEvent-objectActivation" name="objectActivation" visibility="public" type="Semantics-CommonBehaviors-Communications-ObjectActivation"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getNextEvent-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance" direction="return"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy" name="FIFOGetNextEventStrategy">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy">
- <body>A FIFO get next event strategy gets events in first-in first-out order.</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-_generalization.0" general="Semantics-CommonBehaviors-Communications-GetNextEventStrategy"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent" name="getNextEvent" specification="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent-objectActivation" name="objectActivation" visibility="public" type="Semantics-CommonBehaviors-Communications-ObjectActivation"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance" direction="return"/>
- <language>Java</language>
- <body>// Get the first event from the given event pool. The event is removed from the pool.
-
-SignalInstance signalInstance = objectActivation.eventPool.getValue(0);
-objectActivation.eventPool.removeValue(0);
-return signalInstance;</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent.1" name="getNextEvent" visibility="public" method="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent.1-objectActivation" name="objectActivation" visibility="public" type="Semantics-CommonBehaviors-Communications-ObjectActivation"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance" direction="return"/>
- </ownedOperation>
- </packagedElement>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Loci" name="Loci">
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Loci-LociL1" name="LociL1">
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL1-_packageImport.2" importedPackage="Semantics-Classes-Kernel"/>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy" name="ChoiceStrategy" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ChoiceStrategy">
- <body>A choice strategy is used to represent the behavior of making an arbitrary non-deterministic choice.
-A valid execution may use ANY choice strategy for choosing one element from a given set.</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-_generalization.0" general="Semantics-Loci-LociL1-SemanticStrategy"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-getName" name="getName" specification="Semantics-Loci-LociL1-ChoiceStrategy-getName.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-getName-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <language>Java</language>
- <body>// The name of a choice strategy is always "choice".
-
-return "choice";
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-getName.1" name="getName" visibility="public" method="Semantics-Loci-LociL1-ChoiceStrategy-getName">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-getName.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-choose" name="choose" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-choose-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ChoiceStrategy-choose">
- <body>Choose an integer from 1 to the given size.
-[The size must be greater than 0.]</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-choose-size" name="size" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-choose-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-ExecutionFactory" name="ExecutionFactory" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory">
- <body> An execution factory is used to create objects that represent the execution of a behavior, the evaluation of a value specification or the activation of an activity node.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-</body>
- </ownedComment>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-locus" name="locus" visibility="public" type="Semantics-Loci-LociL1-Locus" association="Semantics-Loci-LociL1-A_factory_locus">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-locus-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory-locus">
- <body>The locus at which this factory resides.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-locus-_lowerValue"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-primitiveBehaviorPrototypes" name="primitiveBehaviorPrototypes" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution" association="Semantics-Loci-LociL1-A_primitiveBehaviorPrototypes_executionFactory">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-primitiveBehaviorPrototypes-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory-primitiveBehaviorPrototypes">
- <body>The set of opaque behavior executions to be used to execute the primitive behaviors known to the factory.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-primitiveBehaviorPrototypes-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-primitiveBehaviorPrototypes-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-builtInTypes" name="builtInTypes" visibility="public" association="Semantics-Loci-LociL1-A_builtInTypes_executionFactory">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-builtInTypes-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory-builtInTypes">
- <body>The set of primitive types that have corresponding literal value specifications.
-Must include Integer, Boolean, String and UnlimitedNatural.</body>
- </ownedComment>
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-builtInTypes-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-builtInTypes-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-strategies" name="strategies" visibility="public" type="Semantics-Loci-LociL1-SemanticStrategy" association="Semantics-Loci-LociL1-A_strategies_executionFactory">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-strategies-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory-strategies">
- <body>The set of semantic strategies currently registered with this execution factory.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-strategies-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-strategies-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution" name="createExecution" specification="Semantics-Loci-LociL1-ExecutionFactory-createExecution.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution-behavior" name="behavior" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution-context" name="context" visibility="public" type="Semantics-Classes-Kernel-Object">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution-context-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Create an execution object for a given behavior.
-// The execution will take place at the locus of the factory in the given context.
-// If the context is empty, the execution is assumed to provide its own context.
-
-Execution execution;
-
-if (behavior instanceof OpaqueBehavior) {
- execution = this.instantiateOpaqueBehaviorExecution((OpaqueBehavior)behavior);
-}
-else {
- execution = (Execution)this.instantiateVisitor(behavior);
- execution.types.addValue(behavior);
- execution.createFeatureValues();
-}
-
-this.locus.add(execution);
-
-if (context == null) {
- execution.context = execution;
-}
-else {
- execution.context = context;
-}
-
-return execution;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation" name="createEvaluation" specification="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Evaluation" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation-specification" name="specification" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Create an evaluation object for a given value specification.
-// The evaluation will take place at the locus of the factory.
-
-Evaluation evaluation = (Evaluation)this.instantiateVisitor(specification);
-
-evaluation.specification = specification;
-evaluation.locus = this.locus;
-
-return evaluation;
-
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution" name="instantiateOpaqueBehaviorExecution" specification="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution-behavior" name="behavior" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OpaqueBehavior"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return a copy of the prototype for the primitive behavior execution of the given opaque behavior.
-
-OpaqueBehaviorExecution execution = null;
-int i = 1;
-while (execution == null & i <= this.primitiveBehaviorPrototypes.size()) {
- // Debug.println("[instantiateOpaqueExecution] Checking " + this.primitiveBehaviorPrototypes.getValue(i).objectId() + "...");
- OpaqueBehaviorExecution prototype = this.primitiveBehaviorPrototypes.getValue(i-1);
- if (prototype.getBehavior() == behavior) {
- execution = (OpaqueBehaviorExecution)(prototype.copy());
- }
- i = i + 1;
-}
-
-if (execution == null) {
- Debug.println("[instantiateOpaqueExecution] No prototype execution found for " + behavior.name + ".");
-}
-
-return execution;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addPrimitiveBehaviorPrototype" name="addPrimitiveBehaviorPrototype" specification="Semantics-Loci-LociL1-ExecutionFactory-addPrimitiveBehaviorPrototype.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addPrimitiveBehaviorPrototype-execution" name="execution" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution"/>
- <language>Java</language>
- <body>// Add an opaque behavior execution to use as a prototype for instantiating the corresponding primitive opaque behavior.
-// Precondition: No primitive behavior prototype for the type of the given execution should already exist.
-
-this.primitiveBehaviorPrototypes.addValue(execution);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addBuiltInType" name="addBuiltInType" specification="Semantics-Loci-LociL1-ExecutionFactory-addBuiltInType.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addBuiltInType-type" name="type" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Add the given primitive type as a built-in type.
-// Precondition: No built-in type with the same name should already exist.
-
-this.builtInTypes.addValue(type);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType" name="getBuiltInType" specification="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType-name" name="name" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the built-in type with the given name.
-
-PrimitiveType type = null;
-int i = 1;
-while (type == null & i <= this.builtInTypes.size()) {
- PrimitiveType primitiveType = this.builtInTypes.getValue(i-1);
- if (primitiveType.name.equals(name)) {
- type = primitiveType;
- }
- i = i + 1;
-}
-
-return type;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-setStrategy" name="setStrategy" specification="Semantics-Loci-LociL1-ExecutionFactory-setStrategy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-setStrategy-strategy" name="strategy" visibility="public" type="Semantics-Loci-LociL1-SemanticStrategy"/>
- <language>Java</language>
- <body>// Set the strategy for a semantic variation point. Any existing strategy for the same SVP is replaced.
-
-int i = this.getStrategyIndex(strategy.getName());
-
-if (i <= this.strategies.size()) {
- this.strategies.removeValue(i-1);
-}
-
-this.strategies.addValue(strategy);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy" name="getStrategy" specification="Semantics-Loci-LociL1-ExecutionFactory-getStrategy.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy-name" name="name" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Loci-LociL1-SemanticStrategy" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy-OwnedParameter-_lowerValue"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the strategy with the given name.
-
-int i = this.getStrategyIndex(name);
-
-SemanticStrategy strategy = null;
-if (i <= this.strategies.size()) {
- strategy = this.strategies.getValue(i-1);
-}
-
-return strategy;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex" name="getStrategyIndex" specification="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex-name" name="name" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Get the index of the strategy with the given name.
-// If there is no such strategy, return the size of the strategies list.
-
-SemanticStrategyList strategies = this.strategies;
-
-int i = 1;
-boolean unmatched = true;
-while (unmatched & (i <= strategies.size())) {
- if (strategies.getValue(i-1).getName().equals(name)) {
- unmatched = false;
- } else {
- i = i + 1;
- }
-}
-
-return i;
-
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution.1" name="createExecution" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-createExecution">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution.1-behavior" name="behavior" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution.1-context" name="context" visibility="public" type="Semantics-Classes-Kernel-Object">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution.1-context-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation.1" name="createEvaluation" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Evaluation" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation.1-specification" name="specification" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateVisitor" name="instantiateVisitor" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateVisitor-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory-instantiateVisitor">
- <body>Instantiate a visitor object for the given element.</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateVisitor-element" name="element" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateVisitor-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-SemanticVisitor" direction="return"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution.1" name="instantiateOpaqueBehaviorExecution" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution.1-behavior" name="behavior" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OpaqueBehavior"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addPrimitiveBehaviorPrototype.1" name="addPrimitiveBehaviorPrototype" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-addPrimitiveBehaviorPrototype">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addPrimitiveBehaviorPrototype.1-execution" name="execution" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addBuiltInType.1" name="addBuiltInType" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-addBuiltInType">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addBuiltInType.1-type" name="type" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType.1" name="getBuiltInType" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType.1-ReturnResult-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType.1-name" name="name" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-setStrategy.1" name="setStrategy" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-setStrategy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-setStrategy.1-strategy" name="strategy" visibility="public" type="Semantics-Loci-LociL1-SemanticStrategy"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy.1" name="getStrategy" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-getStrategy">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy.1-name" name="name" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Loci-LociL1-SemanticStrategy" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy.1-OwnedParameter-_lowerValue"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex.1" name="getStrategyIndex" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex.1-name" name="name" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-Executor" name="Executor">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Executor-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-Executor">
- <body>An executor is used to execute behaviors and evaluation value specifications.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Executor-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-
-</body>
- </ownedComment>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-Executor-locus" name="locus" visibility="public" type="Semantics-Loci-LociL1-Locus" association="Semantics-Loci-LociL1-A_executor_locus">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Executor-locus-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-Executor-locus">
- <body>The locus at which this executor resides.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-locus-_lowerValue"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Executor-execute" name="execute" specification="Semantics-Loci-LociL1-Executor-execute.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute-behavior" name="behavior" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute-context" name="context" visibility="public" type="Semantics-Classes-Kernel-Object">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-execute-context-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-execute-inputs-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Executor-execute-inputs-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-execute-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Executor-execute-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Execute the given behavior with the given input values in the given context, producing the given output values.
-// There must be one input parameter value for each input (in or in-out) parameter of the behavior.
-// The returned values include one parameter value for each output (in-out, out or return) parameter of the behavior.
-// The execution instance is destroyed at completion.
-
-Execution execution = this.locus.factory.createExecution(behavior, context);
-
-for (int i = 0; i < inputs.size(); i++) {
- execution.setParameterValue(inputs.getValue(i));
-}
-
-execution.execute();
-ParameterValueList outputValues = execution.getOutputParameterValues();
-execution.destroy();
-
-return outputValues;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Executor-evaluate" name="evaluate" specification="Semantics-Loci-LociL1-Executor-evaluate.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-evaluate-specification" name="specification" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Evaluate the given value specification, returning the specified value.
-
-// Debug.println("[evaluate] Start...");
-return this.locus.factory.createEvaluation(specification).evaluate();
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Executor-start" name="start" specification="Semantics-Loci-LociL1-Executor-start.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-start-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Reference" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-start-type" name="type" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-start-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-start-inputs-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Executor-start-inputs-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Instantiate the given class and start any behavior of the resulting object.
-// (The behavior of an object includes any classifier behaviors for an active object or the class of the object itself, if that is a behavior.)
-
-Debug.println("[start] Starting " + type.name + "...");
-
-Object_ object = this.locus.instantiate(type);
-
-Debug.println("[start] Object = " + object);
-object.startBehavior(type, inputs);
-
-Reference reference = new Reference();
-reference.referent = object;
-
-return reference;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Executor-execute.1" name="execute" visibility="public" method="Semantics-Loci-LociL1-Executor-execute">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-behavior" name="behavior" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-context" name="context" visibility="public" type="Semantics-Classes-Kernel-Object">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-context-_lowerValue"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" isOrdered="true">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-inputs-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-inputs-_upperValue" value="*"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" isOrdered="true" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Executor-evaluate.1" name="evaluate" visibility="public" method="Semantics-Loci-LociL1-Executor-evaluate">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-evaluate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-evaluate.1-specification" name="specification" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Executor-start.1" name="start" visibility="public" method="Semantics-Loci-LociL1-Executor-start">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-start.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Reference" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-start.1-type" name="type" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-start.1-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-start.1-inputs-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Executor-start.1-inputs-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy" name="FirstChoiceStrategy">
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy-_generalization.0" general="Semantics-Loci-LociL1-ChoiceStrategy"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy-choose" name="choose" specification="Semantics-Loci-LociL1-FirstChoiceStrategy-choose.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy-choose-size" name="size" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy-choose-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Always choose one.
-
-return 1;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy-choose.1" name="choose" visibility="public" method="Semantics-Loci-LociL1-FirstChoiceStrategy-choose">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy-choose.1-size" name="size" visibility="public">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy-choose.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-Locus" name="Locus">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Locus-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-Locus">
- <body>A locus is a place at which extensional values (objects or links) can exist. The extent of a class or association is the set of objects or links of that type that exist at a certain locus.
-A locus also has an executor and a factory associated with it, used to execute behaviors as a result of requests dispatched to objects at the locus.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Locus-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
-
-</body>
- </ownedComment>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-Locus-executor" name="executor" visibility="public" type="Semantics-Loci-LociL1-Executor" aggregation="composite" association="Semantics-Loci-LociL1-A_executor_locus">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Locus-executor-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-Locus-executor">
- <body>The executor to be used at this locus.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Locus-executor-_lowerValue"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-Locus-factory" name="factory" visibility="public" type="Semantics-Loci-LociL1-ExecutionFactory" aggregation="composite" association="Semantics-Loci-LociL1-A_factory_locus">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Locus-factory-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-Locus-factory">
- <body>The factory to be used at this locus.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Locus-factory-_lowerValue"/>
- </ownedAttribute>
- <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-Locus-extensionalValues" name="extensionalValues" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue" aggregation="composite" association="Semantics-Classes-Kernel-A_locus_extensionalValues">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Locus-extensionalValues-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-Locus-extensionalValues">
- <body>The set of values that are members of classifier extents at this locus.</body>
- </ownedComment>
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Locus-extensionalValues-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Locus-extensionalValues-_upperValue" value="*"/>
- </ownedAttribute>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Locus-setExecutor" name="setExecutor" specification="Semantics-Loci-LociL1-Locus-setExecutor.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-setExecutor-executor" name="executor" visibility="public" type="Semantics-Loci-LociL1-Executor"/>
- <language>Java</language>
- <body>// Set the executor for this locus.
-
-this.executor = executor;
-this.executor.locus = this;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Locus-setFactory" name="setFactory" specification="Semantics-Loci-LociL1-Locus-setFactory.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-setFactory-factory" name="factory" visibility="public" type="Semantics-Loci-LociL1-ExecutionFactory"/>
- <language>Java</language>
- <body>// Set the factory for this locus.
-
-this.factory = factory;
-this.factory.locus = this;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Locus-getExtent" name="getExtent" specification="Semantics-Loci-LociL1-Locus-getExtent.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-getExtent-classifier" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-getExtent-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Locus-getExtent-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Locus-getExtent-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Return the set of extensional values at this locus which have the given classifier as a type.
-
-ExtensionalValueList extent = new ExtensionalValueList();
-
-ExtensionalValueList extensionalValues = this.extensionalValues;
-for (int i = 0; i < extensionalValues.size(); i++) {
- ExtensionalValue value = extensionalValues.getValue(i);
- ClassifierList types = value.getTypes();
-
- boolean conforms = false;
- int j = 1;
- while (!conforms & j <= types.size()) {
- conforms = this.conforms(types.getValue(j-1), classifier);
- j = j + 1;
- }
-
- if (conforms) {
- extent.addValue(value);
- }
-}
-
-return extent;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Locus-add" name="add" specification="Semantics-Loci-LociL1-Locus-add.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-add-value" name="value" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue"/>
- <language>Java</language>
- <body>// Add the given extensional value to this locus
-
-value.locus = this;
-this.extensionalValues.addValue(value);
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Locus-remove" name="remove" specification="Semantics-Loci-LociL1-Locus-remove.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-remove-value" name="value" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue"/>
- <language>Java</language>
- <body>// Remove the given extensional value from this locus.
-
-value.locus = null;
-
-boolean notFound = true;
-int i = 1;
-while (notFound & i <= this.extensionalValues.size()) {
- if (this.extensionalValues.getValue(i-1) == value) {
- this.extensionalValues.remove(i-1);
- notFound = false;
- }
- i = i + 1;
-}
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Locus-instantiate" name="instantiate" specification="Semantics-Loci-LociL1-Locus-instantiate.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-instantiate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Object" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-instantiate-type" name="type" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Instantiate the given class at this locus.
-
-Object_ object = null;
-
-if (type instanceof Behavior) {
- object = this.factory.createExecution((Behavior)type, null);
-}
-else {
- object = new Object_();
-
- object.types.addValue(type);
- object.createFeatureValues();
- this.add(object);
-}
-
-return object;
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Locus-conforms" name="conforms" specification="Semantics-Loci-LociL1-Locus-conforms.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-conforms-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-conforms-type" name="type" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-conforms-classifier" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- </ownedParameter>
- <language>Java</language>
- <body>// Test if a type conforms to a given classifier, that is, the type is equal to or a descendant of the classifier.
-
-boolean doesConform = false;
-
-if (type == classifier) {
- doesConform = true;
-} else {
- int i = 1;
- while (!doesConform & i <= type.general.size()) {
- doesConform = this.conforms(type.general.getValue(i-1), classifier);
- i = i + 1;
- }
-}
-
-return doesConform;
-
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Locus-setExecutor.1" name="setExecutor" visibility="public" method="Semantics-Loci-LociL1-Locus-setExecutor">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-setExecutor.1-executor" name="executor" visibility="public" type="Semantics-Loci-LociL1-Executor"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Locus-setFactory.1" name="setFactory" visibility="public" method="Semantics-Loci-LociL1-Locus-setFactory">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-setFactory.1-factory" name="factory" visibility="public" type="Semantics-Loci-LociL1-ExecutionFactory"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Locus-getExtent.1" name="getExtent" visibility="public" method="Semantics-Loci-LociL1-Locus-getExtent">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-getExtent.1-classifier" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-getExtent.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue" direction="return">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Locus-getExtent.1-ReturnResult-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Locus-getExtent.1-ReturnResult-_upperValue" value="*"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Locus-add.1" name="add" visibility="public" method="Semantics-Loci-LociL1-Locus-add">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-add.1-value" name="value" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Locus-remove.1" name="remove" visibility="public" method="Semantics-Loci-LociL1-Locus-remove">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-remove.1-value" name="value" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue"/>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Locus-instantiate.1" name="instantiate" visibility="public" method="Semantics-Loci-LociL1-Locus-instantiate">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-instantiate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Object" direction="return"/>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-instantiate.1-type" name="type" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
- </ownedParameter>
- </ownedOperation>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Locus-conforms.1" name="conforms" visibility="public" method="Semantics-Loci-LociL1-Locus-conforms">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-conforms.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-conforms.1-type" name="type" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-conforms.1-classifier" name="classifier" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-SemanticStrategy" name="SemanticStrategy" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-SemanticStrategy-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-SemanticStrategy">
- <body>The common base class for semantic strategy classes. A semantic strategy class specifies the behavior to be used at a specific semantic variatio point.</body>
- </ownedComment>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-SemanticStrategy-getName" name="getName" visibility="public" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-SemanticStrategy-getName-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-SemanticStrategy-getName">
- <body>Return the name of this strategy, as defined for the semantic variation point to which the strategy applies.</body>
- </ownedComment>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-SemanticStrategy-getName-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
- <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
- </ownedParameter>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-SemanticVisitor" name="SemanticVisitor" isAbstract="true">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-SemanticVisitor-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-SemanticVisitor">
- <body>The common base class for semantic visitor classes.</body>
- </ownedComment>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-SemanticVisitor-_endIsolation" name="_endIsolation" specification="Semantics-Loci-LociL1-SemanticVisitor-_endIsolation.1" isReentrant="false">
- <language>Java</language>
- <body>Debug.println("[_endIsolation] End isolation.");
-</body>
- </ownedBehavior>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-SemanticVisitor-_beginIsolation" name="_beginIsolation" specification="Semantics-Loci-LociL1-SemanticVisitor-_beginIsolation.1" isReentrant="false">
- <language>Java</language>
- <body>Debug.println("[_beginIsolation] Begin isolation.");
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-SemanticVisitor-_endIsolation.1" name="_endIsolation" visibility="public" isStatic="true" method="Semantics-Loci-LociL1-SemanticVisitor-_endIsolation"/>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-SemanticVisitor-_beginIsolation.1" name="_beginIsolation" visibility="public" isStatic="true" method="Semantics-Loci-LociL1-SemanticVisitor-_beginIsolation"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1" name="ExecutionFactoryL1">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory">
- <body> An execution factory is used to create objects that represent the execution of a behavior, the evaluation of a value specification or the activation of an activity node. This class only handles elements available at Conformance Level 1.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Classes.Kernel.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Classes.Kernel.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-_generalization.0" general="Semantics-Loci-LociL1-ExecutionFactory"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor" name="instantiateVisitor" specification="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor-element" name="element" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-SemanticVisitor" direction="return"/>
- <language>Java</language>
- <body>// Instantiate a visitor object for the given element (at Conformance Level 1)
-
-SemanticVisitor visitor = null;
-
-if (element instanceof LiteralBoolean) {
- visitor = new LiteralBooleanEvaluation();
-}
-
-else if (element instanceof fUML.Syntax.Classes.Kernel.LiteralString) {
- visitor = new LiteralStringEvaluation();
-}
-
-else if (element instanceof fUML.Syntax.Classes.Kernel.LiteralNull) {
- visitor = new LiteralNullEvaluation();
-}
-
-else if (element instanceof fUML.Syntax.Classes.Kernel.InstanceValue) {
- visitor = new InstanceValueEvaluation();
-}
-
-else if (element instanceof fUML.Syntax.Classes.Kernel.LiteralUnlimitedNatural) {
- visitor = new LiteralUnlimitedNaturalEvaluation();
-}
-
-else if (element instanceof fUML.Syntax.Classes.Kernel.LiteralInteger) {
- visitor = new LiteralIntegerEvaluation();
-}
-
-else if (element instanceof LiteralReal) {
- visitor = new LiteralRealEvaluation();
-}
-
-return visitor;
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor.1" name="instantiateVisitor" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor.1-element" name="element" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-SemanticVisitor" direction="return"/>
- </ownedOperation>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Loci-LociL1-A_executor_locus" name="A_executor_locus" visibility="private" memberEnd="Semantics-Loci-LociL1-Executor-locus Semantics-Loci-LociL1-Locus-executor"/>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Loci-LociL1-A_factory_locus" name="A_factory_locus" visibility="private" memberEnd="Semantics-Loci-LociL1-ExecutionFactory-locus Semantics-Loci-LociL1-Locus-factory"/>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Loci-LociL1-A_builtInTypes_executionFactory" name="A_builtInTypes_executionFactory" visibility="private" memberEnd="Semantics-Loci-LociL1-A_builtInTypes_executionFactory-_ownedEnd.0 Semantics-Loci-LociL1-ExecutionFactory-builtInTypes">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-A_builtInTypes_executionFactory-_ownedEnd.0" visibility="private" type="Semantics-Loci-LociL1-ExecutionFactory" association="Semantics-Loci-LociL1-A_builtInTypes_executionFactory">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-A_builtInTypes_executionFactory-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-A_builtInTypes_executionFactory-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Loci-LociL1-A_strategies_executionFactory" name="A_strategies_executionFactory" visibility="private" memberEnd="Semantics-Loci-LociL1-A_strategies_executionFactory-_ownedEnd.0 Semantics-Loci-LociL1-ExecutionFactory-strategies">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-A_strategies_executionFactory-_ownedEnd.0" visibility="private" type="Semantics-Loci-LociL1-ExecutionFactory" association="Semantics-Loci-LociL1-A_strategies_executionFactory"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Loci-LociL1-A_primitiveBehaviorPrototypes_executionFactory" name="A_primitiveBehaviorPrototypes_executionFactory" visibility="private" memberEnd="Semantics-Loci-LociL1-A_primitiveBehaviorPrototypes_executionFactory-_ownedEnd.0 Semantics-Loci-LociL1-ExecutionFactory-primitiveBehaviorPrototypes">
- <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-A_primitiveBehaviorPrototypes_executionFactory-_ownedEnd.0" visibility="private" type="Semantics-Loci-LociL1-ExecutionFactory" association="Semantics-Loci-LociL1-A_primitiveBehaviorPrototypes_executionFactory">
- <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-A_primitiveBehaviorPrototypes_executionFactory-_ownedEnd.0-_lowerValue"/>
- <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-A_primitiveBehaviorPrototypes_executionFactory-_ownedEnd.0-_upperValue" value="*"/>
- </ownedEnd>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Loci-LociL2" name="LociL2">
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL2-_packageImport.0" importedPackage="Semantics-Loci-LociL1"/>
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL2-_packageImport.1" importedPackage="Semantics-Actions-BasicActions"/>
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL2-_packageImport.2" importedPackage="Semantics-Actions-IntermediateActions"/>
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL2-_packageImport.3" importedPackage="Semantics-Activities-IntermediateActivities"/>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2" name="ExecutionFactoryL2">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory">
- <body> An execution factory is used to create objects that represent the execution of a behavior, the evaluation of a value specification or the activation of an activity node. This class only handles elements available at Conformance Level 2.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Activities.IntermediateActivities.*;
-import fUML.Syntax.Actions.BasicActions.*;
-import fUML.Syntax.Actions.IntermediateActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Activities.IntermediateActivities.*;
-import fUML.Semantics.Actions.BasicActions.*;
-import fUML.Semantics.Actions.IntermediateActions.*;
-import fUML.Semantics.Loci.LociL1.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-_generalization.0" general="Semantics-Loci-LociL1-ExecutionFactoryL1"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor" name="instantiateVisitor" specification="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor-element" name="element" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-SemanticVisitor" direction="return"/>
- <language>Java</language>
- <body>// Instantiate a visitor object for the given element (at Conformance Level 2)
-
-SemanticVisitor visitor = null;
-
-if (element instanceof Activity) {
- visitor = new ActivityExecution();
-}
-
-else if (element instanceof ActivityParameterNode) {
- visitor = new ActivityParameterNodeActivation();
-}
-
-else if (element instanceof InitialNode) {
- visitor = new InitialNodeActivation();
-}
-
-else if (element instanceof ActivityFinalNode) {
- visitor = new ActivityFinalNodeActivation();
-}
-
-else if (element instanceof FlowFinalNode) {
- visitor = new FlowFinalNodeActivation();
-}
-
-else if (element instanceof JoinNode) {
- visitor = new JoinNodeActivation();
-}
-
-else if (element instanceof MergeNode) {
- visitor = new MergeNodeActivation();
-}
-
-else if (element instanceof ForkNode) {
- visitor = new ForkNodeActivation();
-}
-
-else if (element instanceof DecisionNode) {
- visitor = new DecisionNodeActivation();
-}
-
-else if (element instanceof InputPin) {
- visitor = new InputPinActivation();
-}
-
-else if (element instanceof OutputPin) {
- visitor = new OutputPinActivation();
-}
-
-else if (element instanceof CallBehaviorAction) {
- visitor = new CallBehaviorActionActivation();
-}
-
-else if (element instanceof CallOperationAction) {
- visitor = new CallOperationActionActivation();
-}
-
-else if (element instanceof SendSignalAction) {
- visitor = new SendSignalActionActivation();
-}
-
-else if (element instanceof ReadSelfAction) {
- visitor = new ReadSelfActionActivation();
-}
-
-else if (element instanceof TestIdentityAction) {
- visitor = new TestIdentityActionActivation();
-}
-
-else if (element instanceof ValueSpecificationAction) {
- visitor = new ValueSpecificationActionActivation();
-}
-
-else if (element instanceof CreateObjectAction) {
- visitor = new CreateObjectActionActivation();
-}
-
-else if (element instanceof DestroyObjectAction) {
- visitor = new DestroyObjectActionActivation();
-}
-
-else if (element instanceof ReadStructuralFeatureAction) {
- visitor = new ReadStructuralFeatureActionActivation();
-}
-
-else if (element instanceof ClearStructuralFeatureAction) {
- visitor = new ClearStructuralFeatureActionActivation();
-}
-
-else if (element instanceof AddStructuralFeatureValueAction) {
- visitor = new AddStructuralFeatureValueActionActivation();
-}
-
-else if (element instanceof RemoveStructuralFeatureValueAction) {
- visitor = new RemoveStructuralFeatureValueActionActivation();
-}
-
-else if (element instanceof ReadLinkAction) {
- visitor = new ReadLinkActionActivation();
-}
-
-else if (element instanceof ClearAssociationAction) {
- visitor = new ClearAssociationActionActivation();
-}
-
-else if (element instanceof CreateLinkAction) {
- visitor = new CreateLinkActionActivation();
-}
-
-else if (element instanceof DestroyLinkAction) {
- visitor = new DestroyLinkActionActivation();
-}
-
-else {
- visitor = super.instantiateVisitor(element);
-}
-
-return visitor;
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor.1" name="instantiateVisitor" visibility="public" method="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor.1-element" name="element" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-SemanticVisitor" direction="return"/>
- </ownedOperation>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Loci-LociL3" name="LociL3">
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL3-_packageImport.0" importedPackage="Semantics-Loci-LociL2"/>
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL3-_packageImport.1" importedPackage="Semantics-Actions-CompleteActions"/>
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL3-_packageImport.2" importedPackage="Semantics-Activities-CompleteStructuredActivities"/>
- <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL3-_packageImport.3" importedPackage="Semantics-Activities-ExtraStructuredActivities"/>
- <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3" name="ExecutionFactoryL3">
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory">
- <body> An execution factory is used to create objects that represent the execution of a behavior, the evaluation of a value specification or the activation of an activity node. This class only handles elements available at Conformance Level 3.</body>
- </ownedComment>
- <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-_ownedComment.1">
- <body>import fUML.Syntax.*;
-import fUML.Syntax.Activities.CompleteStructuredActivities.*;
-import fUML.Syntax.Activities.ExtraStructuredActivities.*;
-import fUML.Syntax.Actions.CompleteActions.*;
-
-import fUML.Semantics.*;
-import fUML.Semantics.Activities.CompleteStructuredActivities.*;
-import fUML.Semantics.Activities.ExtraStructuredActivities.*;
-import fUML.Semantics.Actions.CompleteActions.*;
-import fUML.Semantics.Loci.LociL1.*;
-import fUML.Semantics.Loci.LociL2.*;
-</body>
- </ownedComment>
- <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-_generalization.0" general="Semantics-Loci-LociL2-ExecutionFactoryL2"/>
- <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor" name="instantiateVisitor" specification="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor.1" isReentrant="false">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor-element" name="element" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-SemanticVisitor" direction="return"/>
- <language>Java</language>
- <body>// Instantiate a visitor object for the given element (at Conformance Level 3)
-
-SemanticVisitor visitor = null;
-
-if (element instanceof ConditionalNode) {
- visitor = new ConditionalNodeActivation();
-}
-
-else if (element instanceof LoopNode) {
- visitor = new LoopNodeActivation();
-}
-
-else if (element instanceof ExpansionRegion) {
- visitor = new ExpansionRegionActivation();
-}
-
-// Note: Since ConditionalNode, LoopNode and ExpansionRegion are subclasses of
-// StructuredActivityNode, element must be tested against the three subclasses before
-// the superclass
-else if (element instanceof StructuredActivityNode) {
- visitor = new StructuredActivityNodeActivation();
-}
-
-else if (element instanceof ExpansionNode) {
- visitor = new ExpansionNodeActivation();
-}
-
-else if (element instanceof ReadExtentAction) {
- visitor = new ReadExtentActionActivation();
-}
-
-else if (element instanceof ReadIsClassifiedObjectAction) {
- visitor = new ReadIsClassifiedObjectActionActivation();
-}
-
-else if (element instanceof ReclassifyObjectAction) {
- visitor = new ReclassifyObjectActionActivation();
-}
-
-else if (element instanceof StartObjectBehaviorAction) {
- visitor = new StartObjectBehaviorActionActivation();
-}
-
-else if (element instanceof StartClassifierBehaviorAction) {
- visitor = new StartClassifierBehaviorActionActivation();
-}
-
-else if (element instanceof AcceptEventAction) {
- visitor = new AcceptEventActionActivation();
-}
-
-else if (element instanceof ReduceAction) {
- visitor = new ReduceActionActivation();
-}
-
-else {
- visitor = super.instantiateVisitor(element);
-}
-
-return visitor;
-
-</body>
- </ownedBehavior>
- <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor.1" name="instantiateVisitor" visibility="public" method="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor">
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor.1-element" name="element" visibility="public">
- <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
- </ownedParameter>
- <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-SemanticVisitor" direction="return"/>
- </ownedOperation>
- </packagedElement>
- </packagedElement>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-L1" name="L1">
- <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L1-_packageMerge.0" mergedPackage="Semantics-Classes-Kernel"/>
- <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L1-_packageMerge.1" mergedPackage="Semantics-CommonBehaviors-BasicBehaviors"/>
- <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L1-_packageMerge.2" mergedPackage="Semantics-CommonBehaviors-Communications"/>
- <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L1-_packageMerge.3" mergedPackage="Semantics-Loci-LociL1"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-L2" name="L2">
- <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L2-_packageMerge.0" mergedPackage="Semantics-L1"/>
- <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L2-_packageMerge.1" mergedPackage="Semantics-Activities-IntermediateActivities"/>
- <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L2-_packageMerge.2" mergedPackage="Semantics-Actions-BasicActions"/>
- <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L2-_packageMerge.3" mergedPackage="Semantics-Actions-IntermediateActions"/>
- <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L2-_packageMerge.4" mergedPackage="Semantics-Loci-LociL2"/>
- </packagedElement>
- <packagedElement xmi:type="uml:Package" xmi:id="Semantics-L3" name="L3">
- <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L3-_packageMerge.0" mergedPackage="Semantics-L2"/>
- <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L3-_packageMerge.1" mergedPackage="Semantics-Activities-CompleteStructuredActivities"/>
- <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L3-_packageMerge.2" mergedPackage="Semantics-Actions-CompleteActions"/>
- <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L3-_packageMerge.3" mergedPackage="Semantics-Activities-ExtraStructuredActivities"/>
- <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L3-_packageMerge.4" mergedPackage="Semantics-Loci-LociL3"/>
- </packagedElement>
- </packagedElement>
- <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_1fc3YGDmEeOv67MuWcLvIw">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1glf0GDmEeOv67MuWcLvIw" 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 xmi:type="uml:Profile" href="pathmap://UML_PROFILES/StandardL2.profile.uml#_0"/>
- </profileApplication>
- <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_KgZZANI7EeSMT41jQ-_fLg">
- <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KghU0NI7EeSMT41jQ-_fLg" source="http://www.eclipse.org/uml2/2.0.0/UML">
- <references xmi:type="ecore:EPackage" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#_Kv8EIKFXEeS_KNX0nfvIVQ"/>
- </eAnnotations>
- <appliedProfile xmi:type="uml:Profile" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#ActionLanguage"/>
- </profileApplication>
- </uml:Model>
- <standard:Create xmi:id="__906wGDmEeOv67MuWcLvIw" base_BehavioralFeature="_xXvbIGDmEeOv67MuWcLvIw"/>
- <ActionLanguage:TextualRepresentation xmi:id="_2CHqIGDnEeOm3qeg9F4VEw" base_Comment="_1_fM4GDnEeOm3qeg9F4VEw"/>
-</xmi:XMI>
+<?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:ActionLanguage="http://www.omg.org/spec/ALF/20120827/ActionLanguage-Profile" xmlns:ecore="http://www.eclipse.org/emf/2002/Ecore" xmlns:standard="http://www.eclipse.org/uml2/5.0.0/UML/Profile/Standard" xmlns:uml="http://www.eclipse.org/uml2/5.0.0/UML" xsi:schemaLocation="http://www.omg.org/spec/ALF/20120827/ActionLanguage-Profile pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#_Kv8EIKFXEeS_KNX0nfvIVQ">
+ <uml:Model xmi:id="_0" name="fUML">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_MAJPMGC9EeO8HvqR3xhj3Q">
+ <importedPackage xmi:type="uml:Model" href="pathmap://UML_METAMODELS/UML.metamodel.uml#_0"/>
+ </packageImport>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="_yjrNUGDnEeOm3qeg9F4VEw">
+ <importedPackage xmi:type="uml:Model" href="pathmap://PAPYRUS_ALF_LIBRARY/Alf.library.uml#Alf"/>
+ </packageImport>
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics" name="Semantics">
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Actions" name="Actions">
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Actions-BasicActions" name="BasicActions">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Actions-BasicActions-_packageImport.0" importedPackage="Semantics-Activities-IntermediateActivities"/>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Actions-BasicActions-_packageImport.2" importedPackage="Semantics-CommonBehaviors-Communications"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-SendSignalActionActivation" name="SendSignalActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-SendSignalActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-SendSignalActionActivation">
+ <body>A send signal action activation is an invocation action activation for a send signal action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-SendSignalActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.CommonBehaviors.Communications.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-SendSignalActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-InvocationActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-SendSignalActionActivation-doAction" name="doAction" specification="Semantics-Actions-BasicActions-SendSignalActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the value from the target pin. If the value is not a reference, then do nothing.
+// Otherwise, construct a signal using the values from the argument pins and send it to the referent object.
+
+SendSignalAction action = (SendSignalAction)(this.node);
+Value target = this.takeTokens(action.target).getValue(0);
+
+if (target instanceof Reference) {
+ Signal signal = action.signal;
+
+ SignalInstance signalInstance = new SignalInstance();
+ signalInstance.type = signal;
+
+ PropertyList attributes = signal.ownedAttribute;
+ InputPinList argumentPins = action.argument;
+ for (int i = 0; i < attributes.size(); i++) {
+ Property attribute = attributes.getValue(i);
+ InputPin argumentPin = argumentPins.getValue(i);
+ ValueList values = this.takeTokens(argumentPin);
+ signalInstance.setFeatureValue(attribute, values, 0);
+ }
+
+ ((Reference)target).send(signalInstance);
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-SendSignalActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-BasicActions-SendSignalActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-PinActivation" name="PinActivation" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-PinActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-PinActivation">
+ <body>A pin activation is an object node activation for a node that is a pin.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-PinActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-PinActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ObjectNodeActivation"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-BasicActions-PinActivation-actionActivation" name="actionActivation" visibility="public" type="Semantics-Actions-BasicActions-ActionActivation" association="Semantics-Actions-BasicActions-A_pinActivations_actionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-PinActivation-actionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-PinActivation-actionActivation">
+ <body>The activation of the action that owns the pin for this pin activation.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-PinActivation-actionActivation-_lowerValue"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire" name="fire" specification="Semantics-Actions-BasicActions-PinActivation-fire.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Add all incoming tokens to the pin.
+
+Debug.println("[fire] Pin " + (this.node==null? "": this.node.name + "..."));
+
+this.addTokens(incomingTokens);
+
+
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens" name="takeOfferedTokens" specification="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens-Parameter1-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens-Parameter1-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Take only a number of tokens only up to the limit allowed by
+// the multiplicity upper bound of the pin for this activation.
+
+int count = this.countUnofferedTokens();
+int upper = -1;
+
+// Note: A pin activation used in an expansion activation group
+// will have this.node == null.
+if (this.node != null) {
+ upper = ((Pin)(this.node)).multiplicityElement.upper.naturalValue;
+}
+
+TokenList tokens = new TokenList();
+
+// Note: upper < 0 indicates an unbounded upper multiplicity.
+if (upper < 0 | count < upper) {
+ ActivityEdgeInstanceList incomingEdges = this.incomingEdges;
+ for (int i=0; i<incomingEdges.size(); i++) {
+ ActivityEdgeInstance edge = incomingEdges.getValue(i);
+ int incomingCount = edge.countOfferedValues();
+ TokenList incomingTokens = new TokenList();
+ if (upper < 0 | incomingCount < upper - count) {
+ incomingTokens = edge.takeOfferedTokens();
+ count = count + incomingCount;
+ } else if (count < upper) {
+ incomingTokens = edge.takeOfferedTokens(upper-count);
+ count = upper;
+ }
+ for (int j = 0; j < incomingTokens.size(); j++) {
+ Token token = incomingTokens.getValue(j);
+ tokens.addValue(token);
+ }
+ }
+}
+
+return tokens;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire.1" name="fire" visibility="public" method="Semantics-Actions-BasicActions-PinActivation-fire">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire.1-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-PinActivation-fire.1-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens.1" name="takeOfferedTokens" visibility="public" method="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens.1-Parameter1-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-PinActivation-takeOfferedTokens.1-Parameter1-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-OutputPinActivation" name="OutputPinActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-OutputPinActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-OutputPinActivation">
+ <body>An output pin activation is a pin activation for an output pin.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-OutputPinActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Loci.*;
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-OutputPinActivation-_generalization.0" general="Semantics-Actions-BasicActions-PinActivation"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-InvocationActionActivation" name="InvocationActionActivation" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-InvocationActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-InvocationActionActivation">
+ <body>An invocation action activation is an action activation of an invocation action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-InvocationActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Loci.*;
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-InvocationActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-InputPinActivation" name="InputPinActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-InputPinActivation">
+ <body>An input pin activation is a pin activation for an input pin.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-_generalization.0" general="Semantics-Actions-BasicActions-PinActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-receiveOffer" name="receiveOffer" specification="Semantics-Actions-BasicActions-InputPinActivation-receiveOffer.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Forward the offer to the action activation. [When all input pins are ready, the action will fire them.]
+
+this.actionActivation.receiveOffer();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-isReady" name="isReady" specification="Semantics-Actions-BasicActions-InputPinActivation-isReady.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-isReady-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return true if the total number of values already being offered by this pin plus those being offered
+// by the sources of incoming edges is at least equal to the minimum multiplicity of the pin.
+
+boolean ready = super.isReady();
+if (ready) {
+ int totalValueCount = this.countUnofferedTokens() + this.countOfferedValues();
+ int minimum = ((Pin)this.node).multiplicityElement.lower;
+ ready = totalValueCount >= minimum;
+}
+
+return ready;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-receiveOffer.1" name="receiveOffer" visibility="public" method="Semantics-Actions-BasicActions-InputPinActivation-receiveOffer"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Actions-BasicActions-InputPinActivation-isReady">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-InputPinActivation-isReady.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-CallActionActivation" name="CallActionActivation" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-CallActionActivation">
+ <body>A call action activation is an invocation action activation for a call action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-InvocationActionActivation"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-callExecutions" name="callExecutions" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" aggregation="composite" association="Semantics-Actions-BasicActions-A_callExecutions_callActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-callExecutions-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-CallActionActivation-callExecutions">
+ <body>The set of execution object for currently ongoing calls made through this call action activation.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-callExecutions-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-callExecutions-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-doAction" name="doAction" specification="Semantics-Actions-BasicActions-CallActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the call execution object, set its input parameters from the argument pins and execute it.
+// Once execution completes, copy the values of the output parameters of the call execution to the result pins of the call action execution, then destroy the execution.
+
+Execution callExecution = this.getCallExecution();
+
+if (callExecution != null) {
+ this.callExecutions.addValue(callExecution);
+
+ CallAction callAction = (CallAction)(this.node);
+ InputPinList argumentPins = callAction.argument;
+ OutputPinList resultPins = callAction.result;
+
+ ParameterList parameters = callExecution.getBehavior().ownedParameter;
+
+ int pinNumber = 1;
+ int i = 1;
+ while (i <= parameters.size()) {
+ Parameter parameter = parameters.getValue(i-1);
+ if (parameter.direction == ParameterDirectionKind.in |
+ parameter.direction == ParameterDirectionKind.inout) {
+ ParameterValue parameterValue = new ParameterValue();
+ parameterValue.parameter = parameter;
+ parameterValue.values = this.takeTokens(argumentPins.getValue(pinNumber-1));
+ callExecution.setParameterValue(parameterValue);
+ pinNumber = pinNumber + 1;
+ }
+ i = i + 1;
+ }
+
+ callExecution.execute();
+
+ ParameterValueList outputParameterValues = callExecution.getOutputParameterValues();
+
+ pinNumber = 1;
+ i = 1;
+ while (i <= parameters.size()) {
+ Parameter parameter = parameters.getValue(i - 1);
+ if ((parameter.direction == ParameterDirectionKind.inout)
+ | (parameter.direction == ParameterDirectionKind.out)
+ | (parameter.direction == ParameterDirectionKind.return_)) {
+ for (int j = 0; j < outputParameterValues.size(); j++) {
+ ParameterValue outputParameterValue = outputParameterValues.getValue(j);
+ if (outputParameterValue.parameter == parameter) {
+ OutputPin resultPin = resultPins.getValue(pinNumber - 1);
+ this.putTokens(resultPin, outputParameterValue.values);
+ }
+ }
+ pinNumber = pinNumber + 1;
+ }
+ i = i + 1;
+ }
+
+ callExecution.destroy();
+ this.removeCallExecution(callExecution);
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-terminate" name="terminate" specification="Semantics-Actions-BasicActions-CallActionActivation-terminate.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Terminate all call executions (if any), then terminate the call action activation (self).
+
+for (int i = 0; i < this.callExecutions.size(); i++) {
+ Execution execution = this.callExecutions.getValue(i);
+ execution.terminate();
+}
+
+super.terminate();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-removeCallExecution" name="removeCallExecution" specification="Semantics-Actions-BasicActions-CallActionActivation-removeCallExecution.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-removeCallExecution-execution" name="execution" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
+ <language>Java</language>
+ <body>// Remove the given execution from the current list of call executions.
+
+boolean notFound = true;
+int i = 1;
+while (notFound & i <= this.callExecutions.size()) {
+ if (this.callExecutions.getValue(i-1) == execution) {
+ this.callExecutions.removeValue(i-1);
+ notFound = false;
+ }
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-BasicActions-CallActionActivation-doAction"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-getCallExecution" name="getCallExecution" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-getCallExecution-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-CallActionActivation-getCallExecution">
+ <body>Get the execution object for the called behavior.
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-getCallExecution-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Actions-BasicActions-CallActionActivation-terminate"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-removeCallExecution.1" name="removeCallExecution" visibility="public" method="Semantics-Actions-BasicActions-CallActionActivation-removeCallExecution">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-CallActionActivation-removeCallExecution.1-execution" name="execution" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation" name="CallBehaviorActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-CallBehaviorActionActivation">
+ <body>A call behavior action activation is a call action activation for a call behavior action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Loci.*;
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-CallActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation-getCallExecution" name="getCallExecution" specification="Semantics-Actions-BasicActions-CallBehaviorActionActivation-getCallExecution.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation-getCallExecution-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
+ <language>Java</language>
+ <body>// Create and execution for the given behavior at the current locus and return the resulting execution object.
+// If the given behavior is in the context of a classifier, then pass the current context object as the context for the call.
+// Otherwise, use a null context.
+// [Note that this requires the behavior context to be compatible with the type of the current contect object.]
+
+Behavior behavior = ((CallBehaviorAction)(this.node)).behavior;
+
+Object_ context;
+if (behavior.context == null) {
+ context = null;
+} else {
+ // Debug.println("[getCallExecution] behavior context = " + behavior.context.name);
+ context = this.getExecutionContext();
+}
+
+// Debug.println("[getCallExecution] context = " + context);
+
+return this.getExecutionLocus().factory.createExecution(behavior, context);
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation-getCallExecution.1" name="getCallExecution" visibility="public" method="Semantics-Actions-BasicActions-CallBehaviorActionActivation-getCallExecution">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-CallBehaviorActionActivation-getCallExecution.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation" name="CallOperationActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-CallOperationActionActivation">
+ <body>A call operation action activation is a call action activation for a call operation action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-CallActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation-getCallExecution" name="getCallExecution" specification="Semantics-Actions-BasicActions-CallOperationActionActivation-getCallExecution.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation-getCallExecution-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
+ <language>Java</language>
+ <body>// If the value on the target input pin is a reference, dispatch the operation to it and return the resulting execution object.
+
+CallOperationAction action = (CallOperationAction)(this.node);
+Value target = this.takeTokens(action.target).getValue(0);
+
+Execution execution;
+if (target instanceof Reference) {
+ execution = ((Reference)target).dispatch(action.operation);
+}
+else {
+ execution = null;
+}
+
+return execution;
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation-getCallExecution.1" name="getCallExecution" visibility="public" method="Semantics-Actions-BasicActions-CallOperationActionActivation-getCallExecution">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-CallOperationActionActivation-getCallExecution.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-BasicActions-ActionActivation" name="ActionActivation" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-ActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-ActionActivation">
+ <body>An action activation is an activity node activation for a node that is an action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-ActionActivation-_ownedComment.1">
+ <body>import java.util.*;
+
+import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-BasicActions-ActionActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-BasicActions-ActionActivation-pinActivations" name="pinActivations" visibility="public" type="Semantics-Actions-BasicActions-PinActivation" association="Semantics-Actions-BasicActions-A_pinActivations_actionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-ActionActivation-pinActivations-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-ActionActivation-pinActivations">
+ <body>The activations of the pins owned by the action of this action activation.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-pinActivations-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-pinActivations-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-BasicActions-ActionActivation-firing" name="firing" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-ActionActivation-firing-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-ActionActivation-firing">
+ <body>Whether this action activation is already firing. This attribute is only used if the action for this action activation has isLocallyReentrant = false (the default). If isLocallyReentrant=true, then firing always just remains false.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-run" name="run" specification="Semantics-Actions-BasicActions-ActionActivation-run.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Run this action activation and any outoging fork node attached to it.
+
+super.run();
+
+if (this.outgoingEdges.size() > 0) {
+ this.outgoingEdges.getValue(0).target.run();
+}
+
+this.firing = false;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens" name="takeOfferedTokens" specification="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens-OwnedParameter-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens-OwnedParameter-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// If the action is not locally reentrant, then mark this activation as firing.
+// Take any incoming offers of control tokens, then concurrently fire all input pin activations.
+
+// Note: This is included here to happen in the same isolation scope as the isReady test.
+this.firing = !((Action)this.node).isLocallyReentrant;
+
+TokenList offeredTokens = new TokenList();
+
+ActivityEdgeInstanceList incomingEdges = this.incomingEdges;
+for (int i = 0; i < incomingEdges.size(); i++) {
+ ActivityEdgeInstance incomingEdge = incomingEdges.getValue(i);
+ TokenList tokens = incomingEdge.takeOfferedTokens();
+ for (int j = 0; j < tokens.size(); j++) {
+ Token token = tokens.getValue(j);
+ token.withdraw();
+ offeredTokens.addValue(token);
+ }
+}
+
+Action action = (Action)(this.node);
+
+// *** Fire all input pins concurrently. ***
+InputPinList inputPins = action.input;
+for (Iterator i = inputPins.iterator(); i.hasNext();) {
+ InputPin pin = (InputPin)(i.next());
+ PinActivation pinActivation = this.getPinActivation(pin);
+ TokenList tokens = pinActivation.takeOfferedTokens();
+ pinActivation.fire(tokens);
+ for (int j = 0; j < tokens.size(); j++) {
+ Token token = tokens.getValue(j);
+ offeredTokens.addValue(token);
+ }
+}
+
+return offeredTokens;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire" name="fire" specification="Semantics-Actions-BasicActions-ActionActivation-fire.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Do the main action behavior then concurrently fire all output pin activations
+// and offer a single control token. Then activate the action again,
+// if it is still ready to fire and has at least one token actually being
+// offered to it.
+
+do {
+
+ Debug.println("[fire] Action " + this.node.name + "...");
+ Debug.println("[event] Fire activity="
+ + this.getActivityExecution().getBehavior().name
+ + " action=" + this.node.name);
+
+ this.doAction();
+ incomingTokens = this.completeAction();
+
+} while (incomingTokens.size() > 0);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-terminate" name="terminate" specification="Semantics-Actions-BasicActions-ActionActivation-terminate.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Terminate this action activation and any outgoing fork node attached to it.
+
+super.terminate();
+
+if (this.outgoingEdges.size() > 0) {
+ this.outgoingEdges.getValue(0).target.terminate();
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isReady" name="isReady" specification="Semantics-Actions-BasicActions-ActionActivation-isReady.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isReady-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// In addition to the default condition, check that, if the action has isLocallyReentrant=false, then the activation is not currently firing,
+// and that the sources of all incoming edges (control flows) have offers and all input pin activations are ready.
+// [This assumes that all edges directly incoming to the action are control flows.]
+
+boolean ready = super.isReady() & (((Action)this.node).isLocallyReentrant | !this.isFiring());
+
+int i = 1;
+while (ready & i <= this.incomingEdges.size()) {
+ ready = this.incomingEdges.getValue(i-1).hasOffer();
+ i = i + 1;
+}
+
+InputPinList inputPins = ((Action)(this.node)).input;
+int j = 1;
+while (ready & j <= inputPins.size()) {
+ ready = this.getPinActivation(inputPins.getValue(j-1)).isReady();
+ j = j + 1;
+}
+
+return ready;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isFiring" name="isFiring" specification="Semantics-Actions-BasicActions-ActionActivation-isFiring.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isFiring-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Indicate whether this action activation is currently firing or not.
+
+return firing;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-sendOffers" name="sendOffers" specification="Semantics-Actions-BasicActions-ActionActivation-sendOffers.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Fire all output pins and send offers on all outgoing control flows.
+
+Action action = (Action)(this.node);
+
+// *** Send offers from all output pins concurrently. ***
+OutputPinList outputPins = action.output;
+for (Iterator i = outputPins.iterator(); i.hasNext();) {
+ OutputPin outputPin = (OutputPin)i.next();
+ PinActivation pinActivation = this.getPinActivation(outputPin);
+ pinActivation.sendUnofferedTokens();
+}
+
+// Send offers on all outgoing control flows.
+if (this.outgoingEdges.size() > 0) {
+ TokenList tokens = new TokenList();
+ tokens.addValue(new ControlToken());
+ this.addTokens(tokens);
+ this.outgoingEdges.getValue(0).sendOffer(tokens);
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-createNodeActivations" name="createNodeActivations" specification="Semantics-Actions-BasicActions-ActionActivation-createNodeActivations.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Create node activations for the input and output pins of the action for this activation.
+// [Note: Pins are owned by their actions, not by the enclosing activity (or group), so they must be activated through the action activation.]
+
+Action action = (Action)(this.node);
+
+ActivityNodeList inputPinNodes = new ActivityNodeList();
+InputPinList inputPins = action.input;
+for (int i = 0; i < inputPins.size(); i++) {
+ InputPin inputPin = inputPins.getValue(i);
+ inputPinNodes.addValue(inputPin);
+}
+
+this.group.createNodeActivations(inputPinNodes);
+
+for (int i = 0; i < inputPinNodes.size(); i++) {
+ ActivityNode node = inputPinNodes.getValue(i);
+ this.addPinActivation((PinActivation)(this.group.getNodeActivation(node)));
+}
+
+ActivityNodeList outputPinNodes = new ActivityNodeList();
+OutputPinList outputPins = action.output;
+for (int i = 0; i < outputPins.size(); i++) {
+ OutputPin outputPin = outputPins.getValue(i);
+ outputPinNodes.addValue(outputPin);
+}
+
+this.group.createNodeActivations(outputPinNodes);
+
+for (int i = 0; i < outputPinNodes.size(); i++) {
+ ActivityNode node = outputPinNodes.getValue(i);
+ this.addPinActivation((PinActivation)(this.group.getNodeActivation(node)));
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addOutgoingEdge" name="addOutgoingEdge" specification="Semantics-Actions-BasicActions-ActionActivation-addOutgoingEdge.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addOutgoingEdge-edge" name="edge" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
+ <language>Java</language>
+ <body>// If there are no outgoing activity edge instances, create a single activity edge instance with a fork node execution at the other end.
+// Add the give edge to the fork node execution that is the target of the activity edge instance out of this action execution.
+// [This assumes that all edges directly outgoing from the action are control flows, with an implicit fork for offers out of the action.]
+
+ActivityNodeActivation forkNodeActivation;
+
+if (this.outgoingEdges.size() == 0) {
+ forkNodeActivation = new ForkNodeActivation();
+ ActivityEdgeInstance newEdge = new ActivityEdgeInstance();
+ super.addOutgoingEdge(newEdge);
+ forkNodeActivation.addIncomingEdge(newEdge);
+}
+else {
+ forkNodeActivation = this.outgoingEdges.getValue(0).target;
+}
+
+forkNodeActivation.addOutgoingEdge(edge);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addPinActivation" name="addPinActivation" specification="Semantics-Actions-BasicActions-ActionActivation-addPinActivation.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addPinActivation-pinActivation" name="pinActivation" visibility="public" type="Semantics-Actions-BasicActions-PinActivation"/>
+ <language>Java</language>
+ <body>// Add a pin activation to this action activation.
+
+this.pinActivations.addValue(pinActivation);
+pinActivation.actionActivation = this;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getPinActivation" name="getPinActivation" specification="Semantics-Actions-BasicActions-ActionActivation-getPinActivation.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getPinActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Actions-BasicActions-PinActivation" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getPinActivation-pin" name="pin" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Pin"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Precondition: The given pin is owned by the action of the action activation.
+// Return the pin activation corresponding to the given pin.
+
+PinActivation pinActivation = null;
+int i = 1;
+while (pinActivation == null & i <= this.pinActivations.size()) {
+ PinActivation thisPinActivation = this.pinActivations.getValue(i-1);
+ if (thisPinActivation.node == pin) {
+ pinActivation = thisPinActivation;
+ }
+ i = i + 1;
+}
+
+return pinActivation;
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putToken" name="putToken" specification="Semantics-Actions-BasicActions-ActionActivation-putToken.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putToken-pin" name="pin" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putToken-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <language>Java</language>
+ <body>// Precondition: The action execution has fired and the given pin is owned by the action of the action execution.
+// Place a token for the given value on the pin activation corresponding to the given output pin.
+
+Debug.println("[putToken] node = " + this.node.name);
+
+ObjectToken token = new ObjectToken();
+token.value = value;
+
+PinActivation pinActivation = this.getPinActivation(pin);
+pinActivation.addToken(token);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens" name="putTokens" specification="Semantics-Actions-BasicActions-ActionActivation-putTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens-pin" name="pin" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens-values-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens-values-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Precondition: The action execution has fired and the given pin is owned by the action of the action execution.
+// Place tokens for the given values on the pin activation corresponding to the given output pin.
+
+// Debug.println("[putTokens] node = " + this.node.name);
+
+for (int i = 0; i < values.size(); i++) {
+ Value value = values.getValue(i);
+ this.putToken(pin, value);
+}
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens" name="getTokens" specification="Semantics-Actions-BasicActions-ActionActivation-getTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens-pin" name="pin" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens-OwnedParameter-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens-OwnedParameter-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Precondition: The action execution has fired and the given pin is owned by the action of the action execution.
+// Get any tokens held by the pin activation corresponding to the given input pin and return them
+// (but leave the tokens on the pin).
+
+Debug.println("[getTokens] node = " + this.node.name + ", pin = " + pin.name);
+
+PinActivation pinActivation = this.getPinActivation(pin);
+TokenList tokens = pinActivation.getUnofferedTokens();
+
+ValueList values = new ValueList();
+for (int i = 0; i < tokens.size(); i++) {
+ Token token = tokens.getValue(i);
+ Value value = ((ObjectToken)token).value;
+ if (value != null) {
+ values.addValue(value);
+ }
+}
+
+return values;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens" name="takeTokens" specification="Semantics-Actions-BasicActions-ActionActivation-takeTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens-pin" name="pin" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Precondition: The action execution has fired and the given pin is owned by the action of the action execution.
+// Take any tokens held by the pin activation corresponding to the given input pin and return them.
+
+Debug.println("[takeTokens] node = " + this.node.name + ", pin = " + pin.name);
+
+PinActivation pinActivation = this.getPinActivation(pin);
+TokenList tokens = pinActivation.takeUnofferedTokens();
+
+ValueList values = new ValueList();
+for (int i = 0; i < tokens.size(); i++) {
+ Token token = tokens.getValue(i);
+ Value value = ((ObjectToken)token).value;
+ if (value != null) {
+ values.addValue(value);
+ }
+}
+
+return values;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isSourceFor" name="isSourceFor" specification="Semantics-Actions-BasicActions-ActionActivation-isSourceFor.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isSourceFor-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isSourceFor-edgeInstance" name="edgeInstance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
+ <language>Java</language>
+ <body>// If this action has an outgoing fork node, check that the fork node is the source of the given edge instance.
+
+boolean isSource = false;
+if (this.outgoingEdges.size() > 0) {
+ isSource = this.outgoingEdges.getValue(0).target.isSourceFor(edgeInstance);
+}
+
+return isSource;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink" name="valueParticipatesInLink" specification="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
+ <language>Java</language>
+ <body>// Test if the given value participates in the given link.
+
+FeatureValueList linkFeatureValues = link.getFeatureValues();
+
+boolean participates = false;
+int i = 1;
+while (!participates & i <= linkFeatureValues.size()) {
+ participates = linkFeatureValues.getValue(i-1).values.getValue(0).equals(value);
+ i = i + 1;
+}
+
+return participates;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue" name="makeBooleanValue" specification="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-BooleanValue" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue-value" name="value" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Make a Boolean value using the built-in Boolean primitive type.
+// [This ensures that Boolean values created internally are the same as the default used for evaluating Boolean literals.]
+
+LiteralBoolean booleanLiteral = new LiteralBoolean();
+booleanLiteral.value = value;
+return (BooleanValue)(this.getExecutionLocus().executor.evaluate(booleanLiteral));
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-BasicActions-ActionActivation-completeAction" name="completeAction" specification="Semantics-Actions-BasicActions-ActionActivation-completeAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Concurrently fire all output pin activations and offer a single
+// control token. Then check if the action should fire again
+// and, if so, return additional incoming tokens for this.
+
+this.sendOffers();
+
+Debug.println("[fire] Checking if " + this.node.name
+ + " should fire again...");
+
+_beginIsolation();
+TokenList incomingTokens = new TokenList();
+this.firing = false;
+if (this.isReady()) {
+ incomingTokens = this.takeOfferedTokens();
+ this.firing = this.isFiring() & incomingTokens.size() > 0;
+}
+_endIsolation();
+
+return incomingTokens;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-run.1" name="run" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-run"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens.1" name="takeOfferedTokens" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens.1-OwnedParameter-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeOfferedTokens.1-OwnedParameter-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire.1" name="fire" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-fire">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire.1-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-fire.1-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-terminate"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-completeAction.1" name="completeAction" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-completeAction">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-completeAction.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-completeAction.1-Parameter1-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-completeAction.1-Parameter1-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-isReady">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isReady.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isFiring.1" name="isFiring" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-isFiring">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isFiring.1-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-doAction" name="doAction" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-BasicActions-ActionActivation-doAction-_ownedComment.0" annotatedElement="Semantics-Actions-BasicActions-ActionActivation-doAction">
+ <body>Do the required action behavior.
+</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-sendOffers.1" name="sendOffers" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-sendOffers"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-createNodeActivations.1" name="createNodeActivations" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-createNodeActivations"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addOutgoingEdge.1" name="addOutgoingEdge" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-addOutgoingEdge">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addOutgoingEdge.1-edge" name="edge" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addPinActivation.1" name="addPinActivation" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-addPinActivation">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-addPinActivation.1-pinActivation" name="pinActivation" visibility="public" type="Semantics-Actions-BasicActions-PinActivation"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getPinActivation.1" name="getPinActivation" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-getPinActivation">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getPinActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Actions-BasicActions-PinActivation" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getPinActivation.1-pin" name="pin" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Pin"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putToken.1" name="putToken" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-putToken">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putToken.1-pin" name="pin" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putToken.1-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens.1" name="putTokens" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-putTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens.1-pin" name="pin" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens.1-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens.1-values-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-putTokens.1-values-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens.1" name="getTokens" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-getTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens.1-pin" name="pin" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens.1-OwnedParameter-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-getTokens.1-OwnedParameter-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens.1" name="takeTokens" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-takeTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens.1-pin" name="pin" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#InputPin"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-BasicActions-ActionActivation-takeTokens.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isSourceFor.1" name="isSourceFor" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-isSourceFor">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isSourceFor.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-isSourceFor.1-edgeInstance" name="edgeInstance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink.1" name="valueParticipatesInLink" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink.1-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-valueParticipatesInLink.1-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue.1" name="makeBooleanValue" visibility="public" method="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-BooleanValue" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-BasicActions-ActionActivation-makeBooleanValue.1-value" name="value" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Actions-BasicActions-A_pinActivations_actionActivation" name="A_pinActivations_actionActivation" visibility="private" memberEnd="Semantics-Actions-BasicActions-PinActivation-actionActivation Semantics-Actions-BasicActions-ActionActivation-pinActivations"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Actions-BasicActions-A_callExecutions_callActionActivation" name="A_callExecutions_callActionActivation" visibility="private" memberEnd="Semantics-Actions-BasicActions-A_callExecutions_callActionActivation-_ownedEnd.0 Semantics-Actions-BasicActions-CallActionActivation-callExecutions">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Actions-BasicActions-A_callExecutions_callActionActivation-_ownedEnd.0" visibility="private" type="Semantics-Actions-BasicActions-CallActionActivation" association="Semantics-Actions-BasicActions-A_callExecutions_callActionActivation">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-BasicActions-A_callExecutions_callActionActivation-_ownedEnd.0-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Actions-IntermediateActions" name="IntermediateActions">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Actions-IntermediateActions-_packageImport.0" importedPackage="Semantics-Actions-BasicActions"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-WriteLinkActionActivation" name="WriteLinkActionActivation" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-WriteLinkActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-WriteLinkActionActivation">
+ <body>A write link action activation is a link action activation for a write link action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-WriteLinkActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-WriteLinkActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-LinkActionActivation"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation" name="WriteStructuralFeatureActionActivation" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation">
+ <body>A write structural feature action activation is a structural feature action activation for a write structural feature action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position" name="position" specification="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position-list" name="list" visibility="public" type="Semantics-Classes-Kernel-Value">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position-list-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position-list-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position-startAt" name="startAt" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the position (counting from 1) of the first occurance of the given value in the given list at or after the starting index, or 0 if it is not found.
+
+boolean found = false;
+int i = startAt;
+while (!found & i <= list.size()) {
+ found = list.getValue(i-1).equals(value);
+ i = i + 1;
+}
+
+if (!found) {
+ i = 1;
+}
+
+return i - 1;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1" name="position" visibility="public" method="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1-list" name="list" visibility="public" type="Semantics-Classes-Kernel-Value">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1-list-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1-list-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation-position.1-startAt" name="startAt" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation" name="ValueSpecificationActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation">
+ <body>A value specification action activation is an action activation for a value specification action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Evaluate the value specification for the action and place the result on the result pin of the action.
+
+ValueSpecificationAction action = (ValueSpecificationAction)(this.node);
+
+Value value = this.getExecutionLocus().executor.evaluate(action.value);
+this.putToken(action.result, value);
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-ValueSpecificationActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-TestIdentityActionActivation" name="TestIdentityActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-TestIdentityActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-TestIdentityActionActivation">
+ <body>A test identity action activation is an action activation for a test identity action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-TestIdentityActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-TestIdentityActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-TestIdentityActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-TestIdentityActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the values from the first and second input pins and test if they are equal. (Note the equality of references is defined to be that they have identical referents.)
+// If they are equal, place true on the pin execution for the result output pin, otherwise place false.
+
+TestIdentityAction action = (TestIdentityAction)(this.node);
+
+Value firstValue = this.takeTokens(action.first).getValue(0);
+Value secondValue = this.takeTokens(action.second).getValue(0);
+
+Value testResult = this.makeBooleanValue(firstValue.equals(secondValue));
+this.putToken(action.result, testResult);
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-TestIdentityActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-TestIdentityActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation" name="StructuralFeatureActionActivation" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation">
+ <body>A structural feature action activation is an action activation for a structural feature action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation" name="getAssociation" specification="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation-feature" name="feature" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation-Parameter1-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// If the structural feature for the action of this activation is an association end,
+// then get the associated association.
+
+Association association = null;
+if (feature instanceof Property) {
+ association = ((Property)feature).association;
+}
+
+return association;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks" name="getMatchingLinks" specification="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks-association" name="association" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks-end" name="end" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks-oppositeValue" name="oppositeValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks-Parameter1" name="Parameter1" visibility="public" type="Semantics-Classes-Kernel-Link" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks-Parameter1-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks-Parameter1-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the links of the given binary association whose end opposite
+// to the given end has the given value
+
+Property oppositeEnd = this.getOppositeEnd(association, end);
+
+ExtensionalValueList extent = this.getExecutionLocus().getExtent(association);
+
+LinkList links = new LinkList();
+for (int i = 0; i<extent.size(); i++) {
+ ExtensionalValue link = extent.getValue(i);
+ if (link.getFeatureValue(oppositeEnd).values.getValue(0).equals(oppositeValue)) {
+ if (!end.multiplicityElement.isOrdered | links.size() == 0) {
+ links.addValue((Link)link);
+ } else {
+ int n = link.getFeatureValue(end).position;
+ boolean continueSearching = true;
+ int j = 0;
+ while (continueSearching & j < links.size()) {
+ j = j + 1;
+ continueSearching = links.getValue(j-1).getFeatureValue(end).position < n;
+ }
+ if (continueSearching) {
+ links.addValue((Link)link);
+ } else {
+ links.addValue(j–1, (Link)link);
+ }
+ }
+ }
+}
+
+return links;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd" name="getOppositeEnd" specification="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd-association" name="association" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd-end" name="end" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the end of a binary association opposite to the given end.
+
+Property oppositeEnd = association.memberEnd.getValue(0);
+if (oppositeEnd == end) {
+ oppositeEnd = association.memberEnd.getValue(1);
+}
+
+return oppositeEnd;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation.1" name="getAssociation" visibility="public" method="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation.1-feature" name="feature" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation.1-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getAssociation.1-Parameter1-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1" name="getMatchingLinks" visibility="public" method="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1-association" name="association" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1-end" name="end" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1-oppositeValue" name="oppositeValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Classes-Kernel-Link" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1-Parameter1-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getMatchingLinks.1-Parameter1-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd.1" name="getOppositeEnd" visibility="public" method="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd.1-association" name="association" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd.1-end" name="end" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation-getOppositeEnd.1-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation" name="RemoveStructuralFeatureValueActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation">
+ <body>A remove structural feature action activation is a write structural feature action activation for a remove structural feature value action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.LociL1.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the values of the object and value input pins.
+// If the given feature is an association end, then destroy any matching links.
+// Otherwise, if the object input is a structural value, remove values from the given feature.
+// If isRemoveDuplicates is true, then destroy all current matching links or remove all values equal to the input value.
+// If isRemoveDuplicates is false and there is no removeAt input pin, remove any one feature value equal to the input value (if there are any that are equal).
+// If isRemoveDuplicates is false, and there is a removeAt input pin remove the feature value at that position.
+
+RemoveStructuralFeatureValueAction action = (RemoveStructuralFeatureValueAction)(this.node);
+StructuralFeature feature = action.structuralFeature;
+Association association = this.getAssociation(feature);
+
+Value value = this.takeTokens(action.object).getValue(0);
+
+Value inputValue = null;
+if (action.value != null) {
+ // NOTE: Multiplicity of the value input pin is required to be 1..1.
+ inputValue = this.takeTokens(action.value).getValue(0);
+}
+
+int removeAt = 0;
+if (action.removeAt != null) {
+ removeAt = ((UnlimitedNaturalValue)this.takeTokens(action.removeAt).getValue(0)).value.naturalValue;
+}
+
+if (association != null) {
+ LinkList links = this.getMatchingLinks(association, feature, value);
+
+ if (action.isRemoveDuplicates) {
+ for (int i = 0; i < links.size(); i++) {
+ Link link = links.getValue(i);
+ link.destroy();
+ }
+
+ } else if (action.removeAt == null) {
+ // *** If there is more than one matching link, non-deterministically choose one. ***
+ if (links.size() > 0) {
+ int i = ((ChoiceStrategy)this.getExecutionLocus().factory.getStrategy("choice")).choose(links.size());
+ links.getValue(i-1).destroy();
+ }
+
+ } else {
+ boolean notFound = true;
+ int i = 1;
+ while (notFound & i < links.size()) {
+ Link link = links.getValue(i-1);
+ if (link.getFeatureValue(feature).position == removeAt) {
+ notFound = false;
+ link.destroy();
+ }
+ }
+ }
+
+} else if (value instanceof StructuredValue) {
+ // If the value is a data value, then it must be copied before
+ // any change is made.
+ if (!(value instanceof Reference)) {
+ value = value.copy();
+ }
+
+ FeatureValue featureValue = ((StructuredValue)value).getFeatureValue(action.structuralFeature);
+
+ if (action.isRemoveDuplicates) {
+ int j = this.position(inputValue, featureValue.values, 1);
+ while (j > 0) {
+ featureValue.values.remove(j-1);
+ j = this.position(inputValue, featureValue.values, j);
+ }
+
+ } else if (action.removeAt == null) {
+ intList positions = new intList();
+ int j = this.position(inputValue, featureValue.values, 1);
+ while (j > 0) {
+ positions.addValue(j);
+ j = this.position(inputValue, featureValue.values, j);
+ }
+
+ if (positions.size()>0) {
+ // *** Nondeterministically choose which value to remove. ***
+ int k = ((ChoiceStrategy)this.getExecutionLocus().factory.getStrategy("choice")).choose(positions.size());
+ featureValue.values.remove(positions.getValue(k-1) - 1);
+ }
+
+ } else {
+ if (featureValue.values.size() >= removeAt) {
+ featureValue.values.remove(removeAt-1);
+ }
+ }
+}
+
+if (action.result != null) {
+ this.putToken(action.result, value);
+}
+
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-RemoveStructuralFeatureValueActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-ReadLinkActionActivation" name="ReadLinkActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ReadLinkActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-ReadLinkActionActivation">
+ <body>A read link action activation is a link action activation for a read link action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ReadLinkActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-ReadLinkActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-LinkActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-ReadLinkActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-ReadLinkActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the extent, at the current execution locus, of the association to which the action applies.
+// For all links that match the link end data, place the value of the remaining "open" end on the result pin.
+
+ReadLinkAction action = (ReadLinkAction)(this.node);
+LinkEndDataList endDataList = action.endData;
+LinkEndData openEnd = null;
+
+int i = 1;
+while((openEnd == null) & i <= endDataList.size()) {
+ if (endDataList.getValue(i-1).value == null) {
+ openEnd = endDataList.getValue(i-1);
+ }
+ i = i + 1;
+}
+
+ExtensionalValueList extent = this.getExecutionLocus().getExtent(this.getAssociation());
+
+FeatureValueList featureValues = new FeatureValueList();
+for (int j = 0; j < extent.size(); j++) {
+ ExtensionalValue value = extent.getValue(j);
+ Link link = (Link)value;
+ if (this.linkMatchesEndData(link, endDataList)) {
+ FeatureValue featureValue = link.getFeatureValue(openEnd.end);
+ if (!openEnd.end.multiplicityElement.isOrdered | featureValues.size() == 0) {
+ featureValues.addValue(featureValue);
+ } else {
+ int n = featureValue.position;
+ boolean continueSearching = true;
+ int k = 0;
+ while (continueSearching & k < featureValues.size()) {
+ k = k + 1;
+ continueSearching = featureValues.getValue(k-1).position < n;
+ }
+ if (continueSearching) {
+ featureValue.addValue(featureValue);
+ } else {
+ featureValue.addValue(k-1, featureValue);
+ }
+ }
+ }
+}
+
+
+for (int j = 0; j < featureValues.size(); j++) {
+ FeatureValue featureValue = featureValues.getValue(j);
+ this.putToken(action.result, featureValue.values.getValue(0));
+}
+
+// Now that matching is done, ensure that all tokens on end data input pins
+// are consumed.
+for (int k=0; k<endDataList.size(); k++) {
+ LinkEndData endData = endDataList.getValue(k);
+ if (endData.value != null) {
+ this.takeTokens(endData.value);
+ }
+}
+
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-ReadLinkActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-ReadLinkActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-ReadSelfActionActivation" name="ReadSelfActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ReadSelfActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-ReadSelfActionActivation">
+ <body>A read self action activation is an action activation for a read self action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ReadSelfActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-ReadSelfActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-ReadSelfActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-ReadSelfActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the context object of the activity execution containing this action activation and place a reference to it on the result output pin.
+
+// Debug.println("[ReadSelfActionActivation] Start...");
+
+Reference context = new Reference();
+context.referent = this.getExecutionContext();
+
+// Debug.println("[ReadSelfActionActivation] context object = " + context.referent);
+
+OutputPin resultPin = ((ReadSelfAction)(this.node)).result;
+this.putToken(resultPin, context);
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-ReadSelfActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-ReadSelfActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation" name="ReadStructuralFeatureActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation">
+ <body>A read structural feature action activation is an action activation for a read structural feature action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the value of the object input pin.
+// If the given feature is an association end, then get all values of the that end.
+// for which the opposite end has the object input value and place them on the result pin.
+// Otherwise, if the object input value is a structural value, then get the values
+// of the appropriate feature of the input value and place them on the result output pin.
+
+ReadStructuralFeatureAction action = (ReadStructuralFeatureAction)(this.node);
+StructuralFeature feature = action.structuralFeature;
+Association association = this.getAssociation(feature);
+
+Value value = this.takeTokens(action.object).getValue(0);
+ValueList resultValues = new ValueList();
+
+if (association != null) {
+ LinkList links = this.getMatchingLinks(association, feature, value);
+ for (int i = 0; i < links.size(); i++) {
+ Link link = links.getValue(i);
+ resultValues.addValue(link.getFeatureValue(feature).values.getValue(0));
+ }
+} else if (value instanceof StructuredValue) {
+// Debug.println("[ReadStructuralFeatureActionActivation] value = " + value +", structural feature = " + feature.name);
+ resultValues = ((StructuredValue)value).getFeatureValue(feature).values;
+}
+
+this.putTokens(action.result, resultValues);
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-ReadStructuralFeatureActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation" name="LinkActionActivation" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-LinkActionActivation">
+ <body>A link action activation is an action activation for a link action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData" name="linkMatchesEndData" specification="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData-endDataList" name="endDataList" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#LinkEndData"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData-endDataList-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData-endDataList-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Test whether the given link matches the given end data.
+
+boolean matches = true;
+int i = 1;
+while (matches & i <= endDataList.size()) {
+ matches = this.endMatchesEndData(link, endDataList.getValue(i-1));
+ i = i + 1;
+}
+
+return matches;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData" name="endMatchesEndData" specification="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData-endData" name="endData" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#LinkEndData"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Test whether the appropriate end of the given link matches the given end data.
+
+boolean matches = false;
+if (endData.value == null) {
+ matches = true;
+} else {
+ Property end = endData.end;
+ FeatureValue linkFeatureValue = link.getFeatureValue(end);
+ Value endValue = this.getTokens(endData.value).getValue(0);
+ if (endData instanceof LinkEndDestructionData) {
+ if (!((LinkEndDestructionData)endData).isDestroyDuplicates & !end.multiplicityElement.isUnique & end.multiplicityElement.isOrdered) {
+ int destroyAt = ((UnlimitedNaturalValue)(this.getTokens(((LinkEndDestructionData)endData).destroyAt).getValue(0))).value.naturalValue;
+ matches = linkFeatureValue.values.getValue(0).equals(endValue) && linkFeatureValue.position == destroyAt;
+ } else {
+ matches = linkFeatureValue.values.getValue(0).equals(endValue);
+ }
+ } else {
+ matches = linkFeatureValue.values.getValue(0).equals(endValue);
+ }
+}
+
+return matches;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-getAssociation" name="getAssociation" specification="Semantics-Actions-IntermediateActions-LinkActionActivation-getAssociation.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-getAssociation-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the association for the link action of this activation.
+
+return (Association)(((LinkAction)(this.node)).endData.getValue(0).end.association);
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData.1" name="linkMatchesEndData" visibility="public" method="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData.1-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData.1-endDataList" name="endDataList" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#LinkEndData"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData.1-endDataList-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-linkMatchesEndData.1-endDataList-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData.1" name="endMatchesEndData" visibility="public" method="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData.1-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-endMatchesEndData.1-endData" name="endData" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#LinkEndData"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-getAssociation.1" name="getAssociation" visibility="public" method="Semantics-Actions-IntermediateActions-LinkActionActivation-getAssociation">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-LinkActionActivation-getAssociation.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation" name="DestroyLinkActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation">
+ <body>A destroy link action activation is a write link action activation for a destroy link action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.LociL1.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-WriteLinkActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the extent, at the current execution locus, of the association for which links are being destroyed.
+// Destroy all links that match the given link end destruction data.
+// For unique ends, or non-unique ends for which isDestroyDuplicates is true, match links with a matching value for that end.
+// For non-unique, ordered ends for which isDestroyDuplicates is false, match links with an end value at the given destroyAt position. [Must a value be given, too, in this case?]
+// For non-unique, non-ordered ends for which isDestroyDuplicates is false, pick one matching link (if any) non-deterministically. [The semantics of this case is not clear from the current spec.]
+
+Debug.println("[doAction] DestroyLinkAction...");
+
+DestroyLinkAction action = (DestroyLinkAction)(this.node);
+LinkEndDestructionDataList destructionDataList = action.endData;
+
+Debug.println("[doAction] end data size = " + destructionDataList.size());
+
+boolean destroyOnlyOne = false;
+int j = 1;
+while (!destroyOnlyOne & j <= destructionDataList.size()) {
+ LinkEndDestructionData endData = destructionDataList.getValue(j-1);
+ destroyOnlyOne = !endData.end.multiplicityElement.isUnique & !endData.end.multiplicityElement.isOrdered & !endData.isDestroyDuplicates;
+ j = j + 1;
+}
+
+LinkEndDataList endDataList = new LinkEndDataList();
+for (int i = 0; i < destructionDataList.size(); i++) {
+ LinkEndDestructionData endData = destructionDataList.getValue(i);
+ Debug.println("[doAction] Matching end = " + endData.end.name);
+ endDataList.addValue(endData);
+}
+
+ExtensionalValueList extent = this.getExecutionLocus().getExtent(this.getAssociation());
+ExtensionalValueList matchingLinks = new ExtensionalValueList();
+
+for (int i = 0; i < extent.size(); i++) {
+ ExtensionalValue value = extent.getValue(i);
+ Link link = (Link)value;
+ if (this.linkMatchesEndData(link, endDataList)) {
+ matchingLinks.addValue(link);
+ }
+}
+
+// Now that matching is done, ensure that all tokens on end data input pins
+// are consumed.
+for (int i = 0; i < destructionDataList.size(); i++) {
+ LinkEndDestructionData endData = destructionDataList.getValue(i);
+ Property end = endData.end;
+ if (!endData.isDestroyDuplicates
+ & !end.multiplicityElement.isUnique & end.multiplicityElement.isOrdered) {
+ this.takeTokens(endData.destroyAt);
+ }
+ Debug.println("[doAction] Consuming tokens for end " + end.name);
+ this.takeTokens(endData.value);
+}
+
+if (destroyOnlyOne) {
+ // *** If there is more than one matching link, non-deterministically choose one. ***
+ if (matchingLinks.size() > 0) {
+ int i = ((ChoiceStrategy)this.getExecutionLocus().factory.getStrategy("choice")).choose(matchingLinks.size());
+ matchingLinks.getValue(i-1).destroy();
+ }
+} else {
+ for (int i = 0; i < matchingLinks.size(); i++) {
+ ExtensionalValue matchingLink = matchingLinks.getValue(i);
+ matchingLink.destroy();
+ }
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-DestroyLinkActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation" name="DestroyObjectActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation">
+ <body>A destroy object action activation is an action activation for a destroy object action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the value on the target input pin.
+// If the value is not a reference, then the action has no effect. Otherwise, do the following.
+// If isDestroyLinks is true, destroy all links in which the referent participates.
+// If isDestroyOwnedObjects is true, destroy all objects owned by the referent via composition links.
+// Destroy the referent object.
+
+DestroyObjectAction action = (DestroyObjectAction)(this.node);
+Value value = this.takeTokens(action.target).getValue(0);
+
+this.destroyObject(value, action.isDestroyLinks, action.isDestroyOwnedObjects);
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject" name="destroyObject" specification="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject-isDestroyLinks" name="isDestroyLinks" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject-isDestroyOwnedObjects" name="isDestroyOwnedObjects" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// If the given value is a reference, then destroy the referenced object, per the given destroy action attribute values.
+
+// Debug.println("[destroyObject] object = " + value.objectId());
+
+if (value instanceof Reference) {
+ Reference reference = (Reference)value;
+
+ if (isDestroyLinks | isDestroyOwnedObjects) {
+ Debug.println("[destroyObject] Destroying links...");
+ ExtensionalValueList extensionalValues = this.getExecutionLocus().extensionalValues;
+ for (int i = 0; i < extensionalValues.size(); i++) {
+ ExtensionalValue extensionalValue = extensionalValues.getValue(i);
+ if (extensionalValue instanceof Link) {
+ Link link = (Link)extensionalValue;
+ if (this.valueParticipatesInLink(reference, link)) {
+ if (isDestroyLinks | this.objectIsComposite(reference, link)) {
+ // Debug.println("[destroyObject] Destroying link " + link.objectId());
+ link.destroy();
+ }
+ }
+ }
+ }
+ }
+
+ if (isDestroyOwnedObjects) {
+ Debug.println("[destroyObject] Destroying owned objects...");
+ FeatureValueList objectFeatureValues = reference.getFeatureValues();
+ for (int i = 0; i < objectFeatureValues.size(); i++) {
+ FeatureValue featureValue = objectFeatureValues.getValue(i);
+ if (((Property)featureValue.feature).aggregation == AggregationKind.composite) {
+ ValueList values = featureValue.values;
+ for (int j = 0; j < values.size(); j++) {
+ Value ownedValue = values.getValue(j);
+ this.destroyObject(ownedValue, isDestroyLinks, isDestroyOwnedObjects);
+ }
+ }
+ }
+ }
+
+ reference.destroy();
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite" name="objectIsComposite" specification="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite-reference" name="reference" visibility="public" type="Semantics-Classes-Kernel-Reference"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
+ <language>Java</language>
+ <body>// Test whether the given reference participates in the given link as a composite.
+
+FeatureValueList linkFeatureValues = link.getFeatureValues();
+
+boolean isComposite = false;
+int i = 1;
+while (!isComposite & i <= linkFeatureValues.size()) {
+ FeatureValue featureValue = linkFeatureValues.getValue(i-1);
+ if (!featureValue.values.getValue(0).equals(reference) &
+ ((Property)featureValue.feature).aggregation == AggregationKind.composite) {
+ isComposite = true;
+ }
+ i = i + 1;
+}
+
+return isComposite;
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-doAction"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject.1" name="destroyObject" visibility="public" method="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject.1-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject.1-isDestroyLinks" name="isDestroyLinks" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-destroyObject.1-isDestroyOwnedObjects" name="isDestroyOwnedObjects" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite.1" name="objectIsComposite" visibility="public" method="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite.1-reference" name="reference" visibility="public" type="Semantics-Classes-Kernel-Reference"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-IntermediateActions-DestroyObjectActionActivation-objectIsComposite.1-link" name="link" visibility="public" type="Semantics-Classes-Kernel-Link"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-CreateLinkActionActivation" name="CreateLinkActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-CreateLinkActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-CreateLinkActionActivation">
+ <body>A create link action activation is a write link action activation for a create link action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-CreateLinkActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-CreateLinkActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-WriteLinkActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-CreateLinkActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-CreateLinkActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// If the association has any unique ends, then destroy an existing link
+// that matches all ends of the link being created.
+// Get the extent at the current execution locus of the association for which a link is being created.
+// Destroy all links that have a value for any end for which isReplaceAll is true.
+// Create a new link for the association, at the current locus, with the given end data values,
+// inserted at the given insertAt position (for ordered ends).
+
+CreateLinkAction action = (CreateLinkAction)(this.node);
+LinkEndCreationDataList endDataList = action.endData;
+
+Association linkAssociation = this.getAssociation();
+ExtensionalValueList extent = this.getExecutionLocus().getExtent(linkAssociation);
+
+boolean unique = false;
+for (int i = 0; i < endDataList.size(); i++) {
+ if (endDataList.getValue(i).end.multiplicityElement.isUnique) {
+ unique = true;
+ }
+}
+
+for (int i = 0; i < extent.size(); i++) {
+ ExtensionalValue value = extent.getValue(i);
+ Link link = (Link) value;
+
+ boolean match = true;
+ boolean destroy = false;
+ int j = 1;
+ while (j <= endDataList.size()) {
+ LinkEndCreationData endData = endDataList.getValue(j - 1);
+ if (this.endMatchesEndData(link, endData)) {
+ if (endData.isReplaceAll) {
+ destroy = true;
+ }
+ } else {
+ match = false;
+ }
+ j = j + 1;
+ }
+ if (destroy | unique & match ) {
+ link.destroy();
+ }
+}
+
+for (int i = 0; i < extent.size(); i++) {
+ ExtensionalValue value = extent.getValue(i);
+ Link link = (Link)value;
+
+ boolean noMatch = true;
+ int j = 1;
+ while (noMatch & j <= endDataList.size()) {
+ LinkEndCreationData endData = endDataList.getValue(j-1);
+ if (endData.isReplaceAll & this.endMatchesEndData(link, endData)) {
+ oldLink = link;
+ link.destroy();
+ noMatch = false;
+ }
+ j = j + 1;
+ }
+}
+
+Link newLink = new Link();
+newLink.type = linkAssociation;
+
+for (int i = 0; i < endDataList.size(); i++) {
+ LinkEndCreationData endData = endDataList.getValue(i);
+
+ int insertAt = 0;
+ if (endData.insertAt != null) {
+ insertAt = ((UnlimitedNaturalValue) (this
+ .takeTokens(endData.insertAt).getValue(0))).value.naturalValue;
+ }
+
+ newLink.setFeatureValue(endData.end,
+ this.takeTokens(endData.value), insertAt);
+}
+
+newLink.addTo(this.getExecutionLocus());
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-CreateLinkActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-CreateLinkActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-CreateObjectActionActivation" name="CreateObjectActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-CreateObjectActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-CreateObjectActionActivation">
+ <body>A create object action activation is an action activation for a create object action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-CreateObjectActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-CreateObjectActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-CreateObjectActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-CreateObjectActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Create an object with the given classifier (which must be a class) as its type, at the same locus as the action activation.
+// Place a reference to the object on the result pin of the action.
+
+CreateObjectAction action = (CreateObjectAction)(this.node);
+
+Reference reference = new Reference();
+reference.referent = this.getExecutionLocus().instantiate((Class)(action.classifier));
+
+this.putToken(action.result, reference);
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-CreateObjectActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-CreateObjectActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation" name="ClearAssociationActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation">
+ <body>A clear association action activation is an action activation for a clear association action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the extent, at the current execution locus, of the given association.
+// Read the object input pin. Destroy all links in which the object participates.
+
+ClearAssociationAction action = (ClearAssociationAction)(this.node);
+
+ExtensionalValueList extent = this.getExecutionLocus().getExtent(action.association);
+Value objectValue = this.takeTokens(action.object).getValue(0);
+
+for (int i = 0; i < extent.size(); i++) {
+ Link link = (Link)(extent.getValue(i));
+ if (this.valueParticipatesInLink(objectValue, link)) {
+ link.destroy();
+ }
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-ClearAssociationActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation" name="ClearStructuralFeatureActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation">
+ <body>A clear structural feature action activation is a structural feature action activation for a clear structural feature action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-StructuralFeatureActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the value of the object input pin.
+// If the given feature is an association end, then
+// destroy all links that have the object input on the opposite end.
+// Otherwise, if the object input is a structured value, then
+// set the appropriate feature of the input value to be empty.
+
+ClearStructuralFeatureAction action = (ClearStructuralFeatureAction)(this.node);
+StructuralFeature feature = action.structuralFeature;
+Association association = this.getAssociation(feature);
+
+Value value = this.takeTokens(action.object).getValue(0);
+
+if (association != null) {
+ LinkList links = this.getMatchingLinks(association, feature, value);
+ for (int i = 0; i < links.size(); i++) {
+ Link link = links.getValue(i);
+ link.destroy();
+ }
+} else if (value instanceof StructuredValue) {
+ // If the value is a data value, then it must be copied before
+ // any change is made.
+ if (!(value instanceof Reference)) {
+ value = value.copy();
+ }
+
+ ((StructuredValue)value).setFeatureValue(action.structuralFeature, new ValueList(), 0);
+}
+
+if (action.result != null) {
+ this.putToken(action.result, value);
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-ClearStructuralFeatureActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation" name="AddStructuralFeatureValueActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation-_ownedComment.0">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.LociL1.*;
+
+</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation-_ownedComment.1" annotatedElement="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation">
+ <body>An add structural feature action value activation is a write structural feature action activation for an add structural feature value action.</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation-_generalization.0" general="Semantics-Actions-IntermediateActions-WriteStructuralFeatureActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation-doAction" name="doAction" specification="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the values of the object and value input pins.
+// If the given feature is an association end, then create a link between the object and value inputs.
+// Otherwise, if the object input is a structural value, then add a value to the values for the feature.
+// If isReplaceAll is true, first remove all current matching links or feature values.
+// If isReplaceAll is false and there is an insertAt pin, insert the value at the appropriate position.
+
+AddStructuralFeatureValueAction action = (AddStructuralFeatureValueAction)(this.node);
+StructuralFeature feature = action.structuralFeature;
+Association association = this.getAssociation(feature);
+
+Value value = this.takeTokens(action.object).getValue(0);
+ValueList inputValues = this.takeTokens(action.value);
+
+// NOTE: Multiplicity of the value input pin is required to be 1..1.
+Value inputValue = inputValues.getValue(0);
+
+int insertAt = 0;
+if (action.insertAt != null) {
+ insertAt = ((UnlimitedNaturalValue)this.takeTokens(action.insertAt).getValue(0)).value.naturalValue;
+}
+
+if (association != null) {
+ LinkList links = this.getMatchingLinks(association, feature, value);
+
+ Property oppositeEnd = this.getOppositeEnd(association, feature);
+ int position = 0;
+ if (oppositeEnd.multiplicityElement.isOrdered) {
+ position = -1;
+ }
+
+ if (action.isReplaceAll) {
+ for (int i = 0; i < links.size(); i++) {
+ Link link = links.getValue(i);
+ link.destroy();
+ }
+ } else if (feature.multiplicityElement.isUnique) {
+ int i = 1;
+ boolean destroyed = false;
+ while (!destroyed & i <= links.size()) {
+ Link link = links.getValue(i - 1);
+ FeatureValue featureValue = link.getFeatureValue(feature);
+ if (featureValue.values.getValue(0).equals(inputValue)) {
+ position = link.getFeatureValue(oppositeEnd).position;
+ link.destroy();
+ destroyed = true;
+ }
+ i = i + 1;
+ }
+ }
+
+ Link newLink = new Link();
+ newLink.type = association;
+
+ newLink.setFeatureValue(feature, inputValues, insertAt);
+
+ ValueList oppositeValues = new ValueList();
+ oppositeValues.addValue(value);
+ newLink.setFeatureValue(oppositeEnd, oppositeValues, position);
+
+ newlink.addTo(this.getExecutionLocus());
+
+} else if (value instanceof StructuredValue) {
+ // If the value is a data value, then it must be copied before
+ // any change is made.
+ if (!(value instanceof Reference)) {
+ value = value.copy();
+ }
+
+ StructuredValue structuredValue = (StructuredValue)value;
+
+ if (action.isReplaceAll) {
+ structuredValue.setFeatureValue(feature, inputValues, 0);
+ } else {
+ FeatureValue featureValue = structuredValue.getFeatureValue(feature);
+
+ if (featureValue.values.size() > 0 & insertAt == 0 ) {
+ // *** If there is no insertAt pin, then the structural feature must be unordered, and the insertion position is immaterial. ***
+ insertAt = ((ChoiceStrategy)this.getExecutionLocus().factory.getStrategy("choice")).choose(featureValue.values.size());
+ }
+
+ if (feature.multiplicityElement.isUnique) {
+ // Remove any existing value that duplicates the input value
+ int j = position(inputValue, featureValue.values, 1);
+ if (j > 0) {
+ featureValue.values.remove(j-1);
+ }
+ }
+
+ if (insertAt <= 0) { // Note: insertAt = -1 indicates an unlimited value of "*"
+ featureValue.values.addValue(inputValue);
+ } else {
+ featureValue.values.addValue(insertAt - 1, inputValue);
+ }
+ }
+}
+
+if (action.result != null) {
+ this.putToken(action.result, value);
+}
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-IntermediateActions-AddStructuralFeatureValueActionActivation-doAction"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Actions-CompleteActions" name="CompleteActions">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Actions-CompleteActions-_packageImport.0" importedPackage="Semantics-Actions-BasicActions"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation" name="StartClassifierBehaviorActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation">
+ <body>A start classifier behavior action activation is an action activation for a start classifier behavior action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+import fUML.Syntax.Actions.CompleteActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Actions.IntermediateActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation-doAction" name="doAction" specification="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the value on the object input pin. If it is not a reference, then do nothing.
+// Start the classifier behavior of the referent object for the classifier given as the type of the object input pin.
+// If the object input pin has no type, then start the classifier behaviors of all types of the referent object. [The required behavior in this case is not clear from the spec.]
+
+StartClassifierBehaviorAction action = (StartClassifierBehaviorAction)(this.node);
+
+Value object = this.takeTokens(action.object).getValue(0);
+
+if (object instanceof Reference) {
+ ((Reference)object).startBehavior((Class)(action.object.typedElement.type), new ParameterValueList());
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-CompleteActions-StartClassifierBehaviorActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation" name="StartObjectBehaviorActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation">
+ <body>A start behavior action activation is an action activation for a start behavior action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+import fUML.Syntax.Actions.CompleteActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Actions.IntermediateActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-InvocationActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation-doAction" name="doAction" specification="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the value on the object input pin. If it is not a reference, then do nothing.
+// Start the behavior of the referent object for the classifier given as the type of the object input pin, with parameter values taken from the argument input pins.
+// If the object input pin has no type, then start the classifier behaviors of all types of the referent object.
+
+StartObjectBehaviorAction action = (StartObjectBehaviorAction)(this.node);
+
+Value object = this.takeTokens(action.object).getValue(0);
+
+if (object instanceof Reference) {
+ Class type = (Class)(action.object.typedElement.type);
+ InputPinList argumentPins = action.argument;
+
+ ParameterValueList inputs = new ParameterValueList();
+
+ if (type != null) {
+ Behavior behavior;
+
+ if (type instanceof Behavior) {
+ behavior = (Behavior)type;
+ } else {
+ behavior = type.classifierBehavior;
+ }
+
+ if (behavior != null) {
+ ParameterList parameters = behavior.ownedParameter;
+
+ int pinNumber = 1;
+ int i = 1;
+ while (i <= parameters.size()) {
+ Parameter parameter = parameters.getValue(i-1);
+ int j = pinNumber;
+ if (parameter.direction == ParameterDirectionKind.in |
+ parameter.direction == ParameterDirectionKind.inout) {
+ ParameterValue parameterValue = new ParameterValue();
+ parameterValue.parameter = parameter;
+ parameterValue.values = this.takeTokens(argumentPins.getValue(j-1));
+ inputs.addValue(parameterValue);
+ j = j + 1;
+ }
+ pinNumber = j;
+ i = i + 1;
+ }
+ }
+ }
+
+ ((Reference)object).startBehavior(type, inputs);
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-CompleteActions-StartObjectBehaviorActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation" name="ReduceActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-ReduceActionActivation">
+ <body>A reduce action activation is an action activation for a reduce action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+import fUML.Syntax.Actions.CompleteActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Actions.IntermediateActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-currentExecution" name="currentExecution" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" association="Semantics-Actions-CompleteActions-A_currentExecution_reduceActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-currentExecution-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-ReduceActionActivation-currentExecution">
+ <body>The current execution of the reducer behavior.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-currentExecution-_lowerValue"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-doAction" name="doAction" specification="Semantics-Actions-CompleteActions-ReduceActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the values of the collection input pin.
+// If the input pin has no values, then do nothing. Otherwise, do the following.
+// Repeatedly invoke the reducer behavior on successive pairs to reduce the collection to a single value, and place that value on the result pin.
+// To invoke the reducer behavior, compile it to create an execution, make the execution the current execution, place the appropriate values on its input parameters, and execute it.
+
+ReduceAction action = (ReduceAction)(this.node);
+
+ValueList values = this.takeTokens(action.collection);
+
+if (values.size() > 0) {
+ ParameterList parameters = action.reducer.ownedParameter;
+ Parameter input1 = null;
+ Parameter input2 = null;
+ Parameter output = null;
+
+ int i = 1;
+ while (i <= parameters.size()) {
+ Parameter parameter = parameters.getValue(i-1);
+ if (parameter.direction == ParameterDirectionKind.in) {
+ if (input1 == null) {
+ input1 = parameter;
+ }
+ else {
+ input2 = parameter;
+ }
+ }
+ else if (parameter.direction == ParameterDirectionKind.outout |
+ parameter.direction == ParameterDirectionKind.return_) {
+ output = parameter;
+ }
+ i = i + 1;
+ }
+
+ ParameterValue parameterValue1 = new ParameterValue();
+ parameterValue1.parameter = input1;
+ parameterValue1.values = new ValueList();
+ parameterValue1.values.addValue(values.getValue(0));
+
+ int j = 2;
+ while (j <= values.size()) {
+ this.currentExecution = this.getExecutionLocus().factory.createExecution(action.reducer, this.getExecutionContext());
+
+ this.currentExecution.setParameterValue(parameterValue1);
+
+ ParameterValue parameterValue2 = new ParameterValue();
+ parameterValue2.parameter = input2;
+ parameterValue2.values = new ValueList();
+ parameterValue2.values.addValue(values.getValue(j-1));
+ this.currentExecution.setParameterValue(parameterValue2);
+
+ this.currentExecution.execute();
+
+ parameterValue1.values = this.currentExecution.getParameterValue(output).values;
+
+ j = j + 1;
+
+ if (parameterValue1.values.isEmpty() & j <= values.size()) {
+ parameterValue1.values.add(values.getValue(j - 1));
+ j = j + 1;
+ }
+
+ }
+
+ this.putTokens(action.result, parameterValue1.values);
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-terminate" name="terminate" specification="Semantics-Actions-CompleteActions-ReduceActionActivation-terminate.1" isReentrant="false">
+ <language>Java</language>
+ <body>// If there is a current execution, terminate it. Then terminate self.
+
+if (this.currentExecution != null) {
+ this.currentExecution.terminate();
+}
+
+super.terminate();
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-CompleteActions-ReduceActionActivation-doAction"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-ReduceActionActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Actions-CompleteActions-ReduceActionActivation-terminate"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation" name="ReadIsClassifiedObjectActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation">
+ <body>A read-is-classified object activation is an action activation for a read-is-classified object action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+import fUML.Syntax.Actions.CompleteActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Actions.IntermediateActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-doAction" name="doAction" specification="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the value on the object input pin and determine if it is classified by the classifier specified in the action.
+// If the isDirect attribute of the action is false, then place true on the result output pin if the input object has the specified classifier or of one its (direct or indirect) descendants as a type.
+// If the isDirect attribute of the action is true, then place true on the result output pin if the input object has the specified classifier as a type.
+// Otherwise place false on the result output pin.
+
+ReadIsClassifiedObjectAction action = (ReadIsClassifiedObjectAction)(this.node);
+
+Value input = this.takeTokens(action.object).getValue(0);
+ClassifierList types = input.getTypes();
+
+boolean result = false;
+int i = 1;
+while (!result & i <= types.size()) {
+ Classifier type = types.getValue(i-1);
+
+ if (type == action.classifier) {
+ result = true;
+ }
+ else if (!action.isDirect) {
+ result = this.checkAllParents(type, action.classifier);
+ }
+
+ i = i + 1;
+}
+
+ValueList values = new ValueList();
+values.addValue(this.makeBooleanValue(result));
+
+this.putTokens(action.result, values);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents" name="checkAllParents" specification="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents-type" name="type" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents-classifier" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Check if the given classifier matches any of the direct or indirect ancestors of a given type.
+
+ClassifierList directParents = type.general;
+boolean matched = false;
+int i = 1;
+while (!matched & i <= directParents.size()) {
+ Classifier directParent = directParents.getValue(i-1);
+ if (directParent == classifier) {
+ matched = true;
+ } else {
+ matched = this.checkAllParents(directParent, classifier);
+ }
+ i = i + 1;
+}
+
+return matched;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-doAction"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents.1" name="checkAllParents" visibility="public" method="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents.1-type" name="type" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents.1-classifier" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-ReadIsClassifiedObjectActionActivation-checkAllParents.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation" name="ReclassifyObjectActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation">
+ <body>A reclassify object activation is an action activation for a reclassify object action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+import fUML.Syntax.Actions.CompleteActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Actions.IntermediateActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation-doAction" name="doAction" specification="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the value of the object input pin. If it is not a reference, then do nothing. Otherwise, do the following.
+// Remove all types from the referent object that are in the set of old classifiers but not the set of new classifiers (or just all types that are not new classifiers, if isReplaceAll is true).
+// Remove the feature values from the referent object for all classifiers that are removed.
+// Add all new classifiers as types of the referent object that are not already types.
+// Add (empty) feature values to the referent object for the structural features of all added classifiers.
+
+ReclassifyObjectAction action = (ReclassifyObjectAction)(this.node);
+ClassifierList newClassifiers = action.newClassifier;
+ClassifierList oldClassifiers = action.oldClassifier;
+
+Value input = this.takeTokens(action.object).getValue(0);
+
+if (input instanceof Reference) {
+ Object_ object = ((Reference)input).referent;
+
+ int i = 1;
+ while (i <= object.types.size()) {
+ Class type = object.types.getValue(i-1);
+
+ boolean toBeRemoved = true;
+ int j = 1;
+ while (toBeRemoved & j <= newClassifiers.size()) {
+ toBeRemoved = (type != newClassifiers.getValue(j-1));
+ j = j + 1;
+ }
+
+ if (toBeRemoved & !action.isReplaceAll) {
+ boolean notInOld = true;
+ int k = 1;
+ while (notInOld & k <= oldClassifiers.size()) {
+ notInOld = (type != oldClassifiers.getValue(k-1));
+ k = k + 1;
+ }
+ toBeRemoved = !notInOld;
+ }
+
+ if (toBeRemoved) {
+ object.types.removeValue(i-1);
+ object.removeFeatureValues(type);
+ } else {
+ i = i + 1;
+ }
+ }
+
+ for (int n = 0; n < newClassifiers.size(); n++) {
+ Classifier classifier = newClassifiers.getValue(n);
+
+ boolean toBeAdded = true;
+ int j = 1;
+ while (toBeAdded & j <= object.types.size()) {
+ toBeAdded = (classifier != object.types.getValue(j-1));
+ j = j + 1;
+ }
+
+ if (toBeAdded) {
+ object.types.addValue((Class)classifier);
+ NamedElementList members = classifier.member;
+ for (int k = 0; k < members.size(); k++) {
+ NamedElement member = members.getValue(k);
+ if (member instanceof StructuralFeature) {
+ object.setFeatureValue((StructuralFeature)member, new ValueList(), 0);
+ }
+ }
+ }
+ }
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-CompleteActions-ReclassifyObjectActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-ReadExtentActionActivation" name="ReadExtentActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReadExtentActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-ReadExtentActionActivation">
+ <body>A read extent action activation is an action activation for a read extent action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-ReadExtentActionActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+import fUML.Syntax.Actions.CompleteActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Actions.IntermediateActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-ReadExtentActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-ReadExtentActionActivation-doAction" name="doAction" specification="Semantics-Actions-CompleteActions-ReadExtentActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the extent, at the current execution locus, of the classifier (which must be a class) identified in the action.
+// Place references to the resulting set of objects on the result pin.
+
+ReadExtentAction action = (ReadExtentAction)(this.node);
+ExtensionalValueList objects = this.getExecutionLocus().getExtent(action.classifier);
+
+// Debug.println("[doAction] " + action.classifier.name + " has " + objects.size() + " instance(s).");
+
+ValueList references = new ValueList();
+for (int i = 0; i < objects.size(); i++) {
+ Value object = objects.getValue(i);
+ Reference reference = new Reference();
+ reference.referent = (Object_)object;
+ references.addValue(reference);
+}
+
+this.putTokens(action.result, references);
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-ReadExtentActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-CompleteActions-ReadExtentActionActivation-doAction"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation" name="AcceptEventActionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-AcceptEventActionActivation">
+ <body>An accept event action activation is an action activation for an accept event action.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-_ownedComment.1">
+ <body>import java.util.Iterator;
+
+import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+import fUML.Syntax.Actions.CompleteActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Actions.IntermediateActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-eventAccepter" name="eventAccepter" visibility="public" type="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter" association="Semantics-Actions-CompleteActions-A_actionActivation_eventAccepter">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-eventAccepter-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-AcceptEventActionActivation-eventAccepter">
+ <body>If the accept event action activation is waiting for an event, then this is the accepter it has registered for the event.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-eventAccepter-_lowerValue"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-waiting" name="waiting" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-run" name="run" specification="Semantics-Actions-CompleteActions-AcceptEventActionActivation-run.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Create an event accepter and initialize waiting to false.
+
+super.run();
+
+this.eventAccepter = new AcceptEventActionEventAccepter();
+this.eventAccepter.actionActivation = this;
+
+this.waiting = false;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire" name="fire" specification="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Register the event accepter for this accept event action activation with the context object of the enclosing activity execution
+// and wait for an event to be accepted.
+
+Debug.println("[fire] Action " + this.node.name + "...");
+
+this.getExecutionContext().register(this.eventAccepter);
+this.waiting = true;
+this.firing = false;
+
+this.suspend();</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-isReady" name="isReady" specification="Semantics-Actions-CompleteActions-AcceptEventActionActivation-isReady.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-isReady-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// An accept event action activiation is ready to fire only if it is not already waiting for an event.
+
+boolean ready;
+if (this.waiting) {
+ ready = false;
+} else {
+ ready = super.isReady();
+}
+
+return ready;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-doAction" name="doAction" specification="Semantics-Actions-CompleteActions-AcceptEventActionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Do nothing. [This will never be called.]
+
+return;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-accept" name="accept" specification="Semantics-Actions-CompleteActions-AcceptEventActionActivation-accept.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-accept-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ <language>Java</language>
+ <body>// Accept a signal occurance for the given signal instance.
+// If the action does not unmarshall, then place the signal instance on the result pin, if any.
+// If the action does unmarshall, then get the feature values of the signal instance, and place the values for each feature on the corresponding output pin.
+// Concurrently fire all output pins while offering a single control token.
+// If there are no incoming edges, then re-register this accept event action execution with the context object.
+
+AcceptEventAction action = (AcceptEventAction)(this.node);
+OutputPinList resultPins = action.result;
+
+Debug.println("[accept] action = " + action.name + ", signalinstance = " + signalInstance);
+
+if (this.running) {
+ if (!action.isUnmarshall) {
+ ValueList result = new ValueList();
+ result.addValue(signalInstance);
+ if (resultPins.size() > 0) {
+ this.putTokens(resultPins.getValue(0), result);
+ }
+ } else {
+ FeatureValueList featureValues = signalInstance.getFeatureValues();
+ for (int i = 0; i < featureValues.size(); i++) {
+ FeatureValue featureValue = featureValues.getValue(i);
+ OutputPin resultPin = resultPins.getValue(i);
+ this.putTokens(resultPin, featureValue.values);
+ }
+ }
+
+ this.sendOffers();
+
+ this.waiting = false;
+
+ Debug.println("[fire] Checking if " + this.node.name + " should fire again...");
+ this.receiveOffer();
+
+ this.resume();
+}
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match" name="match" specification="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ <language>Java</language>
+ <body>// Return true if the given signal instance matches a trigger of the accept action of this activation.
+
+AcceptEventAction action = (AcceptEventAction)(this.node);
+TriggerList triggers = action.trigger;
+Signal signal = signalInstance.type;
+
+boolean matches = false;
+int i = 1;
+while (!matches & i <= triggers.size()) {
+ matches = ((SignalEvent)(triggers.getValue(i-1).event)).signal == signal;
+ i = i + 1;
+}
+
+return matches;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-terminate" name="terminate" specification="Semantics-Actions-CompleteActions-AcceptEventActionActivation-terminate.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Terminate this action and unregister its event accepter.
+
+super.terminate();
+
+if (this.waiting) {
+ this.getExecutionContext().unregister(this.eventAccepter);
+ this.waiting = false;
+}</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-run.1" name="run" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionActivation-run"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire.1" name="fire" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire.1-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-fire.1-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionActivation-isReady">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-isReady.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionActivation-doAction"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-accept.1" name="accept" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionActivation-accept">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-accept.1-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match.1" name="match" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-match.1-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionActivation-terminate"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter" name="AcceptEventActionEventAccepter">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter">
+ <body>An accept event action event accepter handles signal reception events on the behalf of a specific accept event action activation.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+import fUML.Syntax.Actions.CompleteActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Actions.IntermediateActions.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-_generalization.0" general="Semantics-CommonBehaviors-Communications-EventAccepter"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-actionActivation" name="actionActivation" visibility="public" type="Semantics-Actions-CompleteActions-AcceptEventActionActivation" association="Semantics-Actions-CompleteActions-A_actionActivation_eventAccepter">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-actionActivation-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-actionActivation">
+ <body>The accept event action activation on behalf of which this event accepter is waiting.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept" name="accept" specification="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ <language>Java</language>
+ <body>// Accept a signal occurance for the given signal instance.
+// Forward the signal occuranceto the action activation.
+
+this.actionActivation.accept(signalInstance);</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match" name="match" specification="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return true if the given signal instance matches a trigger of the accept action of the action activation.
+
+return this.actionActivation.match(signalInstance);
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept.1" name="accept" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept.1-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept.1">
+ <body>Accept a signal occurance for the given signal instance.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-accept.1-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match.1" name="match" visibility="public" method="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match.1-_ownedComment.0" annotatedElement="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match.1">
+ <body>Determine if the given signal instance matches a trigger of the accept action of the action activation.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match.1-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-match.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Actions-CompleteActions-A_actionActivation_eventAccepter" name="A_actionActivation_eventAccepter" visibility="private" memberEnd="Semantics-Actions-CompleteActions-AcceptEventActionActivation-eventAccepter Semantics-Actions-CompleteActions-AcceptEventActionEventAccepter-actionActivation"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Actions-CompleteActions-A_currentExecution_reduceActionActivation" name="A_currentExecution_reduceActionActivation" visibility="private" memberEnd="Semantics-Actions-CompleteActions-A_currentExecution_reduceActionActivation-_ownedEnd.0 Semantics-Actions-CompleteActions-ReduceActionActivation-currentExecution">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Actions-CompleteActions-A_currentExecution_reduceActionActivation-_ownedEnd.0" visibility="private" type="Semantics-Actions-CompleteActions-ReduceActionActivation" association="Semantics-Actions-CompleteActions-A_currentExecution_reduceActionActivation">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Actions-CompleteActions-A_currentExecution_reduceActionActivation-_ownedEnd.0-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Activities" name="Activities">
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Activities-CompleteStructuredActivities" name="CompleteStructuredActivities">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Activities-CompleteStructuredActivities-_packageImport.1" importedPackage="Semantics-Actions-BasicActions"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation" name="StructuredActivityNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation">
+ <body>A structured activity node activation is an action activation for an action that is a structured activity node.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-_ownedComment.1">
+ <body>import java.util.*;
+
+import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Activities.CompleteStructuredActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-activationGroup" name="activationGroup" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup" aggregation="composite" association="Semantics-Activities-CompleteStructuredActivities-A_activationGroup_containingNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-activationGroup-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-activationGroup">
+ <body>The group of activations of the activity nodes contained in the structured activity node.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doAction" name="doAction" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// If the structured activity node has mustIsolate=true, then carry out its behavior with isolation.
+// Otherwise just activate it normally.
+
+if (((StructuredActivityNode)(this.node)).mustIsolate) {
+ _beginIsolation();
+ this.doStructuredActivity();
+ _endIsolation();
+} else {
+ this.doStructuredActivity();
+}
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doStructuredActivity" name="doStructuredActivity" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doStructuredActivity.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Run all activations of contained nodes. When this is complete, return.
+// (This is the default behavior for a structured activity node used simply as a group. It is overridden for the execution of conditional and loop nodes.)
+
+Action action = (Action)(this.node);
+
+// *** Concurrently send offers from all input pins. ***
+InputPinList inputPins = action.input;
+for (Iterator i = inputPins.iterator(); i.hasNext();) {
+ InputPin inputPin = (InputPin)i.next();
+ PinActivation pinActivation = this.getPinActivation(inputPin);
+ pinActivation.sendUnofferedTokens();
+}
+
+this.activationGroup.run(this.activationGroup.nodeActivations);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminate" name="terminate" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminate.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Terminate the execution of all contained node activations (which
+// completes the performance of the structured activity node
+// activation), and then terminate this node itself.
+
+this.terminateAll();
+super.terminate();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation" name="getNodeActivation" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation-node" name="node" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// If this structured activity node activation is not for the given node, then check if there is an activation for the node in the activation group.
+
+ActivityNodeActivation thisActivation = super.getNodeActivation(node);
+
+ActivityNodeActivation activation = null;
+if (thisActivation != null) {
+ activation = thisActivation;
+} else if (this.activationGroup != null) {
+ activation = this.activationGroup.getNodeActivation(node);
+}
+
+return activation;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList" name="makeActivityNodeList" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList-nodes" name="nodes" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ExecutableNode"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList-nodes-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList-nodes-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return an activity node list containing the given list of executable nodes
+// and any pins that they own.
+
+ActivityNodeList activityNodes = new ActivityNodeList();
+
+for (int i = 0; i < nodes.size(); i++) {
+ ActivityNode node = nodes.getValue(i);
+ activityNodes.addValue(node);
+
+ if (node instanceof Action) {
+ Action action = (Action)node;
+
+ InputPinList inputPins = action.input;
+ for (int j = 0; j < inputPins.size(); j++) {
+ InputPin inputPin = inputPins.getValue(j);
+ activityNodes.addValue(inputPin);
+ }
+
+ OutputPinList outputPins = action.output;
+ for (int j = 0; j < outputPins.size(); j++) {
+ OutputPin outputPin = outputPins.getValue(j);
+ activityNodes.addValue(outputPin);
+ }
+ }
+}
+
+return activityNodes;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues" name="getPinValues" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues-pin" name="pin" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the values of the tokens on the pin activation corresponding to the given pin in the internal activation group for this node activation.
+
+PinActivation pinActivation = (PinActivation)(this.activationGroup.getNodeActivation(pin));
+TokenList tokens = pinActivation.getTokens();
+
+ValueList values = new ValueList();
+for (int i = 0; i < tokens.size(); i++) {
+ Token token = tokens.getValue(i);
+ Value value = ((ObjectToken)token).value;
+ if (value != null) {
+ values.addValue(value);
+ }
+}
+
+return values;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues" name="putPinValues" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues-pin" name="pin" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues-values-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues-values-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Place tokens for the given values on the pin activation corresponding to the given output pin on the internal activation group for this node activation.
+
+PinActivation pinActivation = (PinActivation)(this.activationGroup.getNodeActivation(pin));
+
+for (int i = 0; i < values.size(); i++) {
+ Value value = values.getValue(i);
+ ObjectToken token = new ObjectToken();
+ token.value = value;
+ pinActivation.addToken(token);
+}
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createNodeActivations" name="createNodeActivations" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createNodeActivations.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Create an activation group and create node activations for all the nodes within the structured activity node.
+
+super.createNodeActivations();
+
+this.activationGroup = new ActivityNodeActivationGroup();
+this.activationGroup.containingNodeActivation = this;
+this.activationGroup.createNodeActivations(((StructuredActivityNode)(this.node)).node);
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createEdgeInstances" name="createEdgeInstances" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createEdgeInstances.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Create instances for all edges owned by this node.
+
+this.activationGroup.createEdgeInstances(((StructuredActivityNode)(this.node)).edge);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSourceFor" name="isSourceFor" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSourceFor.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Returns true if this node is either the source for the given
+// edgeInstance itself or if it contains the source in its
+// activation group.
+
+boolean isSource = super.isSourceFor(edgeInstance);
+if (!isSource) {
+ isSource = this.activationGroup.hasSourceFor(edgeInstance);
+}
+return isSource;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminateAll" name="terminateAll" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminateAll.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Terminate the execution of all contained node activations (which
+// completes the performance of the structured activity node
+// activation).
+
+this.activationGroup.terminateAll();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSuspended" name="isSuspended" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSuspended.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Check if the activation group for this node is suspended.
+
+return this.activationGroup.isSuspended();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-completeAction" name="completeAction" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-completeAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Only actually complete this structured activity node if it is not
+// suspended.
+
+TokenList incomingTokens = new TokenList();
+if (!this.isSuspended()) {
+ incomingTokens = super.completeAction();
+}
+return incomingTokens;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-resume" name="resume" specification="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-resume.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Only actually complete this structured activity node if it is not
+// suspended.
+
+TokenList incomingTokens = new TokenList();
+if (!this.isSuspended()) {
+ incomingTokens = super.completeAction();
+}
+return incomingTokens;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doAction"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doStructuredActivity.1" name="doStructuredActivity" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-doStructuredActivity"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminate"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation.1" name="getNodeActivation" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getNodeActivation.1-node" name="node" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1" name="makeActivityNodeList" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1-nodes" name="nodes" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ExecutableNode"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1-nodes-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1-nodes-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-makeActivityNodeList.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues.1" name="getPinValues" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues.1-pin" name="pin" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-getPinValues.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues.1" name="putPinValues" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues.1-pin" name="pin" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OutputPin"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues.1-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues.1-values-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-putPinValues.1-values-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createNodeActivations.1" name="createNodeActivations" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createNodeActivations"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createEdgeInstances.1" name="createEdgeInstances" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-createEdgeInstances"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSourceFor.1" name="isSourceFor" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSourceFor">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSourceFor.1-edgeInstance" name="edgeInstance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSourceFor.1-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminateAll.1" name="terminateAll" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-terminateAll"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSuspended.1" name="isSuspended" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSuspended">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-isSuspended.1-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-completeAction.1" name="completeAction" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-completeAction">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-completeAction.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-completeAction.1-Parameter1-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-completeAction.1-Parameter1-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-resume.1" name="resume" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-resume"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation" name="LoopNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation">
+ <body>A loop node activation is a structured activity node activation for a node that is a loop node.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Activities.CompleteStructuredActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-_generalization.0" general="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-bodyOutputLists" name="bodyOutputLists" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-Values" aggregation="composite" association="Semantics-Activities-CompleteStructuredActivities-A_bodyOutputLists_loopNodeActivation">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-bodyOutputLists-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-bodyOutputLists-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doStructuredActivity" name="doStructuredActivity" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doStructuredActivity.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Set the initial values for the body outputs to the values of the loop variable input pins.
+// If isTestedFirst is true, then repeatedly run the test part and the body part of the loop, copying values from the body outputs to the loop variables.
+// If isTestedFirst is false, then repeatedly run the body part and the test part of the loop, copying values from the body outputs to the loop variables.
+// When the test fails, copy the values of the body outputs to the loop outputs.
+// [Note: The body outputs are used for the loop outputs, rather than the loop variables, since values on the loop variables may be consumed when running the test for the last time.]
+
+LoopNode loopNode = (LoopNode)(this.node);
+InputPinList loopVariableInputs = loopNode.loopVariableInput;
+OutputPinList loopVariables = loopNode.loopVariable;
+OutputPinList resultPins = loopNode.result;
+
+ValuesList bodyOutputLists = this.bodyOutputLists;
+for (int i = 0; i < loopVariableInputs.size(); i++) {
+ InputPin loopVariableInput = loopVariableInputs.getValue(i);
+ Values bodyOutputList = new Values();
+ bodyOutputList.values = this.takeTokens(loopVariableInput);
+ this.bodyOutputLists.addValue(bodyOutputList);
+}
+
+this.doLoop(true);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runTest" name="runTest" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runTest.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runTest-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Run the test part of the loop node for this node activation.
+// Return the value on the decider pin.
+
+Debug.println("[runTest] Running test...");
+
+LoopNode loopNode = (LoopNode)(this.node);
+
+this.activationGroup.runNodes(this.makeActivityNodeList(loopNode.test));
+
+ValueList values = this.getPinValues(loopNode.decider);
+
+// If there is no decider value, treat it as false.
+boolean decision = false;
+if (values.size() > 0) {
+ decision = ((BooleanValue)(values.getValue(0))).value;
+}
+
+Debug.println("[runTest] " + (decision? "Test succeeded.": "Test failed."));
+
+return decision;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runBody" name="runBody" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runBody.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Run the body part of the loop node for this node activation and save the body outputs.
+
+Debug.println("[runBody] Running body...");
+
+LoopNode loopNode = (LoopNode)this.node;
+
+this.activationGroup.runNodes(this.makeActivityNodeList(loopNode.bodyPart));
+
+if (!this.isSuspended()) {
+ this.saveBodyOutputs();
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runLoopVariables" name="runLoopVariables" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runLoopVariables.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Run the loop variable pins of the loop node for this node activation.
+
+this.activationGroup.runNodes(this.makeLoopVariableList());
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-createNodeActivations" name="createNodeActivations" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-createNodeActivations.1" isReentrant="false">
+ <language>Java</language>
+ <body>// In addition to creating activations for contained nodes, create activations for any loop variables.
+
+super.createNodeActivations();
+this.activationGroup.createNodeActivations(this.makeLoopVariableList());
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList" name="makeLoopVariableList" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return an activity node list containing the loop variable pins for the loop node of this activation.
+
+LoopNode loopNode = (LoopNode)(this.node);
+ActivityNodeList nodes = new ActivityNodeList();
+
+OutputPinList loopVariables = loopNode.loopVariable;
+for (int i = 0; i < loopVariables.size(); i++) {
+ OutputPin loopVariable = loopVariables.getValue(i);
+ nodes.addValue(loopVariable);
+}
+
+return nodes;
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-terminateAll" name="terminateAll" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-terminateAll.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Copy the values of the body outputs to the loop outputs, and then
+// terminate all activations in the loop.
+
+OutputPinList resultPins = ((LoopNode)this.node).result;
+
+for (int i = 0; i < bodyOutputLists.size(); i++) {
+ Values bodyOutputList = bodyOutputLists.getValue(i);
+ OutputPin resultPin = resultPins.getValue(i);
+ this.putTokens(resultPin, bodyOutputList.values);
+}
+
+super.terminateAll();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doLoop" name="doLoop" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doLoop.1" isReentrant="false">
+ <language>Java</language>
+ <body>// If isTestedFirst is true, then repeatedly run the test part and the
+// body part of the loop, copying values from the body outputs to the
+// loop variables.
+// If isTestedFirst is false, then repeatedly run the body part and the
+// test part of the loop, copying values from the body outputs to the
+// loop variables.
+
+LoopNode loopNode = (LoopNode) (this.node);
+OutputPinList loopVariables = loopNode.loopVariable;
+OutputPinList resultPins = loopNode.result;
+
+while (continuing) {
+
+ // Set loop variable values
+ this.runLoopVariables();
+ for (int i = 0; i < loopVariables.size(); i++) {
+ OutputPin loopVariable = loopVariables.getValue(i);
+ Values bodyOutputList = bodyOutputLists.getValue(i);
+ ValueList values = bodyOutputList.values;
+ this.putPinValues(loopVariable, values);
+ ((OutputPinActivation) this.activationGroup
+ .getNodeActivation(loopVariable)).sendUnofferedTokens();
+ }
+
+ // Run all the non-executable, non-pin nodes in the conditional
+ // node.
+ ActivityNodeActivationList nodeActivations = this.activationGroup.nodeActivations;
+ ActivityNodeActivationList nonExecutableNodeActivations =
+ new ActivityNodeActivationList();
+ for (int i = 0; i < nodeActivations.size(); i++) {
+ ActivityNodeActivation nodeActivation = nodeActivations
+ .getValue(i);
+ if (!(nodeActivation.node instanceof ExecutableNode |
+ nodeActivation.node instanceof Pin)) {
+ nonExecutableNodeActivations.addValue(nodeActivation);
+ }
+ }
+ this.activationGroup.run(nonExecutableNodeActivations);
+
+ // Run the loop
+ if (loopNode.isTestedFirst) {
+ continuing = this.runTest();
+ if (continuing) {
+ this.runBody();
+ }
+ } else {
+ this.runBody();
+ if (this.isRunning() & !this.isSuspended()) {
+ continuing = this.runTest();
+ }
+ }
+
+ if (this.isRunning() && !this.isSuspended()) {
+ this.activationGroup.terminateAll();
+ } else {
+ continuing = false;
+ }
+
+ Debug.println("[doStructuredActivity] "
+ + (continuing? "Continuing." :
+ this.isSuspended()? "Suspended":
+ "Done."));
+
+}
+
+if (this.isRunning() && !this.isSuspended()) {
+ for (int i = 0; i < bodyOutputLists.size(); i++) {
+ Values bodyOutputList = bodyOutputLists.getValue(i);
+ OutputPin resultPin = resultPins.getValue(i);
+ this.putTokens(resultPin, bodyOutputList.values);
+ }
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-saveBodyOutputs" name="saveBodyOutputs" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-saveBodyOutputs.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Save the body outputs for use in the next iteration.
+
+LoopNode loopNode = (LoopNode) this.node;
+OutputPinList bodyOutputs = loopNode.bodyOutput;
+ValuesList bodyOutputLists = this.bodyOutputLists;
+for (int i = 0; i < bodyOutputs.size(); i++) {
+ OutputPin bodyOutput = bodyOutputs.getValue(i);
+ Values bodyOutputList = bodyOutputLists.getValue(i);
+ bodyOutputList.values = this.getPinValues(bodyOutput);
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-resume" name="resume" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-resume.1" isReentrant="false">
+ <language>Java</language>
+ <body>// When this loop node is resumed after being suspended, continue with
+// its next iteration (if any). Once the loop has completed execution
+// without being suspended again, complete the action.
+
+LoopNode loopNode = (LoopNode) (this.node);
+
+this.saveBodyOutputs();
+
+if (loopNode.mustIsolate) {
+ _beginIsolation();
+ this.continueLoop();
+ _endIsolation();
+} else {
+ this.continueLoop();
+}
+
+if (this.isSuspended()) {
+ // NOTE: If the subsequent iteration of the loop suspends it again,
+ // then it is necessary to remove the previous suspension from the
+ // containing activity node activation group.
+ this.group.resume(this);
+} else {
+ super.resume();
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-continueLoop" name="continueLoop" specification="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-continueLoop.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Continue the loop node when it is resumed after being suspended. If
+// isTestedFirst is true, then continue executing the loop. If
+// isTestedFirst is false, then run the test to determine whether
+// the loop should be continued or completed.
+// [Note that this presumes that an accept event action is not allowed
+// in the test part of a loop node.]
+
+LoopNode loopNode = (LoopNode) (this.node);
+
+boolean continuing = true;
+if (!loopNode.isTestedFirst) {
+ continuing = this.runTest();
+}
+
+if (this.isRunning()) {
+ this.activationGroup.terminateAll();
+ this.doLoop(continuing);
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doStructuredActivity.1" name="doStructuredActivity" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doStructuredActivity"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doLoop.1" name="doLoop" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doLoop">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-doLoop.1-continuing" name="continuing" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runTest.1" name="runTest" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runTest">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runTest.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runBody.1" name="runBody" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runBody"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-saveBodyOutputs.1" name="saveBodyOutputs" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-saveBodyOutputs"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runLoopVariables.1" name="runLoopVariables" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-runLoopVariables"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-createNodeActivations.1" name="createNodeActivations" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-createNodeActivations"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList.1" name="makeLoopVariableList" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-makeLoopVariableList.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-terminateAll.1" name="terminateAll" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-terminateAll"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-resume.1" name="resume" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-resume"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-continueLoop.1" name="continueLoop" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-continueLoop"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation" name="ConditionalNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation">
+ <body>A conditional node activation is a structured activity node activation for a node that is a conditional node.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-_ownedComment.1">
+ <body>import java.util.Iterator;
+
+import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Activities.CompleteStructuredActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.LociL1.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-_generalization.0" general="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-clauseActivations" name="clauseActivations" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" aggregation="composite" association="Semantics-Activities-CompleteStructuredActivities-A_clauseActivations_conditionalNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-clauseActivations-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-clauseActivations">
+ <body>The activations for each clause in the conditional node for this node activation.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-clauseActivations-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-clauseActivations-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectedClauses" name="selectedClauses" visibility="public" association="Semantics-Activities-CompleteStructuredActivities-A_selectedClauses_clauseActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectedClauses-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectedClauses">
+ <body>The set of clauses which meet the conditions to have their bodies activated.</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectedClauses-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectedClauses-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-doStructuredActivity" name="doStructuredActivity" specification="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-doStructuredActivity.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Run all the non-executable, non-pin nodes in the conditional node.
+// Activate all clauses in the conditional node and pass control to those that are ready (i.e., have no predecessors).
+// If one or more clauses have succeeded in being selected, choose one non-deterministically and run its body, then copy the outputs of that clause to the output pins of the node.
+
+ConditionalNode node = (ConditionalNode)(this.node);
+
+ActivityNodeActivationList nodeActivations = this.activationGroup.nodeActivations;
+ActivityNodeActivationList nonExecutableNodeActivations = new ActivityNodeActivationList();
+for (int i = 0; i < nodeActivations.size(); i++) {
+ ActivityNodeActivation nodeActivation = nodeActivations.getValue(i);
+ if (!(nodeActivation.node instanceof ExecutableNode | nodeActivation.node instanceof Pin)) {
+ nonExecutableNodeActivations.addValue(nodeActivation);
+ }
+}
+
+this.activationGroup.run(nonExecutableNodeActivations);
+
+this.clauseActivations.clear();
+ClauseList clauses = node.clause;
+for (int i = 0; i < clauses.size(); i++) {
+ Clause clause = clauses.getValue(i);
+ ClauseActivation clauseActivation = new ClauseActivation();
+ clauseActivation.clause = clause;
+ clauseActivation.conditionalNodeActivation = this;
+ this.clauseActivations.addValue(clauseActivation);
+}
+
+this.selectedClauses.clear();
+
+ClauseActivationList readyClauseActivations = new ClauseActivationList();
+for (int i = 0; i < this.clauseActivations.size(); i++) {
+ ClauseActivation clauseActivation = this.clauseActivations.getValue(i);
+ Debug.println("[doStructuredActivity] clauseActivations[" + i + "] = " + clauseActivation);
+ if (clauseActivation.isReady()) {
+ Debug.println("[doStructuredActivity] Clause activation is ready.");
+ readyClauseActivations.addValue(clauseActivation);
+ }
+}
+
+// *** Give control to all ready clauses concurrently. ***
+for (Iterator i = readyClauseActivations.iterator(); i.hasNext() ;) {
+ ClauseActivation clauseActivation = (ClauseActivation)i.next();
+ Debug.println("[doStructuredActivity] Giving control to " + clauseActivation + "...");
+ clauseActivation.receiveControl();
+}
+
+this.selectedClause = null;
+if (this.selectedClauses.size() > 0 & this.isRunning()) {
+ Debug.println("[doStructuredActivity] " + this.selectedClauses.size() + " clause(s) selected.");
+
+ // *** If multiple clauses are selected, choose one non-deterministically. ***
+ int i = ((ChoiceStrategy)this.getExecutionLocus().factory.getStrategy("choice")).choose(this.selectedClauses.size());
+ Clause selectedClause = this.selectedClauses.getValue(i-1);
+
+ Debug.println("[doStructuredActivity] Running selectedClauses[" + i + "] = " + selectedClause);
+
+ for (int j = 0; j < clauses.size(); j++) {
+ Clause clause = clauses.getValue(j);
+ if (clause != selectedClause) {
+ ExecutableNodeList testNodes = clause.test;
+ for (int k = 0; k < testNodes.size(); k++) {
+ ExecutableNode testNode = testNodes.getValue(k);
+ this.activationGroup.getNodeActivation(testNode).terminate();
+ }
+ }
+ }
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation" name="getClauseActivation" specification="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation-clause" name="clause" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the clause activation corresponding to the given clause.
+
+// Debug.println("[getClauseActivation] clause = " + clause);
+
+ClauseActivation selectedClauseActivation = null;
+int i = 1;
+while ((selectedClauseActivation == null) & i <= this.clauseActivations.size()) {
+ ClauseActivation clauseActivation = this.clauseActivations.getValue(i-1);
+ // Debug.println("[getClauseActivations] clauseActivations[" + i + "].clause = " + clauseActivation.clause);
+ if (clauseActivation.clause == clause) {
+ selectedClauseActivation = clauseActivation;
+ }
+ i = i + 1;
+}
+
+return selectedClauseActivation;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-runTest" name="runTest" specification="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-runTest.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-runTest-clause" name="clause" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Run the test for the given clause.
+
+if (this.isRunning()) {
+ this.activationGroup.runNodes(this.makeActivityNodeList(clause.test));
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectBody" name="selectBody" specification="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectBody.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectBody-clause" name="clause" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Add the clause to the list of selected clauses.
+
+this.selectedClauses.addValue(clause);
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeBody" name="completeBody" specification="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeBody.1" isReentrant="false">
+ <language>Java</language>
+ <body> // Complete the activation of the body of a conditional note by
+ // copying the outputs of the selected clause (if any) to the output
+ // pins of the node and terminating the activation of all nested nodes.
+
+ if (this.selectedClause != null) {
+ ConditionalNode node = (ConditionalNode) (this.node);
+ OutputPinList resultPins = node.result;
+ OutputPinList bodyOutputPins = this.selectedClause.bodyOutput;
+ for (int k = 0; k < resultPins.size(); k++) {
+ OutputPin resultPin = resultPins.getValue(k);
+ OutputPin bodyOutputPin = bodyOutputPins.getValue(k);
+ this.putTokens(resultPin, this.getPinValues(bodyOutputPin));
+ }
+ }
+ this.activationGroup.terminateAll();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeAction" name="completeAction" specification="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Only complete the conditional node if it is not suspended.
+
+if (!this.isSuspended()) {
+ completeBody();
+}
+return super.completeAction();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-resume" name="resume" specification="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-resume.1" isReentrant="false">
+ <language>Java</language>
+ <body>// When this conditional node is resumed after being suspended, complete
+// its body and then resume it as a structured activity node.
+// [Note that this presumes that accept event actions are not allowed
+// in the test part of a clause of a conditional node.]
+
+completeBody();
+super.resume();
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-doStructuredActivity.1" name="doStructuredActivity" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-doStructuredActivity"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeBody.1" name="completeBody" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeBody"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeAction.1" name="completeAction" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeAction">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeAction.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeAction.1-Parameter1-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-completeAction.1-Parameter1-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation.1" name="getClauseActivation" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-getClauseActivation.1-clause" name="clause" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-runTest.1" name="runTest" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-runTest">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-runTest.1-clause" name="clause" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectBody.1" name="selectBody" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectBody">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectBody.1-clause" name="clause" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-resume.1" name="resume" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-resume"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" name="ClauseActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-ClauseActivation">
+ <body>A clause activation defines the behavior of a clause within the context of a specific activation of the conditional node containing the clause.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-_ownedComment.1">
+ <body>import java.util.Iterator;
+
+import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Activities.CompleteStructuredActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-conditionalNodeActivation" name="conditionalNodeActivation" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation" association="Semantics-Activities-CompleteStructuredActivities-A_clauseActivations_conditionalNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-conditionalNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-conditionalNodeActivation">
+ <body>The activation of the conditional node that contains the clause for this clause activation.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-clause" name="clause" visibility="public" association="Semantics-Activities-CompleteStructuredActivities-A_clause_clauseActivation">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Clause"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-receiveControl" name="receiveControl" specification="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-receiveControl.1" isReentrant="false">
+ <language>Java</language>
+ <body>// If all predecessors to the clause for this activation have run their tests and failed, then run the test for this clause.
+// If the test succeeds, then terminate any other clauses that may be running and run the body of this clause.
+// If the test fails, then pass control to successor clauses.
+
+Debug.println("[receiveControl] clauseActivation = " + this);
+
+if (this.isReady()) {
+ Debug.println("[receiveControl] Running test...");
+ this.runTest();
+
+ BooleanValue decision = this.getDecision();
+
+ // Note that the decision may be null if the test was terminated before completion.
+ if (decision != null) {
+ if (decision.value == true) {
+ Debug.println("[receiveControl] Test succeeded.");
+ this.selectBody();
+ } else {
+ Debug.println("[receiveControl] Test failed.");
+
+ ClauseActivationList successors = this.getSuccessors();
+
+ // *** Give control to all successors concurrently. ***
+ for (Iterator i = successors.iterator(); i.hasNext();) {
+ ClauseActivation successor = (ClauseActivation)i.next();
+ successor.receiveControl();
+ }
+ }
+ }
+}
+ </body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-isReady" name="isReady" specification="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-isReady.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-isReady-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Test if all predecessors to this clause activation have failed.
+
+ClauseActivationList predecessors = this.getPredecessors();
+
+boolean ready = true;
+int i = 1;
+while (ready & i <= predecessors.size()) {
+ ClauseActivation predecessor = predecessors.getValue(i-1);
+ BooleanValue decisionValue = predecessor.getDecision();
+
+ // Note that the decision will be null if the predecessor clause has not run yet.
+ if (decisionValue == null) {
+ ready = false;
+ } else {
+ ready = !decisionValue.value;
+ }
+
+ i = i + 1;
+}
+
+return ready;
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-runTest" name="runTest" specification="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-runTest.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Run the test of the clause for this clause activation.
+
+this.conditionalNodeActivation.runTest(this.clause);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-selectBody" name="selectBody" specification="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-selectBody.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Select the body of the clause for this clause activation.
+
+this.conditionalNodeActivation.selectBody(this.clause);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision" name="getDecision" specification="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-BooleanValue" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the value (if any) on the decider pin of the clause for this clause activation.
+
+ValueList deciderValues = this.conditionalNodeActivation.getPinValues(this.clause.decider);
+
+BooleanValue deciderValue = null;
+if (deciderValues.size() > 0) {
+ deciderValue = (BooleanValue)(deciderValues.getValue(0));
+}
+
+return deciderValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors" name="getPredecessors" specification="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the clause activations for the predecessors of the clause for this clause activation.
+
+ClauseActivationList predecessors = new ClauseActivationList();
+
+ClauseList predecessorClauses = this.clause.predecessorClause;
+for (int i = 0; i < predecessorClauses.size(); i++) {
+ Clause predecessorClause = predecessorClauses.getValue(i);
+ predecessors.addValue(this.conditionalNodeActivation.getClauseActivation(predecessorClause));
+}
+
+return predecessors;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors" name="getSuccessors" specification="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the clause activations for the successors of the clause for this clause activation.
+
+ClauseActivationList successors = new ClauseActivationList();
+
+ClauseList successorClauses = this.clause.successorClause;
+for (int i = 0; i < successorClauses.size(); i++) {
+ Clause successorClause = successorClauses.getValue(i);
+ successors.addValue(this.conditionalNodeActivation.getClauseActivation(successorClause));
+}
+
+return successors;
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-receiveControl.1" name="receiveControl" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-receiveControl"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-isReady">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-isReady.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-runTest.1" name="runTest" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-runTest"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-selectBody.1" name="selectBody" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-selectBody"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision.1" name="getDecision" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-BooleanValue" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getDecision.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors.1" name="getPredecessors" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getPredecessors.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors.1" name="getSuccessors" visibility="public" method="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-getSuccessors.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_clause_clauseActivation" name="A_clause_clauseActivation" visibility="private" memberEnd="Semantics-Activities-CompleteStructuredActivities-A_clause_clauseActivation-_ownedEnd.0 Semantics-Activities-CompleteStructuredActivities-ClauseActivation-clause">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_clause_clauseActivation-_ownedEnd.0" visibility="private" type="Semantics-Activities-CompleteStructuredActivities-ClauseActivation" association="Semantics-Activities-CompleteStructuredActivities-A_clause_clauseActivation">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_clause_clauseActivation-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_clause_clauseActivation-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_clauseActivations_conditionalNodeActivation" name="A_clauseActivations_conditionalNodeActivation" visibility="private" memberEnd="Semantics-Activities-CompleteStructuredActivities-ClauseActivation-conditionalNodeActivation Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-clauseActivations"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_selectedClauses_clauseActivation" name="A_selectedClauses_clauseActivation" visibility="private" memberEnd="Semantics-Activities-CompleteStructuredActivities-A_selectedClauses_clauseActivation-_ownedEnd.0 Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation-selectedClauses">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_selectedClauses_clauseActivation-_ownedEnd.0" visibility="private" type="Semantics-Activities-CompleteStructuredActivities-ConditionalNodeActivation" association="Semantics-Activities-CompleteStructuredActivities-A_selectedClauses_clauseActivation"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_activationGroup_containingNodeActivation" name="A_activationGroup_containingNodeActivation" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-containingNodeActivation Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation-activationGroup"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-CompleteStructuredActivities-Values" name="Values">
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-Values-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value" association="Semantics-Activities-CompleteStructuredActivities-A_values_values">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-Values-values-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-Values-values-_upperValue" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_bodyOutputLists_loopNodeActivation" name="A_bodyOutputLists_loopNodeActivation" visibility="private" memberEnd="Semantics-Activities-CompleteStructuredActivities-A_bodyOutputLists_loopNodeActivation-_ownedEnd.0 Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation-bodyOutputLists">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_bodyOutputLists_loopNodeActivation-_ownedEnd.0" visibility="private" type="Semantics-Activities-CompleteStructuredActivities-LoopNodeActivation" association="Semantics-Activities-CompleteStructuredActivities-A_bodyOutputLists_loopNodeActivation">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_bodyOutputLists_loopNodeActivation-_ownedEnd.0-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_values_values" name="A_values_values" visibility="private" memberEnd="Semantics-Activities-CompleteStructuredActivities-A_values_values-_ownedEnd.0 Semantics-Activities-CompleteStructuredActivities-Values-values">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_values_values-_ownedEnd.0" visibility="private" type="Semantics-Activities-CompleteStructuredActivities-Values" association="Semantics-Activities-CompleteStructuredActivities-A_values_values">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_values_values-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-CompleteStructuredActivities-A_values_values-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Activities-IntermediateActivities" name="IntermediateActivities">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Activities-IntermediateActivities-_packageImport.1" importedPackage="Semantics-CommonBehaviors-BasicBehaviors"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-Token" name="Token" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Token-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-Token">
+ <body>A token is an individual element of data or control that may flow across an activity edge.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Token-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-Token-holder" name="holder" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" association="Semantics-Activities-IntermediateActivities-A_heldTokens_holder">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-Token-holder-_lowerValue"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Token-transfer" name="transfer" specification="Semantics-Activities-IntermediateActivities-Token-transfer.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-transfer-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-transfer-holder" name="holder" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
+ <language>Java</language>
+ <body>// if this token does not have any holder, make the given holder its holder.
+// Otherwise, remove this token from its holder and return a copy of it transfered to a new holder.
+
+Token token = this;
+if (this.holder != null) {
+ this.withdraw();
+ token = this.copy();
+}
+
+token.holder = holder;
+return token;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Token-withdraw" name="withdraw" specification="Semantics-Activities-IntermediateActivities-Token-withdraw.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Remove this token from its holder, withdrawing any offers for it.
+
+if (!this.isWithdrawn()) {
+ // Debug.println("[withdraw] Taking token with value = " + this.getValue());
+ this.holder.removeToken(this);
+ this.holder = null;
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Token-isWithdrawn" name="isWithdrawn" specification="Semantics-Activities-IntermediateActivities-Token-isWithdrawn.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-isWithdrawn-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Test if this token has been withdrawn.
+
+return this.holder == null;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Token-transfer.1" name="transfer" visibility="public" method="Semantics-Activities-IntermediateActivities-Token-transfer">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-transfer.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-transfer.1-holder" name="holder" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Token-withdraw.1" name="withdraw" visibility="public" method="Semantics-Activities-IntermediateActivities-Token-withdraw"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Token-equals" name="equals" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Token-equals-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-Token-equals">
+ <body>Test if this token is equal to another token.
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-equals-other" name="other" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Token-copy" name="copy" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Token-copy-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-Token-copy">
+ <body>// Make a copy of this token.
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Token-isWithdrawn.1" name="isWithdrawn" visibility="public" method="Semantics-Activities-IntermediateActivities-Token-isWithdrawn">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-isWithdrawn.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Token-isControl" name="isControl" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Token-isControl-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-Token-isControl">
+ <body>Test whether this is a control token.
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-isControl-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Token-getValue" name="getValue" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Token-getValue-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-Token-getValue">
+ <body>Get the value associated with this token (if any).</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Token-getValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-Token-getValue-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-Offer" name="Offer">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Offer-_ownedComment.0">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-Offer-_ownedComment.1" annotatedElement="Semantics-Activities-IntermediateActivities-Offer">
+ <body>An offer is a group of tokens offered together. The grouping of offered tokens into offers usually does not matter for how the tokens may be accepted. However, control and object tokens may become grouped together in the same offer due to a join node that has both incoming control and object flows. In this case, the control tokens are implicitly accepted once all the object tokens in the same offer have been accepted.</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-Offer-offeredTokens" name="offeredTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" association="Semantics-Activities-IntermediateActivities-A_offeredTokens_offer">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-Offer-offeredTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-Offer-offeredTokens-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Offer-countOfferedValues" name="countOfferedValues" specification="Semantics-Activities-IntermediateActivities-Offer-countOfferedValues.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-countOfferedValues-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the number of values being offered on object tokens.
+// Remove any tokens that have already been withdrawn and don't include them in the count.
+
+this.removeWithdrawnTokens();
+
+int count = 0;
+for (int i = 0; i < this.offeredTokens.size(); i++) {
+ if (this.offeredTokens.getValue(i).getValue() != null) {
+ count = count + 1;
+ }
+}
+
+return count;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens" name="getOfferedTokens" specification="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens-OwnedParameter-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens-OwnedParameter-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the offered tokens, removing any that have been withdrawn.
+
+this.removeWithdrawnTokens();
+
+TokenList tokens = new TokenList();
+TokenList offeredTokens = this.offeredTokens;
+for (int i = 0; i < this.offeredTokens.size() ; i++) {
+ Token offeredToken = offeredTokens.getValue(i);
+ // Debug.println("[getOfferedTokens] token value = " + offeredToken.getValue());
+ tokens.addValue(offeredToken);
+}
+
+return tokens;
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Offer-removeOfferedValues" name="removeOfferedValues" specification="Semantics-Activities-IntermediateActivities-Offer-removeOfferedValues.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-removeOfferedValues-count" name="count" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Remove the given number of non-null object tokens from those in this offer.
+
+int n = count;
+int i = 1;
+while (n > 0) {
+ if (this.offeredTokens.getValue(i-1).getValue() != null) {
+ this.offeredTokens.removeValue(i-1);
+ } else {
+ i = i + 1;
+ }
+ n = n - 1;
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Offer-removeWithdrawnTokens" name="removeWithdrawnTokens" specification="Semantics-Activities-IntermediateActivities-Offer-removeWithdrawnTokens.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Remove any tokens that have already been consumed.
+
+TokenList offeredTokens = this.offeredTokens;
+int i = 1;
+while (i <= this.offeredTokens.size()) {
+ if (this.offeredTokens.getValue(i-1).isWithdrawn()) {
+ this.offeredTokens.remove(i-1);
+ i = i - 1;
+ }
+ i = i + 1;
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-Offer-hasTokens" name="hasTokens" specification="Semantics-Activities-IntermediateActivities-Offer-hasTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-hasTokens-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Check whether this offer has any tokens that have not been withdrawn.
+
+this.removeWithdrawnTokens();
+return this.offeredTokens.size() > 0;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Offer-countOfferedValues.1" name="countOfferedValues" visibility="public" method="Semantics-Activities-IntermediateActivities-Offer-countOfferedValues">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-countOfferedValues.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens.1" name="getOfferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens.1-OwnedParameter-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-Offer-getOfferedTokens.1-OwnedParameter-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Offer-removeOfferedValues.1" name="removeOfferedValues" visibility="public" method="Semantics-Activities-IntermediateActivities-Offer-removeOfferedValues">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-removeOfferedValues.1-count" name="count" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Offer-removeWithdrawnTokens.1" name="removeWithdrawnTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-Offer-removeWithdrawnTokens"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-Offer-hasTokens.1" name="hasTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-Offer-hasTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-Offer-hasTokens.1-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken" name="ObjectToken">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ObjectToken">
+ <body>An object token represents the passing of data along an object flow edge.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-_generalization.0" general="Semantics-Activities-IntermediateActivities-Token"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value" aggregation="composite" association="Semantics-Activities-IntermediateActivities-A_value_objectToken">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-value-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ObjectToken-value">
+ <body>The value carried by this token. A token may have no value, in which case it is a "null token".</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-value-_lowerValue"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-equals" name="equals" specification="Semantics-Activities-IntermediateActivities-ObjectToken-equals.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-equals-other" name="other" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
+ <language>Java</language>
+ <body>// Test if this object token is the same as the other token.
+
+return this == other;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-copy" name="copy" specification="Semantics-Activities-IntermediateActivities-ObjectToken-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
+ <language>Java</language>
+ <body>// Return a new object token with the same value as this token.
+// [Note: the holder of the copy is not set.]
+
+ObjectToken copy = new ObjectToken();
+copy.value = this.value;
+
+return copy;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-isControl" name="isControl" specification="Semantics-Activities-IntermediateActivities-ObjectToken-isControl.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-isControl-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return false for an object token.
+
+return false;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-getValue" name="getValue" specification="Semantics-Activities-IntermediateActivities-ObjectToken-getValue.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-getValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-getValue-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the value of this object token.
+
+return this.value;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-equals.1" name="equals" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectToken-equals">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-equals.1-other" name="other" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-copy.1" name="copy" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectToken-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-isControl.1" name="isControl" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectToken-isControl">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-isControl.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-getValue.1" name="getValue" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectToken-getValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-getValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectToken-getValue.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation" name="ObjectNodeActivation" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ObjectNodeActivation">
+ <body>An object node activation is an activity node activation for a node that is an object node.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-offeredTokenCount" name="offeredTokenCount" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-offeredTokenCount-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-offeredTokenCount">
+ <body>The number of held tokens that have already been offered.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-run" name="run" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-run.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Initialize the offered token count to zero.
+
+super.run();
+this.offeredTokenCount = 0;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers" name="sendOffers" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers-tokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers-tokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// If the set of tokens to be sent is empty, then offer a null token instead.
+// Otherwise, offer the given tokens as usual.
+
+if (tokens.size() == 0) {
+ ObjectToken token = new ObjectToken();
+ token.holder = this
+ tokens.addValue(token);
+}
+
+super.sendOffers(tokens);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-terminate" name="terminate" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-terminate.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Remove any offered tokens and terminate.
+
+this.clearTokens();
+super.terminate();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-addToken" name="addToken" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-addToken.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-addToken-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
+ <language>Java</language>
+ <body>// Transfer the given token to be held by this node only if it is a non-null object token.
+// If it is a control token or a null token, consume it without holding it.
+
+if (token.getValue() == null) {
+ token.withdraw();
+} else {
+ super.addToken(token);
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken" name="removeToken" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
+ <language>Java</language>
+ <body>// Remove the given token, if it is held by this node activation.
+
+int i = super.removeToken(token);
+if (i > 0 & i <= this.offeredTokenCount) {
+ this.offeredTokenCount = this.offeredTokenCount - 1;
+}
+
+return i;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-clearTokens" name="clearTokens" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-clearTokens.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Remove all held tokens.
+
+super.clearTokens();
+this.offeredTokenCount = 0;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countOfferedValues" name="countOfferedValues" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countOfferedValues.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countOfferedValues-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Count the total number of non-null object tokens being offered to this node activation.
+
+int totalValueCount = 0;
+int i = 1;
+while (i <= this.incomingEdges.size()) {
+ totalValueCount = totalValueCount + this.incomingEdges.getValue(i-1).countOfferedValues();
+ i = i + 1;
+}
+
+return totalValueCount;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendUnofferedTokens" name="sendUnofferedTokens" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendUnofferedTokens.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Send offers over all outgoing edges, if there are any tokens to be offered.
+
+TokenList tokens = this.getUnofferedTokens();
+this.offeredTokenCount = this.offeredTokenCount + tokens.size();
+
+this.sendOffers(tokens);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countUnofferedTokens" name="countUnofferedTokens" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countUnofferedTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countUnofferedTokens-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the number of unoffered tokens that are to be offered next.
+// (By default, this is all unoffered tokens.)
+
+if (this.heldTokens.size() == 0) {
+ this.offeredTokenCount = 0;
+}
+
+return this.heldTokens.size() - this.offeredTokenCount;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens" name="getUnofferedTokens" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the next set of unoffered tokens to be offered and return it.
+// [Note: This effectively treats all object flows as if they have weight=*, rather than the weight=1 default in the current superstructure semantics.]
+
+TokenList tokens = new TokenList();
+
+int i = 1;
+while (i <= this.countUnofferedTokens()) {
+ tokens.addValue(this.heldTokens.getValue(this.offeredTokenCount + i - 1));
+ i = i + 1;
+}
+
+return tokens;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens" name="takeUnofferedTokens" specification="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens-OwnedParameter-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens-OwnedParameter-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Take the next set of unoffered tokens to be offered from this node activation and return them.
+
+TokenList tokens = this.getUnofferedTokens();
+for (int i = 0; i < tokens.size(); i++) {
+ Token token = tokens.getValue(i);
+ token.withdraw();
+}
+return tokens;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-run.1" name="run" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-run"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers.1" name="sendOffers" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers.1-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers.1-tokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendOffers.1-tokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-terminate"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-addToken.1" name="addToken" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-addToken">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-addToken.1-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken.1" name="removeToken" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-removeToken.1-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-clearTokens.1" name="clearTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-clearTokens"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countOfferedValues.1" name="countOfferedValues" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countOfferedValues">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countOfferedValues.1-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendUnofferedTokens.1" name="sendUnofferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-sendUnofferedTokens"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countUnofferedTokens.1" name="countUnofferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countUnofferedTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-countUnofferedTokens.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens.1" name="getUnofferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-getUnofferedTokens.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens.1" name="takeUnofferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens.1-OwnedParameter-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ObjectNodeActivation-takeUnofferedTokens.1-OwnedParameter-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-MergeNodeActivation" name="MergeNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-MergeNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-MergeNodeActivation">
+ <body>A merge node activation is a control node activation for a node that is a merge node.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-MergeNodeActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-MergeNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ControlNodeActivation"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation" name="JoinNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-JoinNodeActivation">
+ <body>A join node activation is a control node activation for a node that is a join node.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ControlNodeActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation-isReady" name="isReady" specification="Semantics-Activities-IntermediateActivities-JoinNodeActivation-isReady.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation-isReady-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Check that all incoming edges have sources that are offering tokens.
+
+boolean ready = true;
+int i = 1;
+while (ready & i <=this.incomingEdges.size()) {
+ ready = this.incomingEdges.getValue(i-1).hasOffer();
+ i = i + 1;
+}
+
+return ready;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Activities-IntermediateActivities-JoinNodeActivation-isReady">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-JoinNodeActivation-isReady.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken" name="ForkedToken">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ForkedToken">
+ <body>A forked token is a proxy for a token that has been offered through a fork node. If the token is accepted through the fork node, then the original token is withdrawn from its holder, but the forked token remains held by the fork node activation until all outstanding offers on all outgoing edges are accepted.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-_generalization.0" general="Semantics-Activities-IntermediateActivities-Token"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-baseToken" name="baseToken" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" association="Semantics-Activities-IntermediateActivities-A_baseToken_forkedToken"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-remainingOffersCount" name="remainingOffersCount" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-remainingOffersCount-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ForkedToken-remainingOffersCount">
+ <body>The remaining number of outstanding offers for this token on outgoing edges of the fork node.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-baseTokenIsWithdrawn" name="baseTokenIsWithdrawn" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-baseTokenIsWithdrawn-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ForkedToken-baseTokenIsWithdrawn">
+ <body>Indicates whether withdraw() has been called on the base token.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-isControl" name="isControl" specification="Semantics-Activities-IntermediateActivities-ForkedToken-isControl.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-isControl-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Test if the base token is a control token.
+
+return this.baseToken.isControl();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-withdraw" name="withdraw" specification="Semantics-Activities-IntermediateActivities-ForkedToken-withdraw.1" isReentrant="false">
+ <language>Java</language>
+ <body>// If the base token is not withdrawn, then withdraw it.
+// Decrement the remaining offers count.
+// When the remaining number of offers is zero, then remove this token from its holder.
+
+if (!this.baseTokenIsWithdrawn & !this.baseToken.isWithdrawn()) {
+ this.baseToken.withdraw();
+
+ // NOTE: This keeps a base token that is a forked token from being
+ // withdrawn more than once, since withdrawing a forked token may
+ // not actually remove it from its fork node holder.
+ this.baseTokenIsWithdrawn = true;
+}
+
+if (this.remainingOffersCount > 0) {
+ this.remainingOffersCount = this.remainingOffersCount - 1;
+}
+
+if (this.remainingOffersCount == 0) {
+ super.withdraw();
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-copy" name="copy" specification="Semantics-Activities-IntermediateActivities-ForkedToken-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
+ <language>Java</language>
+ <body>// Return a copy of the base token.
+
+return this.baseToken.copy();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-equals" name="equals" specification="Semantics-Activities-IntermediateActivities-ForkedToken-equals.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-equals-otherToken" name="otherToken" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
+ <language>Java</language>
+ <body>// Test if this token is equal to another token.
+
+return this == otherToken;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-getValue" name="getValue" specification="Semantics-Activities-IntermediateActivities-ForkedToken-getValue.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-getValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-getValue-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the value of the base token.
+
+return this.baseToken.getValue();
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-isControl.1" name="isControl" visibility="public" method="Semantics-Activities-IntermediateActivities-ForkedToken-isControl">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-isControl.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-withdraw.1" name="withdraw" visibility="public" method="Semantics-Activities-IntermediateActivities-ForkedToken-withdraw"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-copy.1" name="copy" visibility="public" method="Semantics-Activities-IntermediateActivities-ForkedToken-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-equals.1" name="equals" visibility="public" method="Semantics-Activities-IntermediateActivities-ForkedToken-equals">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-equals.1-otherToken" name="otherToken" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-getValue.1" name="getValue" visibility="public" method="Semantics-Activities-IntermediateActivities-ForkedToken-getValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-getValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ForkedToken-getValue.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation" name="ForkNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ForkNodeActivation">
+ <body>A fork node activation is a control node activation for a node that is a fork node.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ControlNodeActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire" name="fire" specification="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Create forked tokens for all incoming tokens and offer them on all outgoing edges.
+
+if (this.node == null) {
+ Debug.println("[fire] Anonymous fork node.");
+} else {
+ Debug.println("[fire] Fork node " + this.node.name + "...");
+}
+
+ActivityEdgeInstanceList outgoingEdges = this.outgoingEdges;
+int outgoingEdgeCount = outgoingEdges.size();
+
+TokenList forkedTokens = new TokenList();
+for (int i = 0; i < incomingTokens.size(); i++) {
+ Token token = incomingTokens.getValue(i);
+ ForkedToken forkedToken = new ForkedToken();
+ forkedToken.baseToken = token;
+ forkedToken.remainingOffersCount = outgoingEdgeCount;
+ forkedToken.baseTokenIsWithdrawn = false;
+ forkedTokens.addValue(forkedToken);
+}
+
+this.addTokens(forkedTokens);
+
+this.sendOffers(forkedTokens);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-terminate" name="terminate" specification="Semantics-Activities-IntermediateActivities-ForkNodeActivation-terminate.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Remove any offered tokens and terminate.
+
+this.clearTokens();
+super.terminate();
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire.1-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ForkNodeActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Activities-IntermediateActivities-ForkNodeActivation-terminate"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation" name="InitialNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-InitialNodeActivation">
+ <body>An initial node activation is a control node activation for a node that is an initial node.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ControlNodeActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire" name="fire" specification="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Create a single token and send offers for it.
+
+TokenList tokens = new TokenList();
+tokens.addValue(new ControlToken());
+this.addTokens(tokens);
+
+this.sendOffers(tokens);
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire.1-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-InitialNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation" name="DecisionNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-_ownedComment.0">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ControlNodeActivation"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-decisionInputExecution" name="decisionInputExecution" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" aggregation="composite" association="Semantics-Activities-IntermediateActivities-A_decisionInputExecution_decisionNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-decisionInputExecution-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-decisionInputExecution">
+ <body>The current execution of the decision input behavior (if any).</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-decisionInputExecution-_lowerValue"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire" name="fire" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the decision values and test them on each guard.
+// Forward the offer over the edges for which the test succeeds.
+
+Debug.println("[fire] Decision node " + this.node.name + "...");
+
+//TokenList incomingTokens = this.takeOfferedTokens();
+TokenList removedControlTokens = this.removeJoinedControlTokens(incomingTokens);
+ValueList decisionValues = this.getDecisionValues(incomingTokens);
+
+ActivityEdgeInstanceList outgoingEdges = this.outgoingEdges;
+for (int i = 0; i < outgoingEdges.size(); i++) {
+ ActivityEdgeInstance edgeInstance = outgoingEdges.getValue(i);
+ ValueSpecification guard = edgeInstance.edge.guard;
+
+ TokenList offeredTokens = new TokenList();
+ for (int j = 0; j < incomingTokens.size(); j++) {
+ Token incomingToken = incomingTokens.getValue(j);
+ Value decisionValue = decisionValues.getValue(j);
+ if (this.test(guard, decisionValue)) {
+ offeredTokens.addValue(incomingToken);
+ }
+ }
+
+ if (offeredTokens.size() > 0) {
+ for (int j = 0; j < removedControlTokens.size(); j++) {
+ Token removedControlToken = removedControlTokens.getValue(j);
+ offeredTokens.addValue(removedControlToken);
+ }
+ edgeInstance.sendOffer(offeredTokens);
+ }
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues" name="getDecisionValues" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// If there is neither a decision input flow nor a decision input behavior, then return the set of values from the incoming tokens.
+// [In this case, the single incoming edge must be an object flow.]
+// If there is a decision input flow, but no decision input behavior, then return a list of the decision input values equal in size to the number of incoming tokens.
+// If there is both a decision input flow and a decision input behavior, then execute the decision input behavior once for each incoming token and return the set of resulting values.
+// If the primary incoming edge is an object flow, then the value on each object token is passed to the decision input behavior, along with the decision input flow value, if any.
+// If the primary incoming edge is a control flow, then the decision input behavior only receives the decision input flow, if any.
+
+
+Value decisionInputValue = this.getDecisionInputFlowValue();
+
+ValueList decisionValues = new ValueList();
+for (int i = 0; i < incomingTokens.size(); i++) {
+ Token incomingToken = incomingTokens.getValue(i);
+ Value value = this.executeDecisionInputBehavior(incomingToken.getValue(), decisionInputValue);
+ decisionValues.addValue(value);
+}
+
+// Debug.println("[getDecisionValues] " + decisionValues.size() + " decision value(s):");
+for (int i = 0; i < decisionValues.size(); i++) {
+ Value decisionValue = decisionValues.getValue(i);
+ Debug.println("[getDecisionValues] decisionValues[" + i + "] = " + decisionValue);
+}
+
+return decisionValues;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior" name="executeDecisionInputBehavior" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior-inputValue" name="inputValue" visibility="public" type="Semantics-Classes-Kernel-Value">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior-inputValue-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior-decisionInputValue" name="decisionInputValue" visibility="public" type="Semantics-Classes-Kernel-Value">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior-decisionInputValue-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Create the decision input execution from the decision input behavior.
+// If the behavior has input parameter(s), set the input parameter(s) of the execution to the given value(s).
+// Execute the decision input execution and then remove it.
+// Return the value of the output parameter of the execution.
+// If there is no decision input behavior, the decision input value is returned, if one is given, otherwise the input value is used as the decision value.
+
+Debug.println("[executeDecisionBehavior] inputValue = " + inputValue);
+
+Behavior decisionInputBehavior = ((DecisionNode)(this.node)).decisionInput;
+
+Value decisionInputResult = null;
+
+if (decisionInputBehavior == null) {
+
+ if (decisionInputValue != null) {
+ decisionInputResult = decisionInputValue;
+ } else {
+ decisionInputResult = inputValue;
+ }
+
+} else {
+
+ this.decisionInputExecution = this.getExecutionLocus().factory.createExecution(decisionInputBehavior, this.getExecutionContext());
+
+ int i = 1;
+ int j = 0;
+ while ((j == 0 | (j == 1 & decisionInputValue != null)) & i <= decisionInputBehavior.ownedParameter.size()) {
+ Parameter parameter = decisionInputBehavior.ownedParameter.getValue(i-1);
+ if (parameter.direction.equals(ParameterDirectionKind.in) |
+ parameter.direction.equals(ParameterDirectionKind.inout)) {
+ ParameterValue inputParameterValue = new ParameterValue();
+ inputParameterValue.parameter = parameter;
+
+ j = j +1;
+ if (j == 1 && inputValue != null) {
+ inputParameterValue.values.addValue(inputValue);
+ } else {
+ inputParameterValue.values.addValue(decisionInputValue);
+ }
+
+ this.decisionInputExecution.setParameterValue(inputParameterValue);
+
+ }
+ i = i + 1;
+ }
+
+ this.decisionInputExecution.execute();
+
+ ParameterValueList outputParameterValues = this.decisionInputExecution.getOutputParameterValues();
+ decisionInputExecution.destroy();
+
+ decisionInputResult = outputParameterValues.getValue(0).values.getValue(0);
+
+}
+
+return decisionInputResult;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-terminate" name="terminate" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-terminate.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Terminate the decision input execution, if any, and then terminate this activation.
+
+if (this.decisionInputExecution != null) {
+ this.decisionInputExecution.terminate();
+}
+
+super.terminate();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-isReady" name="isReady" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-isReady.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-isReady-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Check that all incoming edges have sources that are offering tokens.
+// [This should be at most two incoming edges, if there is a decision input flow.]
+
+int i = 1;
+boolean ready = true;
+while (ready & i <= this.incomingEdges.size()) {
+ ready = this.incomingEdges.getValue(i-1).hasOffer();
+ i = i + 1;
+}
+
+return ready;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens" name="takeOfferedTokens" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get tokens from the incoming edge that is not the decision input flow.
+
+ObjectFlow decisionInputFlow = ((DecisionNode)(this.node)).decisionInputFlow;
+
+TokenList allTokens = new TokenList();
+ActivityEdgeInstanceList incomingEdges = this.incomingEdges;
+for (int i = 0; i < incomingEdges.size(); i++) {
+ ActivityEdgeInstance edgeInstance = incomingEdges.getValue(i);
+ if (edgeInstance.edge != decisionInputFlow) {
+ TokenList tokens = edgeInstance.takeOfferedTokens();
+ for (int j = 0; j < tokens.size(); j++) {
+ allTokens.addValue(tokens.getValue(j));
+ }
+ }
+}
+
+return allTokens;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue" name="getDecisionInputFlowValue" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Take the next token available on the decision input flow, if any, and return its value.
+
+ActivityEdgeInstance decisionInputFlowInstance = this.getDecisionInputFlowInstance();
+
+Value value = null;
+if (decisionInputFlowInstance != null) {
+ TokenList tokens = decisionInputFlowInstance.takeOfferedTokens();
+ if (tokens.size() > 0) {
+ value = tokens.getValue(0).getValue();
+ }
+}
+
+return value;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance" name="getDecisionInputFlowInstance" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the activity edge instance for the decision input flow, if any.
+
+ActivityEdge decisionInputFlow = ((DecisionNode)(this.node)).decisionInputFlow;
+
+ActivityEdgeInstance edgeInstance = null;
+if (decisionInputFlow != null) {
+ int i = 1;
+ while (edgeInstance == null & i <=this.incomingEdges.size()) {
+ ActivityEdgeInstance incomingEdge = this.incomingEdges.getValue(i-1);
+ if (incomingEdge.edge == decisionInputFlow) {
+ edgeInstance = incomingEdge;
+ }
+ i = i + 1;
+ }
+}
+
+return edgeInstance;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test" name="test" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test-guard" name="guard" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <language>Java</language>
+ <body>// Test if the given value matches the guard. If there is no guard, return true.
+
+boolean guardResult = true;
+if (guard != null) {
+ Value guardValue = this.getExecutionLocus().executor.evaluate(guard);
+ guardResult = guardValue.equals(value);
+}
+
+return guardResult;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens" name="removeJoinedControlTokens" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens-OwnedParameter-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens-OwnedParameter-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// If the primary incoming edge is an object flow, then remove any control tokens from the incoming tokens and return them.
+// [Control tokens may effectively be offered on an object flow outgoing from a join node that has both control and object flows incoming.]
+
+TokenList removedControlTokens = new TokenList();
+
+if (this.hasObjectFlowInput()) {
+ int i = 1;
+ while (i <= incomingTokens.size()) {
+ Token token = incomingTokens.getValue(i-1);
+ if (token.isControl()) {
+ removedControlTokens.addValue(token);
+ incomingTokens.removeValue(i-1);
+ i = i - 1;
+ }
+ i = i + 1;
+ }
+}
+
+return removedControlTokens;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-hasObjectFlowInput" name="hasObjectFlowInput" specification="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-hasObjectFlowInput.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-hasObjectFlowInput-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Check that the primary incoming edge is an object flow.
+
+ActivityEdge decisionInputFlow = ((DecisionNode)(this.node)).decisionInputFlow;
+
+boolean isObjectFlow = false;
+int i = 1;
+while (!isObjectFlow & i <= this.incomingEdges.size()) {
+ ActivityEdge edge = this.incomingEdges.getValue(i-1).edge;
+ isObjectFlow = edge != decisionInputFlow & edge instanceof ObjectFlow;
+ i = i + 1;
+}
+
+return isObjectFlow;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire.1-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1" name="getDecisionValues" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionValues.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior.1" name="executeDecisionInputBehavior" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior.1-inputValue" name="inputValue" visibility="public" type="Semantics-Classes-Kernel-Value">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior.1-inputValue-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior.1-decisionInputValue" name="decisionInputValue" visibility="public" type="Semantics-Classes-Kernel-Value">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-executeDecisionInputBehavior.1-decisionInputValue-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-terminate"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-isReady">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-isReady.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens.1" name="takeOfferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-takeOfferedTokens.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue.1" name="getDecisionInputFlowValue" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowValue.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance.1" name="getDecisionInputFlowInstance" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-getDecisionInputFlowInstance.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test.1" name="test" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test.1-guard" name="guard" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-test.1-value" name="value" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1" name="removeJoinedControlTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1-OwnedParameter-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-removeJoinedControlTokens.1-OwnedParameter-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-hasObjectFlowInput.1" name="hasObjectFlowInput" visibility="public" method="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-hasObjectFlowInput">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-DecisionNodeActivation-hasObjectFlowInput.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken" name="ControlToken">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ControlToken">
+ <body>A control token represents the passing of control along a control flow edge.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-_generalization.0" general="Semantics-Activities-IntermediateActivities-Token"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-equals" name="equals" specification="Semantics-Activities-IntermediateActivities-ControlToken-equals.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-equals-other" name="other" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
+ <language>Java</language>
+ <body>// Return true if the other token is a control token, because control tokens are interchangable.
+
+return other instanceof ControlToken;
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-copy" name="copy" specification="Semantics-Activities-IntermediateActivities-ControlToken-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
+ <language>Java</language>
+ <body>// Return a new control token.
+
+return new ControlToken();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-isControl" name="isControl" specification="Semantics-Activities-IntermediateActivities-ControlToken-isControl.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-isControl-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return true for a control token.
+
+return true;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-getValue" name="getValue" specification="Semantics-Activities-IntermediateActivities-ControlToken-getValue.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-getValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-getValue-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Control tokens do not have values.
+
+return null;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-equals.1" name="equals" visibility="public" method="Semantics-Activities-IntermediateActivities-ControlToken-equals">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-equals.1-other" name="other" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-copy.1" name="copy" visibility="public" method="Semantics-Activities-IntermediateActivities-ControlToken-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-isControl.1" name="isControl" visibility="public" method="Semantics-Activities-IntermediateActivities-ControlToken-isControl">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-isControl.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-getValue.1" name="getValue" visibility="public" method="Semantics-Activities-IntermediateActivities-ControlToken-getValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-getValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ControlToken-getValue.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation" name="ControlNodeActivation" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ControlNodeActivation">
+ <body>A control node activation is an activity node activation for a node that is a control node.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire" name="fire" specification="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// By default, offer all tokens on all outgoing edges.
+
+if (this.node != null) {
+ Debug.println("[fire] Control node " + this.node.name + "...");
+}
+
+this.sendOffers(incomingTokens);
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire.1-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ControlNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" name="ActivityEdgeInstance">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance">
+ <body>An activity edge instance is a connection between activity node activations corresponding to an edge between the corresponding nodes of those activations</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-edge" name="edge" visibility="public" association="Semantics-Activities-IntermediateActivities-A_edge_activityEdgeInstance">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-edge-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-edge">
+ <body>The activity edge of which this is an instance.
+[This is optional to allow for an implicit fork node execution to be connected to its action execution by an edge instance which does not have a corresponding node in the model.]</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityEdge"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-edge-_lowerValue"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-group" name="group" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup" association="Semantics-Activities-IntermediateActivities-A_edgeInstances_group">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-group-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-group">
+ <body>The activity group that contains this activity edge instance. </body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-source" name="source" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" association="Semantics-Activities-IntermediateActivities-A_source_outgoingEdges">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-source-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-source">
+ <body>The source of this activity edge instance.
+The node of the source must be the same as the source of the edge of this edge instance.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-target" name="target" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" association="Semantics-Activities-IntermediateActivities-A_incomingEdges_target">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-target-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-target">
+ <body>The target of this activity edge instance.
+The node of the target must be the same as the target of the edge of this edge instance.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-offers" name="offers" visibility="public" type="Semantics-Activities-IntermediateActivities-Offer" association="Semantics-Activities-IntermediateActivities-A_offers_activityEdgeInstance">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-offers-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-offers-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer" name="sendOffer" specification="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer-tokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer-tokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Send an offer from the source to the target.
+// Keep the offered tokens until taken by the target.
+// (Note that any one edge should only be handling either all object tokens or all control tokens.)
+
+Offer offer = new Offer();
+
+for (int i = 0; i < tokens.size(); i++) {
+ Token token = tokens.getValue(i);
+ // Debug.println("[sendOffer] token value = " + token.getValue());
+ offer.offeredTokens.addValue(token);
+}
+
+this.offers.addValue(offer);
+
+this.target.receiveOffer();
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-countOfferedValues" name="countOfferedValues" specification="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-countOfferedValues.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-countOfferedValues-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the number of values being offered in object tokens.
+
+int count = 0;
+OfferList offers = this.offers;
+for (int i = 0; i < offers.size(); i++) {
+ count = count + offers.getValue(i).countOfferedValues();
+}
+
+return count;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens" name="takeOfferedTokens" specification="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Take all the offered tokens and return them.
+
+TokenList tokens = new TokenList();
+
+while (this.offers.size() > 0) {
+ TokenList offeredTokens = this.offers.getValue(0).getOfferedTokens();
+ for (int i = 0; i < offeredTokens.size(); i++) {
+ tokens.addValue(offeredTokens.getValue(i));
+ }
+ this.offers.removeValue(0);
+}
+
+return tokens;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens1" name="takeOfferedTokens1" specification="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.2" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens1-maxCount" name="maxCount" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Take all the offered tokens, up to the given maximum count of non-null object tokens, and return them.
+
+TokenList tokens = new TokenList();
+int remainingCount = maxCount;
+
+while (this.offers.size() > 0 & remainingCount > 0) {
+ Offer offer = this.offers.getValue(0);
+ TokenList offeredTokens = offer.getOfferedTokens();
+ int count = offer.countOfferedValues();
+ if (count <= remainingCount) {
+ for (int i = 0; i < offeredTokens.size(); i++) {
+ tokens.addValue(offeredTokens.getValue(i));
+ }
+ remainingCount = remainingCount - count;
+ this.offers.removeValue(0);
+ } else {
+ for (int i = 0; i < remainingCount; i++) {
+ Token token = offeredTokens.getValue(i);
+ if (token.getValue() != null) {
+ tokens.addValue(token);
+ }
+ }
+ offer.removeOfferedValues(remainingCount);
+ remainingCount = 0;
+ }
+}
+
+return tokens;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens" name="getOfferedTokens" specification="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the offered tokens (after which the tokens will still be offered).
+
+TokenList tokens = new TokenList();
+OfferList offers = this.offers;
+
+for (int i = 0; i < offers.size(); i++) {
+ TokenList offeredTokens = offers.getValue(i).getOfferedTokens();
+ for (int j = 0; j < offeredTokens.size(); j++) {
+ tokens.addValue(offeredTokens.getValue(j));
+ }
+}
+
+return tokens;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-hasOffer" name="hasOffer" specification="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-hasOffer.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-hasOffer-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return true if there are any pending offers.
+
+boolean hasTokens = false;
+int i = 1;
+while (!hasTokens & i <= this.offers.size()) {
+ hasTokens = this.offers.getValue(i-1).hasTokens();
+ i = i + 1;
+}
+
+return hasTokens;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer.1" name="sendOffer" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer.1-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer.1-tokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-sendOffer.1-tokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-countOfferedValues.1" name="countOfferedValues" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-countOfferedValues">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-countOfferedValues.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.1" name="takeOfferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.2" name="takeOfferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens1">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.2-maxCount" name="maxCount" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.2-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.2-Parameter1-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-takeOfferedTokens.2-Parameter1-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens.1" name="getOfferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-getOfferedTokens.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-hasOffer.1" name="hasOffer" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-hasOffer">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-hasOffer.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution" name="ActivityExecution">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityExecution">
+ <body>An activity execution is used to execute a specific activity. The type of the activity execution must be an activity.
+When executed, the activity execution creates activity edge instances for all activity edges, activity node activations for all activity nodes and makes offers to all nodes with no incoming edges.
+Execution terminates when either all node activations are complete, or an activity final node is executed.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-_generalization.0" general="Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-activationGroup" name="activationGroup" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup" aggregation="composite" association="Semantics-Activities-IntermediateActivities-A_activationGroup_activityExecution">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-activationGroup-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityExecution-activationGroup">
+ <body>The group of activations of the activity nodes of the activity.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-execute" name="execute" specification="Semantics-Activities-IntermediateActivities-ActivityExecution-execute.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Execute the activity for this execution by creating an activity node activation group and activating all the activity nodes in the activity.
+// When this is complete, copy the values on the tokens offered by output parameter nodes to the corresponding output parameters.
+
+Activity activity = (Activity)(this.getTypes().getValue(0));
+
+Debug.println("[execute] Activity " + activity.name + "...");
+// Debug.println("[execute] context = " + this.context.objectId());
+Debug.println("[event] Execute activity=" + activity.name);
+
+this.activationGroup = new ActivityNodeActivationGroup();
+this.activationGroup.activityExecution = this;
+this.activationGroup.activate(activity.node, activity.edge);
+
+// Debug.println("[execute] Getting output parameter node activations...");
+
+ActivityParameterNodeActivationList outputActivations = this.activationGroup.getOutputParameterNodeActivations();
+
+// Debug.println("[execute] There are " + outputActivations.size() + " output parameter node activations.");
+
+for (int i = 0; i < outputActivations.size(); i++) {
+ ActivityParameterNodeActivation outputActivation = outputActivations.getValue(i);
+
+ ParameterValue parameterValue = new ParameterValue();
+ parameterValue.parameter = ((ActivityParameterNode)(outputActivation.node)).parameter;
+
+ TokenList tokens = outputActivation.getTokens();
+ for (int j = 0; j < tokens.size(); j++) {
+ Token token = tokens.getValue(j);
+ Value value = ((ObjectToken)token).value;
+ if (value != null) {
+ parameterValue.values.addValue(value);
+ Debug.println("[event] Output activity="+ activity.name + " parameter=" + parameterValue.parameter.name + " value=" + value);
+ }
+ }
+
+ this.setParameterValue(parameterValue);
+}
+
+Debug.println("[execute] Activity " + activity.name + " completed.");
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-copy" name="copy" specification="Semantics-Activities-IntermediateActivities-ActivityExecution-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new activity execution that is a copy of this execution.
+// [Note: This currently just returns a non-executing execution for the same activity as this execution.]
+
+return super.copy();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-new_" name="new_" specification="Semantics-Activities-IntermediateActivities-ActivityExecution-new_.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new activity execution with empty properties.
+
+return new ActivityExecution();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-terminate" name="terminate" specification="Semantics-Activities-IntermediateActivities-ActivityExecution-terminate.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Terminate all node activations (which will ultimately result in the activity execution completing).
+
+this.activationGroup.terminateAll();
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-execute.1" name="execute" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityExecution-execute"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-copy.1" name="copy" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityExecution-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-new_.1" name="new_" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityExecution-new_">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityExecution-terminate.1" name="terminate" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityExecution-terminate"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation" name="ActivityFinalNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation">
+ <body>An activity final node activation is a control node activation for a node that is an activity final node.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ControlNodeActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire" name="fire" specification="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Terminate the activity execution or structured node activation
+// containing this activation.
+
+Debug.println("[fire] Activity final node " + this.node.name + "...");
+
+if (incomingTokens.size() > 0 | this.incomingEdges.size() == 0) {
+ if (this.group.activityExecution != null) {
+ this.group.activityExecution.terminate();
+ } else if (this.group.containingNodeActivation != null) {
+ this.group.containingNodeActivation.terminateAll();
+ } else if (this.group instanceof ExpansionActivationGroup){
+ ((ExpansionActivationGroup)this.group).regionActivation.terminate();
+ }
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire.1-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityFinalNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" name="ActivityNodeActivation" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivation">
+ <body>An activity node activation is used to define the behavior of an activity node in the context of a containing activity or structured activity node.
+</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-_ownedComment.1">
+ <body>import java.util.Iterator;
+
+import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-_generalization.0" general="Semantics-Loci-LociL1-SemanticVisitor"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-group" name="group" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup" association="Semantics-Activities-IntermediateActivities-A_nodeActivations_group">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-group-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-group">
+ <body>The group that contains this activity node activation.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-node" name="node" visibility="public" association="Semantics-Activities-IntermediateActivities-A_node_activityNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-node-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-node">
+ <body>The activity node being activated by this activity node activation. The node must be owned by the activity (type) of the activity execution of this node activation.
+[This is optional, to allow for fork node edge queues and implicit fork and join node activations for actions to not have nodes in the model.]</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-node-_lowerValue"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-incomingEdges" name="incomingEdges" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" association="Semantics-Activities-IntermediateActivities-A_incomingEdges_target">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-incomingEdges-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-incomingEdges">
+ <body>The set of activity edge instances for the incoming edges of the node.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-incomingEdges-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-incomingEdges-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-outgoingEdges" name="outgoingEdges" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" association="Semantics-Activities-IntermediateActivities-A_source_outgoingEdges">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-outgoingEdges-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-outgoingEdges">
+ <body>The set of activity edge instances for the outgoing edges of the node.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-outgoingEdges-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-outgoingEdges-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-running" name="running" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-running-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-running">
+ <body>If true, this node activation is enabled for execution once all its other prerequesites are satisfied.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-heldTokens" name="heldTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" aggregation="composite" association="Semantics-Activities-IntermediateActivities-A_heldTokens_holder">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-heldTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-heldTokens-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-run" name="run" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-run.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Run the activation of this node.
+
+if (this.node != null) {
+ Debug.println("[run] node = " + this.node.name);
+} else {
+ Debug.println("[run] Anonymous activation of type " + this.getClass().getName());
+}
+
+this.running = true;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-receiveOffer" name="receiveOffer" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-receiveOffer.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Receive an offer from an incoming edge.
+// Check if all prerequisites have been satisfied. If so, fire.
+
+if (this.node != null) {
+ Debug.println("[receiveOffer] node = " + this.node.name);
+}
+
+_beginIsolation();
+
+ boolean ready = this.isReady();
+
+ TokenList tokens = new TokenList();
+ if (ready) {
+ Debug.println("[receiveOffer] Firing.");
+ tokens = this.takeOfferedTokens();
+ }
+
+_endIsolation();
+
+if (ready) {
+ this.fire(tokens);
+}
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens" name="takeOfferedTokens" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get tokens from all incoming edges.
+
+TokenList allTokens = new TokenList();
+ActivityEdgeInstanceList incomingEdges = this.incomingEdges;
+for (int i = 0; i < incomingEdges.size(); i++) {
+ ActivityEdgeInstance incomingEdge = incomingEdges.getValue(i);
+ TokenList tokens = incomingEdge.takeOfferedTokens();
+ for (int j = 0; j < tokens.size(); j ++) {
+ Token token = tokens.getValue(j);
+ allTokens.addValue(token);
+ }
+}
+
+return allTokens;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers" name="sendOffers" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers-tokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers-tokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Send offers for the given set of tokens over all outgoing edges (if there are any tokens actually being offered).
+
+if (tokens.size()>0) {
+
+ // *** Send all outgoing offers concurrently. ***
+ ActivityEdgeInstanceList outgoingEdges = this.outgoingEdges;
+ for (Iterator i = outgoingEdges.iterator(); i.hasNext();) {
+ ActivityEdgeInstance outgoingEdge = (ActivityEdgeInstance)i.next();
+ // Debug.println("[sendOffers] Sending offer to " + outgoingEdge.target.node.name + ".");
+ outgoingEdge.sendOffer(tokens);
+ }
+
+}
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-terminate" name="terminate" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-terminate.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Terminate the activation of this node.
+
+if (this.running) {
+ if (this.node != null) {
+ Debug.println("[terminate] node = " + this.node.name);
+ } else {
+ Debug.println("[terminate] Anonymous activation of type " + this.getClass().getName());
+ }
+}
+
+this.running = false;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isReady" name="isReady" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isReady.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isReady-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Check if all the prerequisites for this node have been satisfied.
+// By default, check that this node is running.
+
+return this.isRunning();
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isRunning" name="isRunning" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isRunning.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isRunning-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Test whether this node activation is running.
+
+return this.running;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addOutgoingEdge" name="addOutgoingEdge" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addOutgoingEdge.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addOutgoingEdge-edge" name="edge" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
+ <language>Java</language>
+ <body>// Add an activity edge instance as an outgoing edge of this activity node activation.
+
+edge.source = this;
+this.outgoingEdges.addValue(edge);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addIncomingEdge" name="addIncomingEdge" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addIncomingEdge.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addIncomingEdge-edge" name="edge" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
+ <language>Java</language>
+ <body>// Add an activity edge instance as an incoming edge of this activity node activation.
+
+edge.target = this;
+this.incomingEdges.addValue(edge);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createNodeActivations" name="createNodeActivations" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createNodeActivations.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Create node activations for any subnodes of the node for this activation.
+// For most kinds of nodes, this does nothing.
+
+return;
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createEdgeInstances" name="createEdgeInstances" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createEdgeInstances.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Create edge instances for any edge instances owned by the node for this activation.
+// For most kinds of nodes, this does nothing.
+
+return;
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor" name="isSourceFor" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor-edgeInstance" name="edgeInstance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
+ <language>Java</language>
+ <body>// Check if this node activation is the effective source for the given edge instance.
+
+return edgeInstance.source == this;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getActivityExecution" name="getActivityExecution" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getActivityExecution.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getActivityExecution-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityExecution" direction="return"/>
+ <language>Java</language>
+ <body>// Return the activity execution that contains this activity node activation, directly or indirectly.
+
+return this.group.getActivityExecution();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionContext" name="getExecutionContext" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionContext.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionContext-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Object" direction="return"/>
+ <language>Java</language>
+ <body>// Get the context object for the containing activity execution.
+
+return this.getActivityExecution().context;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionLocus" name="getExecutionLocus" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionLocus.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionLocus-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-Locus" direction="return"/>
+ <language>Java</language>
+ <body>// Get the locus of the containing activity execution.
+
+return this.getActivityExecution().locus;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation" name="getNodeActivation" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation-node" name="node" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the activity node activation corresponding to the given activity node, in the context of this activity node activation.
+// By default, return this activity node activation, if it is for the given node, otherwise return nothing.
+
+ActivityNodeActivation activation = null;
+if (node == this.node) {
+ activation = this;
+}
+
+return activation;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addToken" name="addToken" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addToken.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addToken-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
+ <language>Java</language>
+ <body>// Transfer the given token to be held by this node.
+
+if (this.node == null) {
+ Debug.println("[addToken] ...");
+} else {
+ Debug.println("[addToken] node = " + this.node.name);
+}
+
+Token transferredToken = token.transfer(this);
+// Debug.println("[addToken] Adding token with value = " + transferredToken.getValue());
+this.heldTokens.addValue(transferredToken);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken" name="removeToken" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
+ <language>Java</language>
+ <body>// Remove the given token, if it is held by this node activation.
+// Return the position (counting from 1) of the removed token (0 if there is none removed).
+
+boolean notFound = true;
+int i = 1;
+while (notFound & i <= this.heldTokens.size()) {
+ if (this.heldTokens.getValue(i-1) == token) {
+ if (this.node == null) {
+ Debug.println("[removeToken] ...");
+ } else {
+ Debug.println("[removeToken] node = " + this.node.name);
+ }
+ this.heldTokens.remove(i-1);
+ notFound = false;
+ }
+ i = i + 1;
+}
+
+if (notFound) {
+ i = 0;
+} else {
+ i = i - 1;
+}
+
+return i ;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens" name="addTokens" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens-tokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens-tokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Transfer the given tokens to be the held tokens for this node.
+
+// if (this.node == null) {
+// Debug.println("[addTokens] ...");
+// } else {
+// Debug.println("[addTokens] node = " + this.node.name);
+// }
+
+for (int i = 0; i < tokens.size(); i++) {
+ Token token = tokens.getValue(i);
+ this.addToken(token);
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens" name="takeTokens" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Take the tokens held by this node activation.
+
+TokenList tokens = this.getTokens();
+this.clearTokens();
+
+return tokens;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-clearTokens" name="clearTokens" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-clearTokens.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Remove all held tokens.
+
+while (this.heldTokens.size() > 0) {
+ this.heldTokens.getValue(0).withdraw();
+}
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens" name="getTokens" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the tokens held by this node activation.
+
+// Debug.println("[getTokens] node = " + this.node.name);
+
+TokenList tokens = new TokenList();
+TokenList heldTokens = this.heldTokens;
+for (int i = 0; i < heldTokens.size(); i++) {
+ Token heldToken = heldTokens.getValue(i);
+ // Debug.println("[getTokens] token value = " + heldTokens.getValue());
+ tokens.addValue(heldToken);
+}
+
+return tokens;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-suspend" name="suspend" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-suspend.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Suspend this activation within the activation group that contains it.
+
+this.group.suspend(this);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-resume" name="resume" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-resume.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Resume this activation within the activation group that contains it.
+
+this.group.resume(this);
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-run.1" name="run" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-run"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-receiveOffer.1" name="receiveOffer" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-receiveOffer"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens.1" name="takeOfferedTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeOfferedTokens.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-fire" name="fire" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-fire-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-fire">
+ <body>Carry out the main behavior of this activity node.
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-fire-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers.1" name="sendOffers" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers.1-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers.1-tokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-sendOffers.1-tokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-terminate"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isReady">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isReady.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isRunning.1" name="isRunning" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isRunning">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isRunning.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addOutgoingEdge.1" name="addOutgoingEdge" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addOutgoingEdge">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addOutgoingEdge.1-edge" name="edge" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addIncomingEdge.1" name="addIncomingEdge" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addIncomingEdge">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addIncomingEdge.1-edge" name="edge" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createNodeActivations.1" name="createNodeActivations" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createNodeActivations"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createEdgeInstances.1" name="createEdgeInstances" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-createEdgeInstances"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor.1" name="isSourceFor" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-isSourceFor.1-edgeInstance" name="edgeInstance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getActivityExecution.1" name="getActivityExecution" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getActivityExecution">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getActivityExecution.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityExecution" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionContext.1" name="getExecutionContext" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionContext">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionContext.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Object" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionLocus.1" name="getExecutionLocus" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionLocus">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getExecutionLocus.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-Locus" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation.1" name="getNodeActivation" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getNodeActivation.1-node" name="node" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addToken.1" name="addToken" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addToken">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addToken.1-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken.1" name="removeToken" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-removeToken.1-token" name="token" visibility="public" type="Semantics-Activities-IntermediateActivities-Token"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens.1" name="addTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens.1-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens.1-tokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-addTokens.1-tokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens.1" name="takeTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-takeTokens.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-clearTokens.1" name="clearTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-clearTokens"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens.1" name="getTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-getTokens.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-suspend.1" name="suspend" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-suspend"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-resume.1" name="resume" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-resume"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup" name="ActivityNodeActivationGroup">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup">
+ <body>An activity node group is a group of nodes that are activated together, either directly in the context of an activity execution, or in the context of </body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-_ownedComment.1">
+ <body>import java.util.Iterator;
+
+import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-edgeInstances" name="edgeInstances" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" aggregation="composite" association="Semantics-Activities-IntermediateActivities-A_edgeInstances_group">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-edgeInstances-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-edgeInstances">
+ <body>The set of activity edge instances for this group. 
+</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-edgeInstances-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-edgeInstances-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-nodeActivations" name="nodeActivations" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" aggregation="composite" association="Semantics-Activities-IntermediateActivities-A_nodeActivations_group">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-nodeActivations-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-nodeActivations">
+ <body>The set of activity node executions for this group. 
+</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-nodeActivations-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-nodeActivations-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activityExecution" name="activityExecution" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityExecution" association="Semantics-Activities-IntermediateActivities-A_activationGroup_activityExecution">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activityExecution-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activityExecution">
+ <body>The activity execution to which this group belongs.
+(This will be empty if the group is for a structured activity node activation.)</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activityExecution-_lowerValue"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-containingNodeActivation" name="containingNodeActivation" visibility="public" type="Semantics-Activities-CompleteStructuredActivities-StructuredActivityNodeActivation" association="Semantics-Activities-CompleteStructuredActivities-A_activationGroup_containingNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-containingNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-containingNodeActivation">
+ <body>The structured activity node activation to which this group belongs.
+(This will be empty if the group is for an activity execution.)</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-containingNodeActivation-_lowerValue"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspendedActivations" name="suspendedActivations" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" association="Semantics-Activities-IntermediateActivities-_packagedElement.32">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspendedActivations-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspendedActivations">
+ <body>Activity node activations in this activation group that are suspended waiting for an event occurrence. If an activation group has a containing node activation and any suspended activations, then the containing node activation will also be suspended.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspendedActivations-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspendedActivations-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run" name="run" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run-activations" name="activations" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run-activations-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run-activations-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Run the given node activations and then (concurrently) send an offer to all activations for nodes with no incoming edges within the given set.
+
+for (int i = 0; i < activations.size(); i++) {
+ ActivityNodeActivation activation = activations.getValue(i);
+ activation.run();
+}
+
+Debug.println("[run] Checking for enabled nodes...");
+
+ActivityNodeActivationList enabledActivations = new ActivityNodeActivationList();
+
+for (int i = 0; i < activations.size(); i++) {
+ ActivityNodeActivation activation = activations.getValue(i);
+
+ Debug.println("[run] Checking node " + activation.node.name + "...");
+
+ if (activation instanceof ActionActivation |
+ activation instanceof ControlNodeActivation |
+ activation instanceof ActivityParameterNodeActivation) {
+
+ boolean isEnabled = this.checkIncomingEdges(activation.incomingEdges, activations);
+
+ // For an action activation, also consider incoming edges to input pins
+ if (isEnabled & activation instanceof ActionActivation) {
+ InputPinList inputPins = ((Action)activation.node).input;
+ int j = 1;
+ while (j <= inputPins.size() & isEnabled) {
+ InputPin inputPin = inputPins.getValue(j-1);
+ ActivityEdgeInstanceList inputEdges = ((ActionActivation)activation).getPinActivation(inputPin).incomingEdges;
+ isEnabled = this.checkIncomingEdges(inputEdges, activations);
+ j = j + 1;
+ }
+ }
+
+ if (isEnabled) {
+ Debug.println("[run] Node " + activation.node.name + " is enabled.");
+ enabledActivations.addValue(activation);
+ }
+ }
+}
+
+// Debug.println("[run] " + enabledActivations.size() + " node(s) are enabled.");
+
+// *** Send offers to all enabled nodes concurrently. ***
+for (Iterator i = enabledActivations.iterator(); i.hasNext();) {
+ ActivityNodeActivation activation = (ActivityNodeActivation)i.next();
+ Debug.println("[run] Sending offer to node " + activation.node.name + ".");
+ activation.receiveOffer();
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges" name="checkIncomingEdges" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges-incomingEdges" name="incomingEdges" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges-incomingEdges-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges-incomingEdges-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges-activations" name="activations" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges-activations-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges-activations-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Check if any incoming edges have a source in a given set of activations.
+
+int j = 1;
+boolean notFound = true;
+
+while (j <= incomingEdges.size() & notFound) {
+ int k = 1;
+ while (k <= activations.size() & notFound) {
+ if (activations.getValue(k-1).isSourceFor(incomingEdges.getValue(j-1))) {
+ notFound = false;
+ }
+ k = k + 1;
+ }
+ j = j + 1;
+}
+
+return notFound;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes" name="runNodes" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes-nodes" name="nodes" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes-nodes-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes-nodes-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Run the node activations associated with the given nodes in this activation group.
+
+ActivityNodeActivationList nodeActivations = new ActivityNodeActivationList();
+
+for (int i = 0; i < nodes.size(); i++) {
+ ActivityNode node = nodes.getValue(i);
+ ActivityNodeActivation nodeActivation = this.getNodeActivation(node);
+ if (nodeActivation != null) {
+ nodeActivations.addValue(nodeActivation);
+ }
+}
+
+this.run(nodeActivations);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate" name="activate" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate-nodes" name="nodes" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate-nodes-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate-nodes-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate-edges" name="edges" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityEdge"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate-edges-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate-edges-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Activate and run the given set of nodes with the given set of edges, within this activation group.
+
+this.createNodeActivations(nodes);
+this.createEdgeInstances(edges);
+this.run(this.nodeActivations);
+
+// Debug.println("[activate] Exiting.");
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-terminateAll" name="terminateAll" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-terminateAll.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Terminate all node activations in the group.
+
+Debug.println("[terminateAll] Terminating activation group for " +
+ (this.activityExecution != null? "activity " + this.activityExecution.getTypes().getValue(0).name:
+ this.containingNodeActivation != null? "node " + this.containingNodeActivation.node.name:
+ "expansion region") + ".");
+
+ActivityNodeActivationList nodeActivations = this.nodeActivations;
+for (int i = 0; i < nodeActivations.size(); i++) {
+ ActivityNodeActivation nodeActivation = nodeActivations.getValue(i);
+ nodeActivation.terminate();
+}
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations" name="createNodeActivations" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations-nodes" name="nodes" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations-nodes-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations-nodes-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Add activity node activations for the given set of nodes to this group and create edge instances between them.
+
+for (int i = 0; i < nodes.size(); i++) {
+ ActivityNode node = nodes.getValue(i);
+
+ Debug.println("[createNodeActivations] Creating a node activation for " + node.name + "...");
+ this.createNodeActivation(node);
+
+}
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation" name="createNodeActivation" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation-node" name="node" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return"/>
+ <language>Java</language>
+ <body>// Create an activity node activation for a given activity node in this activity node activation group.
+
+ActivityNodeActivation activation = (ActivityNodeActivation)(this.getActivityExecution().locus.factory.instantiateVisitor(node));
+activation.node = node;
+activation.running = false;
+
+this.addNodeActivation(activation);
+
+activation.createNodeActivations();
+
+return activation;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addNodeActivation" name="addNodeActivation" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addNodeActivation.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addNodeActivation-activation" name="activation" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
+ <language>Java</language>
+ <body>// Add the given node activation to this group.
+
+activation.group = this;
+this.nodeActivations.addValue(activation);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation" name="getNodeActivation" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation-node" name="node" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the node activation (if any) in this group,
+// or any nested group, corresponding to the given activity node.
+// If this is a group for a structured activity node activation,
+// also include the pin activations for that node activation.
+
+ActivityNodeActivation activation = null;
+
+if (this.containingNodeActivation != null && node instanceof Pin) {
+ activation = this.containingNodeActivation.getPinActivation((Pin)node);
+}
+
+if (activation == null) {
+ int i = 1;
+ while (activation == null & i <= this.nodeActivations.size()) {
+ activation = this.nodeActivations.getValue(i-1).getNodeActivation(node);
+ i = i + 1;
+ }
+}
+
+return activation;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances" name="createEdgeInstances" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances-edges" name="edges" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityEdge"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances-edges-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances-edges-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Create instance edges for the given activity edges, as well as for edge instances within any nodes activated in this group.
+
+for (int i = 0; i < edges.size(); i++) {
+ ActivityEdge edge = edges.getValue(i);
+
+ Debug.println("[createEdgeInstances] Creating an edge instance from " + edge.source.name + " to " + edge.target.name + ".");
+
+ ActivityEdgeInstance edgeInstance = new ActivityEdgeInstance();
+ edgeInstance.edge = edge;
+
+ this.addEdgeInstance(edgeInstance);
+ this.getNodeActivation(edge.source).addOutgoingEdge(edgeInstance);
+ this.getNodeActivation(edge.target).addIncomingEdge(edgeInstance);
+
+ // Debug.println("[createEdgeInstances] Edge instance created...");
+}
+
+ActivityNodeActivationList nodeActivations = this.nodeActivations;
+for (int i = 0; i < nodeActivations.size(); i++) {
+ ActivityNodeActivation nodeActivation = nodeActivations.getValue(i);
+ nodeActivation.createEdgeInstances();
+}
+
+// Debug.println("[createEdgeInstances] Done creating edge instances.");
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addEdgeInstance" name="addEdgeInstance" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addEdgeInstance.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addEdgeInstance-instance" name="instance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
+ <language>Java</language>
+ <body>// Add the given edge instance to this group.
+
+instance.group = this;
+this.edgeInstances.addValue(instance);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getActivityExecution" name="getActivityExecution" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getActivityExecution.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getActivityExecution-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityExecution" direction="return"/>
+ <language>Java</language>
+ <body>// Return the activity execution to which this group belongs, directly or indirectly.
+
+ActivityExecution activityExecution = this.activityExecution;
+if (activityExecution == null) {
+ activityExecution = this.containingNodeActivation.group.getActivityExecution();
+}
+
+// Debug.println("[getActivityExecution] activityExecution = " + activityExecution);
+
+return activityExecution;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations" name="getOutputParameterNodeActivations" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the set of all activations in this group of activity parameter nodes for output (inout, out and return) parameters.
+
+ActivityParameterNodeActivationList parameterNodeActivations = new ActivityParameterNodeActivationList();
+ActivityNodeActivationList nodeActivations = this.nodeActivations;
+for (int i = 0; i < nodeActivations.size(); i++) {
+ ActivityNodeActivation activation = nodeActivations.getValue(i);
+ if (activation instanceof ActivityParameterNodeActivation) {
+ ParameterDirectionKind direction = ((ActivityParameterNode)(activation.node)).parameter.direction;
+ if (activation.incomingEdges.size() > 0) {
+ parameterNodeActivations.addValue((ActivityParameterNodeActivation)activation);
+ }
+ }
+}
+
+return parameterNodeActivations;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-hasSourceFor" name="hasSourceFor" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-hasSourceFor.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Returns true if this activation group has a node activation
+// corresponding to the source of the given edge instance.
+
+boolean hasSource = false;
+ActivityNodeActivationList activations = this.nodeActivations;
+int i = 1;
+while (!hasSource & i <= activations.size()) {
+ hasSource = activations.getValue(i-1).isSourceFor(edgeInstance);
+ i = i + 1;
+}
+return hasSource;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-isSuspended" name="isSuspended" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-isSuspended.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Check if this activitation group has any suspended activations and is,
+// therefore, itself suspended.
+
+return this.suspendedActivations.size() > 0;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspend" name="suspend" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspend.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Suspend the given activation in this activation group. If this is
+// the only suspended activation, and the activation group has a
+// containing node activation, then suspend that containing activation.
+
+if (!this.isSuspended()) {
+ StructuredActivityNodeActivation containingNodeActivation = this.containingNodeActivation;
+ if (containingNodeActivation != null) {
+ containingNodeActivation.suspend();
+ }
+}
+this.suspendedActivations.addValue(activation);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-resume" name="resume" specification="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-resume.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Resume the given activation by removing it from the suspended
+// activation list for this activation group. If this is the last
+// suspended activation, and the activation group has a containing
+// node activation, then resume that containing activation.
+
+boolean found = false;
+int i = 1;
+while (!found & i <= this.suspendedActivations.size()) {
+ if (this.suspendedActivations.get(i-1) == activation) {
+ this.suspendedActivations.removeValue(i-1);
+ found = true;
+ }
+ i = i + 1;
+}
+if (!this.isSuspended()) {
+ StructuredActivityNodeActivation containingNodeActivation = this.containingNodeActivation;
+ if (containingNodeActivation != null) {
+ containingNodeActivation.resume();
+ }
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run.1" name="run" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run.1-activations" name="activations" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run.1-activations-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-run.1-activations-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1" name="checkIncomingEdges" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1-incomingEdges" name="incomingEdges" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1-incomingEdges-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1-incomingEdges-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1-activations" name="activations" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1-activations-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1-activations-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-checkIncomingEdges.1-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes.1" name="runNodes" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes.1-nodes" name="nodes" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes.1-nodes-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-runNodes.1-nodes-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1" name="activate" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1-nodes" name="nodes" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1-nodes-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1-nodes-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1-edges" name="edges" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityEdge"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1-edges-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activate.1-edges-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-terminateAll.1" name="terminateAll" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-terminateAll"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations.1" name="createNodeActivations" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations.1-nodes" name="nodes" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations.1-nodes-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivations.1-nodes-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation.1" name="createNodeActivation" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation.1-node" name="node" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createNodeActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addNodeActivation.1" name="addNodeActivation" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addNodeActivation">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addNodeActivation.1-activation" name="activation" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation.1" name="getNodeActivation" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getNodeActivation.1-node" name="node" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances.1" name="createEdgeInstances" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances.1-edges" name="edges" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityEdge"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances.1-edges-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-createEdgeInstances.1-edges-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addEdgeInstance.1" name="addEdgeInstance" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addEdgeInstance">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-addEdgeInstance.1-instance" name="instance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getActivityExecution.1" name="getActivityExecution" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getActivityExecution">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getActivityExecution.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityExecution" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations.1" name="getOutputParameterNodeActivations" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-getOutputParameterNodeActivations.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-hasSourceFor.1" name="hasSourceFor" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-hasSourceFor">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-hasSourceFor.1-edgeInstance" name="edgeInstance" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-hasSourceFor.1-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-isSuspended.1" name="isSuspended" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-isSuspended">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-isSuspended.1-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspend.1" name="suspend" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspend">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspend.1-activation" name="activation" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-resume.1" name="resume" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-resume">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-resume.1-activation" name="activation" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation" name="ActivityParameterNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-_ownedComment.0" annotatedElement="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation">
+ <body>An activity parameter node activation is an object node activation for a node that is an activity parameter node.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ObjectNodeActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire" name="fire" specification="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// If there are no incoming edges, this is an activation of an input activity parameter node.
+// Get the values from the input parameter indicated by the activity parameter node and offer those values as object tokens.
+
+if (this.node.incoming.size() == 0) {
+ Debug.println("[fire] Input activity parameter node " + this.node.name + "...");
+ Parameter parameter = ((ActivityParameterNode)(this.node)).parameter;
+ ParameterValue parameterValue = this.getActivityExecution().getParameterValue(parameter);
+ // Debug.println("[fire] parameter = " + parameter.name);
+ if (parameterValue != null) {
+ Debug.println("[fire] Parameter has " + parameterValue.values.size() + " value(s).");
+ TokenList tokens = new TokenList();
+ ValueList values = parameterValue.values;
+ for (int i = 0; i < values.size(); i++) {
+ Value value = values.getValue(i);
+ ObjectToken token = new ObjectToken();
+ token.value = value;
+ this.addToken(token);
+ }
+ this.sendUnofferedTokens();
+ }
+}
+
+// If there are one or more incoming edges, this is an activation of an output activity parameter node.
+// Take the tokens offered on incoming edges and add them to the set of tokens being offered.
+// [Note that an output activity parameter node may fire multiple times, accumulating tokens offered to it.]
+
+else {
+ Debug.println("[fire] Output activity parameter node " + this.node.name + "...");
+ this.addTokens(incomingTokens);
+}
+
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-clearTokens" name="clearTokens" specification="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-clearTokens.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Clear all held tokens only if this is an input parameter node.
+
+if (this.node.incoming.size() == 0) {
+ super.clearTokens();
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire.1-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-clearTokens.1" name="clearTokens" visibility="public" method="Semantics-Activities-IntermediateActivities-ActivityParameterNodeActivation-clearTokens"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_nodeActivations_group" name="A_nodeActivations_group" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-group Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-nodeActivations"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_edgeInstances_group" name="A_edgeInstances_group" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-group Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-edgeInstances"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_heldTokens_holder" name="A_heldTokens_holder" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-Token-holder Semantics-Activities-IntermediateActivities-ActivityNodeActivation-heldTokens"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_node_activityNodeActivation" name="A_node_activityNodeActivation" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-A_node_activityNodeActivation-_ownedEnd.0 Semantics-Activities-IntermediateActivities-ActivityNodeActivation-node">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-A_node_activityNodeActivation-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" association="Semantics-Activities-IntermediateActivities-A_node_activityNodeActivation">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-A_node_activityNodeActivation-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-A_node_activityNodeActivation-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_incomingEdges_target" name="A_incomingEdges_target" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-target Semantics-Activities-IntermediateActivities-ActivityNodeActivation-incomingEdges"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_activationGroup_activityExecution" name="A_activationGroup_activityExecution" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-activityExecution Semantics-Activities-IntermediateActivities-ActivityExecution-activationGroup"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_edge_activityEdgeInstance" name="A_edge_activityEdgeInstance" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-A_edge_activityEdgeInstance-_ownedEnd.0 Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-edge">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-A_edge_activityEdgeInstance-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" association="Semantics-Activities-IntermediateActivities-A_edge_activityEdgeInstance">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-A_edge_activityEdgeInstance-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-A_edge_activityEdgeInstance-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_source_outgoingEdges" name="A_source_outgoingEdges" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-ActivityNodeActivation-outgoingEdges Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-source"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_offers_activityEdgeInstance" name="A_offers_activityEdgeInstance" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-A_offers_activityEdgeInstance-_ownedEnd.0 Semantics-Activities-IntermediateActivities-ActivityEdgeInstance-offers">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-A_offers_activityEdgeInstance-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-ActivityEdgeInstance" association="Semantics-Activities-IntermediateActivities-A_offers_activityEdgeInstance">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-A_offers_activityEdgeInstance-_ownedEnd.0-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_decisionInputExecution_decisionNodeActivation" name="A_decisionInputExecution_decisionNodeActivation" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-A_decisionInputExecution_decisionNodeActivation-_ownedEnd.0 Semantics-Activities-IntermediateActivities-DecisionNodeActivation-decisionInputExecution">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-A_decisionInputExecution_decisionNodeActivation-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-DecisionNodeActivation" association="Semantics-Activities-IntermediateActivities-A_decisionInputExecution_decisionNodeActivation"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_baseToken_forkedToken" name="A_baseToken_forkedToken" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-A_baseToken_forkedToken-_ownedEnd.0 Semantics-Activities-IntermediateActivities-ForkedToken-baseToken">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-A_baseToken_forkedToken-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-ForkedToken" association="Semantics-Activities-IntermediateActivities-A_baseToken_forkedToken">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-A_baseToken_forkedToken-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-A_baseToken_forkedToken-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_value_objectToken" name="A_value_objectToken" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-A_value_objectToken-_ownedEnd.0 Semantics-Activities-IntermediateActivities-ObjectToken-value">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-A_value_objectToken-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-ObjectToken" association="Semantics-Activities-IntermediateActivities-A_value_objectToken"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-A_offeredTokens_offer" name="A_offeredTokens_offer" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-A_offeredTokens_offer-_ownedEnd.0 Semantics-Activities-IntermediateActivities-Offer-offeredTokens">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-A_offeredTokens_offer-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-Offer" association="Semantics-Activities-IntermediateActivities-A_offeredTokens_offer">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-A_offeredTokens_offer-_ownedEnd.0-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation" name="FlowFinalNodeActivation">
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ControlNodeActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-fire" name="fire" specification="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-fire.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Consume all incoming tokens.
+
+Debug.println("[fire] Flow final node " + this.node.name + "...");
+
+for (int i = 0; i < incomingTokens.size(); i++) {
+ Token token = incomingTokens.getValue(i);
+ token.withdraw();
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-fire">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-fire.1-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-IntermediateActivities-FlowFinalNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-IntermediateActivities-_packagedElement.32" visibility="private" memberEnd="Semantics-Activities-IntermediateActivities-_packagedElement.32-_ownedEnd.0 Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup-suspendedActivations">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-IntermediateActivities-_packagedElement.32-_ownedEnd.0" visibility="private" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup" association="Semantics-Activities-IntermediateActivities-_packagedElement.32">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-IntermediateActivities-_packagedElement.32-_ownedEnd.0-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Activities-ExtraStructuredActivities" name="ExtraStructuredActivities">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Activities-ExtraStructuredActivities-_packageImport.1" importedPackage="Semantics-Activities-CompleteStructuredActivities"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup" name="ExpansionActivationGroup">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup">
+ <body>An expansion activation group is an activity node activation group used for activating nodes inside an expansion region.
+It functions just like a normal activation group, except it has output pin activations corresponding to the input pins and the expansion nodes of the expansion region.
+Instances of edges from nodes inside the expansion region that connect to region input pins, input expansion nodes or output expansion nodes are redirected to connect to the corresponding "region input", "group input" or "group output" pin, respectively.
+</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Activities.CompleteStructuredActivities.*;
+import fUML.Syntax.Activities.ExtraStructuredActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.CommonBehaviors.Communications.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Activities.CompleteStructuredActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-_generalization.0" general="Semantics-Activities-IntermediateActivities-ActivityNodeActivationGroup"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionInputs" name="regionInputs" visibility="public" type="Semantics-Actions-BasicActions-OutputPinActivation" aggregation="composite" association="Semantics-Activities-ExtraStructuredActivities-A_regionInputs_expansionActivationGroup">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionInputs-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionInputs">
+ <body>Output pin activations corresponding, in order, to the input pins of the expansion region of this activation group.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionInputs-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionInputs-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupInputs" name="groupInputs" visibility="public" type="Semantics-Actions-BasicActions-OutputPinActivation" aggregation="composite" association="Semantics-Activities-ExtraStructuredActivities-A_groupInputs_expansionActivationGroup">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupInputs-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupInputs">
+ <body>Output pin activations corresponding, in order, to the input expansion nodes of the expansion region of this activation group.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupInputs-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionActivation" name="regionActivation" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation" association="Semantics-Activities-ExtraStructuredActivities-A_activationGroups_regionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionActivation-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionActivation">
+ <body>The expansion region activation this activation group is for.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupOutputs" name="groupOutputs" visibility="public" type="Semantics-Actions-BasicActions-OutputPinActivation" aggregation="composite" association="Semantics-Activities-ExtraStructuredActivities-A_groupOutputs_expansionActivationGroup">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupOutputs-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupOutputs">
+ <body>Output pin activations corresponding, in order, to the output expansion nodes of the expansion region of this activation group.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupOutputs-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupOutputs-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-index" name="index" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-index-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-index">
+ <body>The index (starting at 1) of this activation group in the list held by the expansion region activation.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation" name="getNodeActivation" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation-node" name="node" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// If the given node is an input pin of the expansion region, then return the corresponding region-input output-pin activation.
+// If the given node is an input expansion node of the expansion region, then return the corresponding group-input output-pin activation.
+// If the given node is an output expansion node of the expansion region, then return the corresponding group-output output-pin activation.
+// Otherwise return the node activation from the activation group, as usual.
+
+ExpansionRegion region = (ExpansionRegion)(this.regionActivation.node);
+
+InputPinList inputs = region.input;
+ActivityNodeActivation activation = null;
+
+int i = 1;
+while (activation == null & i <= region.input.size()) {
+ if (node == region.input.getValue(i-1)) {
+ activation = this.regionInputs.getValue(i-1);
+ }
+ i = i + 1;
+}
+
+int j = 1;
+while (activation == null & j <= region.inputElement.size()) {
+ if (node == region.inputElement.getValue(j - 1)) {
+ activation = this.groupInputs.getValue(j - 1);
+ }
+ j = j + 1;
+}
+
+int k = 1;
+while (activation == null & k <= region.outputElement.size()) {
+ if (node == region.outputElement.getValue(k - 1)) {
+ activation = this.groupOutputs.getValue(k - 1);
+ }
+ k = k + 1;
+}
+
+if (activation == null) {
+ activation = super.getNodeActivation(node);
+}
+
+return activation;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getActivityExecution" name="getActivityExecution" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getActivityExecution.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getActivityExecution-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityExecution" direction="return"/>
+ <language>Java</language>
+ <body>// Get the activity execution that contains the expansion region activation for this activation group.
+
+return this.regionActivation.getActivityExecution();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-suspend" name="suspend" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-suspend.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Suspend the given activation in this activation group. If this is
+// the only suspended activation, then suspend the associated region
+// activation.
+
+if (!this.isSuspended()) {
+ this.regionActivation.suspend();
+}
+super.suspend(activation);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-resume" name="resume" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-resume.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Resume the given activation in this activation group. If this is the
+// last suspended activation, then resume the associated region
+// activation.
+
+super.resume(activation);
+if (!this.isSuspended()) {
+ this.regionActivation.resume(this);
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation.1" name="getNodeActivation" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getNodeActivation.1-node" name="node" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ActivityNode"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getActivityExecution.1" name="getActivityExecution" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getActivityExecution">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-getActivityExecution.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityExecution" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-suspend.1" name="suspend" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-suspend">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-suspend.1-activation" name="activation" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-resume.1" name="resume" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-resume">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-resume.1-activation" name="activation" visibility="public" type="Semantics-Activities-IntermediateActivities-ActivityNodeActivation"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation" name="ExpansionNodeActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-_ownedComment.0">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Activities.CompleteStructuredActivities.*;
+import fUML.Syntax.Activities.ExtraStructuredActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.CommonBehaviors.Communications.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Activities.CompleteStructuredActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-_generalization.0" general="Semantics-Activities-IntermediateActivities-ObjectNodeActivation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire" name="fire" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Take tokens from all incoming edges.
+
+Debug.println("[fire] Expansion node " + this.node.name + "...");
+
+this.addTokens(incomingTokens);
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-receiveOffer" name="receiveOffer" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-receiveOffer.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Forward the offer on to the expansion region.
+
+this.getExpansionRegionActivation().receiveOffer();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-isReady" name="isReady" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-isReady.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-isReady-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// An expansion node is always fired by its expansion region.
+
+return false;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-getExpansionRegionActivation" name="getExpansionRegionActivation" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-getExpansionRegionActivation.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-getExpansionRegionActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation" direction="return"/>
+ <language>Java</language>
+ <body>// Return the expansion region activation corresponding to this expansion node, in the context of the activity node activation group this expansion node activation is in.
+
+ExpansionNode node = (ExpansionNode)(this.node);
+
+ExpansionRegion region = node.regionAsInput;
+if (region == null) {
+ region = node.regionAsOutput;
+}
+
+return (ExpansionRegionActivation)(this.group.getNodeActivation(region));
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire.1" name="fire" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire.1-incomingTokens" name="incomingTokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire.1-incomingTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-fire.1-incomingTokens-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-receiveOffer.1" name="receiveOffer" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-receiveOffer"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-isReady.1" name="isReady" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-isReady">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-isReady.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-getExpansionRegionActivation.1" name="getExpansionRegionActivation" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-getExpansionRegionActivation">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation-getExpansionRegionActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation" name="ExpansionRegionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation">
+ <body>An expansion region activation is an action activation for a node that is an expansion region.
+[Note that even though an expansion region is a structured activity node, an expansion region activation is not a structured activity activation because of the special nature of expansion region behavior.]</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-_ownedComment.1">
+ <body>import java.util.Iterator;
+
+import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Activities.CompleteStructuredActivities.*;
+import fUML.Syntax.Activities.ExtraStructuredActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.CommonBehaviors.Communications.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Activities.CompleteStructuredActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-_generalization.0" general="Semantics-Actions-BasicActions-ActionActivation"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-activationGroups" name="activationGroups" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup" aggregation="composite" association="Semantics-Activities-ExtraStructuredActivities-A_activationGroups_regionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-activationGroups-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-activationGroups">
+ <body>The set of expansion activation groups for this expansion region activation. One activation group is created corresponding to each token held by the first input expansion node activation for the expansion region.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-activationGroups-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-activationGroups-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputTokens" name="inputTokens" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-TokenSet" aggregation="composite" association="Semantics-Activities-ExtraStructuredActivities-A_inputTokens_expansionRegionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputTokens-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputTokens">
+ <body>The tokens taken from each of the input pin activations for this expansion region activation. These are preserved for initializing the region inputs of each of the activation groups.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputTokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputTokens-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputExpansionTokens" name="inputExpansionTokens" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-TokenSet" aggregation="composite" association="Semantics-Activities-ExtraStructuredActivities-A_inputExpansionTokens_expansionRegionActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputExpansionTokens-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputExpansionTokens">
+ <body>The tokens taken from each of the input expansion node activations for this expansion region activation. These are preserved for initializing the group input of each of the activation groups.</body>
+ </ownedComment>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputExpansionTokens-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-next" name="next" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-next-_lowerValue"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens" name="takeOfferedTokens" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens-OwnedParameter-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens-OwnedParameter-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Take the tokens from the input pin and input expansion node activations and save them.
+
+super.takeOfferedTokens();
+
+ExpansionRegion region = (ExpansionRegion)(this.node);
+InputPinList inputPins = region.input;
+ExpansionNodeList inputElements = region.inputElement;
+
+this.inputTokens.clear();
+this.inputExpansionTokens.clear();
+
+for (int i = 0; i < inputPins.size(); i++) {
+ InputPin inputPin = inputPins.getValue(i);
+ TokenSet tokenSet = new TokenSet();
+ tokenSet.tokens = this.getPinActivation(inputPin).takeTokens();
+ this.inputTokens.addValue(tokenSet);
+}
+
+int n = this.numberOfValues();
+
+for (int i = 0; i < inputElements.size(); i++) {
+ ExpansionNode inputElement = inputElements.getValue(i);
+ ExpansionNodeActivation expansionNodeActivation = this.getExpansionNodeActivation(inputElement);
+ expansionNodeActivation.fire(expansionNodeActivation.takeOfferedTokens());
+ TokenList tokens = expansionNodeActivation.takeTokens();
+ TokenSet tokenSet = new TokenSet();
+ int j = 1;
+ while (j <= n) {
+ tokenSet.tokens.add(tokens.getValue(j-1));
+ j = j + 1;
+ }
+ this.inputExpansionTokens.addValue(tokenSet);
+}
+
+return new TokenList();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doAction" name="doAction" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doAction.1" isReentrant="false">
+ <language>Java</language>
+ <body>// If the expansion region has mustIsolate=true, then carry out its behavior with isolation.
+// Otherwise just activate it normally.
+
+if (((StructuredActivityNode)(this.node)).mustIsolate) {
+ _beginIsolation();
+ this.doStructuredActivity();
+ _endIsolation();
+} else {
+ this.doStructuredActivity();
+}
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doStructuredActivity" name="doStructuredActivity" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doStructuredActivity.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Create a number of expansion region activation groups equal to the number of values expanded in the region,
+// setting the region inputs and group inputs for each group.
+// Run the body of the region in each group, either iteratively or in parallel.
+// Add the outputs of each activation group to the corresonding output expansion node activations.
+
+ExpansionRegion region = (ExpansionRegion)this.node;
+InputPinList inputPins = region.input;
+ExpansionNodeList inputElements = region.inputElement;
+ExpansionNodeList outputElements = region.outputElement;
+
+this.activationGroups.clear();
+int n = this.inputExpansionTokens.getValue(0).tokens.size();
+int k = 1;
+while (k <= n) {
+ ExpansionActivationGroup activationGroup = new ExpansionActivationGroup();
+ activationGroup.regionActivation = this;
+ activationGroup.index = k;
+
+ int j = 1;
+ while (j <= inputPins.size()) {
+ OutputPinActivation regionInput = new OutputPinActivation();
+ regionInput.run();
+ activationGroup.regionInputs.addValue(regionInput);
+ j = j + 1;
+ }
+
+ j = 1;
+ while (j <= inputElements.size()) {
+ OutputPinActivation groupInput = new OutputPinActivation();
+ groupInput.run();
+ activationGroup.groupInputs.addValue(groupInput);
+ j = j + 1;
+ }
+
+ j = 1;
+ while (j <= outputElements.size()) {
+ OutputPinActivation groupOutput = new OutputPinActivation();
+ groupOutput.run();
+ activationGroup.groupOutputs.addValue(new OutputPinActivation());
+ j = j + 1;
+ }
+
+ activationGroup.createNodeActivations(region.node);
+ activationGroup.createEdgeInstances(region.edge);
+ this.activationGroups.addValue(activationGroup);
+
+ k = k + 1;
+}
+
+ExpansionActivationGroupList activationGroups = this.activationGroups;
+
+if (region.mode == ExpansionKind.iterative) {
+ Debug.println("[doStructuredActivity] Expansion mode = iterative");
+ this.next = 1;
+ this.runIterative();
+}
+else if (region.mode == ExpansionKind.parallel) {
+ Debug.println("[doStructuredActivity] Expansion mode = parallel");
+ this.runParallel();
+}
+
+this.doOutput();
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminate" name="terminate" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminate.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Terminate the execution of all contained node activations (which completes the performance of the expansion region activation).
+
+ExpansionActivationGroupList activationGroups = this.activationGroups;
+for (int i = 0; i < activationGroups.size(); i++) {
+ ExpansionActivationGroup activationGroup = this.activationGroups.getValue(i);
+
+ OutputPinActivationList groupOutputs = activationGroup.groupOutputs;
+
+ _beginIsolation();
+ for (int j = 0; j < groupOutputs.size(); j++) {
+ OutputPinActivation groupOutput = groupOutputs.getValue(j);
+ groupOutput.fire(groupOutput.takeOfferedTokens());
+ }
+ activationGroup.terminateAll();
+ _endIsolation();
+}
+
+super.terminate();</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-sendOffers" name="sendOffers" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-sendOffers.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Fire all output expansion nodes and send offers on all outgoing control flows.
+
+ExpansionRegion region = (ExpansionRegion)(this.node);
+
+// *** Send offers from all output expansion nodes concurrently. ***
+ExpansionNodeList outputElements = region.outputElement;
+for (Iterator i = outputElements.iterator(); i.hasNext();) {
+ ExpansionNode outputElement = (ExpansionNode)i.next();
+ this.getExpansionNodeActivation(outputElement).sendUnofferedTokens();
+}
+
+// Send offers on all outgoing control flows.
+super.sendOffers();
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runGroup" name="runGroup" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runGroup.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runGroup-activationGroup" name="activationGroup" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup"/>
+ <language>Java</language>
+ <body>// Set up the inputs for the group with the given index, run the group and then fire the group outputs.
+
+if (this.isRunning()) {
+ Debug.println("[runGroup] groupInput[0] = " + this.inputExpansionTokens.getValue(0).tokens.getValue(activationGroup.index-1).getValue());
+
+ TokenSetList inputTokens = this.inputTokens;
+ for (int j = 0; j < inputTokens.size(); j++) {
+ TokenSet tokenSet = inputTokens.getValue(j);
+ OutputPinActivation regionInput = activationGroup.regionInputs.getValue(j);
+ regionInput.clearTokens();
+ regionInput.addTokens(tokenSet.tokens);
+ regionInput.sendUnofferedTokens();
+ }
+
+ TokenSetList inputExpansionTokens = this.inputExpansionTokens;
+ for (int j = 0; j < inputExpansionTokens.size(); j++) {
+ TokenSet tokenSet = inputExpansionTokens.getValue(j);
+ OutputPinActivation groupInput = activationGroup.groupInputs.getValue(j);
+ groupInput.clearTokens();
+ if (tokenSet.tokens.size() >= activationGroup.index) {
+ groupInput.addToken(tokenSet.tokens.getValue(activationGroup.index - 1));
+ }
+ groupInput.sendUnofferedTokens();
+ }
+
+ activationGroup.run(activationGroup.nodeActivations);
+
+ this.terminateGroup(activationGroup);
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation" name="getExpansionNodeActivation" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation-node" name="node" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ExpansionNode"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the expansion node activation corresponding to the given expansion node, in the context of the activity node activation group this expansion region activation is in.
+// [Note: Expansion regions do not own their expansion nodes. Instead, they are own as object nodes by the enclosing activity or group.
+// Therefore, they will already be activated along with their expansion region.]
+
+return (ExpansionNodeActivation)(this.group.getNodeActivation(node));
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-numberOfValues" name="numberOfValues" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-numberOfValues.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-numberOfValues-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the number of values to be acted on by the expansion region of
+// this activation, which is the minimum of the number of values offered
+// to each of the input expansion nodes of the activation.
+
+ExpansionRegion region = (ExpansionRegion) (this.node);
+ExpansionNodeList inputElements = region.inputElement;
+
+int n = this.getExpansionNodeActivation(inputElements.getValue(0))
+ .countOfferedValues();
+int i = 2;
+while (i <= inputElements.size()) {
+ int count = this.getExpansionNodeActivation(
+ inputElements.getValue(i - 1)).countOfferedValues();
+ if (count < n) {
+ n = count;
+ }
+ i = i + 1;
+}
+
+return n;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runIterative" name="runIterative" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runIterative.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Run the body of the region iteratively, either until all activation
+// groups have run or until the region is suspended.
+
+ExpansionActivationGroupList activationGroups = this.activationGroups;
+
+while (this.next <= activationGroups.size() & !this.isSuspended()) {
+ ExpansionActivationGroup activationGroup = activationGroups
+ .getValue(this.next-1);
+ this.runGroup(activationGroup);
+ this.next = this.next + 1;
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runParallel" name="runParallel" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runParallel.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Run the body of the region concurrently.
+
+ExpansionActivationGroupList activationGroups = this.activationGroups;
+
+// *** Activate all groups concurrently. ***
+for (Iterator i = activationGroups.iterator(); i.hasNext();) {
+ ExpansionActivationGroup activationGroup = (ExpansionActivationGroup) i
+ .next();
+ this.runGroup(activationGroup);
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doOutput" name="doOutput" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doOutput.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Place tokens on the output expansion nodes.
+
+ExpansionRegion region = (ExpansionRegion) this.node;
+ExpansionNodeList outputElements = region.outputElement;
+
+Debug.println("[doOutput] Expansion region " + region.name + " is " +
+ (this.isSuspended()? "suspended.": "completed."));
+
+if (!this.isSuspended()) {
+ for (int i = 0; i < activationGroups.size(); i++) {
+ ExpansionActivationGroup activationGroup = activationGroups
+ .getValue(i);
+ OutputPinActivationList groupOutputs = activationGroup.groupOutputs;
+ for (int j = 0; j < groupOutputs.size(); j++) {
+ OutputPinActivation groupOutput = groupOutputs.getValue(j);
+ ExpansionNode outputElement = outputElements.getValue(j);
+ this.getExpansionNodeActivation(outputElement).addTokens(
+ groupOutput.takeTokens());
+ }
+ }
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminateGroup" name="terminateGroup" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminateGroup.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Terminate the given activation group, after preserving any group outputs.
+if (this.isRunning() & !this.isSuspended()) {
+ OutputPinActivationList groupOutputs = activationGroup.groupOutputs;
+ for (int i = 0; i < groupOutputs.size(); i++) {
+ OutputPinActivation groupOutput = groupOutputs.getValue(i);
+ groupOutput.fire(groupOutput.takeOfferedTokens());
+ }
+
+ activationGroup.terminateAll();
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-isSuspended" name="isSuspended" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-isSuspended.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Check if the activation group for this node is suspended.
+
+boolean suspended = false;
+int i = 1;
+while (i <= this.activationGroups.size() & !suspended) {
+ ActivityNodeActivationGroup group = this.activationGroups.get(i-1);
+ suspended = group.isSuspended();
+ i = i + 1;
+}
+
+return suspended;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-resume" name="resume" specification="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-resume.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Resume an expansion region after the suspension of the given
+// activation group. If the region is iterative, then continue with the
+// iteration. If the region is parallel, and there are no more suspended
+// activation groups, then generate the expansion node output.
+
+ExpansionRegion region = (ExpansionRegion) this.node;
+
+this.resume();
+this.terminateGroup(activationGroup);
+if (region.mode == ExpansionKind.iterative) {
+ this.runIterative();
+}
+
+this.doOutput();
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens.1" name="takeOfferedTokens" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens.1-OwnedParameter-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-takeOfferedTokens.1-OwnedParameter-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doAction.1" name="doAction" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doAction"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doStructuredActivity.1" name="doStructuredActivity" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doStructuredActivity"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runIterative.1" name="runIterative" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runIterative"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runParallel.1" name="runParallel" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runParallel"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doOutput.1" name="doOutput" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-doOutput"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminate.1" name="terminate" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminate"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-sendOffers.1" name="sendOffers" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-sendOffers"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runGroup.1" name="runGroup" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runGroup">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-runGroup.1-activationGroup" name="activationGroup" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminateGroup.1" name="terminateGroup" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminateGroup">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-terminateGroup.1-activationGroup" name="activationGroup" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation.1" name="getExpansionNodeActivation" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionNodeActivation" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-getExpansionNodeActivation.1-node" name="node" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ExpansionNode"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-numberOfValues.1" name="numberOfValues" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-numberOfValues">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-numberOfValues.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-isSuspended.1" name="isSuspended" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-isSuspended">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-isSuspended.1-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-resume.1" name="resume" visibility="public" method="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-resume">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-resume.1-activationGroup" name="activationGroup" visibility="public" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_activationGroups_regionActivation" name="A_activationGroups_regionActivation" visibility="private" memberEnd="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionActivation Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-activationGroups"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_regionInputs_expansionActivationGroup" name="A_regionInputs_expansionActivationGroup" visibility="private" memberEnd="Semantics-Activities-ExtraStructuredActivities-A_regionInputs_expansionActivationGroup-_ownedEnd.0 Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-regionInputs">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_regionInputs_expansionActivationGroup-_ownedEnd.0" visibility="private" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup" association="Semantics-Activities-ExtraStructuredActivities-A_regionInputs_expansionActivationGroup">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_regionInputs_expansionActivationGroup-_ownedEnd.0-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_groupInputs_expansionActivationGroup" name="A_groupInputs_expansionActivationGroup" visibility="private" memberEnd="Semantics-Activities-ExtraStructuredActivities-A_groupInputs_expansionActivationGroup-_ownedEnd.0 Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupInputs">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_groupInputs_expansionActivationGroup-_ownedEnd.0" visibility="private" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup" association="Semantics-Activities-ExtraStructuredActivities-A_groupInputs_expansionActivationGroup">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_groupInputs_expansionActivationGroup-_ownedEnd.0-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_groupOutputs_expansionActivationGroup" name="A_groupOutputs_expansionActivationGroup" visibility="private" memberEnd="Semantics-Activities-ExtraStructuredActivities-A_groupOutputs_expansionActivationGroup-_ownedEnd.0 Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup-groupOutputs">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_groupOutputs_expansionActivationGroup-_ownedEnd.0" visibility="private" type="Semantics-Activities-ExtraStructuredActivities-ExpansionActivationGroup" association="Semantics-Activities-ExtraStructuredActivities-A_groupOutputs_expansionActivationGroup">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_groupOutputs_expansionActivationGroup-_ownedEnd.0-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Activities-ExtraStructuredActivities-TokenSet" name="TokenSet">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-TokenSet-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-TokenSet">
+ <body>A set of tokens taken from an input pin activation or input expansion node activation for an expansion region.</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-TokenSet-tokens" name="tokens" visibility="public" type="Semantics-Activities-IntermediateActivities-Token" association="Semantics-Activities-ExtraStructuredActivities-A_tokens_tokenSet">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Activities-ExtraStructuredActivities-TokenSet-tokens-_ownedComment.0" annotatedElement="Semantics-Activities-ExtraStructuredActivities-TokenSet-tokens">
+ <body>The set of tokens in this input set.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-TokenSet-tokens-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-TokenSet-tokens-_upperValue" value="*"/>
+ </ownedAttribute>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_inputTokens_expansionRegionActivation" name="A_inputTokens_expansionRegionActivation" visibility="private" memberEnd="Semantics-Activities-ExtraStructuredActivities-A_inputTokens_expansionRegionActivation-_ownedEnd.0 Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputTokens">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_inputTokens_expansionRegionActivation-_ownedEnd.0" visibility="private" type="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation" association="Semantics-Activities-ExtraStructuredActivities-A_inputTokens_expansionRegionActivation"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_inputExpansionTokens_expansionRegionActivation" name="A_inputExpansionTokens_expansionRegionActivation" visibility="private" memberEnd="Semantics-Activities-ExtraStructuredActivities-A_inputExpansionTokens_expansionRegionActivation-_ownedEnd.0 Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation-inputExpansionTokens">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_inputExpansionTokens_expansionRegionActivation-_ownedEnd.0" visibility="private" type="Semantics-Activities-ExtraStructuredActivities-ExpansionRegionActivation" association="Semantics-Activities-ExtraStructuredActivities-A_inputExpansionTokens_expansionRegionActivation"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_tokens_tokenSet" name="A_tokens_tokenSet" visibility="private" memberEnd="Semantics-Activities-ExtraStructuredActivities-A_tokens_tokenSet-_ownedEnd.0 Semantics-Activities-ExtraStructuredActivities-TokenSet-tokens">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_tokens_tokenSet-_ownedEnd.0" visibility="private" type="Semantics-Activities-ExtraStructuredActivities-TokenSet" association="Semantics-Activities-ExtraStructuredActivities-A_tokens_tokenSet">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_tokens_tokenSet-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Activities-ExtraStructuredActivities-A_tokens_tokenSet-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Classes" name="Classes">
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Classes-Kernel" name="Kernel">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Classes-Kernel-_packageImport.0" importedPackage="Semantics-CommonBehaviors-Communications"/>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Classes-Kernel-_packageImport.1" importedPackage="Semantics-Loci-LociL1"/>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Classes-Kernel-_packageImport.3" importedPackage="Semantics-CommonBehaviors-BasicBehaviors"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-StructuredValue" name="StructuredValue" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-StructuredValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-StructuredValue">
+ <body>A structured value is a Value whose type has structural features: a data type (but not a primitive type or enumeration), a class or an association.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-StructuredValue-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-StructuredValue-_generalization.0" general="Semantics-Classes-Kernel-Value"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-StructuredValue-specify" name="specify" specification="Semantics-Classes-Kernel-StructuredValue-specify.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-specify-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return an instance value that specifies this structured value.
+
+// Debug.println("[specify] StructuredValue...");
+
+InstanceValue instanceValue = new InstanceValue();
+InstanceSpecification instance = new InstanceSpecification();
+
+instanceValue.type = null;
+instanceValue.instance = instance;
+
+instance.classifier = this.getTypes();
+
+FeatureValueList featureValues = this.getFeatureValues();
+// Debug.println("[specify] " + featureValues.size() + " feature(s).");
+
+for (int i = 0; i < featureValues.size(); i++) {
+ FeatureValue featureValue = featureValues.getValue(i);
+
+ Slot slot = new Slot();
+ slot.definingFeature = featureValue.feature;
+
+ // Debug.println("[specify] feature = " + featureValue.feature.name + ", " + featureValue.values.size() + " value(s).");
+
+ ValueList values = featureValue.values;
+ for (int j = 0; j < values.size(); j++) {
+ Value value = values.getValue(j);
+ // Debug.println("[specify] value = " + value);
+ slot.value.addValue(value.specify());
+ }
+
+ instance.slot.addValue(slot);
+}
+
+return instanceValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-StructuredValue-createFeatureValues" name="createFeatureValues" specification="Semantics-Classes-Kernel-StructuredValue-createFeatureValues.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Create empty feature values for all structural features, direct and inherited, of the types of this structured value.
+
+ClassifierList types = this.getTypes();
+
+for (int i = 0; i < types.size(); i++) {
+ Classifier type = types.getValue(i);
+ NamedElementList members = type.member;
+
+ for (int j = 0; j < members.size(); j++) {
+ NamedElement member = members.getValue(j);
+ if (member instanceof StructuralFeature) {
+ this.setFeatureValue((StructuralFeature)member, new ValueList(), 0);
+ }
+ }
+}
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StructuredValue-specify.1" name="specify" visibility="public" method="Semantics-Classes-Kernel-StructuredValue-specify">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-specify.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValue" name="getFeatureValue" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-StructuredValue-getFeatureValue">
+ <body>Get the feature value associated with the given feature. 
+The given feature must be a structural feature of the type of the structured value.
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValue-feature" name="feature" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue" name="setFeatureValue" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-StructuredValue-setFeatureValue">
+ <body>Set the value(s) and, optionally, the position index associated with the given feature. 
+The given feature must be a structural feature of the type of the structured value.
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue-feature" name="feature" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue-values-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue-values-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue-position" name="position" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-StructuredValue-setFeatureValue-position-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValues" name="getFeatureValues" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValues-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-StructuredValue-getFeatureValues">
+ <body>Return the feature values associated with this structural value.
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValues-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValues-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-StructuredValue-getFeatureValues-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StructuredValue-createFeatureValues.1" name="createFeatureValues" visibility="public" method="Semantics-Classes-Kernel-StructuredValue-createFeatureValues"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue" name="UnlimitedNaturalValue">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-UnlimitedNaturalValue">
+ <body>An unlimited natural value is a primitive value whose type is UnlimitedNatural.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-_generalization.0" general="Semantics-Classes-Kernel-PrimitiveValue"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-value" name="value" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-value-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-UnlimitedNaturalValue-value">
+ <body>The actual unlimited natural value.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#UnlimitedNatural"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-specify" name="specify" specification="Semantics-Classes-Kernel-UnlimitedNaturalValue-specify.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-specify-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return a literal unlimited natural with the value of this unlimited natural value.
+
+LiteralUnlimitedNatural literal = new LiteralUnlimitedNatural();
+
+literal.type = this.type;
+literal.value = this.value;
+
+return literal;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals" name="equals" specification="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <language>Java</language>
+ <body>// Test if this unlimited natural value is equal to the otherValue.
+// To be equal, the otherValue must have the same value as this unlimited natural value.
+
+boolean isEqual = false;
+if (otherValue instanceof UnlimitedNaturalValue) {
+ isEqual = ((UnlimitedNaturalValue)otherValue).value == this.value;
+}
+
+return isEqual;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-copy" name="copy" specification="Semantics-Classes-Kernel-UnlimitedNaturalValue-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new unlimited natural value with the same value as this value.
+
+UnlimitedNaturalValue newValue = (UnlimitedNaturalValue)(super.copy());
+
+newValue.value = this.value;
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-new_" name="new_" specification="Semantics-Classes-Kernel-UnlimitedNaturalValue-new_.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new unlimited natural value with no value.
+
+return new UnlimitedNaturalValue();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-toString" name="toString" specification="Semantics-Classes-Kernel-UnlimitedNaturalValue-toString.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>String stringValue = "*";
+
+if (this.value.naturalValue >= 0) {
+ IntegerValue integerValue = new IntegerValue();
+ integerValue.value = this.value.naturalValue;
+ stringValue = integerValue.toString();
+}
+
+return stringValue;
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-specify.1" name="specify" visibility="public" method="Semantics-Classes-Kernel-UnlimitedNaturalValue-specify">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-specify.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-UnlimitedNaturalValue-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-UnlimitedNaturalValue-new_">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-UnlimitedNaturalValue-toString">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-UnlimitedNaturalValue-toString.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-Value" name="Value" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Value-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Value">
+ <body>A value is an instance of one or more classifiers, which are its types. A value is always representable using a value specification.
+
+[Note: Value specializes SemanticVisitor to allow the Execution subclass to be a semantic visitor, without requiring multiple generalization of Execution.]</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Value-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-Value-_generalization.0" general="Semantics-Loci-LociL1-SemanticVisitor"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Value-equals" name="equals" specification="Semantics-Classes-Kernel-Value-equals.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <language>Java</language>
+ <body>// Test if this value is equal to otherValue. To be equal, this value must have the same type as otherValue.
+// This operation must be overridden in Value subclasses to check for equality of properties defined in those subclasses.
+
+ClassifierList myTypes = this.getTypes();
+ClassifierList otherTypes = otherValue.getTypes();
+
+boolean isEqual = true;
+
+// Debug.println("[equals] Value...");
+// Debug.println("[equals] this has " + myTypes.size() + "types, other has " + otherTypes.size() + ".");
+if (myTypes.size() != otherTypes.size()) {
+ isEqual = false;
+
+} else {
+ // Debug.println("[equals] " + myTypes.size() + " type(s).");
+
+ int i = 1;
+ while (isEqual & i <= myTypes.size()) {
+
+ // Debug.println("[equals] this type = " + myTypes.getValue(i-1).name);
+
+ boolean matched = false;
+ int j = 1;
+ while (!matched & j <= otherTypes.size()) {
+ // Debug.println("[equals] other type = " + otherTypes.getValue(j-1).name);
+ matched = (otherTypes.getValue(j-1) == myTypes.getValue(i-1));
+ j = j + 1;
+ }
+
+ isEqual = matched;
+ i = i + 1;
+ }
+}
+
+return isEqual;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Value-copy" name="copy" specification="Semantics-Classes-Kernel-Value-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new value that is equal to this value.
+// By default, this operation simply creates a new value with empty properties.
+// It must be overridden in each Value subclass to do the superclass copy and then appropriately set properties defined in the subclass.
+
+return this.new_();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Value-hasType" name="hasType" specification="Semantics-Classes-Kernel-Value-hasType.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-hasType-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-hasType-type" name="type" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Check if this object has the given classifier as a type.
+
+ClassifierList types = this.getTypes();
+
+boolean found = false;
+int i = 1;
+while (!found & i <= types.size()) {
+ found = (types.getValue(i-1) == type);
+ i = i + 1;
+}
+
+return found;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Value-objectId" name="objectId" specification="Semantics-Classes-Kernel-Value-objectId.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-objectId-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return an identifier for this object.
+// [Non-normative.]
+
+return super.toString();
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-specify" name="specify" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Value-specify-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Value-specify">
+ <body>Return a value specification whose evaluation gives a value equal to this value.
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-specify-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-Value-equals">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-Value-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-new_" name="new_" visibility="protected" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Value-new_-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Value-new_">
+ <body>Create a new value of the same Value subclass as this value, with all properties empty (even if this violates multiplicity constraints). 
+This operation must be defined in each concrete Value subclass to create an instance of that subclass.
+
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-getTypes" name="getTypes" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Value-getTypes-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Value-getTypes">
+ <body>Gets all the classifiers under which this value is currently classifier.
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Value-getTypes-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Value-getTypes-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-hasType.1" name="hasType" visibility="public" method="Semantics-Classes-Kernel-Value-hasType">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-hasType.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-hasType.1-type" name="type" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-toString" name="toString" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Value-toString-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Value-toString">
+ <body>Return a string representation of this value.
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Value-objectId.1" name="objectId" visibility="public" method="Semantics-Classes-Kernel-Value-objectId">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Value-objectId.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-StringValue" name="StringValue">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-StringValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-StringValue">
+ <body>A string value is a primitive value whose type is String.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-StringValue-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-StringValue-_generalization.0" general="Semantics-Classes-Kernel-PrimitiveValue"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-StringValue-value" name="value" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-StringValue-specify" name="specify" specification="Semantics-Classes-Kernel-StringValue-specify.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-specify-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return a literal string with the value of this string value.
+
+LiteralString literal = new LiteralString();
+
+literal.type = this.type;
+literal.value = this.value;
+
+return literal;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-StringValue-equals" name="equals" specification="Semantics-Classes-Kernel-StringValue-equals.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <language>Java</language>
+ <body>// Test if this string value is equal to the otherValue.
+// To be equal, the otherValue must have the same value as this string value.
+
+boolean isEqual = false;
+if (otherValue instanceof StringValue) {
+ isEqual = ((StringValue)otherValue).value.equals(this.value);
+}
+
+return isEqual;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-StringValue-copy" name="copy" specification="Semantics-Classes-Kernel-StringValue-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new string value with the same value as this string value.
+
+StringValue newValue = (StringValue)(super.copy());
+
+newValue.value = this.value;
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-StringValue-new_" name="new_" specification="Semantics-Classes-Kernel-StringValue-new_.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new string value with no value.
+
+return new StringValue();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-StringValue-toString" name="toString" specification="Semantics-Classes-Kernel-StringValue-toString.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>return value;</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StringValue-specify.1" name="specify" visibility="public" method="Semantics-Classes-Kernel-StringValue-specify">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-specify.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StringValue-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-StringValue-equals">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StringValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-StringValue-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StringValue-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-StringValue-new_">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-StringValue-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-StringValue-toString">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-StringValue-toString.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-Reference" name="Reference">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Reference-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Reference">
+ <body>A reference is an access path to a specific object. There may be multiple references to the same object.
+As a structured value, the reference acts just the same as its referent in terms of type, features, operations, etc.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Reference-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-Reference-_generalization.0" general="Semantics-Classes-Kernel-StructuredValue"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-Reference-referent" name="referent" visibility="public" type="Semantics-Classes-Kernel-Object" association="Semantics-Classes-Kernel-A_reference_reference"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior" name="startBehavior" specification="Semantics-Classes-Kernel-Reference-startBehavior.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior-classifier" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior-classifier-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior-inputs-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior-inputs-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Asynchronously start the behavior of the given classifier for the referent object.
+
+this.referent.startBehavior(classifier, inputs);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-dispatch" name="dispatch" specification="Semantics-Classes-Kernel-Reference-dispatch.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-dispatch-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-dispatch-operation" name="operation" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Dispatch the given operation to the referent object.
+
+return this.referent.dispatch(operation);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-send" name="send" specification="Semantics-Classes-Kernel-Reference-send.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-send-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ <language>Java</language>
+ <body>// Send the given signal instance to the referent object.
+
+this.referent.send(signalInstance);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-destroy" name="destroy" specification="Semantics-Classes-Kernel-Reference-destroy.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Destroy the referent.
+
+this.referent.destroy();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-equals" name="equals" specification="Semantics-Classes-Kernel-Reference-equals.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <language>Java</language>
+ <body>// Test if this reference is equal to the otherValue.
+// To be equal, the otherValue must also be a reference, with the same referent as this reference.
+
+boolean isEqual = false;
+if (otherValue instanceof Reference) {
+ isEqual = (((Reference)otherValue).referent == this.referent);
+}
+
+return isEqual;
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-copy" name="copy" specification="Semantics-Classes-Kernel-Reference-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new reference with the same referent as this reference.
+
+Reference newValue = (Reference)(super.copy());
+
+newValue.referent = this.referent;
+
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-new_" name="new_" specification="Semantics-Classes-Kernel-Reference-new_.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new reference with no referent.
+
+return new Reference();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-getTypes" name="getTypes" specification="Semantics-Classes-Kernel-Reference-getTypes.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-getTypes-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-getTypes-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the types of the referent object.
+
+return this.referent.getTypes();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValue" name="getFeatureValue" specification="Semantics-Classes-Kernel-Reference-getFeatureValue.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValue-feature" name="feature" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the feature value associated with the given feature in the referent object.
+
+return this.referent.getFeatureValue(feature);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue" name="setFeatureValue" specification="Semantics-Classes-Kernel-Reference-setFeatureValue.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue-feature" name="feature" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue-values-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue-values-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue-position" name="position" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue-position-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Set the values associated with the given feature in the referent object.
+
+this.referent.setFeatureValue(feature, values, position);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues" name="getFeatureValues" specification="Semantics-Classes-Kernel-Reference-getFeatureValues.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the feature values of the referent.
+
+return this.referent.getFeatureValues();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Reference-toString" name="toString" specification="Semantics-Classes-Kernel-Reference-toString.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>return "Reference to " + this.referent.toString();
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior.1" name="startBehavior" visibility="public" method="Semantics-Classes-Kernel-Reference-startBehavior">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior.1-classifier" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior.1-classifier-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior.1-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior.1-inputs-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-startBehavior.1-inputs-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-dispatch.1" name="dispatch" visibility="public" method="Semantics-Classes-Kernel-Reference-dispatch">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-dispatch.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-dispatch.1-operation" name="operation" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-send.1" name="send" visibility="public" method="Semantics-Classes-Kernel-Reference-send">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-send.1-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-destroy.1" name="destroy" visibility="public" method="Semantics-Classes-Kernel-Reference-destroy"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-Reference-equals">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-Reference-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-Reference-new_">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-getTypes.1" name="getTypes" visibility="public" method="Semantics-Classes-Kernel-Reference-getTypes">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getTypes.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-getTypes.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-getTypes.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValue.1" name="getFeatureValue" visibility="public" method="Semantics-Classes-Kernel-Reference-getFeatureValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValue.1-feature" name="feature" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue.1" name="setFeatureValue" visibility="public" method="Semantics-Classes-Kernel-Reference-setFeatureValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue.1-feature" name="feature" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue.1-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue.1-values-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue.1-values-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue.1-position" name="position" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-setFeatureValue.1-position-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues.1" name="getFeatureValues" visibility="public" method="Semantics-Classes-Kernel-Reference-getFeatureValues">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Reference-getFeatureValues.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Reference-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-Reference-toString">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Reference-toString.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-PrimitiveValue" name="PrimitiveValue" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-PrimitiveValue">
+ <body>A primitive value is a value whose (single) type is a primitive type.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-_generalization.0" general="Semantics-Classes-Kernel-Value"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-type" name="type" visibility="public" association="Semantics-Classes-Kernel-A_type_primitiveValue">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-copy" name="copy" specification="Semantics-Classes-Kernel-PrimitiveValue-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new value that is equal to this primitive value.
+
+PrimitiveValue newValue = (PrimitiveValue)(super.copy());
+
+newValue.type = this.type;
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes" name="getTypes" specification="Semantics-Classes-Kernel-PrimitiveValue-getTypes.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the single primitive type of this value.
+
+ClassifierList types = new ClassifierList();
+types.addValue(this.type);
+return types;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-PrimitiveValue-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes.1" name="getTypes" visibility="public" method="Semantics-Classes-Kernel-PrimitiveValue-getTypes">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-PrimitiveValue-getTypes.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-Object" name="Object">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Object-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Object">
+ <body>An object is an extensional value that may have multiple types, all of which must be classes. (Note that a destroyed object has no types.)
+An object has a unique identity. Usually, references to objects are manipulated, rather than the objects themselves, and there may be multiple references to the same object.
+If an object is active, it has an object activation that handle the execution of its classifier behavior(s).</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Object-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.CommonBehaviors.Communications.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-Object-_generalization.0" general="Semantics-Classes-Kernel-ExtensionalValue"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-Object-types" name="types" visibility="public" association="Semantics-Classes-Kernel-A_types_object">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Object-types-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Object-types">
+ <body>The classes under which this object is currently classified. (A destroyed object has no types.)</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-types-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Object-types-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-Object-objectActivation" name="objectActivation" visibility="public" type="Semantics-CommonBehaviors-Communications-ObjectActivation" aggregation="composite" association="Semantics-Classes-Kernel-A_objectActivation_object">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Object-objectActivation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Object-objectActivation">
+ <body>The object activation handling the active behavior of this object.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-objectActivation-_lowerValue"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-startBehavior" name="startBehavior" specification="Semantics-Classes-Kernel-Object-startBehavior.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-startBehavior-classifier" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-startBehavior-classifier-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-startBehavior-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-startBehavior-inputs-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Object-startBehavior-inputs-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Create an object activation for this object (if one does not already exist) and start its behavior(s).
+
+// Debug.println("[startBehavior] On object...");
+
+if (this.objectActivation == null) {
+ this.objectActivation = new ObjectActivation();
+ this.objectActivation.object = this;
+}
+
+// Debug.println("[startBehavior] objectActivation = " + objectActivation);
+
+this.objectActivation.startBehavior(classifier, inputs);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-dispatch" name="dispatch" specification="Semantics-Classes-Kernel-Object-dispatch.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-dispatch-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-dispatch-operation" name="operation" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Dispatch the given operation to a method execution, using a dispatch strategy.
+
+return ((DispatchStrategy)this.locus.factory.getStrategy("dispatch")).dispatch(this, operation);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-send" name="send" specification="Semantics-Classes-Kernel-Object-send.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-send-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ <language>Java</language>
+ <body>// If the object is active, add the given signal instance to the event pool and signal that a new signal instance has arrived.
+
+if (this.objectActivation != null) {
+ this.objectActivation.send(signalInstance);
+}
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-destroy" name="destroy" specification="Semantics-Classes-Kernel-Object-destroy.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Stop the object activation (if any), clear all types and destroy the object as an extensional value.
+
+Debug.println("[destroy] object = " + this.objectId());
+
+if (this.objectActivation != null) {
+ this.objectActivation.stop();
+ this.objectActivation = null;
+}
+
+this.types.clear();
+super.destroy();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-register" name="register" specification="Semantics-Classes-Kernel-Object-register.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-register-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
+ <language>Java</language>
+ <body>// Register the given accept event accepter to wait for a dispatched signal event.
+
+if (this.objectActivation != null) {
+ this.objectActivation.register(accepter);
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-unregister" name="unregister" specification="Semantics-Classes-Kernel-Object-unregister.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-unregister-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
+ <language>Java</language>
+ <body>// Remove the given event accepter for the list of waiting event accepters.
+
+if (this.objectActivation != null) {
+ this.objectActivation.unregister(accepter);
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-copy" name="copy" specification="Semantics-Classes-Kernel-Object-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new object that is a copy of this object at the same locus as this object.
+// However, the new object will NOT have any object activation (i.e, its classifier behaviors will not be started).
+
+Object_ newObject = (Object_)(super.copy());
+
+ClassList types = this.types;
+for (int i = 0; i < types.size(); i++) {
+ Class type = types.getValue(i);
+ newObject.types.addValue(type);
+}
+
+return newObject;
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-new_" name="new_" specification="Semantics-Classes-Kernel-Object-new_.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new object with no type, feature values or locus.
+
+return new Object_();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Object-getTypes" name="getTypes" specification="Semantics-Classes-Kernel-Object-getTypes.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-getTypes-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Object-getTypes-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the types of this object.
+
+ClassifierList types = new ClassifierList();
+ClassList myTypes = this.types;
+for (int i = 0; i < myTypes.size(); i++) {
+ Class type = myTypes.getValue(i);
+ types.addValue(type);
+}
+
+return types;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-startBehavior.1" name="startBehavior" visibility="public" method="Semantics-Classes-Kernel-Object-startBehavior">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-startBehavior.1-classifier" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-startBehavior.1-classifier-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-startBehavior.1-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-startBehavior.1-inputs-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Object-startBehavior.1-inputs-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-dispatch.1" name="dispatch" visibility="public" method="Semantics-Classes-Kernel-Object-dispatch">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-dispatch.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-dispatch.1-operation" name="operation" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-send.1" name="send" visibility="public" method="Semantics-Classes-Kernel-Object-send">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-send.1-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-destroy.1" name="destroy" visibility="public" method="Semantics-Classes-Kernel-Object-destroy"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-register.1" name="register" visibility="public" method="Semantics-Classes-Kernel-Object-register">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-register.1-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-unregister.1" name="unregister" visibility="public" method="Semantics-Classes-Kernel-Object-unregister">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-unregister.1-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-Object-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-Object-new_">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Object-getTypes.1" name="getTypes" visibility="public" method="Semantics-Classes-Kernel-Object-getTypes">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Object-getTypes.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Object-getTypes.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Object-getTypes.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation" name="LiteralBooleanEvaluation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-LiteralBooleanEvaluation">
+ <body>A boolean evaluation is an evaluation whose specification is a literal boolean.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-_generalization.0" general="Semantics-Classes-Kernel-LiteralEvaluation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate" name="evaluate" specification="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Evaluate a literal boolean, producing a boolean value.
+
+LiteralBoolean literal = (LiteralBoolean)specification;
+BooleanValue booleanValue = new BooleanValue();
+booleanValue.type = this.getType("Boolean");
+booleanValue.value = literal.value;
+
+return booleanValue;
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate.1" name="evaluate" visibility="public" method="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralBooleanEvaluation-evaluate.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation" name="LiteralEvaluation" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-LiteralEvaluation">
+ <body>A literal evaluation is an evaluation whose specification is a Literal Specification.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-_generalization.0" general="Semantics-Classes-Kernel-Evaluation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-getType" name="getType" specification="Semantics-Classes-Kernel-LiteralEvaluation-getType.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-getType-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-getType-builtInTypeName" name="builtInTypeName" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the type of the specification. If that is null, then use the built-in type of the given name.
+
+PrimitiveType type = (PrimitiveType)(this.specification.type);
+
+if (type == null) {
+ type = this.locus.factory.getBuiltInType(builtInTypeName);
+}
+
+return type;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-getType.1" name="getType" visibility="public" method="Semantics-Classes-Kernel-LiteralEvaluation-getType">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-getType.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralEvaluation-getType.1-builtInTypeName" name="builtInTypeName" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation" name="LiteralIntegerEvaluation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-LiteralIntegerEvaluation">
+ <body>A literal integer evaluation is an evaluation whose specification is a literal integer.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-_generalization.0" general="Semantics-Classes-Kernel-LiteralEvaluation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate" name="evaluate" specification="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Evaluate a literal integer, producing an integer value.
+
+LiteralInteger literal = (LiteralInteger)specification;
+IntegerValue integerValue = new IntegerValue();
+integerValue.type = this.getType("Integer");
+integerValue.value = literal.value;
+
+return integerValue;
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate.1" name="evaluate" visibility="public" method="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralIntegerEvaluation-evaluate.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation" name="LiteralNullEvaluation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-LiteralNullEvaluation">
+ <body>A literal null evaluation is an evaluation whose specification is a literal null.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-_generalization.0" general="Semantics-Classes-Kernel-LiteralEvaluation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate" name="evaluate" specification="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Evaluate a literal null, returning nothing (since a null represents an "absence of any value").
+
+return null;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate.1" name="evaluate" visibility="public" method="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralNullEvaluation-evaluate.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation" name="LiteralStringEvaluation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-LiteralStringEvaluation">
+ <body>A literal string evaluation is an evaluation whose specification is a literal string.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-_generalization.0" general="Semantics-Classes-Kernel-LiteralEvaluation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate" name="evaluate" specification="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Evaluate a literal string, producing a string value.
+
+LiteralString literal = (LiteralString)specification;
+StringValue stringValue = new StringValue();
+stringValue.type = this.getType("String");
+stringValue.value = literal.value;
+
+return stringValue;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate.1" name="evaluate" visibility="public" method="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralStringEvaluation-evaluate.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation" name="LiteralUnlimitedNaturalEvaluation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation">
+ <body>A literal unlimited natural evaluation is an evaluation whose specification is a literal unlimited natural.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-_generalization.0" general="Semantics-Classes-Kernel-LiteralEvaluation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate" name="evaluate" specification="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Evaluate a literal unlimited natural producing an unlimited natural value.
+
+LiteralUnlimitedNatural literal = (LiteralUnlimitedNatural)specification;
+UnlimitedNaturalValue unlimitedNaturalValue = new UnlimitedNaturalValue();
+unlimitedNaturalValue.type = this.getType("UnlimitedNatural");
+unlimitedNaturalValue.value = literal.value;
+
+return unlimitedNaturalValue;
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate.1" name="evaluate" visibility="public" method="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralUnlimitedNaturalEvaluation-evaluate.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-Link" name="Link">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Link-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Link">
+ <body>A link is an extensional value whose (single) type is an association. (However, if the link has been destroyed, then it has no type.)
+A link must at have most one feature value for each structural feature owned by its type.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Link-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-Link-_generalization.0" general="Semantics-Classes-Kernel-ExtensionalValue"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-Link-type" name="type" visibility="public" association="Semantics-Classes-Kernel-A_type_Link">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Link-type-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Link-type">
+ <body>The type of this link.</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Association"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Link-type-_lowerValue"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Link-destroy" name="destroy" specification="Semantics-Classes-Kernel-Link-destroy.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Remove the type of this link and destroy it.
+// Shift the positions of the feature values of any remaining links in
+// the extent of the same association, for ends that are ordered.
+
+Debug.println("[destroy] link = " + this.objectId());
+
+PropertyList ends = this.type.memberEnd;
+ExtensionalValueList extent = this.locus.getExtent(this.type);
+
+for (int i = 0; i < extent.size(); i++) {
+ ExtensionalValue otherLink = extent.getValue(i);
+ for (int j=0; j < ends.size(); j++) {
+ Property end = ends.getValue(j);
+ if (end.multiplicityElement.isOrdered) {
+ FeatureValue featureValue = otherLink.getFeatureValue(end);
+ if (this.getFeatureValue(end).position < featureValue.position) {
+ featureValue.position = featureValue.position - 1;
+ }
+ }
+ }
+}
+
+this.type = null;
+super.destroy();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Link-copy" name="copy" specification="Semantics-Classes-Kernel-Link-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new link with the same type, locus and feature values as this link.
+
+Link newValue = (Link)(super.copy());
+
+newValue.type = this.type;
+
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Link-new_" name="new_" specification="Semantics-Classes-Kernel-Link-new_.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new link with no type or properies.
+
+return new Link();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Link-getTypes" name="getTypes" specification="Semantics-Classes-Kernel-Link-getTypes.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Link-getTypes-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Link-getTypes-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the single type of this link (if any).
+
+ClassifierList types = null;
+
+if (this.type == null) {
+ types = new ClassifierList();
+} else {
+ types = new ClassifierList();
+ types.addValue(this.type);
+}
+
+return types;
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Link-isMatchingLink" name="isMatchingLink" specification="Semantics-Classes-Kernel-Link-isMatchingLink.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Test whether the given link matches the values of this link on all
+// ends other than the given end.
+
+PropertyList ends = this.type.memberEnd;
+
+boolean matches = true;
+int i = 1;
+while (matches & i <= ends.size()) {
+ Property otherEnd = ends.getValue(i - 1);
+ if (otherEnd != end &
+ !this.getFeatureValue(otherEnd).values.getValue(0).equals(
+ link.getFeatureValue(otherEnd).values.getValue(0))) {
+ matches = false;
+ }
+ i = i + 1;
+}
+
+return matches;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Link-getOtherFeatureValues" name="getOtherFeatureValues" specification="Semantics-Classes-Kernel-Link-getOtherFeatureValues.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Return all feature values for the given end of links in the given
+// extent whose other ends match this link.
+
+FeatureValueList featureValues = new FeatureValueList();
+for (int i = 0; i < extent.size(); i++) {
+ ExtensionalValue link = extent.getValue(i);
+ if (link != this) {
+ if (isMatchingLink(link, end)) {
+ featureValues.addValue(link.getFeatureValue(end));
+ }
+ }
+}
+return featureValues;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-Link-addTo" name="addTo" specification="Semantics-Classes-Kernel-Link-addTo.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Add this link to the extent of its association at the given locus.
+// Shift the positions of ends of other links, as appropriate, for ends
+// that are ordered.
+
+Debug.println("[addTo] link = " + this.objectId());
+
+PropertyList ends = this.type.memberEnd;
+ExtensionalValueList extent = locus.getExtent(this.type);
+
+for (int i = 0; i < ends.size(); i++) {
+ Property end = ends.getValue(i);
+ if (end.multiplicityElement.isOrdered) {
+ FeatureValue featureValue = this.getFeatureValue(end);
+ FeatureValueList otherFeatureValues =
+ this.getOtherFeatureValues(extent, end);
+ int n = otherFeatureValues.size();
+ if (featureValue.position < 0 | featureValue.position > n) {
+ featureValue.position = n + 1;
+ } else {
+ if (featureValue.position == 0) {
+ featureValue.position = 1;
+ }
+ for (int j = 0; j < otherFeatureValues.size(); j++) {
+ FeatureValue otherFeatureValue = otherFeatureValues.getValue(j);
+ if (featureValue.position <= otherFeatureValue.position) {
+ otherFeatureValue.position = otherFeatureValue.position + 1;
+ }
+ }
+ }
+ }
+}
+
+locus.add(this);
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Link-destroy.1" name="destroy" visibility="public" method="Semantics-Classes-Kernel-Link-destroy"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Link-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-Link-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Link-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-Link-new_">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Link-getTypes.1" name="getTypes" visibility="public" method="Semantics-Classes-Kernel-Link-getTypes">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-getTypes.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Link-getTypes.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Link-getTypes.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Link-isMatchingLink.1" name="isMatchingLink" visibility="public" method="Semantics-Classes-Kernel-Link-isMatchingLink">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-isMatchingLink.1-link" name="link" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-isMatchingLink.1-end" name="end" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-isMatchingLink.1-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Link-getOtherFeatureValues.1" name="getOtherFeatureValues" visibility="public" method="Semantics-Classes-Kernel-Link-getOtherFeatureValues">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-getOtherFeatureValues.1-extent" name="extent" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Link-getOtherFeatureValues.1-extent-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-Link-getOtherFeatureValues.1-extent-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-getOtherFeatureValues.1-end" name="end" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Property"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Link-addTo.1" name="addTo" visibility="public" method="Semantics-Classes-Kernel-Link-addTo">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Link-addTo.1-locus" name="locus" visibility="public" type="Semantics-Loci-LociL1-Locus"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation" name="InstanceValueEvaluation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-InstanceValueEvaluation">
+ <body>An instance value evaluation is an evaluation whose specification is an instance value. </body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-_generalization.0" general="Semantics-Classes-Kernel-Evaluation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate" name="evaluate" specification="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// If the instance specification is for an enumeration, then return the identified enumeration literal.
+// If the instance specification is for a data type (but not a primitive value or an enumeration), then create a data value of the given data type.
+// If the instance specification is for an object, then create an object at the current locus with the specified types.
+// Set each feature of the created value to the result of evaluating the value specifications for the specified slot for the feature.
+
+// Debug.println("[evaluate] InstanceValueEvaluation...");
+
+InstanceSpecification instance = ((InstanceValue)this.specification).instance;
+ClassifierList types = instance.classifier;
+Classifier myType = types.getValue(0);
+
+Debug.println("[evaluate] type = " + myType.name);
+
+Value value;
+if (instance instanceof EnumerationLiteral) {
+ // Debug.println("[evaluate] Type is an enumeration.");
+ EnumerationValue enumerationValue = new EnumerationValue();
+ enumerationValue.type = (Enumeration)myType;
+ enumerationValue.literal = (EnumerationLiteral)instance;
+ value = enumerationValue;
+}
+else {
+ StructuredValue structuredValue = null;
+
+ if (myType instanceof DataType) {
+ // Debug.println("[evaluate] Type is a data type.");
+ DataValue dataValue = new DataValue();
+ dataValue.type = (DataType)myType;
+ structuredValue = dataValue;
+ }
+ else {
+ Object_ object = null;
+ if (myType instanceof Behavior) {
+ // Debug.println("[evaluate] Type is a behavior.");
+ object = this.locus.factory.createExecution((Behavior)myType, null);
+ }
+ else {
+ // Debug.println("[evaluate] Type is a class.");
+ object = new Object_();
+ for (int i = 0; i < types.size(); i++) {
+ Classifier type = types.getValue(i);
+ object.types.addValue((Class)type);
+ }
+ }
+
+ this.locus.add(object);
+
+ Reference reference = new Reference();
+ reference.referent = object;
+ structuredValue = reference;
+ }
+
+ structuredValue.createFeatureValues();
+
+ // Debug.println("[evaluate] " + instance.slot.size() + " slot(s).");
+
+ SlotList instanceSlots = instance.slot;
+ for (int i = 0; i < instanceSlots.size(); i++) {
+ Slot slot = instanceSlots.getValue(i);
+ ValueList values = new ValueList();
+
+ // Debug.println("[evaluate] feature = " + slot.definingFeature.name + ", " + slot.value.size() + " value(s).");
+ ValueSpecificationList slotValues = slot.value;
+ for (int j = 0; j < slotValues.size(); j++) {
+ ValueSpecification slotValue = slotValues.getValue(j);
+ // Debug.println("[evaluate] Value = " + slotValue.getClass().getName());
+ values.addValue(this.locus.executor.evaluate(slotValue));
+ }
+ structuredValue.setFeatureValue(slot.definingFeature, values, 0);
+ }
+
+ value = structuredValue;
+}
+
+return value;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate.1" name="evaluate" visibility="public" method="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-InstanceValueEvaluation-evaluate.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-IntegerValue" name="IntegerValue">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-IntegerValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-IntegerValue">
+ <body>An integer value is a primitive value whose type is Integer.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-IntegerValue-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-IntegerValue-_generalization.0" general="Semantics-Classes-Kernel-PrimitiveValue"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-IntegerValue-value" name="value" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-IntegerValue-value-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-IntegerValue-value">
+ <body>The actual Integer value.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-IntegerValue-specify" name="specify" specification="Semantics-Classes-Kernel-IntegerValue-specify.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-specify-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return a literal integer with the value of this integer value.
+
+LiteralInteger literal = new LiteralInteger();
+
+literal.type = this.type;
+literal.value = this.value;
+
+return literal;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-IntegerValue-equals" name="equals" specification="Semantics-Classes-Kernel-IntegerValue-equals.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <language>Java</language>
+ <body>// Test if this integer value is equal to the otherValue.
+// To be equal, the otherValue must have the same value as this integer value.
+
+boolean isEqual = false;
+if (otherValue instanceof IntegerValue) {
+ isEqual = ((IntegerValue)otherValue).value == this.value;
+}
+
+return isEqual;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-IntegerValue-copy" name="copy" specification="Semantics-Classes-Kernel-IntegerValue-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new integer value with the same value as this integer value.
+
+IntegerValue newValue = (IntegerValue)(super.copy());
+
+newValue.value = this.value;
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-IntegerValue-new_" name="new_" specification="Semantics-Classes-Kernel-IntegerValue-new_.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new integer value with no value.
+
+return new IntegerValue();</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-IntegerValue-toString" name="toString" specification="Semantics-Classes-Kernel-IntegerValue-toString.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>String stringValue = "";
+
+if (this.value == 0) {
+ stringValue = "0";
+} else {
+ int positiveValue = this.value;
+
+ if (positiveValue < 0) {
+ positiveValue = -positiveValue;
+ }
+
+ do {
+ int digit = positiveValue % 10;
+
+ if (digit == 0) {
+ stringValue = "0" + stringValue;
+ } else if (digit == 1) {
+ stringValue = "1" + stringValue;
+ } else if (digit == 2) {
+ stringValue = "2" + stringValue;
+ } else if (digit == 3) {
+ stringValue = "3" + stringValue;
+ } else if (digit == 4) {
+ stringValue = "4" + stringValue;
+ } else if (digit == 5) {
+ stringValue = "5" + stringValue;
+ } else if (digit == 6) {
+ stringValue = "6" + stringValue;
+ } else if (digit == 7) {
+ stringValue = "7" + stringValue;
+ } else if (digit == 8) {
+ stringValue = "8" + stringValue;
+ } else if (digit == 9) {
+ stringValue = "9" + stringValue;
+ }
+
+ positiveValue = positiveValue / 10;
+ } while (positiveValue > 0);
+
+ if (this.value < 0) {
+ stringValue = "-" + stringValue;
+ }
+}
+
+return stringValue;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-IntegerValue-specify.1" name="specify" visibility="public" method="Semantics-Classes-Kernel-IntegerValue-specify">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-specify.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-IntegerValue-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-IntegerValue-equals">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-IntegerValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-IntegerValue-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-IntegerValue-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-IntegerValue-new_">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-IntegerValue-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-IntegerValue-toString">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-IntegerValue-toString.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-FeatureValue" name="FeatureValue">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-FeatureValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-FeatureValue">
+ <body>A feature value gives the value(s) that a single structural feature has in a specific structured value.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-FeatureValue-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-FeatureValue-feature" name="feature" visibility="public" association="Semantics-Classes-Kernel-A_feature_featureValue">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-FeatureValue-feature-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-FeatureValue-feature">
+ <body>The structural feature being given value(s).</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-FeatureValue-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value" isOrdered="true" isUnique="false" aggregation="composite" association="Semantics-Classes-Kernel-A_values_featureValue">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-FeatureValue-values-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-FeatureValue-values">
+ <body>The values of for the feature. Zero or more values are possible, as constrained by the multiplicity of the feature.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-FeatureValue-values-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-FeatureValue-values-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-FeatureValue-position" name="position" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-FeatureValue-position-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-FeatureValue-position">
+ <body>The position of this feature value in a set of ordered values for a feature of an association.
+[This is only relevant if the feature value is for a link and the feature is ordered.]</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-FeatureValue-position-_lowerValue"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-FeatureValue-hasEqualValues" name="hasEqualValues" specification="Semantics-Classes-Kernel-FeatureValue-hasEqualValues.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-FeatureValue-hasEqualValues-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-FeatureValue-hasEqualValues-other" name="other" visibility="public" type="Semantics-Classes-Kernel-FeatureValue"/>
+ <language>Java</language>
+ <body>// Determine if this feature value has an equal set of values as another feature value.
+// If the feature is ordered, then the values also have to be in the same order.
+
+boolean equal = true;
+
+if (this.values.size() != other.values.size()) {
+ equal = false;
+
+} else {
+
+ // Debug.println("[hasEqualValues] feature = " + this.feature.name + ", " + this.values.size() + " value(s).");
+
+ if (this.feature.multiplicityElement.isOrdered) {
+ int i = 1;
+ while (equal & i <= this.values.size()) {
+ equal = this.values.getValue(i-1).equals(other.values.getValue(i-1));
+ i = i + 1;
+ }
+
+ } else {
+ // Note: otherFeatureValues is used here solely as a holder for a copy of the list of other values,
+ // since the Java to UML mapping conventions do not allow "remove" on a local list variable.
+ FeatureValue otherFeatureValues = new FeatureValue();
+ ValueList values = other.values;
+ for (int i=0; i < values.size(); i++) {
+ Value value = values.getValue(i);
+ otherFeatureValues.values.addValue(value);
+ }
+
+ int i = 1;
+ while (equal & i <= this.values.size()) {
+ // Debug.println("[hasEqualValues] This value [" + (i-1) + "] = " + this.values.getValue(i-1));
+
+ boolean matched = false;
+ int j = 1;
+ while (!matched & j <= otherFeatureValues.values.size()) {
+ if (this.values.getValue(i-1).equals(otherFeatureValues.values.getValue(j-1))) {
+ // Debug.println("[hasEqualValues] Other value [" + (j-1) + "] = " + otherFeatureValues.values.getValue(j-1));
+ matched = true;
+ otherFeatureValues.values.remove(j-1);
+ }
+ j = j + 1;
+ }
+
+ equal = matched;
+ i = i + 1;
+ }
+ }
+}
+
+return equal;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-FeatureValue-copy" name="copy" specification="Semantics-Classes-Kernel-FeatureValue-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-FeatureValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return"/>
+ <language>Java</language>
+ <body>// Create a copy of this feature value.
+
+FeatureValue newValue = new FeatureValue();
+
+newValue.feature = this.feature;
+newValue.position = this.position;
+
+ValueList values = this.values;
+for (int i = 0; i < values.size(); i ++) {
+ Value value = values.getValue(i);
+ newValue.values.addValue(value.copy());
+}
+
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-FeatureValue-hasEqualValues.1" name="hasEqualValues" visibility="public" method="Semantics-Classes-Kernel-FeatureValue-hasEqualValues">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-FeatureValue-hasEqualValues.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-FeatureValue-hasEqualValues.1-other" name="other" visibility="public" type="Semantics-Classes-Kernel-FeatureValue"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-FeatureValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-FeatureValue-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-FeatureValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-ExtensionalValue" name="ExtensionalValue" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-ExtensionalValue">
+ <body>An extensional value is a data value that is part of the extent of some classifier at a specific locus.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-_generalization.0" general="Semantics-Classes-Kernel-CompoundValue"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-locus" name="locus" visibility="public" type="Semantics-Loci-LociL1-Locus" association="Semantics-Classes-Kernel-A_locus_extensionalValues">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-locus-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-ExtensionalValue-locus">
+ <body>The locus of the extent of which this value is a member. (If the value has been destroyed, it has no locus.)</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-locus-_lowerValue"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-destroy" name="destroy" specification="Semantics-Classes-Kernel-ExtensionalValue-destroy.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Remove this value from its locus (if it has not already been destroyed).
+
+if (this.locus != null) {
+ this.locus.remove(this);
+}</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-copy" name="copy" specification="Semantics-Classes-Kernel-ExtensionalValue-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new extensional value with the same feature values at the same locus as this one.
+
+ExtensionalValue newValue = (ExtensionalValue)(super.copy());
+
+if (this.locus != null) {
+ this.locus.add(newValue);
+}
+
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-destroy.1" name="destroy" visibility="public" method="Semantics-Classes-Kernel-ExtensionalValue-destroy"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-ExtensionalValue-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-ExtensionalValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-Evaluation" name="Evaluation" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Evaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Evaluation">
+ <body>An evaluation is used to evaluate a value specification to produce a value.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Evaluation-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-Evaluation-_generalization.0" general="Semantics-Loci-LociL1-SemanticVisitor"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-Evaluation-specification" name="specification" visibility="public" association="Semantics-Classes-Kernel-A_specification_evaluation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Evaluation-specification-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Evaluation-specification">
+ <body>The value specification to be evaluated.</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-Evaluation-locus" name="locus" visibility="public" type="Semantics-Loci-LociL1-Locus" association="Semantics-Classes-Kernel-A_locus_evaluation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Evaluation-locus-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Evaluation-locus">
+ <body>The locus at which this evaluation is taking place.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-Evaluation-evaluate" name="evaluate" visibility="public" isAbstract="true" isQuery="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-Evaluation-evaluate-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-Evaluation-evaluate">
+ <body>Evaluate the specification, returning the resulting value.
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-Evaluation-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-Evaluation-evaluate-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-EnumerationValue" name="EnumerationValue">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-EnumerationValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-EnumerationValue">
+ <body>An enumeration value is a value whose (single) type is an enumeration. 
+It's literal must be an owned literal of it's type.
+
+
+</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-EnumerationValue-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-EnumerationValue-_generalization.0" general="Semantics-Classes-Kernel-Value"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-EnumerationValue-literal" name="literal" visibility="public" association="Semantics-Classes-Kernel-A_literal_enumerationValue">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-EnumerationValue-literal-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-EnumerationValue-literal">
+ <body>The literal value of this enumeration value.</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#EnumerationLiteral"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-EnumerationValue-type" name="type" visibility="public" association="Semantics-Classes-Kernel-A_type_enumerationValue">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Enumeration"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-EnumerationValue-specify" name="specify" specification="Semantics-Classes-Kernel-EnumerationValue-specify.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-specify-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return an instance value with literal as the instance.
+
+InstanceValue instanceValue = new InstanceValue();
+InstanceSpecification instance = new InstanceSpecification();
+
+instanceValue.type = this.type;
+instanceValue.instance = this.literal;
+
+return instanceValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-EnumerationValue-equals" name="equals" specification="Semantics-Classes-Kernel-EnumerationValue-equals.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <language>Java</language>
+ <body>// Test if this enumeration value is equal to the otherValue.
+// To be equal, the otherValue must also be an enumeration value with the same literal as this enumeration value.
+
+boolean isEqual = false;
+if (otherValue instanceof EnumerationValue) {
+ isEqual = ((EnumerationValue)otherValue).literal == this.literal;
+}
+
+return isEqual;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-EnumerationValue-copy" name="copy" specification="Semantics-Classes-Kernel-EnumerationValue-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new enumeration value with the same literal as this enumeration value.
+
+EnumerationValue newValue = (EnumerationValue)(super.copy());
+
+newValue.type = this.type;
+newValue.literal = this.literal;
+
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-EnumerationValue-new_" name="new_" specification="Semantics-Classes-Kernel-EnumerationValue-new_.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new enumeration value with no literal.
+
+return new EnumerationValue();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes" name="getTypes" specification="Semantics-Classes-Kernel-EnumerationValue-getTypes.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the single type of this enumeration value.
+
+ClassifierList types = new ClassifierList();
+types.addValue(this.type);
+
+return types;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-EnumerationValue-toString" name="toString" specification="Semantics-Classes-Kernel-EnumerationValue-toString.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>return literal.name;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-EnumerationValue-specify.1" name="specify" visibility="public" method="Semantics-Classes-Kernel-EnumerationValue-specify">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-specify.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-EnumerationValue-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-EnumerationValue-equals">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-EnumerationValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-EnumerationValue-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-EnumerationValue-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-EnumerationValue-new_">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes.1" name="getTypes" visibility="public" method="Semantics-Classes-Kernel-EnumerationValue-getTypes">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-EnumerationValue-getTypes.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-EnumerationValue-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-EnumerationValue-toString">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-EnumerationValue-toString.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-DataValue" name="DataValue">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-DataValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-DataValue">
+ <body>A data value is a compund value whose (single) type is a data type other than a primitive type or an enumeration.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-DataValue-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-DataValue-_generalization.0" general="Semantics-Classes-Kernel-CompoundValue"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-DataValue-type" name="type" visibility="public" association="Semantics-Classes-Kernel-A_type_dataValue">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-DataValue-type-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-DataValue-type">
+ <body>The type of this data value. This must not be a primitive or an enumeration.</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#DataType"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes" name="getTypes" specification="Semantics-Classes-Kernel-DataValue-getTypes.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the single type of this data value.
+
+ClassifierList types = new ClassifierList();
+types.addValue(this.type);
+
+return types;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-DataValue-copy" name="copy" specification="Semantics-Classes-Kernel-DataValue-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DataValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new data value with the same type and feature values as this data value.
+
+DataValue newValue = (DataValue)(super.copy());
+
+newValue.type = this.type;
+
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-DataValue-new_" name="new_" specification="Semantics-Classes-Kernel-DataValue-new_.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DataValue-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new data value with no type or feature values.
+
+return new DataValue();</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes.1" name="getTypes" visibility="public" method="Semantics-Classes-Kernel-DataValue-getTypes">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-DataValue-getTypes.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-DataValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-DataValue-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DataValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-DataValue-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-DataValue-new_">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DataValue-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-CompoundValue" name="CompoundValue" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-CompoundValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-CompoundValue">
+ <body>A compound value is a structured value with by-value semantics. Values are associated with each structural feature specified by the type(s) of the compound value.
+</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-CompoundValue-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-CompoundValue-_generalization.0" general="Semantics-Classes-Kernel-StructuredValue"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-CompoundValue-featureValues" name="featureValues" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" aggregation="composite" association="Semantics-Classes-Kernel-A_featureValues_compoundValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-CompoundValue-featureValues-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-CompoundValue-featureValues-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-CompoundValue-equals" name="equals" specification="Semantics-Classes-Kernel-CompoundValue-equals.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <language>Java</language>
+ <body>// Test if this data value is equal to the otherValue.
+// To be equal, the otherValue must also be a compund value with the same types and equal values for each feature.
+
+// Debug.println("[equals] othervalue instanceof CompoundValue = " + (otherValue instanceof CompoundValue));
+// Debug.println("[equals] super.equals(otherValue) = " + super.equals(otherValue));
+
+boolean isEqual = otherValue instanceof CompoundValue;
+
+ if (isEqual) {
+
+ CompoundValue otherCompoundValue = (CompoundValue)otherValue;
+ // Debug.println("[equals] " + this.featureValues.size() + " feature(s).");
+
+ isEqual = super.equals(otherValue) & otherCompoundValue.featureValues.size() == this.featureValues.size();
+
+ int i = 1;
+ while (isEqual & i <= this.featureValues.size()) {
+ FeatureValue thisFeatureValue = this.featureValues.getValue(i-1);
+
+ boolean matched = false;
+ int j = 1;
+ while (!matched & j <= otherCompoundValue.featureValues.size()) {
+ FeatureValue otherFeatureValue = otherCompoundValue.featureValues.getValue(j-1);
+ if (thisFeatureValue.feature == otherFeatureValue.feature) {
+ matched = thisFeatureValue.hasEqualValues(otherFeatureValue);
+ }
+ j = j + 1;
+ }
+
+ isEqual = matched;
+ i = i + 1;
+ }
+}
+
+return isEqual;</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-CompoundValue-copy" name="copy" specification="Semantics-Classes-Kernel-CompoundValue-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new data value with the same featureValues as this data value.
+
+CompoundValue newValue = (CompoundValue)(super.copy());
+
+FeatureValueList featureValues = this.featureValues;
+for (int i = 0; i < featureValues.size(); i++) {
+ FeatureValue featureValue = featureValues.getValue(i);
+ newValue.featureValues.addValue(featureValue.copy());
+}
+
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValue" name="getFeatureValue" specification="Semantics-Classes-Kernel-CompoundValue-getFeatureValue.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValue-feature" name="feature" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the value(s) of the member of featureValues for the given feature.
+
+FeatureValue featureValue = null;
+int i = 1;
+while (featureValue == null & i <= this.featureValues.size()) {
+ if (this.featureValues.getValue(i-1).feature == feature) {
+ featureValue = this.featureValues.getValue(i-1);
+ }
+ i = i + 1;
+}
+
+return featureValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue" name="setFeatureValue" specification="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue-feature" name="feature" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue-values-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue-values-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue-position" name="position" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue-position-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Set the value(s) of the member of featureValues for the given feature.
+
+FeatureValue featureValue = this.getFeatureValue(feature);
+
+if (featureValue == null) {
+ featureValue = new FeatureValue();
+ this.featureValues.addValue(featureValue);
+}
+
+featureValue.feature = feature;
+featureValue.values = values;
+featureValue.position = position;
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues" name="getFeatureValues" specification="Semantics-Classes-Kernel-CompoundValue-getFeatureValues.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the feature values for this compound value.
+
+return this.featureValues;
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-CompoundValue-removeFeatureValues" name="removeFeatureValues" specification="Semantics-Classes-Kernel-CompoundValue-removeFeatureValues.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-removeFeatureValues-classifier" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Remove all feature values for features whose type is the given classifier.
+
+int i = 1;
+while (i <= this.featureValues.size()) {
+ if (this.featureValues.getValue(i-1).feature.typedElement.type == classifier) {
+ this.featureValues.remove(i-1);
+ }
+ else {
+ i = i + 1;
+ }
+}
+ </body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-CompoundValue-toString" name="toString" specification="Semantics-Classes-Kernel-CompoundValue-toString.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>String buffer = "(" + this.objectId() + ":";
+
+ClassifierList types = this.getTypes();
+
+int i = 1;
+while (i <= types.size()) {
+ buffer = buffer +" " + types.getValue(i-1).name;
+ i = i + 1;
+}
+
+int k = 1;
+while (k <= this.featureValues.size()) {
+ FeatureValue featureValue = this.featureValues.getValue(k-1);
+ buffer = buffer + "\n\t\t" + featureValue.feature.name + "[" + featureValue.position + "] =";
+
+ int j = 1;
+ while (j <= featureValue.values.size()) {
+ buffer = buffer + " " + featureValue.values.getValue(j-1).toString();
+ j = j + 1;
+ }
+
+ k = k + 1;
+}
+
+return buffer + ")";
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-CompoundValue-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-CompoundValue-equals">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-CompoundValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-CompoundValue-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValue.1" name="getFeatureValue" visibility="public" method="Semantics-Classes-Kernel-CompoundValue-getFeatureValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValue.1-feature" name="feature" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1" name="setFeatureValue" visibility="public" method="Semantics-Classes-Kernel-CompoundValue-setFeatureValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1-feature" name="feature" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#StructuralFeature"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1-values-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1-values-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1-position" name="position" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-CompoundValue-setFeatureValue.1-position-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues.1" name="getFeatureValues" visibility="public" method="Semantics-Classes-Kernel-CompoundValue-getFeatureValues">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-FeatureValue" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-CompoundValue-getFeatureValues.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-CompoundValue-removeFeatureValues.1" name="removeFeatureValues" visibility="public" method="Semantics-Classes-Kernel-CompoundValue-removeFeatureValues">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-removeFeatureValues.1-classifier" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-CompoundValue-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-CompoundValue-toString">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-CompoundValue-toString.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-BooleanValue" name="BooleanValue">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-BooleanValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-BooleanValue">
+ <body>A boolean value is a primitive value whose type is Boolean.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-BooleanValue-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-BooleanValue-_generalization.0" general="Semantics-Classes-Kernel-PrimitiveValue"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-BooleanValue-value" name="value" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-BooleanValue-value-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-BooleanValue-value">
+ <body>The actual Boolean value.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-BooleanValue-specify" name="specify" specification="Semantics-Classes-Kernel-BooleanValue-specify.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-specify-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return a literal boolean with the value of this boolean value.
+
+LiteralBoolean literal = new LiteralBoolean();
+
+literal.type = this.type;
+literal.value = this.value;
+
+return literal;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-BooleanValue-equals" name="equals" specification="Semantics-Classes-Kernel-BooleanValue-equals.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-equals-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-equals-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <language>Java</language>
+ <body>// Test if this boolean value is equal to the otherValue.
+// To be equal, the otherValue must have the same value as this boolean value.
+
+boolean isEqual = false;
+if (otherValue instanceof BooleanValue) {
+ isEqual = ((BooleanValue)otherValue).value == this.value;
+}
+
+return isEqual;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-BooleanValue-copy" name="copy" specification="Semantics-Classes-Kernel-BooleanValue-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new boolean value with the same value as this boolean value.
+
+BooleanValue newValue = (BooleanValue)(super.copy());
+
+newValue.value = this.value;
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-BooleanValue-new_" name="new_" specification="Semantics-Classes-Kernel-BooleanValue-new_.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Return a new boolean value with no value.
+
+return new BooleanValue();</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-BooleanValue-toString" name="toString" specification="Semantics-Classes-Kernel-BooleanValue-toString.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-toString-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>String stringValue = "false";
+
+if (this.value) {
+ stringValue = "true";
+}
+
+return stringValue;
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-BooleanValue-specify.1" name="specify" visibility="public" method="Semantics-Classes-Kernel-BooleanValue-specify">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-specify.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-BooleanValue-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-BooleanValue-equals">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-equals.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-BooleanValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-BooleanValue-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-BooleanValue-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-BooleanValue-new_">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-BooleanValue-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-BooleanValue-toString">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-BooleanValue-toString.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_featureValues_compoundValue" name="A_featureValues_compoundValue" visibility="private" memberEnd="Semantics-Classes-Kernel-A_featureValues_compoundValue-_ownedEnd.0 Semantics-Classes-Kernel-CompoundValue-featureValues">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_featureValues_compoundValue-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-CompoundValue" association="Semantics-Classes-Kernel-A_featureValues_compoundValue"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_type_dataValue" name="A_type_dataValue" visibility="private" memberEnd="Semantics-Classes-Kernel-A_type_dataValue-_ownedEnd.0 Semantics-Classes-Kernel-DataValue-type">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_type_dataValue-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-DataValue" association="Semantics-Classes-Kernel-A_type_dataValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_type_dataValue-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_type_dataValue-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_type_enumerationValue" name="A_type_enumerationValue" visibility="private" memberEnd="Semantics-Classes-Kernel-A_type_enumerationValue-_ownedEnd.0 Semantics-Classes-Kernel-EnumerationValue-type">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_type_enumerationValue-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-EnumerationValue" association="Semantics-Classes-Kernel-A_type_enumerationValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_type_enumerationValue-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_type_enumerationValue-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_literal_enumerationValue" name="A_literal_enumerationValue" visibility="private" memberEnd="Semantics-Classes-Kernel-A_literal_enumerationValue-_ownedEnd.0 Semantics-Classes-Kernel-EnumerationValue-literal">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_literal_enumerationValue-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-EnumerationValue" association="Semantics-Classes-Kernel-A_literal_enumerationValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_literal_enumerationValue-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_literal_enumerationValue-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_specification_evaluation" name="A_specification_evaluation" visibility="private" memberEnd="Semantics-Classes-Kernel-A_specification_evaluation-_ownedEnd.0 Semantics-Classes-Kernel-Evaluation-specification">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_specification_evaluation-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-Evaluation" association="Semantics-Classes-Kernel-A_specification_evaluation">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_specification_evaluation-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_specification_evaluation-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_locus_evaluation" name="A_locus_evaluation" visibility="private" memberEnd="Semantics-Classes-Kernel-A_locus_evaluation-_ownedEnd.0 Semantics-Classes-Kernel-Evaluation-locus">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_locus_evaluation-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-Evaluation" association="Semantics-Classes-Kernel-A_locus_evaluation">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_locus_evaluation-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_locus_evaluation-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_locus_extensionalValues" name="A_locus_extensionalValues" visibility="private" memberEnd="Semantics-Loci-LociL1-Locus-extensionalValues Semantics-Classes-Kernel-ExtensionalValue-locus"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_values_featureValue" name="A_values_featureValue" visibility="private" memberEnd="Semantics-Classes-Kernel-A_values_featureValue-_ownedEnd.0 Semantics-Classes-Kernel-FeatureValue-values">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_values_featureValue-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-FeatureValue" association="Semantics-Classes-Kernel-A_values_featureValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_values_featureValue-_ownedEnd.0-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_feature_featureValue" name="A_feature_featureValue" visibility="private" memberEnd="Semantics-Classes-Kernel-A_feature_featureValue-_ownedEnd.0 Semantics-Classes-Kernel-FeatureValue-feature">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_feature_featureValue-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-FeatureValue" association="Semantics-Classes-Kernel-A_feature_featureValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_feature_featureValue-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_feature_featureValue-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_type_Link" name="A_type_Link" visibility="private" memberEnd="Semantics-Classes-Kernel-A_type_Link-_ownedEnd.0 Semantics-Classes-Kernel-Link-type">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_type_Link-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-Link" association="Semantics-Classes-Kernel-A_type_Link">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_type_Link-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_type_Link-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_objectActivation_object" name="A_objectActivation_object" visibility="private" memberEnd="Semantics-CommonBehaviors-Communications-ObjectActivation-object Semantics-Classes-Kernel-Object-objectActivation"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_types_object" name="A_types_object" visibility="private" memberEnd="Semantics-Classes-Kernel-A_types_object-_ownedEnd.0 Semantics-Classes-Kernel-Object-types">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_types_object-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-Object" association="Semantics-Classes-Kernel-A_types_object">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_types_object-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_types_object-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_type_primitiveValue" name="A_type_primitiveValue" visibility="private" memberEnd="Semantics-Classes-Kernel-A_type_primitiveValue-_ownedEnd.0 Semantics-Classes-Kernel-PrimitiveValue-type">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_type_primitiveValue-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-PrimitiveValue" association="Semantics-Classes-Kernel-A_type_primitiveValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_type_primitiveValue-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_type_primitiveValue-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Classes-Kernel-A_reference_reference" name="A_reference_reference" visibility="private" memberEnd="Semantics-Classes-Kernel-A_reference_reference-_ownedEnd.0 Semantics-Classes-Kernel-Reference-referent">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-A_reference_reference-_ownedEnd.0" visibility="private" type="Semantics-Classes-Kernel-Reference" association="Semantics-Classes-Kernel-A_reference_reference">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-A_reference_reference-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Classes-Kernel-A_reference_reference-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-DispatchStrategy" name="DispatchStrategy" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-DispatchStrategy">
+ <body>A dispatch strategy is a semantic strategy for the polymorphic dispatching of an operation to an execution of a method for that operation.</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-_generalization.0" general="Semantics-Loci-LociL1-SemanticStrategy"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getName" name="getName" specification="Semantics-Classes-Kernel-DispatchStrategy-getName.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getName-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Dispatch strategies are always named "dispatch".
+
+return "dispatch";
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch" name="dispatch" specification="Semantics-Classes-Kernel-DispatchStrategy-dispatch.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch-object" name="object" visibility="public" type="Semantics-Classes-Kernel-Object"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch-operation" name="operation" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
+ <language>Java</language>
+ <body>// Get the behavior for the given operation as determined by the type(s) of the given object, compile the behavior at the locus of the object, and return the resulting execution object.
+
+return object.locus.factory.createExecution(this.getMethod(object,operation), object);</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getName.1" name="getName" visibility="public" method="Semantics-Classes-Kernel-DispatchStrategy-getName">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getName.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch.1" name="dispatch" visibility="public" method="Semantics-Classes-Kernel-DispatchStrategy-dispatch">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch.1-object" name="object" visibility="public" type="Semantics-Classes-Kernel-Object"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch.1-operation" name="operation" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-dispatch.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getMethod" name="getMethod" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getMethod-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-DispatchStrategy-getMethod">
+ <body>// Get the method that corresponds to the given operation for the given object.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getMethod-object" name="object" visibility="public" type="Semantics-Classes-Kernel-Object"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getMethod-operation" name="operation" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-DispatchStrategy-getMethod-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy" name="RedefinitionBasedDispatchStrategy">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy">
+ <body>A redefinition-based dispatch strategy is one that requires:
+- each non-abstract operation to have exactly one method 
+- an overriding subclass operation to explicitly redefine the overridden superclass operation.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.CommonBehaviors.Communications.*;
+import fUML.Semantics.Loci.*;
+
+
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-_generalization.0" general="Semantics-Classes-Kernel-DispatchStrategy"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod" name="getMethod" specification="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod-object" name="object" visibility="public" type="Semantics-Classes-Kernel-Object"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod-operation" name="operation" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the method that corresponds to the given operation for the given object.
+// [If there is more than one type with a method for the operation, then the first one is arbitrarily chosen.]
+
+Behavior method = null;
+int i = 1;
+while (method == null & i <= object.types.size()) {
+ Class type = object.types.getValue(i-1);
+ NamedElementList members = type.member;
+ int j = 1;
+ while (method == null & j <= members.size()) {
+ NamedElement member = members.getValue(j-1);
+ if (member instanceof Operation) {
+ Operation memberOperation = (Operation)member;
+ if (this.operationsMatch(memberOperation, operation)) {
+ method = memberOperation.method.getValue(0);
+ }
+ }
+ j = j + 1;
+ }
+ i = i + 1;
+}
+
+return method;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch" name="operationsMatch" specification="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch-ownedOperation" name="ownedOperation" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch-baseOperation" name="baseOperation" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Check if the owned operation is equal to or a redefinition (directly or indirectly) of the base operation.
+
+boolean matches = false;
+if (ownedOperation == baseOperation) {
+ matches = true;
+} else {
+ int i = 1;
+ while (!matches & i <= ownedOperation.redefinedOperation.size()) {
+ matches = this.operationsMatch(ownedOperation.redefinedOperation.getValue(i-1), baseOperation);
+ i = i + 1;
+ }
+}
+
+return matches;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod.1" name="getMethod" visibility="public" method="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod.1-object" name="object" visibility="public" type="Semantics-Classes-Kernel-Object"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-getMethod.1-operation" name="operation" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch.1" name="operationsMatch" visibility="public" method="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch.1-ownedOperation" name="ownedOperation" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RedefinitionBasedDispatchStrategy-operationsMatch.1-baseOperation" name="baseOperation" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Operation"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-LiteralRealEvaluation" name="LiteralRealEvaluation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-LiteralRealEvaluation-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-LiteralRealEvaluation">
+ <body>A literal real evaluation is an evaluation whose specification is a literal real.</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-LiteralRealEvaluation-_generalization.0" general="Semantics-Classes-Kernel-LiteralEvaluation"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-LiteralRealEvaluation-evaluate" name="evaluate" specification="Semantics-Classes-Kernel-LiteralRealEvaluation-evaluate.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Evaluate a real integer, producing a real value.
+
+LiteralReal literal = (LiteralReal)specification;
+RealValue realValue = new RealValue();
+realValue.type = this.getType("Real");
+realValue.value = literal.value;
+return realValue;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-LiteralRealEvaluation-evaluate.1" name="evaluate" visibility="public" method="Semantics-Classes-Kernel-LiteralRealEvaluation-evaluate">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-LiteralRealEvaluation-evaluate.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Classes-Kernel-LiteralRealEvaluation-evaluate.1-Parameter1-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Classes-Kernel-RealValue" name="RealValue">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-RealValue-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-RealValue">
+ <body>A real value is a primitive value whose type is Real.</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Classes-Kernel-RealValue-_generalization.0" general="Semantics-Classes-Kernel-PrimitiveValue"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Classes-Kernel-RealValue-value" name="value" visibility="public">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Classes-Kernel-RealValue-value-_ownedComment.0" annotatedElement="Semantics-Classes-Kernel-RealValue-value">
+ <body>The actual Real value.</body>
+ </ownedComment>
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Real"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-RealValue-copy" name="copy" specification="Semantics-Classes-Kernel-RealValue-copy.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Create a new real value with the same value as this real value.
+
+RealValue newValue = (RealValue)(super.copy());
+
+newValue.value = this.value;
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-RealValue-equals" name="equals" specification="Semantics-Classes-Kernel-RealValue-equals.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Test if this real value is equal to the otherValue.?
+// To be equal, the otherValue must have the same value as this real value.
+
+boolean isEqual = false;
+if (otherValue instanceof RealValue) {
+ isEqual = ((RealValue)otherValue).value == this.value;
+}
+
+return isEqual;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-RealValue-new_" name="new_" specification="Semantics-Classes-Kernel-RealValue-new_.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Test if this real value is equal to the otherValue.

+// To be equal, the otherValue must have the same value as this real value.
+
+boolean isEqual = false;
+if (otherValue instanceof RealValue) {
+ isEqual = ((RealValue)otherValue).value == this.value;
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-RealValue-specify" name="specify" specification="Semantics-Classes-Kernel-RealValue-specify.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Return a literal real with the value of this real value.
+
+LiteralReal literal = new LiteralReal();
+
+literal.type = this.type;
+literal.value = this.value;
+
+return literal;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Classes-Kernel-RealValue-toString" name="toString" specification="Semantics-Classes-Kernel-RealValue-toString.1" isReentrant="false">
+ <language>Java</language>
+ <body>String stringValue = "";
+
+if (this.value == 0) {
+ stringValue = "0";
+} else {
+ float positiveValue = this.value;
+
+ if (positiveValue < 0) {
+ positiveValue = -positiveValue;
+ }
+
+ int exponent = 0;
+
+ if (postiveValue < .1) {
+ while (positiveValue < .1) {
+ positiveValue = positiveValue * 10;
+ exponent = exponent - 1;
+ }
+ else if (positiveValue > 1) {
+ while (positiveValue > 1) {
+ positiveValue = positiveValue / 10;
+ exponent = exponent + 1;
+ }
+ }
+
+ // This gives 10 significant digits in the mantissa.
+ for (int i=0; i<10; i++) {
+ positiveValue = positiveValue * 10;
+ }
+
+ IntegerValue integerValue = new IntegerValue();
+ integerValue.value = (int)positiveValue;
+ stringValue = “0.” + integerValue.toString();
+ integerValue.value = exponent;
+ stringValue = stringValue + “E” + integerValue.toString;
+
+ if (this.value < 0) {
+ stringValue = "-" + stringValue;
+ }
+}
+
+return stringValue;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-RealValue-specify.1" name="specify" visibility="public" method="Semantics-Classes-Kernel-RealValue-specify">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RealValue-specify.1-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-RealValue-equals.1" name="equals" visibility="public" method="Semantics-Classes-Kernel-RealValue-equals">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RealValue-equals.1-otherValue" name="otherValue" visibility="public" type="Semantics-Classes-Kernel-Value"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RealValue-equals.1-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-RealValue-copy.1" name="copy" visibility="public" method="Semantics-Classes-Kernel-RealValue-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RealValue-copy.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-RealValue-new_.1" name="new_" visibility="protected" method="Semantics-Classes-Kernel-RealValue-new_">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RealValue-new_.1-Parameter1" name="Parameter1" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Classes-Kernel-RealValue-toString.1" name="toString" visibility="public" method="Semantics-Classes-Kernel-RealValue-toString">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Classes-Kernel-RealValue-toString.1-Parameter1" name="Parameter1" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-CommonBehaviors" name="CommonBehaviors">
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-CommonBehaviors-BasicBehaviors" name="BasicBehaviors">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-_packageImport.0" importedPackage="Semantics-Classes-Kernel"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" name="ParameterValue">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
+ <body>A parameter value gives the value(s) for a specific parameter.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-parameter" name="parameter" visibility="public" association="Semantics-CommonBehaviors-BasicBehaviors-A_parameter_parameterValue">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-values" name="values" visibility="public" type="Semantics-Classes-Kernel-Value" aggregation="composite" association="Semantics-CommonBehaviors-BasicBehaviors-A_values_parameterValue">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-values-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-values">
+ <body>The values of for the parameter. Zero or more values are possible, as constrained by the multiplicity of the parameter.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-values-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-values-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-copy" name="copy" specification="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new parameter value for the same parameter as this parameter value, but with copies of the values of this parameter value.
+
+ParameterValue newValue = new ParameterValue();
+
+newValue.parameter = this.parameter;
+
+ValueList values = this.values;
+for (int i = 0; i < values.size(); i++) {
+ Value value = values.getValue(i);
+ newValue.values.addValue(value.copy());
+}
+
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-copy.1" name="copy" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution" name="OpaqueBehaviorExecution" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution">
+ <body>An opaque execution is an execution for an opaque behavior. 
+Opaque behaviors are used to define primitive behaviors.
+The actual definition of the primitive behavior should be given in a concrete subclass of OpaqueBehaviorExecution.
+</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-_generalization.0" general="Semantics-CommonBehaviors-BasicBehaviors-Execution"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-execute" name="execute" specification="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-execute.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Execute the body of the opaque behavior.
+
+Debug.println("[execute] Opaque behavior " + this.getBehavior().name + "...");
+
+ParameterList parameters = this.getBehavior().ownedParameter;
+
+ParameterValueList inputs = new ParameterValueList();
+ParameterValueList outputs = new ParameterValueList();
+
+for (int i = 0; i < parameters.size(); i++) {
+ Parameter parameter = parameters.getValue(i);
+
+ if ((parameter.direction == ParameterDirectionKind.in) |
+ (parameter.direction == ParameterDirectionKind.inout)) {
+ inputs.addValue(this.getParameterValue(parameter));
+ }
+
+ if ((parameter.direction == ParameterDirectionKind.inout) |
+ (parameter.direction == ParameterDirectionKind.out) |
+ (parameter.direction == ParameterDirectionKind.return_)) {
+ ParameterValue parameterValue = new ParameterValue();
+ parameterValue.parameter = parameter;
+ this.setParameterValue(parameterValue);
+ outputs.addValue(parameterValue);
+ }
+}
+
+this.doBody(inputs, outputs);
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-execute.1" name="execute" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-execute"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody" name="doBody" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody">
+ <body>The actual definition of the behavior of an Opaque Behavior should be given in a concrete subclass that defines this operation.
+The values of the inputParameters are set when the operation is called.
+The values of the outputParmeters should be set during the execution of the operation.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody-inputParameters" name="inputParameters" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody-inputParameters-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody-inputParameters-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody-outputParameters" name="outputParameters" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody-outputParameters-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution-doBody-outputParameters-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution" name="Execution" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-Execution">
+ <body>An execution is used to execute a specific behavior. Since a behavior is a kind of class, an execution is an object with the behavior as its type.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.Loci.*;
+
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-_generalization.0" general="Semantics-Classes-Kernel-Object"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-context" name="context" visibility="public" type="Semantics-Classes-Kernel-Object" association="Semantics-CommonBehaviors-BasicBehaviors-A_context_execution">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-context-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-Execution-context">
+ <body>The object that provides the context for this execution. 
+The type of the context of the execution must be the context of the type (behavior) of the execution.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-parameterValues" name="parameterValues" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" aggregation="composite" association="Semantics-CommonBehaviors-BasicBehaviors-A_parameterValues_execution">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-parameterValues-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-Execution-parameterValues">
+ <body>The parameterValues for this execution. All parameterValues must have a parameter that is a parameter of the type of this execution.
+The values of all input (in and in-out) parameters must be set before the execution is executed.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-parameterValues-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-parameterValues-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-terminate" name="terminate" specification="Semantics-CommonBehaviors-BasicBehaviors-Execution-terminate.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Terminate an ongoing execution. By default, do nothing.
+
+return;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-copy" name="copy" specification="Semantics-CommonBehaviors-BasicBehaviors-Execution-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new execution that has the same behavior and parameterValues as this execution.
+
+// Debug.println("[Copy] execution = " + this);
+
+Execution newValue = (Execution)(super.copy());
+
+newValue.context = this.context;
+
+ParameterValueList parameterValues = this.parameterValues;
+for (int i = 0; i < parameterValues.size(); i++) {
+ ParameterValue parameterValue = parameterValues.getValue(i);
+ newValue.parameterValues.addValue(parameterValue.copy());
+}
+
+// Debug.println("[Copy] Done.");
+
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-setParameterValue" name="setParameterValue" specification="Semantics-CommonBehaviors-BasicBehaviors-Execution-setParameterValue.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-setParameterValue-parameterValue" name="parameterValue" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue"/>
+ <language>Java</language>
+ <body>// Set the given parameter value for this execution.
+// If a parameter value already existed for the parameter of the given parameter value, then replace its value.
+
+// Debug.println("[setParameterValue] parameter = " + parameterValue.parameter.name + " with " + parameterValue.values.size() + " values");
+
+ParameterValue existingParameterValue = this.getParameterValue(parameterValue.parameter);
+
+if (existingParameterValue == null) {
+ this.parameterValues.addValue(parameterValue);
+}
+else {
+ existingParameterValue.values = parameterValue.values;
+}
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue" name="getParameterValue" specification="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue-parameter" name="parameter" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the parameter value of this execution corresponding to the given parameter (if any).
+
+ParameterValue parameterValue = null;
+int i = 1;
+while (parameterValue == null & i <= this.parameterValues.size()) {
+ if (this.parameterValues.getValue(i-1).parameter == parameter) {
+ parameterValue = this.parameterValues.getValue(i-1);
+ }
+ i = i + 1;
+}
+
+return parameterValue;
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues" name="getOutputParameterValues" specification="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the parameter values for output (in-out, out and return) parameters.
+
+ParameterValueList outputs = new ParameterValueList();
+ParameterValueList parameterValues = this.parameterValues;
+for (int i = 0; i < parameterValues.size(); i++) {
+ ParameterValue parameterValue = parameterValues.getValue(i);
+ Parameter parameter = parameterValue.parameter;
+ if ((parameter.direction == ParameterDirectionKind.inout) |
+ (parameter.direction == ParameterDirectionKind.out) |
+ (parameter.direction == ParameterDirectionKind.return_)) {
+ outputs.addValue(parameterValue);
+ }
+}
+
+return outputs;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getBehavior" name="getBehavior" specification="Semantics-CommonBehaviors-BasicBehaviors-Execution-getBehavior.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getBehavior-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the behavior that is the type of this execution.
+
+return (Behavior)(this.getTypes().getValue(0));</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-execute" name="execute" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-execute-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-Execution-execute">
+ <body>Execute the behavior given by the type of this execution. 
+The parameterValues for any input (in or in-out) parameters of the behavior should be set before the execution.
+The parameteValues for any output (in-out, out or return) parameters of the behavior will be set by the execution.
+</body>
+ </ownedComment>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-terminate.1" name="terminate" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-Execution-terminate"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-copy.1" name="copy" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-Execution-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-new_" name="new_" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-new_-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-BasicBehaviors-Execution-new_">
+ <body>Create a new execution with no behavior or parameterValues.
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-setParameterValue.1" name="setParameterValue" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-Execution-setParameterValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-setParameterValue.1-parameterValue" name="parameterValue" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue.1" name="getParameterValue" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getParameterValue.1-parameter" name="parameter" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Parameter"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues.1" name="getOutputParameterValues" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getOutputParameterValues.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getBehavior.1" name="getBehavior" visibility="public" method="Semantics-CommonBehaviors-BasicBehaviors-Execution-getBehavior">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-Execution-getBehavior.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_context_execution" name="A_context_execution" visibility="private" memberEnd="Semantics-CommonBehaviors-BasicBehaviors-A_context_execution-_ownedEnd.0 Semantics-CommonBehaviors-BasicBehaviors-Execution-context">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_context_execution-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" association="Semantics-CommonBehaviors-BasicBehaviors-A_context_execution">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_context_execution-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_context_execution-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_parameterValues_execution" name="A_parameterValues_execution" visibility="private" memberEnd="Semantics-CommonBehaviors-BasicBehaviors-A_parameterValues_execution-_ownedEnd.0 Semantics-CommonBehaviors-BasicBehaviors-Execution-parameterValues">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_parameterValues_execution-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" association="Semantics-CommonBehaviors-BasicBehaviors-A_parameterValues_execution"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_parameter_parameterValue" name="A_parameter_parameterValue" visibility="private" memberEnd="Semantics-CommonBehaviors-BasicBehaviors-A_parameter_parameterValue-_ownedEnd.0 Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-parameter">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_parameter_parameterValue-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" association="Semantics-CommonBehaviors-BasicBehaviors-A_parameter_parameterValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_parameter_parameterValue-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_parameter_parameterValue-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_values_parameterValue" name="A_values_parameterValue" visibility="private" memberEnd="Semantics-CommonBehaviors-BasicBehaviors-A_values_parameterValue-_ownedEnd.0 Semantics-CommonBehaviors-BasicBehaviors-ParameterValue-values">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_values_parameterValue-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" association="Semantics-CommonBehaviors-BasicBehaviors-A_values_parameterValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-BasicBehaviors-A_values_parameterValue-_ownedEnd.0-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-CommonBehaviors-Communications" name="Communications">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-CommonBehaviors-Communications-_packageImport.0" importedPackage="Semantics-CommonBehaviors-BasicBehaviors"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter" name="EventAccepter" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-EventAccepter">
+ <body>An event accepter handles signal reception events.
+This is an abstract class intended to provide a common interface for different kinds of event accepters.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-accept" name="accept" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-accept-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-EventAccepter-accept">
+ <body>Accept a signal occurance for the given signal instance.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-accept-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-match" name="match" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-match-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-EventAccepter-match">
+ <body>Determine if the given signal instance matches a trigger of this event accepter.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-match-signalInstance" name="signalInstance" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-EventAccepter-match-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution" name="ClassifierBehaviorExecution" classifierBehavior="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity" isActive="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution">
+ <body>A classifier behavior execution executes the classifier behavior from a specific active class. </body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execution" name="execution" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" association="Semantics-CommonBehaviors-Communications-A_execution_classifierBehaviorExecution">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execution-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execution">
+ <body>The execution of the associated classifier behavior for a certain object.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-classifier" name="classifier" visibility="public" association="Semantics-CommonBehaviors-Communications-A_classifier_classifierBehaviorExecution">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-classifier-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-classifier">
+ <body>The classifier whose behavior is being executed. (This must be an active class.)</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-objectActivation" name="objectActivation" visibility="public" type="Semantics-CommonBehaviors-Communications-ObjectActivation" association="Semantics-CommonBehaviors-Communications-A_classifierBehaviorExecutions_objectActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-objectActivation-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-objectActivation">
+ <body>The object activation that owns this classifier behavior execution.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-objectActivation-_lowerValue"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:Activity" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity" name="ClassifierBehaviorExecutionActivity" isReentrant="false">
+ <ownedBehavior xmi:type="uml:Activity" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-OwnedBehaviorActivity1" name="OwnedBehaviorActivity1" isReentrant="false"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.0" visibility="public" target="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-ReadSelf" source="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_node.3">
+ <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.0-_guard">
+ <body></body>
+ </guard>
+ <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.0-_weight" value="1"/>
+ </edge>
+ <edge xmi:type="uml:ControlFlow" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.1" visibility="public" target="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_node.1" source="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Call20execute">
+ <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.1-_guard">
+ <body></body>
+ </guard>
+ <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.1-_weight" value="1"/>
+ </edge>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.2" visibility="public" target="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Read20execution-_object" source="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-ReadSelf-_result">
+ <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.2-_guard">
+ <body></body>
+ </guard>
+ <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.2-_weight" value="1"/>
+ </edge>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.3" visibility="public" target="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Call20execute-_target" source="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Read20execution-_result">
+ <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.3-_guard">
+ <language>Java</language>
+ <body></body>
+ </guard>
+ <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.3-_weight" value="1"/>
+ </edge>
+ <node xmi:type="uml:CallOperationAction" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Call20execute" name="Call execute" visibility="public" outgoing="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.1" operation="Semantics-CommonBehaviors-BasicBehaviors-Execution-execute">
+ <target xmi:type="uml:InputPin" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Call20execute-_target" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.3" type="Semantics-CommonBehaviors-BasicBehaviors-Execution">
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Call20execute-_target-_upperBound" value="1024"/>
+ </target>
+ </node>
+ <node xmi:type="uml:ActivityFinalNode" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_node.1" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.1"/>
+ <node xmi:type="uml:ReadSelfAction" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-ReadSelf" name="ReadSelf" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.0">
+ <result xmi:type="uml:OutputPin" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-ReadSelf-_result" visibility="public" outgoing="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.2" type="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution"/>
+ </node>
+ <node xmi:type="uml:InitialNode" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_node.3" visibility="public" outgoing="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.0"/>
+ <node xmi:type="uml:ReadStructuralFeatureAction" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Read20execution" name="Read execution" visibility="public" structuralFeature="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execution">
+ <object xmi:type="uml:InputPin" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Read20execution-_object" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.2">
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Read20execution-_object-_upperBound" value="1"/>
+ </object>
+ <result xmi:type="uml:OutputPin" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Read20execution-_result" visibility="public" outgoing="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-_edge.3">
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-ClassifierBehaviorExecutionActivity-Read20execution-_result-_upperBound" value="1"/>
+ </result>
+ </node>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute" name="execute" specification="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute-classifier" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute-inputs-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute-inputs-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Set the classifier for this classifier behavior execution to the given class.
+// If the given class is a behavior, set the execution to be the object of the object activation of the classifier behavior execution.
+// Otherwise the class must be an active class, so get an execution object for the classifier behavior for the class.
+// Set the input parameters for the execution to the given values.
+// Then start the active behavior of this ClassifierBehaviorExecution object, which will execute the execution object on a separate thread of control.
+
+// Debug.println("[execute] Executing behavior for " + classifier.name + "...");
+
+this.classifier = classifier;
+Object_ object = this.objectActivation.object;
+
+if (classifier instanceof Behavior) {
+ this.execution = (Execution)object;
+} else {
+ this.execution = object.locus.factory.createExecution(classifier.classifierBehavior, object);
+}
+
+if (inputs != null) {
+ for (int i = 0; i < inputs.size(); i++) {
+ ParameterValue input = inputs.getValue(i);
+ this.execution.setParameterValue(input);
+ }
+}
+
+_startObjectBehavior();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-terminate" name="terminate" specification="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-terminate.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Terminate the associated execution.
+// If the execution is not itself the object of the object activation, then destroy it.
+
+//Debug.println("[terminate] Terminating behavior for " + classifier.name + "...");
+
+this.execution.terminate();
+
+if (this.execution != this.objectActivation.object) {
+ this.execution.destroy();
+}
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute.1" name="execute" visibility="public" method="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute.1-classifier" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute.1-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute.1-inputs-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execute.1-inputs-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-terminate.1" name="terminate" visibility="public" method="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-terminate"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Signal" xmi:id="Semantics-CommonBehaviors-Communications-ArrivalSignal" name="ArrivalSignal" visibility="private"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance" name="SignalInstance">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-_ownedComment.0">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Loci.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-_generalization.0" general="Semantics-Classes-Kernel-CompoundValue"/>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-type" name="type" visibility="public" association="Semantics-CommonBehaviors-Communications-A_type_signalInstance">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Signal"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes" name="getTypes" specification="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the single type of this signal instance.
+
+ClassifierList types = new ClassifierList();
+
+types.addValue(this.type);
+
+return types;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-new_" name="new_" specification="Semantics-CommonBehaviors-Communications-SignalInstance-new_.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-new_-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new signal instance with no type or feature values.
+
+return new SignalInstance();</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-copy" name="copy" specification="Semantics-CommonBehaviors-Communications-SignalInstance-copy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-copy-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <language>Java</language>
+ <body>// Create a new signal instance with the same type and feature values as this signal instance.
+
+SignalInstance newValue = (SignalInstance)(super.copy());
+
+newValue.type = this.type;
+
+return newValue;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:Activity" xmi:id="_HQzZIGDnEeOv67MuWcLvIw" name="signalInstance_constructor" specification="_xXvbIGDmEeOv67MuWcLvIw" node="_17dBcGDnEeOm3qeg9F4VEw _17dBcWDnEeOm3qeg9F4VEw _19khUGDnEeOm3qeg9F4VEw" group="_19khUGDnEeOm3qeg9F4VEw">
+ <ownedComment xmi:type="uml:Comment" xmi:id="_1_fM4GDnEeOm3qeg9F4VEw">
+ <body>/* Generated textual representation of Activity fUML::Semantics::CommonBehaviors::Communications::SignalInstance::signalInstance_constructor */
+
+namespace fUML::Semantics::CommonBehaviors::Communications::SignalInstance ;
+
+activity SignalInstance(): SignalInstance {
+ return this;
+}</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_LGKhIGDnEeOv67MuWcLvIw" name="returnResult" type="Semantics-CommonBehaviors-Communications-SignalInstance" direction="return"/>
+ <edge xmi:type="uml:ControlFlow" xmi:id="_1_B54GDnEeOm3qeg9F4VEw" target="_17dBcWDnEeOm3qeg9F4VEw" source="_19khUWDnEeOm3qeg9F4VEw"/>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_1_B54WDnEeOm3qeg9F4VEw" target="_17dBcGDnEeOm3qeg9F4VEw" source="_19khVmDnEeOm3qeg9F4VEw"/>
+ <structuredNode xmi:type="uml:StructuredActivityNode" xmi:id="_19khUGDnEeOm3qeg9F4VEw" name="Body(SignalInstance)">
+ <node xmi:type="uml:StructuredActivityNode" xmi:id="_19khUWDnEeOm3qeg9F4VEw" name="ReturnStatement@67c2bb9e" outgoing="_1_B54GDnEeOm3qeg9F4VEw">
+ <edge xmi:type="uml:ObjectFlow" xmi:id="_19khWWDnEeOm3qeg9F4VEw" target="_19khVmDnEeOm3qeg9F4VEw" source="_19khU2DnEeOm3qeg9F4VEw"/>
+ <structuredNodeOutput xmi:type="uml:OutputPin" xmi:id="_19khVmDnEeOm3qeg9F4VEw" name="ReturnStatement@67c2bb9e.output" incoming="_19khWWDnEeOm3qeg9F4VEw" outgoing="_1_B54WDnEeOm3qeg9F4VEw" type="Semantics-CommonBehaviors-Communications-SignalInstance" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_19khV2DnEeOm3qeg9F4VEw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_19khWGDnEeOm3qeg9F4VEw" value="1"/>
+ </structuredNodeOutput>
+ <node xmi:type="uml:ReadSelfAction" xmi:id="_19khUmDnEeOm3qeg9F4VEw" name="ReadSelf">
+ <result xmi:type="uml:OutputPin" xmi:id="_19khU2DnEeOm3qeg9F4VEw" name="ReadSelf.result" outgoing="_19khWWDnEeOm3qeg9F4VEw" type="Semantics-CommonBehaviors-Communications-SignalInstance" isOrdered="true" isUnique="false">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_19khVGDnEeOm3qeg9F4VEw" value="1"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_19khVWDnEeOm3qeg9F4VEw" value="1"/>
+ </result>
+ </node>
+ </node>
+ </structuredNode>
+ <node xmi:type="uml:ActivityParameterNode" xmi:id="_17dBcGDnEeOm3qeg9F4VEw" name="Return" incoming="_1_B54WDnEeOm3qeg9F4VEw" parameter="_LGKhIGDnEeOv67MuWcLvIw"/>
+ <node xmi:type="uml:ActivityFinalNode" xmi:id="_17dBcWDnEeOm3qeg9F4VEw" name="Final" incoming="_1_B54GDnEeOm3qeg9F4VEw"/>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes.1" name="getTypes" visibility="public" method="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-getTypes.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-new_.1" name="new_" visibility="public" method="Semantics-CommonBehaviors-Communications-SignalInstance-new_">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-new_.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-copy.1" name="copy" visibility="public" method="Semantics-CommonBehaviors-Communications-SignalInstance-copy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-SignalInstance-copy.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="_xXvbIGDmEeOv67MuWcLvIw" name="SignalInstance" method="_HQzZIGDnEeOv67MuWcLvIw">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="_ELcKsGDnEeOv67MuWcLvIw" name="returnResult" type="Semantics-CommonBehaviors-Communications-SignalInstance" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation" name="ObjectActivation" classifierBehavior="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop" isActive="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ObjectActivation">
+ <body>An object activation handles the active behavior of an active object.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-_ownedComment.1">
+ <body>import java.util.Iterator;
+
+import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+import fUML.Syntax.CommonBehaviors.Communications.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+import fUML.Semantics.Loci.LociL1.*;
+</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-classifierBehaviorExecutions" name="classifierBehaviorExecutions" visibility="public" type="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution" aggregation="composite" association="Semantics-CommonBehaviors-Communications-A_classifierBehaviorExecutions_objectActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-classifierBehaviorExecutions-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ObjectActivation-classifierBehaviorExecutions">
+ <body>The executing classifier behaviors for this object activation.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-classifierBehaviorExecutions-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-classifierBehaviorExecutions-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-waitingEventAccepters" name="waitingEventAccepters" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter" association="Semantics-CommonBehaviors-Communications-A_waitingEventAcceptors_objectActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-waitingEventAccepters-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ObjectActivation-waitingEventAccepters">
+ <body>The set of event accepters waiting for signals to be received by the object of this object activation.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-waitingEventAccepters-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-waitingEventAccepters-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-eventPool" name="eventPool" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance" isOrdered="true" aggregation="composite" association="Semantics-CommonBehaviors-Communications-A_eventPool_objectActivation">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-eventPool-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ObjectActivation-eventPool">
+ <body>The pool of signals sent to the object of this object activation, pending dispatching as events.
+(All the data values in the pool must be signal instances -- that is, they must have a single type that is a signal.)</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-eventPool-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-eventPool-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-object" name="object" visibility="public" type="Semantics-Classes-Kernel-Object" association="Semantics-Classes-Kernel-A_objectActivation_object">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-object-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-ObjectActivation-object">
+ <body>The object whose active behavior is being handled by this active object.</body>
+ </ownedComment>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:Activity" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop" name="EventDispatchLoop" isReentrant="false">
+ <edge xmi:type="uml:ControlFlow" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.0" visibility="public" target="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_node.4" source="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Call20dispatchNextEvent">
+ <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.0-_guard"/>
+ <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.0-_weight" value="1"/>
+ </edge>
+ <edge xmi:type="uml:ObjectFlow" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.1" visibility="public" target="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Call20dispatchNextEvent-_target" source="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-ReadSelf-_result">
+ <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.1-_guard">
+ <body></body>
+ </guard>
+ <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.1-_weight" value="1"/>
+ </edge>
+ <edge xmi:type="uml:ControlFlow" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.2" visibility="public" target="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-ReadSelf" source="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Accept20ArrivalSignal">
+ <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.2-_guard">
+ <body></body>
+ </guard>
+ <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.2-_weight" value="1"/>
+ </edge>
+ <edge xmi:type="uml:ControlFlow" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.3" visibility="public" target="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_node.4" source="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_node.0">
+ <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.3-_guard">
+ <body></body>
+ </guard>
+ <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.3-_weight" value="1"/>
+ </edge>
+ <edge xmi:type="uml:ControlFlow" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.4" visibility="public" target="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Accept20ArrivalSignal" source="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_node.4">
+ <guard xmi:type="uml:OpaqueExpression" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.4-_guard">
+ <body></body>
+ </guard>
+ <weight xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.4-_weight" value="1"/>
+ </edge>
+ <node xmi:type="uml:InitialNode" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_node.0" visibility="public" outgoing="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.3"/>
+ <node xmi:type="uml:CallOperationAction" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Call20dispatchNextEvent" name="Call dispatchNextEvent" visibility="public" outgoing="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.0" operation="Semantics-CommonBehaviors-Communications-ObjectActivation-dispatchNextEvent.1">
+ <target xmi:type="uml:InputPin" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Call20dispatchNextEvent-_target" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.1" type="Semantics-CommonBehaviors-Communications-ObjectActivation">
+ <upperBound xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Call20dispatchNextEvent-_target-_upperBound" value="1024"/>
+ </target>
+ </node>
+ <node xmi:type="uml:ReadSelfAction" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-ReadSelf" name="ReadSelf" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.2">
+ <result xmi:type="uml:OutputPin" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-ReadSelf-_result" visibility="public" outgoing="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.1" type="Semantics-CommonBehaviors-Communications-ObjectActivation"/>
+ </node>
+ <node xmi:type="uml:AcceptEventAction" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Accept20ArrivalSignal" name="Accept ArrivalSignal" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.4" outgoing="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.2">
+ <trigger xmi:type="uml:Trigger" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-Accept20ArrivalSignal-_trigger.0" visibility="public" event="Semantics-CommonBehaviors-Communications-ArrivalSignalEvent"/>
+ </node>
+ <node xmi:type="uml:MergeNode" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_node.4" visibility="public" incoming="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.3 Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.0" outgoing="Semantics-CommonBehaviors-Communications-ObjectActivation-EventDispatchLoop-_edge.4"/>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-stop" name="stop" specification="Semantics-CommonBehaviors-Communications-ObjectActivation-stop.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Stop this object activation by terminating all classifier behavior executions.
+
+ClassifierBehaviorExecutionList classifierBehaviorExecutions = this.classifierBehaviorExecutions;
+for (int i = 0; i < classifierBehaviorExecutions.size(); i++) {
+ ClassifierBehaviorExecution classifierBehaviorExecution = classifierBehaviorExecutions.getValue(i);
+ classifierBehaviorExecution.terminate();
+}
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-register" name="register" specification="Semantics-CommonBehaviors-Communications-ObjectActivation-register.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-register-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
+ <language>Java</language>
+ <body>// Register the given event accepter to wait for a dispatched signal event.
+
+Debug.println("[register] object = " + this.object);
+Debug.println("[register] accepter = " + accepter);
+
+this.waitingEventAccepters.addValue(accepter);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-unregister" name="unregister" specification="Semantics-CommonBehaviors-Communications-ObjectActivation-unregister.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-unregister-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
+ <language>Java</language>
+ <body>// Remove the given event accepter for the list of waiting event accepters.
+
+Debug.println("[unregister] object = " + this.object);
+Debug.println("[unregister] accepter = " + accepter);
+
+boolean notFound = true;
+int i = 1;
+while (notFound & i <= this.waitingEventAccepters.size()) {
+ if (this.waitingEventAccepters.getValue(i-1) == accepter) {
+ this.waitingEventAccepters.remove(i-1);
+ notFound = false;
+ }
+ i = i + 1;
+}
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-dispatchNextEvent" name="dispatchNextEvent" specification="Semantics-CommonBehaviors-Communications-ObjectActivation-dispatchNextEvent.1" isReentrant="false">
+ <language>Java</language>
+ <body>// Get the next signal instance out of the event pool.
+// If there is one or more waiting event accepters with triggers that match the signal instance, then dispatch it to exactly one of those waiting accepters.
+
+if (this.eventPool.size() > 0) {
+ SignalInstance signalInstance = this.getNextEvent();
+
+ Debug.println("[dispatchNextEvent] signalInstance = " + signalInstance);
+
+ intList matchingEventAccepterIndexes = new intList();
+ EventAccepterList waitingEventAccepters = this.waitingEventAccepters;
+ for (int i = 0; i < waitingEventAccepters.size(); i++) {
+ EventAccepter eventAccepter = waitingEventAccepters.getValue(i);
+ if (eventAccepter.match(signalInstance)) {
+ matchingEventAccepterIndexes.addValue(i);
+ }
+ }
+
+ if (matchingEventAccepterIndexes.size() > 0) {
+ // *** Choose one matching event accepter non-deterministically. ***
+ int j = ((ChoiceStrategy)this.object.locus.factory.getStrategy("choice")).choose(matchingEventAccepterIndexes.size());
+ EventAccepter selectedEventAccepter = this.waitingEventAccepters.getValue(matchingEventAccepterIndexes.getValue(j-1));
+ this.waitingEventAccepters.removeValue(j-1);
+ selectedEventAccepter.accept(signalInstance);
+ }
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-getNextEvent" name="getNextEvent" specification="Semantics-CommonBehaviors-Communications-ObjectActivation-getNextEvent.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-getNextEvent-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance" direction="return"/>
+ <language>Java</language>
+ <body>// Get the next event from the event pool, using a get next event strategy.
+
+return ((GetNextEventStrategy)this.object.locus.factory.getStrategy("getNextEvent")).getNextEvent(this);
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-stop.1" name="stop" visibility="public" method="Semantics-CommonBehaviors-Communications-ObjectActivation-stop"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-register.1" name="register" visibility="public" method="Semantics-CommonBehaviors-Communications-ObjectActivation-register">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-register.1-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-unregister.1" name="unregister" visibility="public" method="Semantics-CommonBehaviors-Communications-ObjectActivation-unregister">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-unregister.1-accepter" name="accepter" visibility="public" type="Semantics-CommonBehaviors-Communications-EventAccepter"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-dispatchNextEvent.1" name="dispatchNextEvent" visibility="public" method="Semantics-CommonBehaviors-Communications-ObjectActivation-dispatchNextEvent"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-getNextEvent.1" name="getNextEvent" visibility="public" method="Semantics-CommonBehaviors-Communications-ObjectActivation-getNextEvent">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-getNextEvent.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance" direction="return"/>
+ </ownedOperation>
+ <ownedReception xmi:type="uml:Reception" xmi:id="Semantics-CommonBehaviors-Communications-ObjectActivation-_ownedReception.0" visibility="public" signal="Semantics-CommonBehaviors-Communications-ArrivalSignal"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-Communications-A_classifierBehaviorExecutions_objectActivation" name="A_classifierBehaviorExecutions_objectActivation" visibility="private" memberEnd="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-objectActivation Semantics-CommonBehaviors-Communications-ObjectActivation-classifierBehaviorExecutions"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-Communications-A_waitingEventAcceptors_objectActivation" name="A_waitingEventAcceptors_objectActivation" visibility="private" memberEnd="Semantics-CommonBehaviors-Communications-A_waitingEventAcceptors_objectActivation-_ownedEnd.0 Semantics-CommonBehaviors-Communications-ObjectActivation-waitingEventAccepters">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-A_waitingEventAcceptors_objectActivation-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-Communications-ObjectActivation" association="Semantics-CommonBehaviors-Communications-A_waitingEventAcceptors_objectActivation">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-A_waitingEventAcceptors_objectActivation-_ownedEnd.0-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-Communications-A_eventPool_objectActivation" name="A_eventPool_objectActivation" visibility="private" memberEnd="Semantics-CommonBehaviors-Communications-A_eventPool_objectActivation-_ownedEnd.0 Semantics-CommonBehaviors-Communications-ObjectActivation-eventPool">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-A_eventPool_objectActivation-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-Communications-ObjectActivation" association="Semantics-CommonBehaviors-Communications-A_eventPool_objectActivation">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-A_eventPool_objectActivation-_ownedEnd.0-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-Communications-A_type_signalInstance" name="A_type_signalInstance" visibility="private" memberEnd="Semantics-CommonBehaviors-Communications-A_type_signalInstance-_ownedEnd.0 Semantics-CommonBehaviors-Communications-SignalInstance-type">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-A_type_signalInstance-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-Communications-SignalInstance" association="Semantics-CommonBehaviors-Communications-A_type_signalInstance">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-A_type_signalInstance-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-A_type_signalInstance-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-Communications-A_classifier_classifierBehaviorExecution" name="A_classifier_classifierBehaviorExecution" visibility="private" memberEnd="Semantics-CommonBehaviors-Communications-A_classifier_classifierBehaviorExecution-_ownedEnd.0 Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-classifier">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-A_classifier_classifierBehaviorExecution-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution" association="Semantics-CommonBehaviors-Communications-A_classifier_classifierBehaviorExecution">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-A_classifier_classifierBehaviorExecution-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-CommonBehaviors-Communications-A_classifier_classifierBehaviorExecution-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-CommonBehaviors-Communications-A_execution_classifierBehaviorExecution" name="A_execution_classifierBehaviorExecution" visibility="private" memberEnd="Semantics-CommonBehaviors-Communications-A_execution_classifierBehaviorExecution-_ownedEnd.0 Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution-execution">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-CommonBehaviors-Communications-A_execution_classifierBehaviorExecution-_ownedEnd.0" visibility="private" type="Semantics-CommonBehaviors-Communications-ClassifierBehaviorExecution" association="Semantics-CommonBehaviors-Communications-A_execution_classifierBehaviorExecution">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-CommonBehaviors-Communications-A_execution_classifierBehaviorExecution-_ownedEnd.0-_lowerValue"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:SignalEvent" xmi:id="Semantics-CommonBehaviors-Communications-ArrivalSignalEvent" name="ArrivalSignalEvent" signal="Semantics-CommonBehaviors-Communications-ArrivalSignal"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy" name="GetNextEventStrategy" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-GetNextEventStrategy">
+ <body>A get next event strategy is a semantic strategy that determines the order in which signal instances are retrieved from the event pool of an object activation.</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-_generalization.0" general="Semantics-Loci-LociL1-SemanticStrategy"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getName" name="getName" specification="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getName.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getName-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get next event strategies are always named "getNextEvent".
+
+return "getNextEvent";
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getName.1" name="getName" visibility="public" method="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getName">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getName.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getNextEvent" name="getNextEvent" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getNextEvent-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getNextEvent">
+ <body>Get the next event from the event pool of the given object activation. The event is removed from the pool.
+</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getNextEvent-objectActivation" name="objectActivation" visibility="public" type="Semantics-CommonBehaviors-Communications-ObjectActivation"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-GetNextEventStrategy-getNextEvent-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy" name="FIFOGetNextEventStrategy">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-_ownedComment.0" annotatedElement="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy">
+ <body>A FIFO get next event strategy gets events in first-in first-out order.</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-_generalization.0" general="Semantics-CommonBehaviors-Communications-GetNextEventStrategy"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent" name="getNextEvent" specification="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent-objectActivation" name="objectActivation" visibility="public" type="Semantics-CommonBehaviors-Communications-ObjectActivation"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance" direction="return"/>
+ <language>Java</language>
+ <body>// Get the first event from the given event pool. The event is removed from the pool.
+
+SignalInstance signalInstance = objectActivation.eventPool.getValue(0);
+objectActivation.eventPool.removeValue(0);
+return signalInstance;</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent.1" name="getNextEvent" visibility="public" method="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent.1-objectActivation" name="objectActivation" visibility="public" type="Semantics-CommonBehaviors-Communications-ObjectActivation"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-CommonBehaviors-Communications-FIFOGetNextEventStrategy-getNextEvent.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-CommonBehaviors-Communications-SignalInstance" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Loci" name="Loci">
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Loci-LociL1" name="LociL1">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL1-_packageImport.2" importedPackage="Semantics-Classes-Kernel"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy" name="ChoiceStrategy" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ChoiceStrategy">
+ <body>A choice strategy is used to represent the behavior of making an arbitrary non-deterministic choice.
+A valid execution may use ANY choice strategy for choosing one element from a given set.</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-_generalization.0" general="Semantics-Loci-LociL1-SemanticStrategy"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-getName" name="getName" specification="Semantics-Loci-LociL1-ChoiceStrategy-getName.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-getName-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// The name of a choice strategy is always "choice".
+
+return "choice";
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-getName.1" name="getName" visibility="public" method="Semantics-Loci-LociL1-ChoiceStrategy-getName">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-getName.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-choose" name="choose" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-choose-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ChoiceStrategy-choose">
+ <body>Choose an integer from 1 to the given size.
+[The size must be greater than 0.]</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-choose-size" name="size" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ChoiceStrategy-choose-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-ExecutionFactory" name="ExecutionFactory" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory">
+ <body> An execution factory is used to create objects that represent the execution of a behavior, the evaluation of a value specification or the activation of an activity node.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-locus" name="locus" visibility="public" type="Semantics-Loci-LociL1-Locus" association="Semantics-Loci-LociL1-A_factory_locus">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-locus-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory-locus">
+ <body>The locus at which this factory resides.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-locus-_lowerValue"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-primitiveBehaviorPrototypes" name="primitiveBehaviorPrototypes" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution" association="Semantics-Loci-LociL1-A_primitiveBehaviorPrototypes_executionFactory">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-primitiveBehaviorPrototypes-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory-primitiveBehaviorPrototypes">
+ <body>The set of opaque behavior executions to be used to execute the primitive behaviors known to the factory.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-primitiveBehaviorPrototypes-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-primitiveBehaviorPrototypes-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-builtInTypes" name="builtInTypes" visibility="public" association="Semantics-Loci-LociL1-A_builtInTypes_executionFactory">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-builtInTypes-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory-builtInTypes">
+ <body>The set of primitive types that have corresponding literal value specifications.
+Must include Integer, Boolean, String and UnlimitedNatural.</body>
+ </ownedComment>
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-builtInTypes-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-builtInTypes-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-strategies" name="strategies" visibility="public" type="Semantics-Loci-LociL1-SemanticStrategy" association="Semantics-Loci-LociL1-A_strategies_executionFactory">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-strategies-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory-strategies">
+ <body>The set of semantic strategies currently registered with this execution factory.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-strategies-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-strategies-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution" name="createExecution" specification="Semantics-Loci-LociL1-ExecutionFactory-createExecution.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution-behavior" name="behavior" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution-context" name="context" visibility="public" type="Semantics-Classes-Kernel-Object">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution-context-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Create an execution object for a given behavior.
+// The execution will take place at the locus of the factory in the given context.
+// If the context is empty, the execution is assumed to provide its own context.
+
+Execution execution;
+
+if (behavior instanceof OpaqueBehavior) {
+ execution = this.instantiateOpaqueBehaviorExecution((OpaqueBehavior)behavior);
+}
+else {
+ execution = (Execution)this.instantiateVisitor(behavior);
+ execution.types.addValue(behavior);
+ execution.createFeatureValues();
+}
+
+this.locus.add(execution);
+
+if (context == null) {
+ execution.context = execution;
+}
+else {
+ execution.context = context;
+}
+
+return execution;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation" name="createEvaluation" specification="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Evaluation" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation-specification" name="specification" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Create an evaluation object for a given value specification.
+// The evaluation will take place at the locus of the factory.
+
+Evaluation evaluation = (Evaluation)this.instantiateVisitor(specification);
+
+evaluation.specification = specification;
+evaluation.locus = this.locus;
+
+return evaluation;
+
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution" name="instantiateOpaqueBehaviorExecution" specification="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution-behavior" name="behavior" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OpaqueBehavior"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return a copy of the prototype for the primitive behavior execution of the given opaque behavior.
+
+OpaqueBehaviorExecution execution = null;
+int i = 1;
+while (execution == null & i <= this.primitiveBehaviorPrototypes.size()) {
+ // Debug.println("[instantiateOpaqueExecution] Checking " + this.primitiveBehaviorPrototypes.getValue(i).objectId() + "...");
+ OpaqueBehaviorExecution prototype = this.primitiveBehaviorPrototypes.getValue(i-1);
+ if (prototype.getBehavior() == behavior) {
+ execution = (OpaqueBehaviorExecution)(prototype.copy());
+ }
+ i = i + 1;
+}
+
+if (execution == null) {
+ Debug.println("[instantiateOpaqueExecution] No prototype execution found for " + behavior.name + ".");
+}
+
+return execution;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addPrimitiveBehaviorPrototype" name="addPrimitiveBehaviorPrototype" specification="Semantics-Loci-LociL1-ExecutionFactory-addPrimitiveBehaviorPrototype.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addPrimitiveBehaviorPrototype-execution" name="execution" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution"/>
+ <language>Java</language>
+ <body>// Add an opaque behavior execution to use as a prototype for instantiating the corresponding primitive opaque behavior.
+// Precondition: No primitive behavior prototype for the type of the given execution should already exist.
+
+this.primitiveBehaviorPrototypes.addValue(execution);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addBuiltInType" name="addBuiltInType" specification="Semantics-Loci-LociL1-ExecutionFactory-addBuiltInType.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addBuiltInType-type" name="type" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Add the given primitive type as a built-in type.
+// Precondition: No built-in type with the same name should already exist.
+
+this.builtInTypes.addValue(type);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType" name="getBuiltInType" specification="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType-name" name="name" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the built-in type with the given name.
+
+PrimitiveType type = null;
+int i = 1;
+while (type == null & i <= this.builtInTypes.size()) {
+ PrimitiveType primitiveType = this.builtInTypes.getValue(i-1);
+ if (primitiveType.name.equals(name)) {
+ type = primitiveType;
+ }
+ i = i + 1;
+}
+
+return type;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-setStrategy" name="setStrategy" specification="Semantics-Loci-LociL1-ExecutionFactory-setStrategy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-setStrategy-strategy" name="strategy" visibility="public" type="Semantics-Loci-LociL1-SemanticStrategy"/>
+ <language>Java</language>
+ <body>// Set the strategy for a semantic variation point. Any existing strategy for the same SVP is replaced.
+
+int i = this.getStrategyIndex(strategy.getName());
+
+if (i <= this.strategies.size()) {
+ this.strategies.removeValue(i-1);
+}
+
+this.strategies.addValue(strategy);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy" name="getStrategy" specification="Semantics-Loci-LociL1-ExecutionFactory-getStrategy.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy-name" name="name" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Loci-LociL1-SemanticStrategy" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy-OwnedParameter-_lowerValue"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the strategy with the given name.
+
+int i = this.getStrategyIndex(name);
+
+SemanticStrategy strategy = null;
+if (i <= this.strategies.size()) {
+ strategy = this.strategies.getValue(i-1);
+}
+
+return strategy;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex" name="getStrategyIndex" specification="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex-name" name="name" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Get the index of the strategy with the given name.
+// If there is no such strategy, return the size of the strategies list.
+
+SemanticStrategyList strategies = this.strategies;
+
+int i = 1;
+boolean unmatched = true;
+while (unmatched & (i <= strategies.size())) {
+ if (strategies.getValue(i-1).getName().equals(name)) {
+ unmatched = false;
+ } else {
+ i = i + 1;
+ }
+}
+
+return i;
+
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution.1" name="createExecution" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-createExecution">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-Execution" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution.1-behavior" name="behavior" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution.1-context" name="context" visibility="public" type="Semantics-Classes-Kernel-Object">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createExecution.1-context-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation.1" name="createEvaluation" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Evaluation" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-createEvaluation.1-specification" name="specification" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateVisitor" name="instantiateVisitor" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateVisitor-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory-instantiateVisitor">
+ <body>Instantiate a visitor object for the given element.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateVisitor-element" name="element" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateVisitor-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-SemanticVisitor" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution.1" name="instantiateOpaqueBehaviorExecution" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-instantiateOpaqueBehaviorExecution.1-behavior" name="behavior" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#OpaqueBehavior"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addPrimitiveBehaviorPrototype.1" name="addPrimitiveBehaviorPrototype" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-addPrimitiveBehaviorPrototype">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addPrimitiveBehaviorPrototype.1-execution" name="execution" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-OpaqueBehaviorExecution"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addBuiltInType.1" name="addBuiltInType" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-addBuiltInType">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-addBuiltInType.1-type" name="type" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType.1" name="getBuiltInType" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#PrimitiveType"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType.1-ReturnResult-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getBuiltInType.1-name" name="name" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-setStrategy.1" name="setStrategy" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-setStrategy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-setStrategy.1-strategy" name="strategy" visibility="public" type="Semantics-Loci-LociL1-SemanticStrategy"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy.1" name="getStrategy" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-getStrategy">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy.1-name" name="name" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy.1-OwnedParameter" name="OwnedParameter" visibility="public" type="Semantics-Loci-LociL1-SemanticStrategy" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategy.1-OwnedParameter-_lowerValue"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex.1" name="getStrategyIndex" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex.1-name" name="name" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactory-getStrategyIndex.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-Executor" name="Executor">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Executor-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-Executor">
+ <body>An executor is used to execute behaviors and evaluation value specifications.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Executor-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+
+</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-Executor-locus" name="locus" visibility="public" type="Semantics-Loci-LociL1-Locus" association="Semantics-Loci-LociL1-A_executor_locus">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Executor-locus-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-Executor-locus">
+ <body>The locus at which this executor resides.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-locus-_lowerValue"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Executor-execute" name="execute" specification="Semantics-Loci-LociL1-Executor-execute.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute-behavior" name="behavior" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute-context" name="context" visibility="public" type="Semantics-Classes-Kernel-Object">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-execute-context-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-execute-inputs-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Executor-execute-inputs-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-execute-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Executor-execute-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Execute the given behavior with the given input values in the given context, producing the given output values.
+// There must be one input parameter value for each input (in or in-out) parameter of the behavior.
+// The returned values include one parameter value for each output (in-out, out or return) parameter of the behavior.
+// The execution instance is destroyed at completion.
+
+Execution execution = this.locus.factory.createExecution(behavior, context);
+
+for (int i = 0; i < inputs.size(); i++) {
+ execution.setParameterValue(inputs.getValue(i));
+}
+
+execution.execute();
+ParameterValueList outputValues = execution.getOutputParameterValues();
+execution.destroy();
+
+return outputValues;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Executor-evaluate" name="evaluate" specification="Semantics-Loci-LociL1-Executor-evaluate.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-evaluate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-evaluate-specification" name="specification" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Evaluate the given value specification, returning the specified value.
+
+// Debug.println("[evaluate] Start...");
+return this.locus.factory.createEvaluation(specification).evaluate();
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Executor-start" name="start" specification="Semantics-Loci-LociL1-Executor-start.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-start-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Reference" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-start-type" name="type" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-start-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-start-inputs-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Executor-start-inputs-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Instantiate the given class and start any behavior of the resulting object.
+// (The behavior of an object includes any classifier behaviors for an active object or the class of the object itself, if that is a behavior.)
+
+Debug.println("[start] Starting " + type.name + "...");
+
+Object_ object = this.locus.instantiate(type);
+
+Debug.println("[start] Object = " + object);
+object.startBehavior(type, inputs);
+
+Reference reference = new Reference();
+reference.referent = object;
+
+return reference;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Executor-execute.1" name="execute" visibility="public" method="Semantics-Loci-LociL1-Executor-execute">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-behavior" name="behavior" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Behavior"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-context" name="context" visibility="public" type="Semantics-Classes-Kernel-Object">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-context-_lowerValue"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" isOrdered="true">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-inputs-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-inputs-_upperValue" value="*"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue" isOrdered="true" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Executor-execute.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Executor-evaluate.1" name="evaluate" visibility="public" method="Semantics-Loci-LociL1-Executor-evaluate">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-evaluate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Value" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-evaluate.1-specification" name="specification" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#ValueSpecification"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Executor-start.1" name="start" visibility="public" method="Semantics-Loci-LociL1-Executor-start">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-start.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Reference" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-start.1-type" name="type" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Executor-start.1-inputs" name="inputs" visibility="public" type="Semantics-CommonBehaviors-BasicBehaviors-ParameterValue">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Executor-start.1-inputs-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Executor-start.1-inputs-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy" name="FirstChoiceStrategy">
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy-_generalization.0" general="Semantics-Loci-LociL1-ChoiceStrategy"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy-choose" name="choose" specification="Semantics-Loci-LociL1-FirstChoiceStrategy-choose.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy-choose-size" name="size" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy-choose-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Always choose one.
+
+return 1;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy-choose.1" name="choose" visibility="public" method="Semantics-Loci-LociL1-FirstChoiceStrategy-choose">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy-choose.1-size" name="size" visibility="public">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-FirstChoiceStrategy-choose.1-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Integer"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-Locus" name="Locus">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Locus-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-Locus">
+ <body>A locus is a place at which extensional values (objects or links) can exist. The extent of a class or association is the set of objects or links of that type that exist at a certain locus.
+A locus also has an executor and a factory associated with it, used to execute behaviors as a result of requests dispatched to objects at the locus.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Locus-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+import fUML.Syntax.CommonBehaviors.BasicBehaviors.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+import fUML.Semantics.CommonBehaviors.BasicBehaviors.*;
+
+</body>
+ </ownedComment>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-Locus-executor" name="executor" visibility="public" type="Semantics-Loci-LociL1-Executor" aggregation="composite" association="Semantics-Loci-LociL1-A_executor_locus">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Locus-executor-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-Locus-executor">
+ <body>The executor to be used at this locus.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Locus-executor-_lowerValue"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-Locus-factory" name="factory" visibility="public" type="Semantics-Loci-LociL1-ExecutionFactory" aggregation="composite" association="Semantics-Loci-LociL1-A_factory_locus">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Locus-factory-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-Locus-factory">
+ <body>The factory to be used at this locus.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Locus-factory-_lowerValue"/>
+ </ownedAttribute>
+ <ownedAttribute xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-Locus-extensionalValues" name="extensionalValues" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue" aggregation="composite" association="Semantics-Classes-Kernel-A_locus_extensionalValues">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-Locus-extensionalValues-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-Locus-extensionalValues">
+ <body>The set of values that are members of classifier extents at this locus.</body>
+ </ownedComment>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Locus-extensionalValues-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Locus-extensionalValues-_upperValue" value="*"/>
+ </ownedAttribute>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Locus-setExecutor" name="setExecutor" specification="Semantics-Loci-LociL1-Locus-setExecutor.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-setExecutor-executor" name="executor" visibility="public" type="Semantics-Loci-LociL1-Executor"/>
+ <language>Java</language>
+ <body>// Set the executor for this locus.
+
+this.executor = executor;
+this.executor.locus = this;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Locus-setFactory" name="setFactory" specification="Semantics-Loci-LociL1-Locus-setFactory.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-setFactory-factory" name="factory" visibility="public" type="Semantics-Loci-LociL1-ExecutionFactory"/>
+ <language>Java</language>
+ <body>// Set the factory for this locus.
+
+this.factory = factory;
+this.factory.locus = this;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Locus-getExtent" name="getExtent" specification="Semantics-Loci-LociL1-Locus-getExtent.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-getExtent-classifier" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-getExtent-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Locus-getExtent-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Locus-getExtent-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Return the set of extensional values at this locus which have the given classifier as a type.
+
+ExtensionalValueList extent = new ExtensionalValueList();
+
+ExtensionalValueList extensionalValues = this.extensionalValues;
+for (int i = 0; i < extensionalValues.size(); i++) {
+ ExtensionalValue value = extensionalValues.getValue(i);
+ ClassifierList types = value.getTypes();
+
+ boolean conforms = false;
+ int j = 1;
+ while (!conforms & j <= types.size()) {
+ conforms = this.conforms(types.getValue(j-1), classifier);
+ j = j + 1;
+ }
+
+ if (conforms) {
+ extent.addValue(value);
+ }
+}
+
+return extent;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Locus-add" name="add" specification="Semantics-Loci-LociL1-Locus-add.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-add-value" name="value" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue"/>
+ <language>Java</language>
+ <body>// Add the given extensional value to this locus
+
+value.locus = this;
+this.extensionalValues.addValue(value);
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Locus-remove" name="remove" specification="Semantics-Loci-LociL1-Locus-remove.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-remove-value" name="value" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue"/>
+ <language>Java</language>
+ <body>// Remove the given extensional value from this locus.
+
+value.locus = null;
+
+boolean notFound = true;
+int i = 1;
+while (notFound & i <= this.extensionalValues.size()) {
+ if (this.extensionalValues.getValue(i-1) == value) {
+ this.extensionalValues.remove(i-1);
+ notFound = false;
+ }
+ i = i + 1;
+}
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Locus-instantiate" name="instantiate" specification="Semantics-Loci-LociL1-Locus-instantiate.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-instantiate-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Object" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-instantiate-type" name="type" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Instantiate the given class at this locus.
+
+Object_ object = null;
+
+if (type instanceof Behavior) {
+ object = this.factory.createExecution((Behavior)type, null);
+}
+else {
+ object = new Object_();
+
+ object.types.addValue(type);
+ object.createFeatureValues();
+ this.add(object);
+}
+
+return object;
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-Locus-conforms" name="conforms" specification="Semantics-Loci-LociL1-Locus-conforms.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-conforms-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-conforms-type" name="type" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-conforms-classifier" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ </ownedParameter>
+ <language>Java</language>
+ <body>// Test if a type conforms to a given classifier, that is, the type is equal to or a descendant of the classifier.
+
+boolean doesConform = false;
+
+if (type == classifier) {
+ doesConform = true;
+} else {
+ int i = 1;
+ while (!doesConform & i <= type.general.size()) {
+ doesConform = this.conforms(type.general.getValue(i-1), classifier);
+ i = i + 1;
+ }
+}
+
+return doesConform;
+
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Locus-setExecutor.1" name="setExecutor" visibility="public" method="Semantics-Loci-LociL1-Locus-setExecutor">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-setExecutor.1-executor" name="executor" visibility="public" type="Semantics-Loci-LociL1-Executor"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Locus-setFactory.1" name="setFactory" visibility="public" method="Semantics-Loci-LociL1-Locus-setFactory">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-setFactory.1-factory" name="factory" visibility="public" type="Semantics-Loci-LociL1-ExecutionFactory"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Locus-getExtent.1" name="getExtent" visibility="public" method="Semantics-Loci-LociL1-Locus-getExtent">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-getExtent.1-classifier" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-getExtent.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue" direction="return">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-Locus-getExtent.1-ReturnResult-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-Locus-getExtent.1-ReturnResult-_upperValue" value="*"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Locus-add.1" name="add" visibility="public" method="Semantics-Loci-LociL1-Locus-add">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-add.1-value" name="value" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Locus-remove.1" name="remove" visibility="public" method="Semantics-Loci-LociL1-Locus-remove">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-remove.1-value" name="value" visibility="public" type="Semantics-Classes-Kernel-ExtensionalValue"/>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Locus-instantiate.1" name="instantiate" visibility="public" method="Semantics-Loci-LociL1-Locus-instantiate">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-instantiate.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Classes-Kernel-Object" direction="return"/>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-instantiate.1-type" name="type" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Class"/>
+ </ownedParameter>
+ </ownedOperation>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-Locus-conforms.1" name="conforms" visibility="public" method="Semantics-Loci-LociL1-Locus-conforms">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-conforms.1-ReturnResult" name="ReturnResult" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#Boolean"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-conforms.1-type" name="type" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-Locus-conforms.1-classifier" name="classifier" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Classifier"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-SemanticStrategy" name="SemanticStrategy" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-SemanticStrategy-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-SemanticStrategy">
+ <body>The common base class for semantic strategy classes. A semantic strategy class specifies the behavior to be used at a specific semantic variatio point.</body>
+ </ownedComment>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-SemanticStrategy-getName" name="getName" visibility="public" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-SemanticStrategy-getName-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-SemanticStrategy-getName">
+ <body>Return the name of this strategy, as defined for the semantic variation point to which the strategy applies.</body>
+ </ownedComment>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-SemanticStrategy-getName-OwnedParameter" name="OwnedParameter" visibility="public" direction="return">
+ <type xmi:type="uml:PrimitiveType" href="pathmap://UML_LIBRARIES/UMLPrimitiveTypes.library.uml#String"/>
+ </ownedParameter>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-SemanticVisitor" name="SemanticVisitor" isAbstract="true">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-SemanticVisitor-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-SemanticVisitor">
+ <body>The common base class for semantic visitor classes.</body>
+ </ownedComment>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-SemanticVisitor-_endIsolation" name="_endIsolation" specification="Semantics-Loci-LociL1-SemanticVisitor-_endIsolation.1" isReentrant="false">
+ <language>Java</language>
+ <body>Debug.println("[_endIsolation] End isolation.");
+</body>
+ </ownedBehavior>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-SemanticVisitor-_beginIsolation" name="_beginIsolation" specification="Semantics-Loci-LociL1-SemanticVisitor-_beginIsolation.1" isReentrant="false">
+ <language>Java</language>
+ <body>Debug.println("[_beginIsolation] Begin isolation.");
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-SemanticVisitor-_endIsolation.1" name="_endIsolation" visibility="public" isStatic="true" method="Semantics-Loci-LociL1-SemanticVisitor-_endIsolation"/>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-SemanticVisitor-_beginIsolation.1" name="_beginIsolation" visibility="public" isStatic="true" method="Semantics-Loci-LociL1-SemanticVisitor-_beginIsolation"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1" name="ExecutionFactoryL1">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory">
+ <body> An execution factory is used to create objects that represent the execution of a behavior, the evaluation of a value specification or the activation of an activity node. This class only handles elements available at Conformance Level 1.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Classes.Kernel.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Classes.Kernel.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-_generalization.0" general="Semantics-Loci-LociL1-ExecutionFactory"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor" name="instantiateVisitor" specification="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor-element" name="element" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-SemanticVisitor" direction="return"/>
+ <language>Java</language>
+ <body>// Instantiate a visitor object for the given element (at Conformance Level 1)
+
+SemanticVisitor visitor = null;
+
+if (element instanceof LiteralBoolean) {
+ visitor = new LiteralBooleanEvaluation();
+}
+
+else if (element instanceof fUML.Syntax.Classes.Kernel.LiteralString) {
+ visitor = new LiteralStringEvaluation();
+}
+
+else if (element instanceof fUML.Syntax.Classes.Kernel.LiteralNull) {
+ visitor = new LiteralNullEvaluation();
+}
+
+else if (element instanceof fUML.Syntax.Classes.Kernel.InstanceValue) {
+ visitor = new InstanceValueEvaluation();
+}
+
+else if (element instanceof fUML.Syntax.Classes.Kernel.LiteralUnlimitedNatural) {
+ visitor = new LiteralUnlimitedNaturalEvaluation();
+}
+
+else if (element instanceof fUML.Syntax.Classes.Kernel.LiteralInteger) {
+ visitor = new LiteralIntegerEvaluation();
+}
+
+else if (element instanceof LiteralReal) {
+ visitor = new LiteralRealEvaluation();
+}
+
+return visitor;
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor.1" name="instantiateVisitor" visibility="public" method="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor.1-element" name="element" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL1-ExecutionFactoryL1-instantiateVisitor.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-SemanticVisitor" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Loci-LociL1-A_executor_locus" name="A_executor_locus" visibility="private" memberEnd="Semantics-Loci-LociL1-Executor-locus Semantics-Loci-LociL1-Locus-executor"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Loci-LociL1-A_factory_locus" name="A_factory_locus" visibility="private" memberEnd="Semantics-Loci-LociL1-ExecutionFactory-locus Semantics-Loci-LociL1-Locus-factory"/>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Loci-LociL1-A_builtInTypes_executionFactory" name="A_builtInTypes_executionFactory" visibility="private" memberEnd="Semantics-Loci-LociL1-A_builtInTypes_executionFactory-_ownedEnd.0 Semantics-Loci-LociL1-ExecutionFactory-builtInTypes">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-A_builtInTypes_executionFactory-_ownedEnd.0" visibility="private" type="Semantics-Loci-LociL1-ExecutionFactory" association="Semantics-Loci-LociL1-A_builtInTypes_executionFactory">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-A_builtInTypes_executionFactory-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-A_builtInTypes_executionFactory-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Loci-LociL1-A_strategies_executionFactory" name="A_strategies_executionFactory" visibility="private" memberEnd="Semantics-Loci-LociL1-A_strategies_executionFactory-_ownedEnd.0 Semantics-Loci-LociL1-ExecutionFactory-strategies">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-A_strategies_executionFactory-_ownedEnd.0" visibility="private" type="Semantics-Loci-LociL1-ExecutionFactory" association="Semantics-Loci-LociL1-A_strategies_executionFactory"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="Semantics-Loci-LociL1-A_primitiveBehaviorPrototypes_executionFactory" name="A_primitiveBehaviorPrototypes_executionFactory" visibility="private" memberEnd="Semantics-Loci-LociL1-A_primitiveBehaviorPrototypes_executionFactory-_ownedEnd.0 Semantics-Loci-LociL1-ExecutionFactory-primitiveBehaviorPrototypes">
+ <ownedEnd xmi:type="uml:Property" xmi:id="Semantics-Loci-LociL1-A_primitiveBehaviorPrototypes_executionFactory-_ownedEnd.0" visibility="private" type="Semantics-Loci-LociL1-ExecutionFactory" association="Semantics-Loci-LociL1-A_primitiveBehaviorPrototypes_executionFactory">
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="Semantics-Loci-LociL1-A_primitiveBehaviorPrototypes_executionFactory-_ownedEnd.0-_lowerValue"/>
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="Semantics-Loci-LociL1-A_primitiveBehaviorPrototypes_executionFactory-_ownedEnd.0-_upperValue" value="*"/>
+ </ownedEnd>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Loci-LociL2" name="LociL2">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL2-_packageImport.0" importedPackage="Semantics-Loci-LociL1"/>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL2-_packageImport.1" importedPackage="Semantics-Actions-BasicActions"/>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL2-_packageImport.2" importedPackage="Semantics-Actions-IntermediateActions"/>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL2-_packageImport.3" importedPackage="Semantics-Activities-IntermediateActivities"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2" name="ExecutionFactoryL2">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory">
+ <body> An execution factory is used to create objects that represent the execution of a behavior, the evaluation of a value specification or the activation of an activity node. This class only handles elements available at Conformance Level 2.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Activities.IntermediateActivities.*;
+import fUML.Syntax.Actions.BasicActions.*;
+import fUML.Syntax.Actions.IntermediateActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Activities.IntermediateActivities.*;
+import fUML.Semantics.Actions.BasicActions.*;
+import fUML.Semantics.Actions.IntermediateActions.*;
+import fUML.Semantics.Loci.LociL1.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-_generalization.0" general="Semantics-Loci-LociL1-ExecutionFactoryL1"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor" name="instantiateVisitor" specification="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor-element" name="element" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-SemanticVisitor" direction="return"/>
+ <language>Java</language>
+ <body>// Instantiate a visitor object for the given element (at Conformance Level 2)
+
+SemanticVisitor visitor = null;
+
+if (element instanceof Activity) {
+ visitor = new ActivityExecution();
+}
+
+else if (element instanceof ActivityParameterNode) {
+ visitor = new ActivityParameterNodeActivation();
+}
+
+else if (element instanceof InitialNode) {
+ visitor = new InitialNodeActivation();
+}
+
+else if (element instanceof ActivityFinalNode) {
+ visitor = new ActivityFinalNodeActivation();
+}
+
+else if (element instanceof FlowFinalNode) {
+ visitor = new FlowFinalNodeActivation();
+}
+
+else if (element instanceof JoinNode) {
+ visitor = new JoinNodeActivation();
+}
+
+else if (element instanceof MergeNode) {
+ visitor = new MergeNodeActivation();
+}
+
+else if (element instanceof ForkNode) {
+ visitor = new ForkNodeActivation();
+}
+
+else if (element instanceof DecisionNode) {
+ visitor = new DecisionNodeActivation();
+}
+
+else if (element instanceof InputPin) {
+ visitor = new InputPinActivation();
+}
+
+else if (element instanceof OutputPin) {
+ visitor = new OutputPinActivation();
+}
+
+else if (element instanceof CallBehaviorAction) {
+ visitor = new CallBehaviorActionActivation();
+}
+
+else if (element instanceof CallOperationAction) {
+ visitor = new CallOperationActionActivation();
+}
+
+else if (element instanceof SendSignalAction) {
+ visitor = new SendSignalActionActivation();
+}
+
+else if (element instanceof ReadSelfAction) {
+ visitor = new ReadSelfActionActivation();
+}
+
+else if (element instanceof TestIdentityAction) {
+ visitor = new TestIdentityActionActivation();
+}
+
+else if (element instanceof ValueSpecificationAction) {
+ visitor = new ValueSpecificationActionActivation();
+}
+
+else if (element instanceof CreateObjectAction) {
+ visitor = new CreateObjectActionActivation();
+}
+
+else if (element instanceof DestroyObjectAction) {
+ visitor = new DestroyObjectActionActivation();
+}
+
+else if (element instanceof ReadStructuralFeatureAction) {
+ visitor = new ReadStructuralFeatureActionActivation();
+}
+
+else if (element instanceof ClearStructuralFeatureAction) {
+ visitor = new ClearStructuralFeatureActionActivation();
+}
+
+else if (element instanceof AddStructuralFeatureValueAction) {
+ visitor = new AddStructuralFeatureValueActionActivation();
+}
+
+else if (element instanceof RemoveStructuralFeatureValueAction) {
+ visitor = new RemoveStructuralFeatureValueActionActivation();
+}
+
+else if (element instanceof ReadLinkAction) {
+ visitor = new ReadLinkActionActivation();
+}
+
+else if (element instanceof ClearAssociationAction) {
+ visitor = new ClearAssociationActionActivation();
+}
+
+else if (element instanceof CreateLinkAction) {
+ visitor = new CreateLinkActionActivation();
+}
+
+else if (element instanceof DestroyLinkAction) {
+ visitor = new DestroyLinkActionActivation();
+}
+
+else {
+ visitor = super.instantiateVisitor(element);
+}
+
+return visitor;
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor.1" name="instantiateVisitor" visibility="public" method="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor.1-element" name="element" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL2-ExecutionFactoryL2-instantiateVisitor.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-SemanticVisitor" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-Loci-LociL3" name="LociL3">
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL3-_packageImport.0" importedPackage="Semantics-Loci-LociL2"/>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL3-_packageImport.1" importedPackage="Semantics-Actions-CompleteActions"/>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL3-_packageImport.2" importedPackage="Semantics-Activities-CompleteStructuredActivities"/>
+ <packageImport xmi:type="uml:PackageImport" xmi:id="Semantics-Loci-LociL3-_packageImport.3" importedPackage="Semantics-Activities-ExtraStructuredActivities"/>
+ <packagedElement xmi:type="uml:Class" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3" name="ExecutionFactoryL3">
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-_ownedComment.0" annotatedElement="Semantics-Loci-LociL1-ExecutionFactory">
+ <body> An execution factory is used to create objects that represent the execution of a behavior, the evaluation of a value specification or the activation of an activity node. This class only handles elements available at Conformance Level 3.</body>
+ </ownedComment>
+ <ownedComment xmi:type="uml:Comment" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-_ownedComment.1">
+ <body>import fUML.Syntax.*;
+import fUML.Syntax.Activities.CompleteStructuredActivities.*;
+import fUML.Syntax.Activities.ExtraStructuredActivities.*;
+import fUML.Syntax.Actions.CompleteActions.*;
+
+import fUML.Semantics.*;
+import fUML.Semantics.Activities.CompleteStructuredActivities.*;
+import fUML.Semantics.Activities.ExtraStructuredActivities.*;
+import fUML.Semantics.Actions.CompleteActions.*;
+import fUML.Semantics.Loci.LociL1.*;
+import fUML.Semantics.Loci.LociL2.*;
+</body>
+ </ownedComment>
+ <generalization xmi:type="uml:Generalization" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-_generalization.0" general="Semantics-Loci-LociL2-ExecutionFactoryL2"/>
+ <ownedBehavior xmi:type="uml:OpaqueBehavior" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor" name="instantiateVisitor" specification="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor.1" isReentrant="false">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor-element" name="element" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-SemanticVisitor" direction="return"/>
+ <language>Java</language>
+ <body>// Instantiate a visitor object for the given element (at Conformance Level 3)
+
+SemanticVisitor visitor = null;
+
+if (element instanceof ConditionalNode) {
+ visitor = new ConditionalNodeActivation();
+}
+
+else if (element instanceof LoopNode) {
+ visitor = new LoopNodeActivation();
+}
+
+else if (element instanceof ExpansionRegion) {
+ visitor = new ExpansionRegionActivation();
+}
+
+// Note: Since ConditionalNode, LoopNode and ExpansionRegion are subclasses of
+// StructuredActivityNode, element must be tested against the three subclasses before
+// the superclass
+else if (element instanceof StructuredActivityNode) {
+ visitor = new StructuredActivityNodeActivation();
+}
+
+else if (element instanceof ExpansionNode) {
+ visitor = new ExpansionNodeActivation();
+}
+
+else if (element instanceof ReadExtentAction) {
+ visitor = new ReadExtentActionActivation();
+}
+
+else if (element instanceof ReadIsClassifiedObjectAction) {
+ visitor = new ReadIsClassifiedObjectActionActivation();
+}
+
+else if (element instanceof ReclassifyObjectAction) {
+ visitor = new ReclassifyObjectActionActivation();
+}
+
+else if (element instanceof StartObjectBehaviorAction) {
+ visitor = new StartObjectBehaviorActionActivation();
+}
+
+else if (element instanceof StartClassifierBehaviorAction) {
+ visitor = new StartClassifierBehaviorActionActivation();
+}
+
+else if (element instanceof AcceptEventAction) {
+ visitor = new AcceptEventActionActivation();
+}
+
+else if (element instanceof ReduceAction) {
+ visitor = new ReduceActionActivation();
+}
+
+else {
+ visitor = super.instantiateVisitor(element);
+}
+
+return visitor;
+
+</body>
+ </ownedBehavior>
+ <ownedOperation xmi:type="uml:Operation" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor.1" name="instantiateVisitor" visibility="public" method="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor">
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor.1-element" name="element" visibility="public">
+ <type xmi:type="uml:Class" href="pathmap://UML_METAMODELS/UML.metamodel.uml#Element"/>
+ </ownedParameter>
+ <ownedParameter xmi:type="uml:Parameter" xmi:id="Semantics-Loci-LociL3-ExecutionFactoryL3-instantiateVisitor.1-ReturnResult" name="ReturnResult" visibility="public" type="Semantics-Loci-LociL1-SemanticVisitor" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-L1" name="L1">
+ <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L1-_packageMerge.0" mergedPackage="Semantics-Classes-Kernel"/>
+ <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L1-_packageMerge.1" mergedPackage="Semantics-CommonBehaviors-BasicBehaviors"/>
+ <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L1-_packageMerge.2" mergedPackage="Semantics-CommonBehaviors-Communications"/>
+ <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L1-_packageMerge.3" mergedPackage="Semantics-Loci-LociL1"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-L2" name="L2">
+ <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L2-_packageMerge.0" mergedPackage="Semantics-L1"/>
+ <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L2-_packageMerge.1" mergedPackage="Semantics-Activities-IntermediateActivities"/>
+ <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L2-_packageMerge.2" mergedPackage="Semantics-Actions-BasicActions"/>
+ <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L2-_packageMerge.3" mergedPackage="Semantics-Actions-IntermediateActions"/>
+ <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L2-_packageMerge.4" mergedPackage="Semantics-Loci-LociL2"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Package" xmi:id="Semantics-L3" name="L3">
+ <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L3-_packageMerge.0" mergedPackage="Semantics-L2"/>
+ <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L3-_packageMerge.1" mergedPackage="Semantics-Activities-CompleteStructuredActivities"/>
+ <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L3-_packageMerge.2" mergedPackage="Semantics-Actions-CompleteActions"/>
+ <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L3-_packageMerge.3" mergedPackage="Semantics-Activities-ExtraStructuredActivities"/>
+ <packageMerge xmi:type="uml:PackageMerge" xmi:id="Semantics-L3-_packageMerge.4" mergedPackage="Semantics-Loci-LociL3"/>
+ </packagedElement>
+ </packagedElement>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_1fc3YGDmEeOv67MuWcLvIw">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_1glf0GDmEeOv67MuWcLvIw" 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 xmi:type="uml:Profile" href="pathmap://UML_PROFILES/StandardL2.profile.uml#_0"/>
+ </profileApplication>
+ <profileApplication xmi:type="uml:ProfileApplication" xmi:id="_KgZZANI7EeSMT41jQ-_fLg">
+ <eAnnotations xmi:type="ecore:EAnnotation" xmi:id="_KghU0NI7EeSMT41jQ-_fLg" source="http://www.eclipse.org/uml2/2.0.0/UML">
+ <references xmi:type="ecore:EPackage" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#_Kv8EIKFXEeS_KNX0nfvIVQ"/>
+ </eAnnotations>
+ <appliedProfile xmi:type="uml:Profile" href="pathmap://PAPYRUS_ACTIONLANGUAGE_PROFILE/ActionLanguage-Profile.profile.uml#ActionLanguage"/>
+ </profileApplication>
+ </uml:Model>
+ <standard:Create xmi:id="__906wGDmEeOv67MuWcLvIw" base_BehavioralFeature="_xXvbIGDmEeOv67MuWcLvIw"/>
+ <ActionLanguage:TextualRepresentation xmi:id="_2CHqIGDnEeOm3qeg9F4VEw" base_Comment="_1_fM4GDnEeOm3qeg9F4VEw"/>
+</xmi:XMI>
diff --git a/org.eclipse.papyrus.moka.fuml/schema/org.eclipse.papyrus.moka.fuml.library.exsd b/org.eclipse.papyrus.moka.fuml/schema/org.eclipse.papyrus.moka.fuml.library.exsd
index 23fad24..476dd34 100644
--- a/org.eclipse.papyrus.moka.fuml/schema/org.eclipse.papyrus.moka.fuml.library.exsd
+++ b/org.eclipse.papyrus.moka.fuml/schema/org.eclipse.papyrus.moka.fuml.library.exsd
@@ -1,102 +1,102 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.papyrus.moka.fuml" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
- <appinfo>
- <meta.schema plugin="org.eclipse.papyrus.moka.fuml" id="org.eclipse.papyrus.moka.fuml.library" name="OpaqueBehaviorExecutionLibrary"/>
- </appinfo>
- <documentation>
- [Enter description of this extension point.]
- </documentation>
- </annotation>
-
- <element name="extension">
- <annotation>
- <appinfo>
- <meta.element />
- </appinfo>
- </annotation>
- <complexType>
- <choice minOccurs="1" maxOccurs="unbounded">
- <element ref="library"/>
- </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="library">
- <complexType>
- <attribute name="class" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- <appinfo>
- <meta.attribute kind="java" basedOn=":org.eclipse.papyrus.moka.fuml.registry.IOpaqueBehaviorExecutionRegistry"/>
- </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>
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.papyrus.moka.fuml" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.papyrus.moka.fuml" id="org.eclipse.papyrus.moka.fuml.library" name="OpaqueBehaviorExecutionLibrary"/>
+ </appinfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <choice minOccurs="1" maxOccurs="unbounded">
+ <element ref="library"/>
+ </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="library">
+ <complexType>
+ <attribute name="class" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.papyrus.moka.fuml.registry.IOpaqueBehaviorExecutionRegistry"/>
+ </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/org.eclipse.papyrus.moka.fuml/schema/org.eclipse.papyrus.moka.fuml.services.exsd b/org.eclipse.papyrus.moka.fuml/schema/org.eclipse.papyrus.moka.fuml.services.exsd
index edbd782..1c70737 100644
--- a/org.eclipse.papyrus.moka.fuml/schema/org.eclipse.papyrus.moka.fuml.services.exsd
+++ b/org.eclipse.papyrus.moka.fuml/schema/org.eclipse.papyrus.moka.fuml.services.exsd
@@ -1,102 +1,102 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.papyrus.moka.fuml" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
- <appinfo>
- <meta.schema plugin="org.eclipse.papyrus.moka.fuml" id="org.eclipse.papyrus.moka.fuml.services" name="SystemServices"/>
- </appinfo>
- <documentation>
- [Enter description of this extension point.]
- </documentation>
- </annotation>
-
- <element name="extension">
- <annotation>
- <appinfo>
- <meta.element />
- </appinfo>
- </annotation>
- <complexType>
- <choice minOccurs="1" maxOccurs="unbounded">
- <element ref="services"/>
- </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="services">
- <complexType>
- <attribute name="class" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- <appinfo>
- <meta.attribute kind="java" basedOn=":org.eclipse.papyrus.moka.fuml.registry.ISystemServicesRegistry"/>
- </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>
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.papyrus.moka.fuml" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.papyrus.moka.fuml" id="org.eclipse.papyrus.moka.fuml.services" name="SystemServices"/>
+ </appinfo>
+ <documentation>
+ [Enter description of this extension point.]
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ </annotation>
+ <complexType>
+ <choice minOccurs="1" maxOccurs="unbounded">
+ <element ref="services"/>
+ </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="services">
+ <complexType>
+ <attribute name="class" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.papyrus.moka.fuml.registry.ISystemServicesRegistry"/>
+ </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/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/Activator.java b/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/Activator.java
index 1c32606..ad6ae1e 100644
--- a/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/Activator.java
+++ b/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/Activator.java
@@ -1,77 +1,77 @@
-/*****************************************************************************
- * Copyright (c) 2012 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.moka.fuml;
-
-import org.eclipse.papyrus.infra.core.log.LogHelper;
-import org.eclipse.ui.plugin.AbstractUIPlugin;
-import org.osgi.framework.BundleContext;
-
-// TODO: Auto-generated Javadoc
-/**
- * The activator class controls the plug-in life cycle.
- */
-public class Activator extends AbstractUIPlugin {
-
- // The plug-in ID
- /** The Constant PLUGIN_ID. */
- public static final String PLUGIN_ID = "org.eclipse.papyrus.moka.fuml"; //$NON-NLS-1$
-
- // The shared instance
- /** The plugin. */
- private static Activator plugin;
-
- public static LogHelper log;
-
- /**
- * The constructor.
- */
- public Activator() {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext
- * )
- */
- @Override
- public void start(BundleContext context) throws Exception {
- super.start(context);
- plugin = this;
- log = new LogHelper(this);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext
- * )
- */
- @Override
- 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;
- }
-}
+/*****************************************************************************
+ * Copyright (c) 2012 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.moka.fuml;
+
+import org.eclipse.papyrus.infra.core.log.LogHelper;
+import org.eclipse.ui.plugin.AbstractUIPlugin;
+import org.osgi.framework.BundleContext;
+
+// TODO: Auto-generated Javadoc
+/**
+ * The activator class controls the plug-in life cycle.
+ */
+public class Activator extends AbstractUIPlugin {
+
+ // The plug-in ID
+ /** The Constant PLUGIN_ID. */
+ public static final String PLUGIN_ID = "org.eclipse.papyrus.moka.fuml"; //$NON-NLS-1$
+
+ // The shared instance
+ /** The plugin. */
+ private static Activator plugin;
+
+ public static LogHelper log;
+
+ /**
+ * The constructor.
+ */
+ public Activator() {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.ui.plugin.AbstractUIPlugin#start(org.osgi.framework.BundleContext
+ * )
+ */
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ log = new LogHelper(this);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.ui.plugin.AbstractUIPlugin#stop(org.osgi.framework.BundleContext
+ * )
+ */
+ @Override
+ 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/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/debug/ControlDelegate.java b/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/debug/ControlDelegate.java
index 71b8792..05e10fc 100644
--- a/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/debug/ControlDelegate.java
+++ b/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/debug/ControlDelegate.java
@@ -1,291 +1,291 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.fuml.debug;
-
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import org.eclipse.debug.core.DebugEvent;
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.debug.core.model.IStackFrame;
-import org.eclipse.debug.core.model.IThread;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.papyrus.infra.core.Activator;
-import org.eclipse.papyrus.moka.MokaConstants;
-import org.eclipse.papyrus.moka.communication.event.isuspendresume.Suspend_Event;
-import org.eclipse.papyrus.moka.communication.request.isuspendresume.Resume_Request;
-import org.eclipse.papyrus.moka.communication.request.isuspendresume.Suspend_Request;
-import org.eclipse.papyrus.moka.communication.request.iterminate.Terminate_Request;
-import org.eclipse.papyrus.moka.debug.MokaBreakpoint;
-import org.eclipse.papyrus.moka.debug.MokaStackFrame;
-import org.eclipse.papyrus.moka.debug.MokaThread;
-import org.eclipse.papyrus.moka.engine.AbstractExecutionEngine;
-import org.eclipse.papyrus.moka.fuml.Semantics.Activities.IntermediateActivities.ActivityEdgeInstance;
-import org.eclipse.papyrus.moka.fuml.Semantics.Activities.IntermediateActivities.ActivityNodeActivation;
-import org.eclipse.papyrus.moka.fuml.presentation.FUMLPresentationUtils;
-import org.eclipse.papyrus.moka.ui.presentation.AnimationUtils;
-import org.eclipse.uml2.uml.ActivityEdge;
-import org.eclipse.uml2.uml.Pin;
-
-public class ControlDelegate {
-
- /**
- * The execution engine associated with this ControlDelegate object
- */
- protected AbstractExecutionEngine engine;
-
- /**
- * The list of threads implied by current execution
- */
- protected List<FUMLThread> threads;
-
- /**
- * Determines if execution is suspended
- */
- protected boolean suspended = false;
-
- /**
- * The reason for suspending execution
- */
- protected int reasonForSuspending = -1;
-
- /**
- * The reason for resuming execution
- */
- protected int reasonForResuming = -1;
-
- /**
- * The execution mode (i.e., Debug or Run)
- */
- protected String mode;
-
- /**
- * Semantic elements associated with a breakpoint
- */
- protected Set<EObject> elementsWithBreakpoints;
-
- public ControlDelegate(AbstractExecutionEngine engine) {
- this.engine = engine;
- this.mode = this.engine.getDebugTarget().getLaunch().getLaunchMode();
- this.elementsWithBreakpoints = new HashSet<EObject>();
- }
-
- /**
- * Manages addition of a breakpoint in the course of execution
- *
- * @param breakpoint
- * The added breakpoint
- */
- public void addBreakpoint(MokaBreakpoint breakpoint) {
- EObject modelElement = breakpoint.getModelElement();
- if (modelElement != null) {
- if (modelElement.eIsProxy()) {
- modelElement = AnimationUtils.resolve(modelElement);
- }
- this.elementsWithBreakpoints.add(modelElement);
- }
- }
-
- /**
- * Manages removal of a breakpoint in the course of execution
- *
- * @param breakpoint
- * The removed breakpoint
- */
- public void removeBreakpoint(MokaBreakpoint breakpoint) {
- EObject modelElement = breakpoint.getModelElement();
- if (modelElement != null) {
- if (modelElement.eIsProxy()) {
- modelElement = AnimationUtils.resolve(modelElement);
- }
- this.elementsWithBreakpoints.remove(modelElement);
- }
- }
-
- /**
- * Manages resuming of execution
- *
- * @param request
- * The request underlying this resume
- */
- public void resume(Resume_Request request) {
- this.suspended = false;
- this.reasonForResuming = request.getResumeDetail();
- if (reasonForResuming != DebugEvent.CLIENT_REQUEST) {
- reasonForResuming = DebugEvent.STEP_OVER;
- }
- this.getThreads()[0].setSuspended(false);
- synchronized (this) {
- notify();
- this.threads.get(0).setStackFrames(new IStackFrame[] {});
- }
- }
-
- /**
- * Manages suspension of execution
- *
- * @param request
- * The request underlying this suspension
- */
- public void suspend(Suspend_Request request) {
- this.suspended = true;
- this.reasonForSuspending = DebugEvent.CLIENT_REQUEST;
- }
-
- /**
- * Manages termination of execution
- *
- * @param request
- * The request underlying this termination
- */
- public void terminate(Terminate_Request request) {
- engine.setIsTerminated(true);
- synchronized (this) {
- notify();
- }
- }
-
- /**
- * Return the stack of the given thread
- *
- * @param thread
- * The thread from which a stack has to be retrieved
- * @return The stack of the given thread
- */
- public IStackFrame[] getStackFrames(IThread thread) {
- // Never called in this implementation
- // When the debug is notified, threads are already constructed with appropriate stack frames.
- return null;
- }
-
- /**
- * Returns the threads underlying this execution
- *
- * @return The threads underlying this execution
- */
- public MokaThread[] getThreads() {
- if (this.threads == null) {
- this.threads = new ArrayList<FUMLThread>();
- if (this.engine.getDebugTarget().getLaunch().getLaunchMode().equals(ILaunchManager.DEBUG_MODE)) {
- FUMLThread thread = new FUMLThread(this.engine.getDebugTarget());
- thread.setName("Main Thread");
- thread.setStackFrames(new IStackFrame[] {});
- this.threads.add(thread);
- }
- }
- return threads.toArray(new MokaThread[threads.size()]);
- }
-
- /**
- * Method that can be called by a particular execution engine to delegate control of execution flow.
- *
- * @param object
- * An object from the execution flow from which control has to be delegated
- * @return False if execution shall stop, True if execution shall continue
- */
- public boolean control(Object object) {
- if (this.engine.isTerminated()) {
- return false;
- }
-
- // Retrieves the semantic element
- EObject semanticElement = null;
- if (object instanceof ActivityNodeActivation) {
- semanticElement = ((ActivityNodeActivation) object).node;
- } else if (object instanceof ActivityEdgeInstance) {
- semanticElement = ((ActivityEdgeInstance) object).edge;
- } else {
- Activator.log.error(new Exception("Unexpected element in ControlDelegate::control"));
- this.engine.setIsTerminated(true);
- return false;
- }
-
- // Manages animation
- // if (object instanceof ActivityNodeActivation && semanticElement != null && MokaConstants.MOKA_AUTOMATIC_ANIMATION && this.mode.equals(ILaunchManager.DEBUG_MODE)) {
- // this.animate((ActivityNodeActivation)object, (ActivityNode)semanticElement) ;
- // }
- if (semanticElement != null && MokaConstants.MOKA_AUTOMATIC_ANIMATION && this.mode.equals(ILaunchManager.DEBUG_MODE)) {
- // this.animate((ActivityNodeActivation)object, (ActivityNode)semanticElement) ;
- this.animate(semanticElement);
- }
-
- if (this.suspended) { /* Client request */
- try {
- synchronized (this) {
- this.getThreads(); // To make sure that this.threads is neither null nor empty
- MokaThread mainThread = this.threads.get(0);
- mainThread.setSuspended(true);
- MokaStackFrame stackFrame = FUMLPresentationUtils.getMokaStackFrame(object);
- stackFrame.setThread(mainThread);
- mainThread.setStackFrames(new IStackFrame[] { stackFrame });
- Suspend_Event suspendEvent = new Suspend_Event(mainThread, DebugEvent.CLIENT_REQUEST, this.getThreads());
- engine.sendEvent(suspendEvent);
- wait();
- }
- } catch (InterruptedException e) {
- Activator.log.error(e);
- }
- } else { // Tries to check if a breakpoint applies
- if (this.elementsWithBreakpoints.contains(semanticElement) || this.reasonForResuming == DebugEvent.STEP_OVER) {
- if ((object instanceof ActivityNodeActivation && ((ActivityNodeActivation) object).group != null) || (object instanceof ActivityEdgeInstance && ((ActivityEdgeInstance) object).group != null)) {
- try {
- synchronized (this) {
- this.getThreads(); // To make sure that this.threads is neither null nor empty
- MokaThread mainThread = this.threads.get(0);
- mainThread.setSuspended(true);
- MokaStackFrame stackFrame = FUMLPresentationUtils.getMokaStackFrame(object);
- stackFrame.setThread(mainThread);
- mainThread.setStackFrames(new IStackFrame[] { stackFrame });
- Suspend_Event suspendEvent = new Suspend_Event(mainThread, DebugEvent.BREAKPOINT, this.getThreads());
- engine.sendEvent(suspendEvent);
- wait();
- }
- } catch (InterruptedException e) {
- Activator.log.error(e);
- }
- }
- }
- }
- return !this.engine.isTerminated();
- }
-
- protected void animate(EObject element) {
- try {
- // If the element is an activity edge,
- // Also animates the source, in the case where it is a pin
- if (element instanceof ActivityEdge) {
- ActivityEdge edge = (ActivityEdge) element;
- if (edge.getSource() instanceof Pin) {
- if (AnimationUtils.getInstance().diagramsExistFor(edge.getSource())) {
- AnimationUtils.getInstance().addAnimationMarker(edge.getSource());
- Thread.sleep(MokaConstants.MOKA_ANIMATION_DELAY);
- AnimationUtils.getInstance().removeAnimationMarker(edge.getSource());
- }
- }
- }
- // Animates the element
- if ((AnimationUtils.getInstance().diagramsExistFor(element))) {
- AnimationUtils.getInstance().addAnimationMarker(element);
- Thread.sleep(MokaConstants.MOKA_ANIMATION_DELAY);
- AnimationUtils.getInstance().removeAnimationMarker(element);
- }
- } catch (InterruptedException e) {
- Activator.log.error(e);
- }
- }
-
- public void waitForTermination() {
- // Nothing to do
- }
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.fuml.debug;
+
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import org.eclipse.debug.core.DebugEvent;
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.core.model.IStackFrame;
+import org.eclipse.debug.core.model.IThread;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.infra.core.Activator;
+import org.eclipse.papyrus.moka.MokaConstants;
+import org.eclipse.papyrus.moka.communication.event.isuspendresume.Suspend_Event;
+import org.eclipse.papyrus.moka.communication.request.isuspendresume.Resume_Request;
+import org.eclipse.papyrus.moka.communication.request.isuspendresume.Suspend_Request;
+import org.eclipse.papyrus.moka.communication.request.iterminate.Terminate_Request;
+import org.eclipse.papyrus.moka.debug.MokaBreakpoint;
+import org.eclipse.papyrus.moka.debug.MokaStackFrame;
+import org.eclipse.papyrus.moka.debug.MokaThread;
+import org.eclipse.papyrus.moka.engine.AbstractExecutionEngine;
+import org.eclipse.papyrus.moka.fuml.Semantics.Activities.IntermediateActivities.ActivityEdgeInstance;
+import org.eclipse.papyrus.moka.fuml.Semantics.Activities.IntermediateActivities.ActivityNodeActivation;
+import org.eclipse.papyrus.moka.fuml.presentation.FUMLPresentationUtils;
+import org.eclipse.papyrus.moka.ui.presentation.AnimationUtils;
+import org.eclipse.uml2.uml.ActivityEdge;
+import org.eclipse.uml2.uml.Pin;
+
+public class ControlDelegate {
+
+ /**
+ * The execution engine associated with this ControlDelegate object
+ */
+ protected AbstractExecutionEngine engine;
+
+ /**
+ * The list of threads implied by current execution
+ */
+ protected List<FUMLThread> threads;
+
+ /**
+ * Determines if execution is suspended
+ */
+ protected boolean suspended = false;
+
+ /**
+ * The reason for suspending execution
+ */
+ protected int reasonForSuspending = -1;
+
+ /**
+ * The reason for resuming execution
+ */
+ protected int reasonForResuming = -1;
+
+ /**
+ * The execution mode (i.e., Debug or Run)
+ */
+ protected String mode;
+
+ /**
+ * Semantic elements associated with a breakpoint
+ */
+ protected Set<EObject> elementsWithBreakpoints;
+
+ public ControlDelegate(AbstractExecutionEngine engine) {
+ this.engine = engine;
+ this.mode = this.engine.getDebugTarget().getLaunch().getLaunchMode();
+ this.elementsWithBreakpoints = new HashSet<EObject>();
+ }
+
+ /**
+ * Manages addition of a breakpoint in the course of execution
+ *
+ * @param breakpoint
+ * The added breakpoint
+ */
+ public void addBreakpoint(MokaBreakpoint breakpoint) {
+ EObject modelElement = breakpoint.getModelElement();
+ if (modelElement != null) {
+ if (modelElement.eIsProxy()) {
+ modelElement = AnimationUtils.resolve(modelElement);
+ }
+ this.elementsWithBreakpoints.add(modelElement);
+ }
+ }
+
+ /**
+ * Manages removal of a breakpoint in the course of execution
+ *
+ * @param breakpoint
+ * The removed breakpoint
+ */
+ public void removeBreakpoint(MokaBreakpoint breakpoint) {
+ EObject modelElement = breakpoint.getModelElement();
+ if (modelElement != null) {
+ if (modelElement.eIsProxy()) {
+ modelElement = AnimationUtils.resolve(modelElement);
+ }
+ this.elementsWithBreakpoints.remove(modelElement);
+ }
+ }
+
+ /**
+ * Manages resuming of execution
+ *
+ * @param request
+ * The request underlying this resume
+ */
+ public void resume(Resume_Request request) {
+ this.suspended = false;
+ this.reasonForResuming = request.getResumeDetail();
+ if (reasonForResuming != DebugEvent.CLIENT_REQUEST) {
+ reasonForResuming = DebugEvent.STEP_OVER;
+ }
+ this.getThreads()[0].setSuspended(false);
+ synchronized (this) {
+ notify();
+ this.threads.get(0).setStackFrames(new IStackFrame[] {});
+ }
+ }
+
+ /**
+ * Manages suspension of execution
+ *
+ * @param request
+ * The request underlying this suspension
+ */
+ public void suspend(Suspend_Request request) {
+ this.suspended = true;
+ this.reasonForSuspending = DebugEvent.CLIENT_REQUEST;
+ }
+
+ /**
+ * Manages termination of execution
+ *
+ * @param request
+ * The request underlying this termination
+ */
+ public void terminate(Terminate_Request request) {
+ engine.setIsTerminated(true);
+ synchronized (this) {
+ notify();
+ }
+ }
+
+ /**
+ * Return the stack of the given thread
+ *
+ * @param thread
+ * The thread from which a stack has to be retrieved
+ * @return The stack of the given thread
+ */
+ public IStackFrame[] getStackFrames(IThread thread) {
+ // Never called in this implementation
+ // When the debug is notified, threads are already constructed with appropriate stack frames.
+ return null;
+ }
+
+ /**
+ * Returns the threads underlying this execution
+ *
+ * @return The threads underlying this execution
+ */
+ public MokaThread[] getThreads() {
+ if (this.threads == null) {
+ this.threads = new ArrayList<FUMLThread>();
+ if (this.engine.getDebugTarget().getLaunch().getLaunchMode().equals(ILaunchManager.DEBUG_MODE)) {
+ FUMLThread thread = new FUMLThread(this.engine.getDebugTarget());
+ thread.setName("Main Thread");
+ thread.setStackFrames(new IStackFrame[] {});
+ this.threads.add(thread);
+ }
+ }
+ return threads.toArray(new MokaThread[threads.size()]);
+ }
+
+ /**
+ * Method that can be called by a particular execution engine to delegate control of execution flow.
+ *
+ * @param object
+ * An object from the execution flow from which control has to be delegated
+ * @return False if execution shall stop, True if execution shall continue
+ */
+ public boolean control(Object object) {
+ if (this.engine.isTerminated()) {
+ return false;
+ }
+
+ // Retrieves the semantic element
+ EObject semanticElement = null;
+ if (object instanceof ActivityNodeActivation) {
+ semanticElement = ((ActivityNodeActivation) object).node;
+ } else if (object instanceof ActivityEdgeInstance) {
+ semanticElement = ((ActivityEdgeInstance) object).edge;
+ } else {
+ Activator.log.error(new Exception("Unexpected element in ControlDelegate::control"));
+ this.engine.setIsTerminated(true);
+ return false;
+ }
+
+ // Manages animation
+ // if (object instanceof ActivityNodeActivation && semanticElement != null && MokaConstants.MOKA_AUTOMATIC_ANIMATION && this.mode.equals(ILaunchManager.DEBUG_MODE)) {
+ // this.animate((ActivityNodeActivation)object, (ActivityNode)semanticElement) ;
+ // }
+ if (semanticElement != null && MokaConstants.MOKA_AUTOMATIC_ANIMATION && this.mode.equals(ILaunchManager.DEBUG_MODE)) {
+ // this.animate((ActivityNodeActivation)object, (ActivityNode)semanticElement) ;
+ this.animate(semanticElement);
+ }
+
+ if (this.suspended) { /* Client request */
+ try {
+ synchronized (this) {
+ this.getThreads(); // To make sure that this.threads is neither null nor empty
+ MokaThread mainThread = this.threads.get(0);
+ mainThread.setSuspended(true);
+ MokaStackFrame stackFrame = FUMLPresentationUtils.getMokaStackFrame(object);
+ stackFrame.setThread(mainThread);
+ mainThread.setStackFrames(new IStackFrame[] { stackFrame });
+ Suspend_Event suspendEvent = new Suspend_Event(mainThread, DebugEvent.CLIENT_REQUEST, this.getThreads());
+ engine.sendEvent(suspendEvent);
+ wait();
+ }
+ } catch (InterruptedException e) {
+ Activator.log.error(e);
+ }
+ } else { // Tries to check if a breakpoint applies
+ if (this.elementsWithBreakpoints.contains(semanticElement) || this.reasonForResuming == DebugEvent.STEP_OVER) {
+ if ((object instanceof ActivityNodeActivation && ((ActivityNodeActivation) object).group != null) || (object instanceof ActivityEdgeInstance && ((ActivityEdgeInstance) object).group != null)) {
+ try {
+ synchronized (this) {
+ this.getThreads(); // To make sure that this.threads is neither null nor empty
+ MokaThread mainThread = this.threads.get(0);
+ mainThread.setSuspended(true);
+ MokaStackFrame stackFrame = FUMLPresentationUtils.getMokaStackFrame(object);
+ stackFrame.setThread(mainThread);
+ mainThread.setStackFrames(new IStackFrame[] { stackFrame });
+ Suspend_Event suspendEvent = new Suspend_Event(mainThread, DebugEvent.BREAKPOINT, this.getThreads());
+ engine.sendEvent(suspendEvent);
+ wait();
+ }
+ } catch (InterruptedException e) {
+ Activator.log.error(e);
+ }
+ }
+ }
+ }
+ return !this.engine.isTerminated();
+ }
+
+ protected void animate(EObject element) {
+ try {
+ // If the element is an activity edge,
+ // Also animates the source, in the case where it is a pin
+ if (element instanceof ActivityEdge) {
+ ActivityEdge edge = (ActivityEdge) element;
+ if (edge.getSource() instanceof Pin) {
+ if (AnimationUtils.getInstance().diagramsExistFor(edge.getSource())) {
+ AnimationUtils.getInstance().addAnimationMarker(edge.getSource());
+ Thread.sleep(MokaConstants.MOKA_ANIMATION_DELAY);
+ AnimationUtils.getInstance().removeAnimationMarker(edge.getSource());
+ }
+ }
+ }
+ // Animates the element
+ if ((AnimationUtils.getInstance().diagramsExistFor(element))) {
+ AnimationUtils.getInstance().addAnimationMarker(element);
+ Thread.sleep(MokaConstants.MOKA_ANIMATION_DELAY);
+ AnimationUtils.getInstance().removeAnimationMarker(element);
+ }
+ } catch (InterruptedException e) {
+ Activator.log.error(e);
+ }
+ }
+
+ public void waitForTermination() {
+ // Nothing to do
+ }
+}
diff --git a/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/debug/Debug.java b/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/debug/Debug.java
index 44ba765..76aeb36 100644
--- a/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/debug/Debug.java
+++ b/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/debug/Debug.java
@@ -1,23 +1,23 @@
-/*****************************************************************************
- * Copyright (c) 2012 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.moka.fuml.debug;
-
-public class Debug {
-
- public static void println(String message) {
- // System.err.println(message) ;
- // FIXME Bug 404555: [Moka] Pollution of the console with debug messages
- // https://bugs.eclipse.org/bugs/show_bug.cgi?id=404555
- }
-}
+/*****************************************************************************
+ * Copyright (c) 2012 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.moka.fuml.debug;
+
+public class Debug {
+
+ public static void println(String message) {
+ // System.err.println(message) ;
+ // FIXME Bug 404555: [Moka] Pollution of the console with debug messages
+ // https://bugs.eclipse.org/bugs/show_bug.cgi?id=404555
+ }
+}
diff --git a/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/registry/IOpaqueBehaviorExecutionRegistry.java b/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/registry/IOpaqueBehaviorExecutionRegistry.java
index c2e2a49..e03825a 100644
--- a/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/registry/IOpaqueBehaviorExecutionRegistry.java
+++ b/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/registry/IOpaqueBehaviorExecutionRegistry.java
@@ -1,23 +1,23 @@
-/*****************************************************************************
- * Copyright (c) 2012 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.moka.fuml.registry;
-
-import org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1.Locus;
-
-public interface IOpaqueBehaviorExecutionRegistry {
-
- public IOpaqueBehaviorExecutionRegistry init(Object parameters);
-
- public void registerOpaqueBehaviorExecutions(Locus locus);
-}
+/*****************************************************************************
+ * Copyright (c) 2012 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.moka.fuml.registry;
+
+import org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1.Locus;
+
+public interface IOpaqueBehaviorExecutionRegistry {
+
+ public IOpaqueBehaviorExecutionRegistry init(Object parameters);
+
+ public void registerOpaqueBehaviorExecutions(Locus locus);
+}
diff --git a/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/registry/ISemanticStrategyRegistry.java b/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/registry/ISemanticStrategyRegistry.java
index 2ebcf26..315efd5 100644
--- a/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/registry/ISemanticStrategyRegistry.java
+++ b/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/registry/ISemanticStrategyRegistry.java
@@ -1,23 +1,23 @@
-/*****************************************************************************
- * Copyright (c) 2012 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.moka.fuml.registry;
-
-import org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1.Locus;
-
-public interface ISemanticStrategyRegistry {
-
- public ISemanticStrategyRegistry init(Object parameters);
-
- public void registerSemanticStrategies(Locus locus);
-}
+/*****************************************************************************
+ * Copyright (c) 2012 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.moka.fuml.registry;
+
+import org.eclipse.papyrus.moka.fuml.Semantics.Loci.LociL1.Locus;
+
+public interface ISemanticStrategyRegistry {
+
+ public ISemanticStrategyRegistry init(Object parameters);
+
+ public void registerSemanticStrategies(Locus locus);
+}
diff --git a/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/registry/service/framework/AbstractService.java b/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/registry/service/framework/AbstractService.java
index 7244f57..9c5b043 100644
--- a/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/registry/service/framework/AbstractService.java
+++ b/org.eclipse.papyrus.moka.fuml/src/org/eclipse/papyrus/moka/fuml/registry/service/framework/AbstractService.java
@@ -1,76 +1,76 @@
-/*****************************************************************************
- * Copyright (c) 2014 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.moka.fuml.registry.service.framework;
-
-import java.util.HashMap;
-import java.util.List;
-
-import org.apache.commons.lang.NotImplementedException;
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Object_;
-import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Value;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.Execution;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.OpaqueBehaviorExecution;
-import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
-import org.eclipse.papyrus.moka.fuml.registry.SystemServicesRegistryUtils;
-import org.eclipse.uml2.uml.Behavior;
-import org.eclipse.uml2.uml.Class;
-import org.eclipse.uml2.uml.OpaqueBehavior;
-import org.eclipse.uml2.uml.Operation;
-
-public abstract class AbstractService extends Object_ {
-
- protected HashMap<Operation, OpaqueBehavior> ownedOperation;
-
- protected HashMap<Operation, Execution> operationExecution;
-
- private void initializeOperations(Class classifier) {
- this.ownedOperation = new HashMap<Operation, OpaqueBehavior>();
- for (Operation op : classifier.getAllOperations()) {
- this.ownedOperation.put(op, SystemServicesRegistryUtils.getInstance().generateOpaqueBehaviorSignature(op));
- }
- }
-
- public AbstractService(Class service) {
- super();
- this.types.add(service);
- this.initializeOperations(service);
- this.operationExecution = new HashMap<Operation, Execution>();
- }
-
- @Override
- public Execution dispatch(Operation operation) {
- if (this.operationExecution.containsKey(operation)) {
- return this.operationExecution.get(operation);
- }
- throw new NotImplementedException("Not any ServiceOperationExecution implemented/registered for this operation");
- }
-
- public abstract class ServiceOperationExecution extends OpaqueBehaviorExecution {
-
- protected Operation operation;
-
- public ServiceOperationExecution(Operation operation) {
- this.operation = operation;
- }
-
- @Override
- public Behavior getBehavior() {
- return AbstractService.this.ownedOperation.get(this.operation);
- }
-
- @Override
- public abstract void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters);
-
- @Override
- public abstract Value new_();
- }
-}
+/*****************************************************************************
+ * Copyright (c) 2014 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.moka.fuml.registry.service.framework;
+
+import java.util.HashMap;
+import java.util.List;
+
+import org.apache.commons.lang.NotImplementedException;
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Object_;
+import org.eclipse.papyrus.moka.fuml.Semantics.Classes.Kernel.Value;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.Execution;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.OpaqueBehaviorExecution;
+import org.eclipse.papyrus.moka.fuml.Semantics.CommonBehaviors.BasicBehaviors.ParameterValue;
+import org.eclipse.papyrus.moka.fuml.registry.SystemServicesRegistryUtils;
+import org.eclipse.uml2.uml.Behavior;
+import org.eclipse.uml2.uml.Class;
+import org.eclipse.uml2.uml.OpaqueBehavior;
+import org.eclipse.uml2.uml.Operation;
+
+public abstract class AbstractService extends Object_ {
+
+ protected HashMap<Operation, OpaqueBehavior> ownedOperation;
+
+ protected HashMap<Operation, Execution> operationExecution;
+
+ private void initializeOperations(Class classifier) {
+ this.ownedOperation = new HashMap<Operation, OpaqueBehavior>();
+ for (Operation op : classifier.getAllOperations()) {
+ this.ownedOperation.put(op, SystemServicesRegistryUtils.getInstance().generateOpaqueBehaviorSignature(op));
+ }
+ }
+
+ public AbstractService(Class service) {
+ super();
+ this.types.add(service);
+ this.initializeOperations(service);
+ this.operationExecution = new HashMap<Operation, Execution>();
+ }
+
+ @Override
+ public Execution dispatch(Operation operation) {
+ if (this.operationExecution.containsKey(operation)) {
+ return this.operationExecution.get(operation);
+ }
+ throw new NotImplementedException("Not any ServiceOperationExecution implemented/registered for this operation");
+ }
+
+ public abstract class ServiceOperationExecution extends OpaqueBehaviorExecution {
+
+ protected Operation operation;
+
+ public ServiceOperationExecution(Operation operation) {
+ this.operation = operation;
+ }
+
+ @Override
+ public Behavior getBehavior() {
+ return AbstractService.this.ownedOperation.get(this.operation);
+ }
+
+ @Override
+ public abstract void doBody(List<ParameterValue> inputParameters, List<ParameterValue> outputParameters);
+
+ @Override
+ public abstract Value new_();
+ }
+}
diff --git a/org.eclipse.papyrus.moka.ui/.classpath b/org.eclipse.papyrus.moka.ui/.classpath
index 2d1a430..64c5e31 100644
--- a/org.eclipse.papyrus.moka.ui/.classpath
+++ b/org.eclipse.papyrus.moka.ui/.classpath
@@ -1,7 +1,7 @@
-<?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/J2SE-1.5"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?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/J2SE-1.5"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.papyrus.moka.ui/.project b/org.eclipse.papyrus.moka.ui/.project
index 0b08087..6ce5f0a 100644
--- a/org.eclipse.papyrus.moka.ui/.project
+++ b/org.eclipse.papyrus.moka.ui/.project
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.papyrus.moka.ui</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <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>
- </natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.moka.ui</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <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>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.papyrus.moka.ui/META-INF/MANIFEST.MF b/org.eclipse.papyrus.moka.ui/META-INF/MANIFEST.MF
index c5ffcb2..0b723ba 100644
--- a/org.eclipse.papyrus.moka.ui/META-INF/MANIFEST.MF
+++ b/org.eclipse.papyrus.moka.ui/META-INF/MANIFEST.MF
@@ -1,33 +1,33 @@
-Manifest-Version: 1.0
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.papyrus.moka;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
- org.eclipse.debug.core;bundle-version="3.8.0",
- org.eclipse.debug.ui;bundle-version="3.9.0",
- org.eclipse.papyrus.infra.widgets;bundle-version="1.2.0",
- org.eclipse.gmf.runtime.notation;bundle-version="1.5.0",
- org.eclipse.gef;bundle-version="3.9.0",
- org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.7.0",
- org.eclipse.papyrus.uml.diagram.common;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.emf;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.services.decoration;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.services.labelprovider;bundle-version="1.2.0",
- org.eclipse.ui.ide;bundle-version="3.9.0",
- org.eclipse.papyrus.editor;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.gmfdiag.css;bundle-version="1.2.0",
- org.eclipse.e4.ui.css.core;bundle-version="0.10.100",
- org.eclipse.papyrus.infra.gmfdiag.common;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.services.markerlistener;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
- org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.2.0",
- org.eclipse.uml2.uml;bundle-version="4.1.0"
-Export-Package: org.eclipse.papyrus.moka.ui.launch,
- org.eclipse.papyrus.moka.ui.presentation
-Bundle-Vendor: Eclipse Modeling Project
-Bundle-Version: 1.2.0.qualifier
-Bundle-Name: Moka UI (Incubation)
-Bundle-ManifestVersion: 2
-Bundle-Activator: org.eclipse.papyrus.moka.ui.Activator
-Bundle-SymbolicName: org.eclipse.papyrus.moka.ui;singleton:=true
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.papyrus.moka;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
+ org.eclipse.debug.core;bundle-version="3.8.0",
+ org.eclipse.debug.ui;bundle-version="3.9.0",
+ org.eclipse.papyrus.infra.widgets;bundle-version="1.2.0",
+ org.eclipse.gmf.runtime.notation;bundle-version="1.5.0",
+ org.eclipse.gef;bundle-version="3.9.0",
+ org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.7.0",
+ org.eclipse.papyrus.uml.diagram.common;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.emf;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.services.decoration;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.services.labelprovider;bundle-version="1.2.0",
+ org.eclipse.ui.ide;bundle-version="3.9.0",
+ org.eclipse.papyrus.editor;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.gmfdiag.css;bundle-version="1.2.0",
+ org.eclipse.e4.ui.css.core;bundle-version="0.10.100",
+ org.eclipse.papyrus.infra.gmfdiag.common;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.services.markerlistener;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.papyrus.uml.extensionpoints;bundle-version="1.2.0",
+ org.eclipse.uml2.uml;bundle-version="4.1.0"
+Export-Package: org.eclipse.papyrus.moka.ui.launch,
+ org.eclipse.papyrus.moka.ui.presentation
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: Moka UI (Incubation)
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.moka.ui.Activator
+Bundle-SymbolicName: org.eclipse.papyrus.moka.ui;singleton:=true
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.papyrus.moka.ui/about.html b/org.eclipse.papyrus.moka.ui/about.html
index 82d49bf..d35d5ae 100644
--- a/org.eclipse.papyrus.moka.ui/about.html
+++ b/org.eclipse.papyrus.moka.ui/about.html
@@ -1,28 +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>June 5, 2007</p>
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
+<!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>June 5, 2007</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
diff --git a/org.eclipse.papyrus.moka.ui/pom.xml b/org.eclipse.papyrus.moka.ui/pom.xml
index 8ec2ce9..a704043 100644
--- a/org.eclipse.papyrus.moka.ui/pom.xml
+++ b/org.eclipse.papyrus.moka.ui/pom.xml
@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>org.eclipse.papyrus.extra.releng</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.moka.parent</artifactId>
+ <groupId>org.eclipse.papyrus.moka</groupId>
<version>1.2.0-SNAPSHOT</version>
- <relativePath>../../../releng/extra</relativePath>
</parent>
<artifactId>org.eclipse.papyrus.moka.ui</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
- <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
+ <name>org.eclipse.papyrus.moka.ui</name>
</project>
\ No newline at end of file
diff --git a/org.eclipse.papyrus.moka.ui/src/org/eclipse/papyrus/moka/ui/preferences/MokaPreferencePage.java b/org.eclipse.papyrus.moka.ui/src/org/eclipse/papyrus/moka/ui/preferences/MokaPreferencePage.java
index a04b476..36056ef 100644
--- a/org.eclipse.papyrus.moka.ui/src/org/eclipse/papyrus/moka/ui/preferences/MokaPreferencePage.java
+++ b/org.eclipse.papyrus.moka.ui/src/org/eclipse/papyrus/moka/ui/preferences/MokaPreferencePage.java
@@ -1,59 +1,59 @@
-/*****************************************************************************
- * 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
- *
- *****************************************************************************/
-package org.eclipse.papyrus.moka.ui.preferences;
-
-import org.eclipse.core.runtime.IConfigurationElement;
-import org.eclipse.core.runtime.IExtensionRegistry;
-import org.eclipse.core.runtime.Platform;
-import org.eclipse.jface.preference.FieldEditorPreferencePage;
-import org.eclipse.jface.preference.RadioGroupFieldEditor;
-import org.eclipse.papyrus.moka.MokaConstants;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchPreferencePage;
-
-/**
- * A preference page for Moka. It enables to select the
- * default execution engine, to be used when a launch
- * configuration is started.
- * FIXME It should part of Papyrus preferences
- *
- */
-public class MokaPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
-
- public MokaPreferencePage() {
- super(GRID);
- setPreferenceStore(org.eclipse.papyrus.moka.Activator.getDefault().getPreferenceStore());
- setDescription("");
- }
-
- public void init(IWorkbench workbench) {
- }
-
- @Override
- protected void createFieldEditors() {
- String[][] names = getRegisteredExecutionEnginesAsStringArray();
- this.addField(new RadioGroupFieldEditor(MokaConstants.MOKA_DEFAULT_EXECUTION_ENGINE_PREF, "Execution Engines", 1, names, getFieldEditorParent()));
- }
-
- protected String[][] getRegisteredExecutionEnginesAsStringArray() {
- IExtensionRegistry registry = Platform.getExtensionRegistry();
- IConfigurationElement[] config = registry.getConfigurationElementsFor(MokaConstants.MOKA_ENGINE_EXTENSION_POINT_ID);
- String[][] names = new String[config.length][2];
- for (int i = 0; i < config.length; i++) {
- names[i][1] = config[i].getNamespaceIdentifier();
- names[i][0] = config[i].getAttribute("description");
- }
- return names;
- }
-}
+/*****************************************************************************
+ * 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
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.moka.ui.preferences;
+
+import org.eclipse.core.runtime.IConfigurationElement;
+import org.eclipse.core.runtime.IExtensionRegistry;
+import org.eclipse.core.runtime.Platform;
+import org.eclipse.jface.preference.FieldEditorPreferencePage;
+import org.eclipse.jface.preference.RadioGroupFieldEditor;
+import org.eclipse.papyrus.moka.MokaConstants;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchPreferencePage;
+
+/**
+ * A preference page for Moka. It enables to select the
+ * default execution engine, to be used when a launch
+ * configuration is started.
+ * FIXME It should part of Papyrus preferences
+ *
+ */
+public class MokaPreferencePage extends FieldEditorPreferencePage implements IWorkbenchPreferencePage {
+
+ public MokaPreferencePage() {
+ super(GRID);
+ setPreferenceStore(org.eclipse.papyrus.moka.Activator.getDefault().getPreferenceStore());
+ setDescription("");
+ }
+
+ public void init(IWorkbench workbench) {
+ }
+
+ @Override
+ protected void createFieldEditors() {
+ String[][] names = getRegisteredExecutionEnginesAsStringArray();
+ this.addField(new RadioGroupFieldEditor(MokaConstants.MOKA_DEFAULT_EXECUTION_ENGINE_PREF, "Execution Engines", 1, names, getFieldEditorParent()));
+ }
+
+ protected String[][] getRegisteredExecutionEnginesAsStringArray() {
+ IExtensionRegistry registry = Platform.getExtensionRegistry();
+ IConfigurationElement[] config = registry.getConfigurationElementsFor(MokaConstants.MOKA_ENGINE_EXTENSION_POINT_ID);
+ String[][] names = new String[config.length][2];
+ for (int i = 0; i < config.length; i++) {
+ names[i][1] = config[i].getNamespaceIdentifier();
+ names[i][0] = config[i].getAttribute("description");
+ }
+ return names;
+ }
+}
diff --git a/org.eclipse.papyrus.moka.ui/theme/defaultAnimationTheme.css b/org.eclipse.papyrus.moka.ui/theme/defaultAnimationTheme.css
index 0961c3d..95bdcc1 100644
--- a/org.eclipse.papyrus.moka.ui/theme/defaultAnimationTheme.css
+++ b/org.eclipse.papyrus.moka.ui/theme/defaultAnimationTheme.css
@@ -1,10 +1,10 @@
-:animation{
- lineColor: red;
- fillColor: #56f99b;
- font-weight: bold;
-}
-
-:suspended{
- lineColor: #ff0315;
- fillColor: #fab953;
+:animation{
+ lineColor: red;
+ fillColor: #56f99b;
+ font-weight: bold;
+}
+
+:suspended{
+ lineColor: #ff0315;
+ fillColor: #fab953;
}
\ No newline at end of file
diff --git a/org.eclipse.papyrus.moka/.classpath b/org.eclipse.papyrus.moka/.classpath
index b1dabee..098194c 100644
--- a/org.eclipse.papyrus.moka/.classpath
+++ b/org.eclipse.papyrus.moka/.classpath
@@ -1,7 +1,7 @@
-<?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.7"/>
- <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
- <classpathentry kind="src" path="src"/>
- <classpathentry kind="output" path="bin"/>
-</classpath>
+<?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.7"/>
+ <classpathentry kind="con" path="org.eclipse.pde.core.requiredPlugins"/>
+ <classpathentry kind="src" path="src"/>
+ <classpathentry kind="output" path="bin"/>
+</classpath>
diff --git a/org.eclipse.papyrus.moka/.project b/org.eclipse.papyrus.moka/.project
index 2b559f5..8ada1f9 100644
--- a/org.eclipse.papyrus.moka/.project
+++ b/org.eclipse.papyrus.moka/.project
@@ -1,28 +1,28 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<projectDescription>
- <name>org.eclipse.papyrus.moka</name>
- <comment></comment>
- <projects>
- </projects>
- <buildSpec>
- <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>
- </natures>
-</projectDescription>
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.papyrus.moka</name>
+ <comment></comment>
+ <projects>
+ </projects>
+ <buildSpec>
+ <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>
+ </natures>
+</projectDescription>
diff --git a/org.eclipse.papyrus.moka/META-INF/MANIFEST.MF b/org.eclipse.papyrus.moka/META-INF/MANIFEST.MF
index 9086979..5bba6de 100644
--- a/org.eclipse.papyrus.moka/META-INF/MANIFEST.MF
+++ b/org.eclipse.papyrus.moka/META-INF/MANIFEST.MF
@@ -1,38 +1,38 @@
-Manifest-Version: 1.0
-Require-Bundle: org.eclipse.ui,
- org.eclipse.core.runtime,
- org.eclipse.debug.core;bundle-version="3.7.100",
- org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
- org.eclipse.uml2.uml;bundle-version="4.0.1",
- org.eclipse.emf.transaction;bundle-version="1.8.0",
- org.eclipse.gmf.runtime.notation;bundle-version="1.5.0",
- org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.6.0",
- org.eclipse.papyrus.infra.gmfdiag.css;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.services.markerlistener;bundle-version="1.2.0",
- org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
- org.eclipse.ui.ide;bundle-version="3.9.0"
-Export-Package: org.eclipse.papyrus.moka,
- org.eclipse.papyrus.moka.communication,
- org.eclipse.papyrus.moka.communication.event,
- org.eclipse.papyrus.moka.communication.event.isuspendresume,
- org.eclipse.papyrus.moka.communication.event.iterminate,
- org.eclipse.papyrus.moka.communication.reply,
- org.eclipse.papyrus.moka.communication.reply.istackframe,
- org.eclipse.papyrus.moka.communication.reply.ithread,
- org.eclipse.papyrus.moka.communication.reply.ivalue,
- org.eclipse.papyrus.moka.communication.reply.ivariable,
- org.eclipse.papyrus.moka.communication.request,
- org.eclipse.papyrus.moka.communication.request.isuspendresume,
- org.eclipse.papyrus.moka.communication.request.iterminate,
- org.eclipse.papyrus.moka.debug,
- org.eclipse.papyrus.moka.engine,
- org.eclipse.papyrus.moka.launch
-Bundle-Vendor: Eclipse Modeling Project
-Bundle-ActivationPolicy: lazy
-Bundle-Version: 1.2.0.qualifier
-Bundle-Name: Moka (Incubation)
-Bundle-ManifestVersion: 2
-Bundle-Activator: org.eclipse.papyrus.moka.Activator
-Bundle-Description: %pluginDescription
-Bundle-SymbolicName: org.eclipse.papyrus.moka;singleton:=true
-Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Manifest-Version: 1.0
+Require-Bundle: org.eclipse.ui,
+ org.eclipse.core.runtime,
+ org.eclipse.debug.core;bundle-version="3.7.100",
+ org.eclipse.papyrus.infra.core;bundle-version="1.2.0",
+ org.eclipse.uml2.uml;bundle-version="4.0.1",
+ org.eclipse.emf.transaction;bundle-version="1.8.0",
+ org.eclipse.gmf.runtime.notation;bundle-version="1.5.0",
+ org.eclipse.gmf.runtime.diagram.ui;bundle-version="1.6.0",
+ org.eclipse.papyrus.infra.gmfdiag.css;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.services.markerlistener;bundle-version="1.2.0",
+ org.eclipse.papyrus.infra.core.log;bundle-version="1.2.0",
+ org.eclipse.ui.ide;bundle-version="3.9.0"
+Export-Package: org.eclipse.papyrus.moka,
+ org.eclipse.papyrus.moka.communication,
+ org.eclipse.papyrus.moka.communication.event,
+ org.eclipse.papyrus.moka.communication.event.isuspendresume,
+ org.eclipse.papyrus.moka.communication.event.iterminate,
+ org.eclipse.papyrus.moka.communication.reply,
+ org.eclipse.papyrus.moka.communication.reply.istackframe,
+ org.eclipse.papyrus.moka.communication.reply.ithread,
+ org.eclipse.papyrus.moka.communication.reply.ivalue,
+ org.eclipse.papyrus.moka.communication.reply.ivariable,
+ org.eclipse.papyrus.moka.communication.request,
+ org.eclipse.papyrus.moka.communication.request.isuspendresume,
+ org.eclipse.papyrus.moka.communication.request.iterminate,
+ org.eclipse.papyrus.moka.debug,
+ org.eclipse.papyrus.moka.engine,
+ org.eclipse.papyrus.moka.launch
+Bundle-Vendor: Eclipse Modeling Project
+Bundle-ActivationPolicy: lazy
+Bundle-Version: 1.2.0.qualifier
+Bundle-Name: Moka (Incubation)
+Bundle-ManifestVersion: 2
+Bundle-Activator: org.eclipse.papyrus.moka.Activator
+Bundle-Description: %pluginDescription
+Bundle-SymbolicName: org.eclipse.papyrus.moka;singleton:=true
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
diff --git a/org.eclipse.papyrus.moka/about.html b/org.eclipse.papyrus.moka/about.html
index 82d49bf..d35d5ae 100644
--- a/org.eclipse.papyrus.moka/about.html
+++ b/org.eclipse.papyrus.moka/about.html
@@ -1,28 +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>June 5, 2007</p>
-<h3>License</h3>
-
-<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
-indicated below, the Content is provided to you under the terms and conditions of the
-Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
+<!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>June 5, 2007</p>
+<h3>License</h3>
+
+<p>The Eclipse Foundation makes available all content in this plug-in ("Content"). Unless otherwise
+indicated below, the Content is provided to you under the terms and conditions of the
+Eclipse Public License Version 1.0 ("EPL"). 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, "Program" 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 ("Redistributor") 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>
diff --git a/org.eclipse.papyrus.moka/build.properties b/org.eclipse.papyrus.moka/build.properties
index cb21bd8..ebc00b6 100644
--- a/org.eclipse.papyrus.moka/build.properties
+++ b/org.eclipse.papyrus.moka/build.properties
@@ -1,10 +1,9 @@
-source.. = src/
-output.. = bin/
-bin.includes = META-INF/,\
- .,\
- plugin.xml,\
- schema/,\
- about.html,\
- icons/,\
- OSGI-INF/
-src.includes = about.html
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .,\
+ plugin.xml,\
+ schema/,\
+ about.html,\
+ icons
+src.includes = about.html
diff --git a/org.eclipse.papyrus.moka/plugin.xml b/org.eclipse.papyrus.moka/plugin.xml
index a8de535..52909f5 100644
--- a/org.eclipse.papyrus.moka/plugin.xml
+++ b/org.eclipse.papyrus.moka/plugin.xml
@@ -1,45 +1,45 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<?eclipse version="3.4"?>
-<plugin>
- <extension-point id="engine" name="ExecutionEngine" schema="schema/engine.exsd"/>
- <extension
- point="org.eclipse.debug.core.breakpoints">
- <breakpoint
- class="org.eclipse.papyrus.moka.debug.MokaBreakpoint"
- id="org.eclipse.papyrus.moka.breakpoint"
- markerType="org.eclipse.papyrus.moka.breakpointmarker">
- </breakpoint>
- </extension>
- <extension
- point="org.eclipse.debug.core.launchConfigurationTypes">
- <launchConfigurationType
- delegate="org.eclipse.papyrus.moka.launch.MokaLaunchDelegate"
- id="org.eclipse.papyrus.moka.launchConfiguration"
- modes="run, debug"
- name="Moka launch configuration"
- sourceLocatorId="org.eclipse.papyrus.moka.sourceLocator">
- </launchConfigurationType>
- </extension>
- <extension
- point="org.eclipse.debug.core.sourceLocators">
- <sourceLocator
- class="org.eclipse.papyrus.moka.locator.MokaSourceLocator"
- id="org.eclipse.papyrus.moka.sourceLocator"
- name="Moka source locator">
- </sourceLocator>
- </extension>
- <extension
- id="org.eclipse.papyrus.moka.breakpointmarker"
- point="org.eclipse.core.resources.markers">
- <super
- type="org.eclipse.debug.core.breakpointMarker">
- </super>
- <super
- type="org.eclipse.papyrus.modelmarker">
- </super>
- <persistent
- value="true">
- </persistent>
- </extension>
-
-</plugin>
+<?xml version="1.0" encoding="UTF-8"?>
+<?eclipse version="3.4"?>
+<plugin>
+ <extension-point id="engine" name="ExecutionEngine" schema="schema/engine.exsd"/>
+ <extension
+ point="org.eclipse.debug.core.breakpoints">
+ <breakpoint
+ class="org.eclipse.papyrus.moka.debug.MokaBreakpoint"
+ id="org.eclipse.papyrus.moka.breakpoint"
+ markerType="org.eclipse.papyrus.moka.breakpointmarker">
+ </breakpoint>
+ </extension>
+ <extension
+ point="org.eclipse.debug.core.launchConfigurationTypes">
+ <launchConfigurationType
+ delegate="org.eclipse.papyrus.moka.launch.MokaLaunchDelegate"
+ id="org.eclipse.papyrus.moka.launchConfiguration"
+ modes="run, debug"
+ name="Moka launch configuration"
+ sourceLocatorId="org.eclipse.papyrus.moka.sourceLocator">
+ </launchConfigurationType>
+ </extension>
+ <extension
+ point="org.eclipse.debug.core.sourceLocators">
+ <sourceLocator
+ class="org.eclipse.papyrus.moka.locator.MokaSourceLocator"
+ id="org.eclipse.papyrus.moka.sourceLocator"
+ name="Moka source locator">
+ </sourceLocator>
+ </extension>
+ <extension
+ id="org.eclipse.papyrus.moka.breakpointmarker"
+ point="org.eclipse.core.resources.markers">
+ <super
+ type="org.eclipse.debug.core.breakpointMarker">
+ </super>
+ <super
+ type="org.eclipse.papyrus.modelmarker">
+ </super>
+ <persistent
+ value="true">
+ </persistent>
+ </extension>
+
+</plugin>
diff --git a/org.eclipse.papyrus.moka/pom.xml b/org.eclipse.papyrus.moka/pom.xml
index 442f91b..fc55070 100644
--- a/org.eclipse.papyrus.moka/pom.xml
+++ b/org.eclipse.papyrus.moka/pom.xml
@@ -1,14 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
-<project>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<parent>
- <artifactId>org.eclipse.papyrus.extra.releng</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
+ <artifactId>org.eclipse.papyrus.moka.parent</artifactId>
+ <groupId>org.eclipse.papyrus.moka</groupId>
<version>1.2.0-SNAPSHOT</version>
- <relativePath>../../../releng/extra</relativePath>
</parent>
<artifactId>org.eclipse.papyrus.moka</artifactId>
- <groupId>org.eclipse.papyrus</groupId>
- <version>1.2.0-SNAPSHOT</version>
<packaging>eclipse-plugin</packaging>
+ <name>org.eclipse.papyrus.moka</name>
</project>
\ No newline at end of file
diff --git a/org.eclipse.papyrus.moka/schema/engine.exsd b/org.eclipse.papyrus.moka/schema/engine.exsd
index 3c8cf9e..198e2ac 100644
--- a/org.eclipse.papyrus.moka/schema/engine.exsd
+++ b/org.eclipse.papyrus.moka/schema/engine.exsd
@@ -1,132 +1,132 @@
-<?xml version='1.0' encoding='UTF-8'?>
-<!-- Schema file written by PDE -->
-<schema targetNamespace="org.eclipse.papyrus.moka" xmlns="http://www.w3.org/2001/XMLSchema">
-<annotation>
- <appinfo>
- <meta.schema plugin="org.eclipse.papyrus.moka" id="engine" name="ExecutionEngine"/>
- </appinfo>
- <documentation>
- Contributing to this extension point enables to register a new execution engine for Moka. A contribution just have to provide an implementation for the IExecutionEngine interface.
- </documentation>
- </annotation>
-
- <element name="extension">
- <annotation>
- <appinfo>
- <meta.element />
- </appinfo>
- <documentation>
- Contributing to this extension point enables to register a new execution engine for Moka. A contribution just have to provide an implementation for the IExecutionEngine interface.
- </documentation>
- </annotation>
- <complexType>
- <sequence minOccurs="1" maxOccurs="unbounded">
- <element ref="engine"/>
- </sequence>
- <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="engine">
- <complexType>
- <attribute name="class" type="string">
- <annotation>
- <documentation>
-
- </documentation>
- <appinfo>
- <meta.attribute kind="java" basedOn=":org.eclipse.papyrus.moka.engine.IExecutionEngine"/>
- </appinfo>
- </annotation>
- </attribute>
- <attribute name="description" type="string" use="required">
- <annotation>
- <documentation>
-
- </documentation>
- </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>
- Cf. org.eclipse.papyrus.moka.fuml.FUMLExecutionEngine
- </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>
-
- <annotation>
- <appinfo>
- <meta.section type="copyright"/>
- </appinfo>
- <documentation>
- /*****************************************************************************
- * Copyright (c) 2012 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
- *
- *****************************************************************************/
- </documentation>
- </annotation>
-
-</schema>
+<?xml version='1.0' encoding='UTF-8'?>
+<!-- Schema file written by PDE -->
+<schema targetNamespace="org.eclipse.papyrus.moka" xmlns="http://www.w3.org/2001/XMLSchema">
+<annotation>
+ <appinfo>
+ <meta.schema plugin="org.eclipse.papyrus.moka" id="engine" name="ExecutionEngine"/>
+ </appinfo>
+ <documentation>
+ Contributing to this extension point enables to register a new execution engine for Moka. A contribution just have to provide an implementation for the IExecutionEngine interface.
+ </documentation>
+ </annotation>
+
+ <element name="extension">
+ <annotation>
+ <appinfo>
+ <meta.element />
+ </appinfo>
+ <documentation>
+ Contributing to this extension point enables to register a new execution engine for Moka. A contribution just have to provide an implementation for the IExecutionEngine interface.
+ </documentation>
+ </annotation>
+ <complexType>
+ <sequence minOccurs="1" maxOccurs="unbounded">
+ <element ref="engine"/>
+ </sequence>
+ <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="engine">
+ <complexType>
+ <attribute name="class" type="string">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ <appinfo>
+ <meta.attribute kind="java" basedOn=":org.eclipse.papyrus.moka.engine.IExecutionEngine"/>
+ </appinfo>
+ </annotation>
+ </attribute>
+ <attribute name="description" type="string" use="required">
+ <annotation>
+ <documentation>
+
+ </documentation>
+ </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>
+ Cf. org.eclipse.papyrus.moka.fuml.FUMLExecutionEngine
+ </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>
+
+ <annotation>
+ <appinfo>
+ <meta.section type="copyright"/>
+ </appinfo>
+ <documentation>
+ /*****************************************************************************
+ * Copyright (c) 2012 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
+ *
+ *****************************************************************************/
+ </documentation>
+ </annotation>
+
+</schema>
diff --git a/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/debug/MokaJobChangeListener.java b/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/debug/MokaJobChangeListener.java
index 34bdfaa..1a444d8 100644
--- a/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/debug/MokaJobChangeListener.java
+++ b/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/debug/MokaJobChangeListener.java
@@ -1,54 +1,54 @@
-/*****************************************************************************
- * 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
- *
- *****************************************************************************/
-package org.eclipse.papyrus.moka.debug;
-
-import org.eclipse.core.runtime.jobs.IJobChangeEvent;
-import org.eclipse.core.runtime.jobs.IJobChangeListener;
-
-/**
- * See MokaProcess
- *
- */
-public class MokaJobChangeListener implements IJobChangeListener {
-
- protected MokaProcess process;
-
- public MokaJobChangeListener(MokaProcess process) {
- this.process = process;
- }
-
- public void sleeping(IJobChangeEvent event) {
- // Not used
- }
-
- public void scheduled(IJobChangeEvent event) {
- // Not used
- }
-
- public void running(IJobChangeEvent event) {
- // Not used
- }
-
- public void done(IJobChangeEvent event) {
- process.terminated();
- }
-
- public void awake(IJobChangeEvent event) {
- // Not used
- }
-
- public void aboutToRun(IJobChangeEvent event) {
- // Not used
- }
-}
+/*****************************************************************************
+ * 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
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.moka.debug;
+
+import org.eclipse.core.runtime.jobs.IJobChangeEvent;
+import org.eclipse.core.runtime.jobs.IJobChangeListener;
+
+/**
+ * See MokaProcess
+ *
+ */
+public class MokaJobChangeListener implements IJobChangeListener {
+
+ protected MokaProcess process;
+
+ public MokaJobChangeListener(MokaProcess process) {
+ this.process = process;
+ }
+
+ public void sleeping(IJobChangeEvent event) {
+ // Not used
+ }
+
+ public void scheduled(IJobChangeEvent event) {
+ // Not used
+ }
+
+ public void running(IJobChangeEvent event) {
+ // Not used
+ }
+
+ public void done(IJobChangeEvent event) {
+ process.terminated();
+ }
+
+ public void awake(IJobChangeEvent event) {
+ // Not used
+ }
+
+ public void aboutToRun(IJobChangeEvent event) {
+ // Not used
+ }
+}
diff --git a/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/engine/AbstractExecutionEngine.java b/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/engine/AbstractExecutionEngine.java
index f8d0883..53cb0d3 100644
--- a/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/engine/AbstractExecutionEngine.java
+++ b/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/engine/AbstractExecutionEngine.java
@@ -1,546 +1,546 @@
-/*****************************************************************************
- * 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
- *
- *****************************************************************************/
-package org.eclipse.papyrus.moka.engine;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStreamReader;
-import java.io.PrintWriter;
-import java.net.ServerSocket;
-import java.net.Socket;
-import java.net.UnknownHostException;
-
-import org.eclipse.debug.core.ILaunchManager;
-import org.eclipse.debug.core.model.IDebugElement;
-import org.eclipse.debug.core.model.IMemoryBlock;
-import org.eclipse.debug.core.model.IRegisterGroup;
-import org.eclipse.debug.core.model.IStackFrame;
-import org.eclipse.debug.core.model.IThread;
-import org.eclipse.debug.core.model.IValue;
-import org.eclipse.debug.core.model.IVariable;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.papyrus.moka.MokaConstants;
-import org.eclipse.papyrus.moka.communication.Marshaller;
-import org.eclipse.papyrus.moka.communication.event.EventMessage;
-import org.eclipse.papyrus.moka.communication.event.Start_Event;
-import org.eclipse.papyrus.moka.communication.event.isuspendresume.Resume_Event;
-import org.eclipse.papyrus.moka.communication.event.isuspendresume.Suspend_Event;
-import org.eclipse.papyrus.moka.communication.event.iterminate.Terminate_Event;
-import org.eclipse.papyrus.moka.communication.reply.Ack;
-import org.eclipse.papyrus.moka.communication.reply.ReplyMessage;
-import org.eclipse.papyrus.moka.communication.reply.istackframe.GetVariables_Reply;
-import org.eclipse.papyrus.moka.communication.reply.ithread.GetStackFrames_Reply;
-import org.eclipse.papyrus.moka.communication.reply.ivalue.GetValueString_Reply;
-import org.eclipse.papyrus.moka.communication.reply.ivariable.GetReferenceTypeName_Reply;
-import org.eclipse.papyrus.moka.communication.reply.ivariable.GetValue_Reply;
-import org.eclipse.papyrus.moka.communication.request.ibreakpointlistener.AddBreakpoint_Request;
-import org.eclipse.papyrus.moka.communication.request.ibreakpointlistener.RemoveBreakpoint_Request;
-import org.eclipse.papyrus.moka.communication.request.istackframe.GetVariables_Request;
-import org.eclipse.papyrus.moka.communication.request.isuspendresume.Resume_Request;
-import org.eclipse.papyrus.moka.communication.request.isuspendresume.Suspend_Request;
-import org.eclipse.papyrus.moka.communication.request.iterminate.Terminate_Request;
-import org.eclipse.papyrus.moka.communication.request.ithread.GetStackFrames_Request;
-import org.eclipse.papyrus.moka.communication.request.ivalue.GetValueString_Request;
-import org.eclipse.papyrus.moka.communication.request.ivariable.GetReferenceTypeName_Request;
-import org.eclipse.papyrus.moka.communication.request.ivariable.GetValue_Request;
-import org.eclipse.papyrus.moka.debug.MokaBreakpoint;
-import org.eclipse.papyrus.moka.debug.MokaDebugTarget;
-import org.eclipse.papyrus.moka.debug.MokaValue;
-import org.eclipse.papyrus.moka.debug.MokaVariable;
-
-/**
- * An abstract implementation of IExecutionEngine, consistent with the communication
- * protocol implemented by MokaDebugTarget.
- * This implementation encapsulates a request dispatch loop. This abstract class can
- * be extended and used with the generic implementation of the Eclipse Debug Model
- * provided by Moka. The proposed debug model is included in package debug.
- * In particular, it includes class MokaDebugTarget, an implementation of IDebugTarget
- * which encapsulates an event dispatch loop.
- *
- */
-public abstract class AbstractExecutionEngine implements IExecutionEngine {
-
- /**
- * The eObject being executed by this execution engine
- */
- protected EObject eObjectToExecute;
-
- /**
- * The mode in which this execution is running. Values can be ILaunchManager.DEBUG_MODE or ILaunchManager.RUN_MODE
- */
- protected String mode = ILaunchManager.RUN_MODE;
-
- /**
- * The debug target associated with this execution engine
- */
- protected MokaDebugTarget debugTarget;
-
- /**
- * The server socket used to accept connection from the requestSocket (connection is done in Moka debug target)
- */
- protected ServerSocket requestServer;
-
- /**
- * The server socket used to accept connection from the replySocket (connection is done in Moka debug target)
- */
- protected ServerSocket replyServer;
-
- /**
- * The socket used to reply to request emitted by the debug target
- */
- protected Socket replySocket;
-
- /**
- * The server socket used to accept connection from the eventSocket (connection is done in Moka debug target)
- */
- protected ServerSocket eventServer;
-
- /**
- * The socket used to receive request from the debug target
- */
- protected Socket requestSocket;
-
- /**
- * Writer for the request socket
- */
- protected PrintWriter replyWriter;
-
- /**
- * Reader for the request socket
- */
- protected BufferedReader requestReader;
-
- /**
- * This socket is used to raise events for the debug target
- */
- protected Socket eventSocket;
-
- /**
- * Writer for the event socket
- */
- protected PrintWriter eventWriter;
-
- /**
- * Determines if the execution is terminated
- */
- protected boolean isTerminated = false;
-
- /**
- * Inits the execution engine in Debug mode.
- * This includes the creation of server sockets, to enable connection of sockets in the moka debug target.
- *
- */
- public void init(EObject eObjectToExecute, String[] args, MokaDebugTarget debugTarget, int requestPort, int replyPort, int eventPort) throws UnknownHostException, IOException {
- this.debugTarget = debugTarget;
- this.requestServer = new ServerSocket(requestPort);
- this.replyServer = new ServerSocket(replyPort);
- this.eventServer = new ServerSocket(eventPort);
- this.mode = ILaunchManager.DEBUG_MODE;
- this.eObjectToExecute = eObjectToExecute;
- this.initializeArguments(args);
- }
-
- /**
- * Returns the debug target associated with this execution engine
- *
- * @return the debug target associated with this execution engine
- */
- public MokaDebugTarget getDebugTarget() {
- return this.debugTarget;
- }
-
-
- /**
- * Returns true if the execution is terminated, false otherwise
- *
- * @return true if the execution is terminated, false otherwise
- */
- public boolean isTerminated() {
- return this.isTerminated;
- }
-
- /**
- * Initializes the execution engine with given arguments
- */
- public abstract void initializeArguments(String[] args);
-
- /**
- * Starts the execution and the request dispatch loop.
- */
- public void start() throws IOException {
- if (eObjectToExecute != null) {
- String request = "";
- // First accepts connection of the request socket (from the moka debug target) and initializes reader/writer
- requestSocket = requestServer.accept();
- requestReader = new BufferedReader(new InputStreamReader(requestSocket.getInputStream()));
- // Then accepts connection of the reply socket
- replySocket = replyServer.accept();
- replyWriter = new PrintWriter(replySocket.getOutputStream());
- // Then accepts connection of the event socket
- eventSocket = eventServer.accept();
- eventWriter = new PrintWriter(eventSocket.getOutputStream());
- // Communication protocol starts by notifying the moka debug target that execution has started
- this.sendEvent(new Start_Event(this.debugTarget, this.getThreads()));
- while (!this.isTerminated && request != null) {
- try {
- request = requestReader.readLine();
- if (request != null) {
- if (request.startsWith(MokaConstants.request_addBreakpoint)) {
- // Add breakpoint request
- this.addBreakpoint_reply(request);
- } else if (request.startsWith(MokaConstants.request_removeBreakpoint)) {
- // Remove breakpoint request
- this.removeBreakpoint_reply(request);
- } else if (request.startsWith(MokaConstants.request_disconnect)) {
- // Disconnection requested
- this.disconnect_reply();
- } else if (request.startsWith(MokaConstants.request_resume)) {
- // Resume requested
- this.resume_reply(request);
- } else if (request.startsWith(MokaConstants.request_suspend)) {
- // Suspend requested
- this.suspend_reply(request);
- } else if (request.startsWith(MokaConstants.request_terminate)) {
- // Terminate requested
- this.terminate_reply(request);
- } else if (request.startsWith(MokaConstants.request_getStackFrames)) {
- // Stack frames requested
- this.getStackFrames_reply(request);
- } else if (request.startsWith(MokaConstants.request_getVariables)) {
- // Variables requested
- this.getVariables_reply(request);
- } else if (request.startsWith(MokaConstants.request_getValue)) {
- // Variable value requested
- this.getValue_reply(request);
- } else if (request.startsWith(MokaConstants.request_getReferenceTypeName)) {
- // Reference type name of a variable requested
- this.getReferenceTypeName_reply(request);
- } else if (request.startsWith(MokaConstants.request_getValueString)) {
- // String representation of a value requested
- this.getValueString_reply(request);
- }
- }
- } catch (IOException e) {
- this.isTerminated = true;
- }
- }
- // Communication protocol ends by notifying the moka debug target that execution has terminated
- this.sendEvent(new Terminate_Event(this.debugTarget, this.getThreads()));
- }
- }
-
- // **************************************
- // Management of a addBreakpoint request emitted from the debug target.
- // @see IBreakpointListener.breakpointAdded() and IBreakpointListener.breakpointChanged()
- // ***************************************
- /**
- * Manages reply to an addBreakpoint request emitted from the debug target
- */
- protected void addBreakpoint_reply(String request) {
- AddBreakpoint_Request breakpointRequest = Marshaller.getInstance().addBreakpoint_request_unmarshal(request);
- this.addBreakpoint(breakpointRequest.getBreakpoint());
- Ack reply = new Ack();
- this.reply(reply);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#addBreakpoint()
- */
- public abstract void addBreakpoint(MokaBreakpoint breakpoint);
-
- // **************************************
- // Management of a removeBreakpoint request emitted from the debug target.
- // @see IBreakpointListener.breakpointRemoved() and IBreakpointListener.breakpointChanged()
- // ***************************************
- /**
- * Manages reply to an addBreakpoint request emitted from the debug target
- */
- protected void removeBreakpoint_reply(String request) {
- RemoveBreakpoint_Request breakpointRequest = Marshaller.getInstance().removeBreakpoint_request_unmarshal(request);
- this.removeBreakpoint(breakpointRequest.getBreakpoint());
- Ack reply = new Ack();
- this.reply(reply);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#removeBreakpoint()
- */
- public abstract void removeBreakpoint(MokaBreakpoint breakpoint);
-
- // **************************************
- // Management of a disconnect request emitted from the debug target.
- // @see IDisconnect.disconnect()
- // ***************************************
- /**
- * Manages reply to an addBreakpoint request emitted from the debug target
- */
- protected void disconnect_reply() {
- this.disconnect();
- Ack reply = new Ack();
- this.reply(reply);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#removeBreakpoint()
- */
- public abstract void disconnect();
-
- // **************************************
- // Management of a getMemoryBlock() request emitted from the debug target.
- // @see IMemoryBlockRetrieval.getMemoryBlock()
- // ***************************************
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#removeBreakpoint()
- */
- public IMemoryBlock getMemoryBlock(long startAddress, long length) {
- // Not supported
- return null;
- }
-
- // **************************************
- // Management of a resume() request emitted from the debug target.
- // @see ISuspendResume.resume()
- // ***************************************
- /**
- * Manages reply to a resume() request emitted from the debug target
- */
- protected void resume_reply(String message) {
- Resume_Request request = Marshaller.getInstance().resume_request_unmarshal(message);
- Resume_Event event = new Resume_Event(request.getDebugElement(), request.getResumeDetail(), this.getThreads());
- this.sendEvent(event);
- this.resume(request);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#resume(Resume_Request request)
- */
- public abstract void resume(Resume_Request request);
-
- // **************************************
- // Management of a suspend() request emitted from the debug target.
- // @see ISuspendResume.suspend()
- // ***************************************
- /**
- * Manages reply to a suspend() request emitted from the debug target
- */
- protected void suspend_reply(String message) {
- Suspend_Request request = Marshaller.getInstance().suspend_request_unmarshal(message);
- this.suspend(request);
- Suspend_Event event = new Suspend_Event(request.getDebugElement(), request.getSuspendDetail(), this.getThreads());
- this.sendEvent(event);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#suspend(Suspend_Request request)
- */
- public abstract void suspend(Suspend_Request request);
-
- // **************************************
- // Management of a suspend() request emitted from the debug target.
- // @see ISuspendResume.suspend()
- // ***************************************
- /**
- * Manages reply to a suspend() request emitted from the debug target
- */
- protected void terminate_reply(String message) {
- Terminate_Request request = Marshaller.getInstance().terminate_request_unmarshal(message);
- this.terminate(request);
- }
-
- /**
- * Implementation of this operation should at least do the following: this.isTerminated = true ;
- * Note that implementation should not fire a Terminate_Event, since this is managed at the exit of the request dispatch loop implemented by
- * start()
- *
- * (non-Javadoc)
- *
- * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#terminate(org.eclipse.papyrus.moka.communication.request.iterminate.Terminate_Request)
- */
- public abstract void terminate(Terminate_Request request);
-
- // **************************************
- // Management of a getStackFrames() request emitted from the debug target.
- // @see IThread.getStackFrames()
- // ***************************************
- /**
- * Manages reply to a getStackFrames() request emitted from the debug target
- */
- protected void getStackFrames_reply(String message) {
- GetStackFrames_Request request = Marshaller.getInstance().getStackFrames_request_unmarshal(message);
- GetStackFrames_Reply reply = new GetStackFrames_Reply(this.getStackFrames(request.getThread()));
- this.reply(reply);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#getStackFrames(IThread thread)
- */
- public abstract IStackFrame[] getStackFrames(IThread thread);
-
- // **************************************
- // Management of a getVariables() request emitted from the debug target.
- // @see IStackFrame.getVariables()
- // ***************************************
- /**
- * Manages reply to a getStackFrames() request emitted from the debug target
- */
- protected void getVariables_reply(String message) {
- GetVariables_Request request = Marshaller.getInstance().getVariables_request_unmarshal(message);
- GetVariables_Reply reply = new GetVariables_Reply((MokaVariable[]) this.getVariables(request.getStackFrameOrValue()));
- this.reply(reply);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#getVariables(IStackFrame stackFrame)
- */
- public IVariable[] getVariables(IDebugElement stackFrameOrValue) {
- // By default, returns an empty array of variables
- return new MokaVariable[] {};
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#getRegisterGroups(IStackFrame stackFrame)
- */
- public IRegisterGroup[] getRegisterGroups(IStackFrame stackFrame) {
- // Not supported
- return new IRegisterGroup[] {};
- }
-
- // **************************************
- // Management of a getRegisterGroups() request emitted from the debug target.
- // @see IVariable.getValue()
- // ***************************************
- /**
- * Manages reply to a getRegisterGroups() request emitted from the debug target
- */
- protected void getValue_reply(String message) {
- GetValue_Request request = Marshaller.getInstance().getValue_request_unmarshal(message);
- GetValue_Reply reply = new GetValue_Reply((MokaValue) this.getValue(request.getVariable()));
- this.reply(reply);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#getValue(IVariable variable)
- */
- public IValue getValue(IVariable variable) {
- // The default implementation returns null
- // It makes the hypothesis that when the debug target
- // asks for variables, the IVariables which are returned
- // embed corresponding values.
- // It means that, by default, this method is never called.
- return null;
- }
-
- // **************************************
- // Management of a getRegisterGroups() request emitted from the debug target.
- // @see IVariable.getReferenceTypeName()
- // ***************************************
- /**
- * Manages reply to a getRegisterGroups() request emitted from the debug target
- */
- protected void getReferenceTypeName_reply(String message) {
- GetReferenceTypeName_Request request = Marshaller.getInstance().getReferenceTypeName_request_unmarshal(message);
- GetReferenceTypeName_Reply reply = new GetReferenceTypeName_Reply(this.getReferenceTypeName(request.getVariableOrValue()));
- this.reply(reply);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#getReferenceTypeName(IDebugElement debugElement)
- */
- public String getReferenceTypeName(IDebugElement debugElement) {
- // By default, returns an empty string
- return "";
- }
-
- // **************************************
- // Management of a getValueString() request emitted from the debug target.
- // @see IValue.getValueString()
- // ***************************************
- /**
- * Manages reply to a getRegisterGroups() request emitted from the debug target
- */
- protected void getValueString_reply(String message) {
- GetValueString_Request request = Marshaller.getInstance().getValueString_request_unmarshal(message);
- GetValueString_Reply reply = new GetValueString_Reply(this.getValueString(request.getValue()));
- this.reply(reply);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#getValueString(IValue value)
- */
- public String getValueString(IValue value) {
- // By default, returns an empty string
- return "";
- }
-
- /**
- * Convenience method for marshalling a Reply, and writing it on the replySocket so that it can be accessed by the debug target
- *
- * @param reply
- * The Reply object to be marshalled and written on the replySocket
- */
- protected void reply(ReplyMessage reply) {
- synchronized (replySocket) {
- replyWriter.println(reply.marshal());
- replyWriter.flush();
- }
- }
-
- /**
- * Convenience method for marshalling an Event, and writing it on the eventSocket so that it can be accessed by the debug target
- *
- * @param reply
- * The Event object to be marshalled and written on the eventSocket
- */
- public void sendEvent(EventMessage event) {
- synchronized (eventSocket) {
- eventWriter.println(event.marshal());
- eventWriter.flush();
- }
- }
-
- /**
- * Convenience method to set the value of property isTerminated
- *
- * @param isTerminated
- */
- public void setIsTerminated(boolean isTerminated) {
- this.isTerminated = true;
- }
-
-}
+/*****************************************************************************
+ * 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
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.moka.engine;
+
+import java.io.BufferedReader;
+import java.io.IOException;
+import java.io.InputStreamReader;
+import java.io.PrintWriter;
+import java.net.ServerSocket;
+import java.net.Socket;
+import java.net.UnknownHostException;
+
+import org.eclipse.debug.core.ILaunchManager;
+import org.eclipse.debug.core.model.IDebugElement;
+import org.eclipse.debug.core.model.IMemoryBlock;
+import org.eclipse.debug.core.model.IRegisterGroup;
+import org.eclipse.debug.core.model.IStackFrame;
+import org.eclipse.debug.core.model.IThread;
+import org.eclipse.debug.core.model.IValue;
+import org.eclipse.debug.core.model.IVariable;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.moka.MokaConstants;
+import org.eclipse.papyrus.moka.communication.Marshaller;
+import org.eclipse.papyrus.moka.communication.event.EventMessage;
+import org.eclipse.papyrus.moka.communication.event.Start_Event;
+import org.eclipse.papyrus.moka.communication.event.isuspendresume.Resume_Event;
+import org.eclipse.papyrus.moka.communication.event.isuspendresume.Suspend_Event;
+import org.eclipse.papyrus.moka.communication.event.iterminate.Terminate_Event;
+import org.eclipse.papyrus.moka.communication.reply.Ack;
+import org.eclipse.papyrus.moka.communication.reply.ReplyMessage;
+import org.eclipse.papyrus.moka.communication.reply.istackframe.GetVariables_Reply;
+import org.eclipse.papyrus.moka.communication.reply.ithread.GetStackFrames_Reply;
+import org.eclipse.papyrus.moka.communication.reply.ivalue.GetValueString_Reply;
+import org.eclipse.papyrus.moka.communication.reply.ivariable.GetReferenceTypeName_Reply;
+import org.eclipse.papyrus.moka.communication.reply.ivariable.GetValue_Reply;
+import org.eclipse.papyrus.moka.communication.request.ibreakpointlistener.AddBreakpoint_Request;
+import org.eclipse.papyrus.moka.communication.request.ibreakpointlistener.RemoveBreakpoint_Request;
+import org.eclipse.papyrus.moka.communication.request.istackframe.GetVariables_Request;
+import org.eclipse.papyrus.moka.communication.request.isuspendresume.Resume_Request;
+import org.eclipse.papyrus.moka.communication.request.isuspendresume.Suspend_Request;
+import org.eclipse.papyrus.moka.communication.request.iterminate.Terminate_Request;
+import org.eclipse.papyrus.moka.communication.request.ithread.GetStackFrames_Request;
+import org.eclipse.papyrus.moka.communication.request.ivalue.GetValueString_Request;
+import org.eclipse.papyrus.moka.communication.request.ivariable.GetReferenceTypeName_Request;
+import org.eclipse.papyrus.moka.communication.request.ivariable.GetValue_Request;
+import org.eclipse.papyrus.moka.debug.MokaBreakpoint;
+import org.eclipse.papyrus.moka.debug.MokaDebugTarget;
+import org.eclipse.papyrus.moka.debug.MokaValue;
+import org.eclipse.papyrus.moka.debug.MokaVariable;
+
+/**
+ * An abstract implementation of IExecutionEngine, consistent with the communication
+ * protocol implemented by MokaDebugTarget.
+ * This implementation encapsulates a request dispatch loop. This abstract class can
+ * be extended and used with the generic implementation of the Eclipse Debug Model
+ * provided by Moka. The proposed debug model is included in package debug.
+ * In particular, it includes class MokaDebugTarget, an implementation of IDebugTarget
+ * which encapsulates an event dispatch loop.
+ *
+ */
+public abstract class AbstractExecutionEngine implements IExecutionEngine {
+
+ /**
+ * The eObject being executed by this execution engine
+ */
+ protected EObject eObjectToExecute;
+
+ /**
+ * The mode in which this execution is running. Values can be ILaunchManager.DEBUG_MODE or ILaunchManager.RUN_MODE
+ */
+ protected String mode = ILaunchManager.RUN_MODE;
+
+ /**
+ * The debug target associated with this execution engine
+ */
+ protected MokaDebugTarget debugTarget;
+
+ /**
+ * The server socket used to accept connection from the requestSocket (connection is done in Moka debug target)
+ */
+ protected ServerSocket requestServer;
+
+ /**
+ * The server socket used to accept connection from the replySocket (connection is done in Moka debug target)
+ */
+ protected ServerSocket replyServer;
+
+ /**
+ * The socket used to reply to request emitted by the debug target
+ */
+ protected Socket replySocket;
+
+ /**
+ * The server socket used to accept connection from the eventSocket (connection is done in Moka debug target)
+ */
+ protected ServerSocket eventServer;
+
+ /**
+ * The socket used to receive request from the debug target
+ */
+ protected Socket requestSocket;
+
+ /**
+ * Writer for the request socket
+ */
+ protected PrintWriter replyWriter;
+
+ /**
+ * Reader for the request socket
+ */
+ protected BufferedReader requestReader;
+
+ /**
+ * This socket is used to raise events for the debug target
+ */
+ protected Socket eventSocket;
+
+ /**
+ * Writer for the event socket
+ */
+ protected PrintWriter eventWriter;
+
+ /**
+ * Determines if the execution is terminated
+ */
+ protected boolean isTerminated = false;
+
+ /**
+ * Inits the execution engine in Debug mode.
+ * This includes the creation of server sockets, to enable connection of sockets in the moka debug target.
+ *
+ */
+ public void init(EObject eObjectToExecute, String[] args, MokaDebugTarget debugTarget, int requestPort, int replyPort, int eventPort) throws UnknownHostException, IOException {
+ this.debugTarget = debugTarget;
+ this.requestServer = new ServerSocket(requestPort);
+ this.replyServer = new ServerSocket(replyPort);
+ this.eventServer = new ServerSocket(eventPort);
+ this.mode = ILaunchManager.DEBUG_MODE;
+ this.eObjectToExecute = eObjectToExecute;
+ this.initializeArguments(args);
+ }
+
+ /**
+ * Returns the debug target associated with this execution engine
+ *
+ * @return the debug target associated with this execution engine
+ */
+ public MokaDebugTarget getDebugTarget() {
+ return this.debugTarget;
+ }
+
+
+ /**
+ * Returns true if the execution is terminated, false otherwise
+ *
+ * @return true if the execution is terminated, false otherwise
+ */
+ public boolean isTerminated() {
+ return this.isTerminated;
+ }
+
+ /**
+ * Initializes the execution engine with given arguments
+ */
+ public abstract void initializeArguments(String[] args);
+
+ /**
+ * Starts the execution and the request dispatch loop.
+ */
+ public void start() throws IOException {
+ if (eObjectToExecute != null) {
+ String request = "";
+ // First accepts connection of the request socket (from the moka debug target) and initializes reader/writer
+ requestSocket = requestServer.accept();
+ requestReader = new BufferedReader(new InputStreamReader(requestSocket.getInputStream()));
+ // Then accepts connection of the reply socket
+ replySocket = replyServer.accept();
+ replyWriter = new PrintWriter(replySocket.getOutputStream());
+ // Then accepts connection of the event socket
+ eventSocket = eventServer.accept();
+ eventWriter = new PrintWriter(eventSocket.getOutputStream());
+ // Communication protocol starts by notifying the moka debug target that execution has started
+ this.sendEvent(new Start_Event(this.debugTarget, this.getThreads()));
+ while (!this.isTerminated && request != null) {
+ try {
+ request = requestReader.readLine();
+ if (request != null) {
+ if (request.startsWith(MokaConstants.request_addBreakpoint)) {
+ // Add breakpoint request
+ this.addBreakpoint_reply(request);
+ } else if (request.startsWith(MokaConstants.request_removeBreakpoint)) {
+ // Remove breakpoint request
+ this.removeBreakpoint_reply(request);
+ } else if (request.startsWith(MokaConstants.request_disconnect)) {
+ // Disconnection requested
+ this.disconnect_reply();
+ } else if (request.startsWith(MokaConstants.request_resume)) {
+ // Resume requested
+ this.resume_reply(request);
+ } else if (request.startsWith(MokaConstants.request_suspend)) {
+ // Suspend requested
+ this.suspend_reply(request);
+ } else if (request.startsWith(MokaConstants.request_terminate)) {
+ // Terminate requested
+ this.terminate_reply(request);
+ } else if (request.startsWith(MokaConstants.request_getStackFrames)) {
+ // Stack frames requested
+ this.getStackFrames_reply(request);
+ } else if (request.startsWith(MokaConstants.request_getVariables)) {
+ // Variables requested
+ this.getVariables_reply(request);
+ } else if (request.startsWith(MokaConstants.request_getValue)) {
+ // Variable value requested
+ this.getValue_reply(request);
+ } else if (request.startsWith(MokaConstants.request_getReferenceTypeName)) {
+ // Reference type name of a variable requested
+ this.getReferenceTypeName_reply(request);
+ } else if (request.startsWith(MokaConstants.request_getValueString)) {
+ // String representation of a value requested
+ this.getValueString_reply(request);
+ }
+ }
+ } catch (IOException e) {
+ this.isTerminated = true;
+ }
+ }
+ // Communication protocol ends by notifying the moka debug target that execution has terminated
+ this.sendEvent(new Terminate_Event(this.debugTarget, this.getThreads()));
+ }
+ }
+
+ // **************************************
+ // Management of a addBreakpoint request emitted from the debug target.
+ // @see IBreakpointListener.breakpointAdded() and IBreakpointListener.breakpointChanged()
+ // ***************************************
+ /**
+ * Manages reply to an addBreakpoint request emitted from the debug target
+ */
+ protected void addBreakpoint_reply(String request) {
+ AddBreakpoint_Request breakpointRequest = Marshaller.getInstance().addBreakpoint_request_unmarshal(request);
+ this.addBreakpoint(breakpointRequest.getBreakpoint());
+ Ack reply = new Ack();
+ this.reply(reply);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#addBreakpoint()
+ */
+ public abstract void addBreakpoint(MokaBreakpoint breakpoint);
+
+ // **************************************
+ // Management of a removeBreakpoint request emitted from the debug target.
+ // @see IBreakpointListener.breakpointRemoved() and IBreakpointListener.breakpointChanged()
+ // ***************************************
+ /**
+ * Manages reply to an addBreakpoint request emitted from the debug target
+ */
+ protected void removeBreakpoint_reply(String request) {
+ RemoveBreakpoint_Request breakpointRequest = Marshaller.getInstance().removeBreakpoint_request_unmarshal(request);
+ this.removeBreakpoint(breakpointRequest.getBreakpoint());
+ Ack reply = new Ack();
+ this.reply(reply);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#removeBreakpoint()
+ */
+ public abstract void removeBreakpoint(MokaBreakpoint breakpoint);
+
+ // **************************************
+ // Management of a disconnect request emitted from the debug target.
+ // @see IDisconnect.disconnect()
+ // ***************************************
+ /**
+ * Manages reply to an addBreakpoint request emitted from the debug target
+ */
+ protected void disconnect_reply() {
+ this.disconnect();
+ Ack reply = new Ack();
+ this.reply(reply);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#removeBreakpoint()
+ */
+ public abstract void disconnect();
+
+ // **************************************
+ // Management of a getMemoryBlock() request emitted from the debug target.
+ // @see IMemoryBlockRetrieval.getMemoryBlock()
+ // ***************************************
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#removeBreakpoint()
+ */
+ public IMemoryBlock getMemoryBlock(long startAddress, long length) {
+ // Not supported
+ return null;
+ }
+
+ // **************************************
+ // Management of a resume() request emitted from the debug target.
+ // @see ISuspendResume.resume()
+ // ***************************************
+ /**
+ * Manages reply to a resume() request emitted from the debug target
+ */
+ protected void resume_reply(String message) {
+ Resume_Request request = Marshaller.getInstance().resume_request_unmarshal(message);
+ Resume_Event event = new Resume_Event(request.getDebugElement(), request.getResumeDetail(), this.getThreads());
+ this.sendEvent(event);
+ this.resume(request);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#resume(Resume_Request request)
+ */
+ public abstract void resume(Resume_Request request);
+
+ // **************************************
+ // Management of a suspend() request emitted from the debug target.
+ // @see ISuspendResume.suspend()
+ // ***************************************
+ /**
+ * Manages reply to a suspend() request emitted from the debug target
+ */
+ protected void suspend_reply(String message) {
+ Suspend_Request request = Marshaller.getInstance().suspend_request_unmarshal(message);
+ this.suspend(request);
+ Suspend_Event event = new Suspend_Event(request.getDebugElement(), request.getSuspendDetail(), this.getThreads());
+ this.sendEvent(event);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#suspend(Suspend_Request request)
+ */
+ public abstract void suspend(Suspend_Request request);
+
+ // **************************************
+ // Management of a suspend() request emitted from the debug target.
+ // @see ISuspendResume.suspend()
+ // ***************************************
+ /**
+ * Manages reply to a suspend() request emitted from the debug target
+ */
+ protected void terminate_reply(String message) {
+ Terminate_Request request = Marshaller.getInstance().terminate_request_unmarshal(message);
+ this.terminate(request);
+ }
+
+ /**
+ * Implementation of this operation should at least do the following: this.isTerminated = true ;
+ * Note that implementation should not fire a Terminate_Event, since this is managed at the exit of the request dispatch loop implemented by
+ * start()
+ *
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#terminate(org.eclipse.papyrus.moka.communication.request.iterminate.Terminate_Request)
+ */
+ public abstract void terminate(Terminate_Request request);
+
+ // **************************************
+ // Management of a getStackFrames() request emitted from the debug target.
+ // @see IThread.getStackFrames()
+ // ***************************************
+ /**
+ * Manages reply to a getStackFrames() request emitted from the debug target
+ */
+ protected void getStackFrames_reply(String message) {
+ GetStackFrames_Request request = Marshaller.getInstance().getStackFrames_request_unmarshal(message);
+ GetStackFrames_Reply reply = new GetStackFrames_Reply(this.getStackFrames(request.getThread()));
+ this.reply(reply);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#getStackFrames(IThread thread)
+ */
+ public abstract IStackFrame[] getStackFrames(IThread thread);
+
+ // **************************************
+ // Management of a getVariables() request emitted from the debug target.
+ // @see IStackFrame.getVariables()
+ // ***************************************
+ /**
+ * Manages reply to a getStackFrames() request emitted from the debug target
+ */
+ protected void getVariables_reply(String message) {
+ GetVariables_Request request = Marshaller.getInstance().getVariables_request_unmarshal(message);
+ GetVariables_Reply reply = new GetVariables_Reply((MokaVariable[]) this.getVariables(request.getStackFrameOrValue()));
+ this.reply(reply);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#getVariables(IStackFrame stackFrame)
+ */
+ public IVariable[] getVariables(IDebugElement stackFrameOrValue) {
+ // By default, returns an empty array of variables
+ return new MokaVariable[] {};
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#getRegisterGroups(IStackFrame stackFrame)
+ */
+ public IRegisterGroup[] getRegisterGroups(IStackFrame stackFrame) {
+ // Not supported
+ return new IRegisterGroup[] {};
+ }
+
+ // **************************************
+ // Management of a getRegisterGroups() request emitted from the debug target.
+ // @see IVariable.getValue()
+ // ***************************************
+ /**
+ * Manages reply to a getRegisterGroups() request emitted from the debug target
+ */
+ protected void getValue_reply(String message) {
+ GetValue_Request request = Marshaller.getInstance().getValue_request_unmarshal(message);
+ GetValue_Reply reply = new GetValue_Reply((MokaValue) this.getValue(request.getVariable()));
+ this.reply(reply);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#getValue(IVariable variable)
+ */
+ public IValue getValue(IVariable variable) {
+ // The default implementation returns null
+ // It makes the hypothesis that when the debug target
+ // asks for variables, the IVariables which are returned
+ // embed corresponding values.
+ // It means that, by default, this method is never called.
+ return null;
+ }
+
+ // **************************************
+ // Management of a getRegisterGroups() request emitted from the debug target.
+ // @see IVariable.getReferenceTypeName()
+ // ***************************************
+ /**
+ * Manages reply to a getRegisterGroups() request emitted from the debug target
+ */
+ protected void getReferenceTypeName_reply(String message) {
+ GetReferenceTypeName_Request request = Marshaller.getInstance().getReferenceTypeName_request_unmarshal(message);
+ GetReferenceTypeName_Reply reply = new GetReferenceTypeName_Reply(this.getReferenceTypeName(request.getVariableOrValue()));
+ this.reply(reply);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#getReferenceTypeName(IDebugElement debugElement)
+ */
+ public String getReferenceTypeName(IDebugElement debugElement) {
+ // By default, returns an empty string
+ return "";
+ }
+
+ // **************************************
+ // Management of a getValueString() request emitted from the debug target.
+ // @see IValue.getValueString()
+ // ***************************************
+ /**
+ * Manages reply to a getRegisterGroups() request emitted from the debug target
+ */
+ protected void getValueString_reply(String message) {
+ GetValueString_Request request = Marshaller.getInstance().getValueString_request_unmarshal(message);
+ GetValueString_Reply reply = new GetValueString_Reply(this.getValueString(request.getValue()));
+ this.reply(reply);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.papyrus.moka.engine.IExecutionEngine#getValueString(IValue value)
+ */
+ public String getValueString(IValue value) {
+ // By default, returns an empty string
+ return "";
+ }
+
+ /**
+ * Convenience method for marshalling a Reply, and writing it on the replySocket so that it can be accessed by the debug target
+ *
+ * @param reply
+ * The Reply object to be marshalled and written on the replySocket
+ */
+ protected void reply(ReplyMessage reply) {
+ synchronized (replySocket) {
+ replyWriter.println(reply.marshal());
+ replyWriter.flush();
+ }
+ }
+
+ /**
+ * Convenience method for marshalling an Event, and writing it on the eventSocket so that it can be accessed by the debug target
+ *
+ * @param reply
+ * The Event object to be marshalled and written on the eventSocket
+ */
+ public void sendEvent(EventMessage event) {
+ synchronized (eventSocket) {
+ eventWriter.println(event.marshal());
+ eventWriter.flush();
+ }
+ }
+
+ /**
+ * Convenience method to set the value of property isTerminated
+ *
+ * @param isTerminated
+ */
+ public void setIsTerminated(boolean isTerminated) {
+ this.isTerminated = true;
+ }
+
+}
diff --git a/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/engine/IExecutionEngine.java b/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/engine/IExecutionEngine.java
index 9f14881..5efd6e0 100644
--- a/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/engine/IExecutionEngine.java
+++ b/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/engine/IExecutionEngine.java
@@ -1,203 +1,203 @@
-/*****************************************************************************
- * 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
- *
- *****************************************************************************/
-package org.eclipse.papyrus.moka.engine;
-
-import java.io.IOException;
-import java.net.UnknownHostException;
-
-import org.eclipse.debug.core.model.IDebugElement;
-import org.eclipse.debug.core.model.IMemoryBlock;
-import org.eclipse.debug.core.model.IRegisterGroup;
-import org.eclipse.debug.core.model.IStackFrame;
-import org.eclipse.debug.core.model.IThread;
-import org.eclipse.debug.core.model.IValue;
-import org.eclipse.debug.core.model.IVariable;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.papyrus.moka.communication.request.isuspendresume.Resume_Request;
-import org.eclipse.papyrus.moka.communication.request.isuspendresume.Suspend_Request;
-import org.eclipse.papyrus.moka.communication.request.iterminate.Terminate_Request;
-import org.eclipse.papyrus.moka.debug.MokaBreakpoint;
-import org.eclipse.papyrus.moka.debug.MokaDebugTarget;
-import org.eclipse.papyrus.moka.debug.MokaThread;
-
-/**
- * The interface underlying the ExecutionEngine extension point provided by Moka.
- *
- */
-public interface IExecutionEngine {
-
- /**
- * Initializes the engine.
- * This requires to know the debugTarget which will communicate with this execution engine.
- * Since the debugTarget and the execution engine must run asynchronously, they communicate through sockets.
- * requestPort indicates the address of the socket through which requests emitted from the debug target flow.
- * replyPort indicates the address of the socket through which replies emitted from the execution engine flow.
- * eventPort indicates the address of the socket through which messages corresponding to debug events occurring in the execution engine flow.
- *
- * @param eObjectToExecute
- * The object to be executed by the engine
- * @param additionalSemantics
- * The resource containing the model defining extension of the fUML execution engine
- * @param args
- * Optional arguments for the execution of the object
- * @param debugTarget
- * the debugTarget communicating with this execution engine
- * @param requestPort
- * the address of the socket through which requests emitted from the debug target flow.
- * @param replyPort
- * the address of the socket through which replies (emitted from the execution engine) flow.
- * @param eventPort
- * indicates the address of the socket through which messages corresponding to debug events occurring in the execution engine flow.
- * @throws UnknownHostException
- * when problems occur while establishing connection with the sockets
- * @throws IOException
- * when problems occur while reading/writing on sockets
- */
- public void init(EObject eObjectToExecute, String[] args, MokaDebugTarget debugTarget, int requestPort, int replyPort, int eventPort) throws UnknownHostException, IOException;
-
- /**
- * Initialization of the execution engine with given arguments. This is supposed to be called in the implementation of initRun and/or initDebug
- * methods
- *
- * @param args
- * The arguments for the initialization of the execution engine, before starting execution
- */
- public void initializeArguments(String[] args);
-
- /**
- * Starts the execution. This is supposed to be called after initialization phases.
- *
- * @throws IOException
- */
- public void start() throws IOException;
-
- /**
- * Returns the collection of MokaThread for this execution engine. If no threads are defined, the returned collection is empty, but not null.
- *
- * @return the collection of MokaThread for this execution engine
- */
- public MokaThread[] getThreads();
-
- /**
- * Registers the given breakpoint in the execution engine
- *
- * @param breakpoint
- * the breakpoint to be registered
- */
- public void addBreakpoint(MokaBreakpoint breakpoint);
-
- /**
- * Unregister the given breakpoint in the execution engine
- *
- * @param breakpoint
- * the breakpoint to be unregistered
- */
- public void removeBreakpoint(MokaBreakpoint breakpoint);
-
- /**
- * Disconnects this execution engine from the associated debug target.
- */
- public void disconnect();
-
- /**
- * Gets the memory block at the given startAddress, for the given length
- *
- * @param startAddress
- * The startAddress for the memory block
- * @param length
- * The length of the memory block
- * @return the memory block corresponding to the given startAddress and length
- */
- public IMemoryBlock getMemoryBlock(long startAddress, long length);
-
- /**
- * Resumes execution according to the given Resume_Request
- *
- * @param request
- * The Resume_Request indicating how execution has to be resumed
- */
- public void resume(Resume_Request request);
-
- /**
- * Suspends execution according to the given Suspend_Request
- *
- * @param request
- * The Suspend_Request indicating how execution has to be suspended
- */
- public void suspend(Suspend_Request request);
-
- /**
- * Terminates execution according to the given Terminate_Request
- *
- * @param request
- * The Terminate_Request indicating how execution has to be terminated
- */
- public void terminate(Terminate_Request request);
-
- /**
- * Returns the stack frames of the given thread
- *
- * @param thread
- * The thread for which stack frames have to be retrieved
- * @return The stack frames of the given thread
- */
- public IStackFrame[] getStackFrames(IThread thread);
-
- /**
- * Return the visible variables of the given stack frame or value
- * stackFrameOrValue must be an IStackFrame or an IValue
- *
- * @param stackFrameOrValue
- * The stack frame or value for which variables have to be retrieved
- * @return The visible variables of the given stack frame or value
- */
- public IVariable[] getVariables(IDebugElement stackFrameOrValue);
-
- /**
- * Returns the register groups of the given stack frame
- *
- * @param stackFrame
- * The stack frame for which register groups have to be retrieved
- * @return The register groups of the given stack frame
- */
- public IRegisterGroup[] getRegisterGroups(IStackFrame stackFrame);
-
- /**
- * Returns the value (if any) for the given variable
- *
- * @param variable
- * The variable for which value has to be retrieved
- * @return The value (if any) for the given variable
- */
- public IValue getValue(IVariable variable);
-
- /**
- * Returns the reference type name of the given variable
- * debugElement must be a IVariable or IValue
- *
- * @param variable
- * The variable or value for which the reference type name has to be retrieved
- * @return The reference type name of the given variable or value
- */
- public String getReferenceTypeName(IDebugElement debugElement);
-
- /**
- * Returns the string representation of the given value
- *
- * @param value
- * The value for which a textual representation has to be retrieved
- * @return The string representation of the given value
- */
- public String getValueString(IValue value);
-}
+/*****************************************************************************
+ * 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
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.moka.engine;
+
+import java.io.IOException;
+import java.net.UnknownHostException;
+
+import org.eclipse.debug.core.model.IDebugElement;
+import org.eclipse.debug.core.model.IMemoryBlock;
+import org.eclipse.debug.core.model.IRegisterGroup;
+import org.eclipse.debug.core.model.IStackFrame;
+import org.eclipse.debug.core.model.IThread;
+import org.eclipse.debug.core.model.IValue;
+import org.eclipse.debug.core.model.IVariable;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.moka.communication.request.isuspendresume.Resume_Request;
+import org.eclipse.papyrus.moka.communication.request.isuspendresume.Suspend_Request;
+import org.eclipse.papyrus.moka.communication.request.iterminate.Terminate_Request;
+import org.eclipse.papyrus.moka.debug.MokaBreakpoint;
+import org.eclipse.papyrus.moka.debug.MokaDebugTarget;
+import org.eclipse.papyrus.moka.debug.MokaThread;
+
+/**
+ * The interface underlying the ExecutionEngine extension point provided by Moka.
+ *
+ */
+public interface IExecutionEngine {
+
+ /**
+ * Initializes the engine.
+ * This requires to know the debugTarget which will communicate with this execution engine.
+ * Since the debugTarget and the execution engine must run asynchronously, they communicate through sockets.
+ * requestPort indicates the address of the socket through which requests emitted from the debug target flow.
+ * replyPort indicates the address of the socket through which replies emitted from the execution engine flow.
+ * eventPort indicates the address of the socket through which messages corresponding to debug events occurring in the execution engine flow.
+ *
+ * @param eObjectToExecute
+ * The object to be executed by the engine
+ * @param additionalSemantics
+ * The resource containing the model defining extension of the fUML execution engine
+ * @param args
+ * Optional arguments for the execution of the object
+ * @param debugTarget
+ * the debugTarget communicating with this execution engine
+ * @param requestPort
+ * the address of the socket through which requests emitted from the debug target flow.
+ * @param replyPort
+ * the address of the socket through which replies (emitted from the execution engine) flow.
+ * @param eventPort
+ * indicates the address of the socket through which messages corresponding to debug events occurring in the execution engine flow.
+ * @throws UnknownHostException
+ * when problems occur while establishing connection with the sockets
+ * @throws IOException
+ * when problems occur while reading/writing on sockets
+ */
+ public void init(EObject eObjectToExecute, String[] args, MokaDebugTarget debugTarget, int requestPort, int replyPort, int eventPort) throws UnknownHostException, IOException;
+
+ /**
+ * Initialization of the execution engine with given arguments. This is supposed to be called in the implementation of initRun and/or initDebug
+ * methods
+ *
+ * @param args
+ * The arguments for the initialization of the execution engine, before starting execution
+ */
+ public void initializeArguments(String[] args);
+
+ /**
+ * Starts the execution. This is supposed to be called after initialization phases.
+ *
+ * @throws IOException
+ */
+ public void start() throws IOException;
+
+ /**
+ * Returns the collection of MokaThread for this execution engine. If no threads are defined, the returned collection is empty, but not null.
+ *
+ * @return the collection of MokaThread for this execution engine
+ */
+ public MokaThread[] getThreads();
+
+ /**
+ * Registers the given breakpoint in the execution engine
+ *
+ * @param breakpoint
+ * the breakpoint to be registered
+ */
+ public void addBreakpoint(MokaBreakpoint breakpoint);
+
+ /**
+ * Unregister the given breakpoint in the execution engine
+ *
+ * @param breakpoint
+ * the breakpoint to be unregistered
+ */
+ public void removeBreakpoint(MokaBreakpoint breakpoint);
+
+ /**
+ * Disconnects this execution engine from the associated debug target.
+ */
+ public void disconnect();
+
+ /**
+ * Gets the memory block at the given startAddress, for the given length
+ *
+ * @param startAddress
+ * The startAddress for the memory block
+ * @param length
+ * The length of the memory block
+ * @return the memory block corresponding to the given startAddress and length
+ */
+ public IMemoryBlock getMemoryBlock(long startAddress, long length);
+
+ /**
+ * Resumes execution according to the given Resume_Request
+ *
+ * @param request
+ * The Resume_Request indicating how execution has to be resumed
+ */
+ public void resume(Resume_Request request);
+
+ /**
+ * Suspends execution according to the given Suspend_Request
+ *
+ * @param request
+ * The Suspend_Request indicating how execution has to be suspended
+ */
+ public void suspend(Suspend_Request request);
+
+ /**
+ * Terminates execution according to the given Terminate_Request
+ *
+ * @param request
+ * The Terminate_Request indicating how execution has to be terminated
+ */
+ public void terminate(Terminate_Request request);
+
+ /**
+ * Returns the stack frames of the given thread
+ *
+ * @param thread
+ * The thread for which stack frames have to be retrieved
+ * @return The stack frames of the given thread
+ */
+ public IStackFrame[] getStackFrames(IThread thread);
+
+ /**
+ * Return the visible variables of the given stack frame or value
+ * stackFrameOrValue must be an IStackFrame or an IValue
+ *
+ * @param stackFrameOrValue
+ * The stack frame or value for which variables have to be retrieved
+ * @return The visible variables of the given stack frame or value
+ */
+ public IVariable[] getVariables(IDebugElement stackFrameOrValue);
+
+ /**
+ * Returns the register groups of the given stack frame
+ *
+ * @param stackFrame
+ * The stack frame for which register groups have to be retrieved
+ * @return The register groups of the given stack frame
+ */
+ public IRegisterGroup[] getRegisterGroups(IStackFrame stackFrame);
+
+ /**
+ * Returns the value (if any) for the given variable
+ *
+ * @param variable
+ * The variable for which value has to be retrieved
+ * @return The value (if any) for the given variable
+ */
+ public IValue getValue(IVariable variable);
+
+ /**
+ * Returns the reference type name of the given variable
+ * debugElement must be a IVariable or IValue
+ *
+ * @param variable
+ * The variable or value for which the reference type name has to be retrieved
+ * @return The reference type name of the given variable or value
+ */
+ public String getReferenceTypeName(IDebugElement debugElement);
+
+ /**
+ * Returns the string representation of the given value
+ *
+ * @param value
+ * The value for which a textual representation has to be retrieved
+ * @return The string representation of the given value
+ */
+ public String getValueString(IValue value);
+}
diff --git a/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/locator/MokaSourceLocator.java b/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/locator/MokaSourceLocator.java
index c715c5c..bbd0008 100644
--- a/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/locator/MokaSourceLocator.java
+++ b/org.eclipse.papyrus.moka/src/org/eclipse/papyrus/moka/locator/MokaSourceLocator.java
@@ -1,111 +1,111 @@
-/*****************************************************************************
- * 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
- *
- *****************************************************************************/
-package org.eclipse.papyrus.moka.locator;
-
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector;
-import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector;
-import org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.papyrus.moka.debug.MokaStackFrame;
-
-// TODO: Auto-generated Javadoc
-/**
- * A simple implementation of ISourceLookupDirector.
- * In this implementation, EObjects are considered as source elements.
- *
- */
-public class MokaSourceLocator extends AbstractSourceLookupDirector implements ISourceLookupDirector {
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#initializeParticipants()
- */
- public void initializeParticipants() {
- // This initialization step does not have any particular impact.
- // All needed information comes from getSourceElement
- // Nevertheless, this code is kept there since the MokaSourceLookupParticipant could be used to account for additional information in the launch configuration.
- // For example, these information may include a list of di files where graphical representations have to be taken from a given semantic element.
- // This may be removed if we confirm that this mechanism only makes sense for text file resources.
- ISourceLookupParticipant[] participants = new ISourceLookupParticipant[] { new MokaSourceLookupParticipant() };
- this.addParticipants(participants);
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector#getSourceElement(java.lang.Object)
- */
- @Override
- public Object getSourceElement(Object element) {
- EObject sourceElement = null;
- MokaStackFrame stackFrame = (MokaStackFrame) element;
- sourceElement = stackFrame.getModelElement();
- return sourceElement;
- }
-
- /**
- * An empty implementation of ISourceLookupParticipant.
- * See comment on initializeParticipants.
- *
- */
- protected class MokaSourceLookupParticipant implements ISourceLookupParticipant {
-
- /*
- * (non-Javadoc)
- *
- * @see
- * org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant#sourceContainersChanged(org.eclipse.debug.core.sourcelookup.ISourceLookupDirector
- * )
- */
- public void sourceContainersChanged(ISourceLookupDirector director) {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant#init(org.eclipse.debug.core.sourcelookup.ISourceLookupDirector)
- */
- public void init(ISourceLookupDirector director) {
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant#getSourceName(java.lang.Object)
- */
- public String getSourceName(Object object) throws CoreException {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant#findSourceElements(java.lang.Object)
- */
- public Object[] findSourceElements(Object object) throws CoreException {
- return null;
- }
-
- /*
- * (non-Javadoc)
- *
- * @see org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant#dispose()
- */
- public void dispose() {
- }
- };
-
-}
+/*****************************************************************************
+ * 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
+ *
+ *****************************************************************************/
+package org.eclipse.papyrus.moka.locator;
+
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector;
+import org.eclipse.debug.core.sourcelookup.ISourceLookupDirector;
+import org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.papyrus.moka.debug.MokaStackFrame;
+
+// TODO: Auto-generated Javadoc
+/**
+ * A simple implementation of ISourceLookupDirector.
+ * In this implementation, EObjects are considered as source elements.
+ *
+ */
+public class MokaSourceLocator extends AbstractSourceLookupDirector implements ISourceLookupDirector {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.debug.core.sourcelookup.ISourceLookupDirector#initializeParticipants()
+ */
+ public void initializeParticipants() {
+ // This initialization step does not have any particular impact.
+ // All needed information comes from getSourceElement
+ // Nevertheless, this code is kept there since the MokaSourceLookupParticipant could be used to account for additional information in the launch configuration.
+ // For example, these information may include a list of di files where graphical representations have to be taken from a given semantic element.
+ // This may be removed if we confirm that this mechanism only makes sense for text file resources.
+ ISourceLookupParticipant[] participants = new ISourceLookupParticipant[] { new MokaSourceLookupParticipant() };
+ this.addParticipants(participants);
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.debug.core.sourcelookup.AbstractSourceLookupDirector#getSourceElement(java.lang.Object)
+ */
+ @Override
+ public Object getSourceElement(Object element) {
+ EObject sourceElement = null;
+ MokaStackFrame stackFrame = (MokaStackFrame) element;
+ sourceElement = stackFrame.getModelElement();
+ return sourceElement;
+ }
+
+ /**
+ * An empty implementation of ISourceLookupParticipant.
+ * See comment on initializeParticipants.
+ *
+ */
+ protected class MokaSourceLookupParticipant implements ISourceLookupParticipant {
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see
+ * org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant#sourceContainersChanged(org.eclipse.debug.core.sourcelookup.ISourceLookupDirector
+ * )
+ */
+ public void sourceContainersChanged(ISourceLookupDirector director) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant#init(org.eclipse.debug.core.sourcelookup.ISourceLookupDirector)
+ */
+ public void init(ISourceLookupDirector director) {
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant#getSourceName(java.lang.Object)
+ */
+ public String getSourceName(Object object) throws CoreException {
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant#findSourceElements(java.lang.Object)
+ */
+ public Object[] findSourceElements(Object object) throws CoreException {
+ return null;
+ }
+
+ /*
+ * (non-Javadoc)
+ *
+ * @see org.eclipse.debug.core.sourcelookup.ISourceLookupParticipant#dispose()
+ */
+ public void dispose() {
+ }
+ };
+
+}
diff --git a/pom.xml b/pom.xml
new file mode 100644
index 0000000..20a20dc
--- /dev/null
+++ b/pom.xml
@@ -0,0 +1,351 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <groupId>org.eclipse.papyrus.moka</groupId>
+ <artifactId>org.eclipse.papyrus.moka.parent</artifactId>
+ <version>1.2.0-SNAPSHOT</version>
+ <packaging>pom</packaging>
+ <name>Moka</name>
+ <description>Papyrus model execution platform</description>
+
+ <modules>
+ <!-- moka core -->
+ <module>org.eclipse.papyrus.moka</module>
+ <module>org.eclipse.papyrus.moka.ui</module>
+ <!-- moka engines -->
+ <module>org.eclipse.papyrus.moka.fuml</module>
+ <module>org.eclipse.papyrus.moka.composites</module>
+ <module>org.eclipse.papyrus.moka.async.fuml</module>
+ <!-- moka utils -->
+ <module>org.eclipse.papyrus.moka.fuml.validation</module>
+ <module>org.eclipse.papyrus.moka.composites.utils</module>
+ <module>org.eclipse.papyrus.moka.fuml.activeobjectcontrollerlibrary</module>
+ <!-- moka libraries -->
+ <module>org.eclipse.papyrus.moka.fuml.assertionlibrary</module>
+ <module>org.eclipse.papyrus.moka.fuml.standardlibrary</module>
+ <!-- target platform -->
+ <module>targetplatform</module>
+ </modules>
+
+ <properties>
+ <!-- plugins versions -->
+ <!-- use 'mvn versions:display-plugin-updates' to check for the latest -->
+ <tycho-version>0.24.0</tycho-version>
+ <tychoExtrasVersion>0.24.0</tychoExtrasVersion>
+ <maven-checkstyle-version>2.12.1</maven-checkstyle-version>
+ <maven-findbugs-version>3.0.0</maven-findbugs-version>
+ <maven-pmd-version>3.1</maven-pmd-version>
+ <maven-jxr-version>2.3</maven-jxr-version>
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
+ <!-- Eclipse properties -->
+ <eclipse.release>neon</eclipse.release>
+
+ <!-- Platform properties -->
+ <env.ui.test>-Xms512m -Xmx2048m -XX:MaxPermSize=512M</env.ui.test>
+ </properties>
+
+ <pluginRepositories>
+ <pluginRepository>
+ <id>eclipse-maven-releases</id>
+ <url>https://repo.eclipse.org/content/repositories/releases/</url>
+ <snapshots>
+ <enabled>false</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+ <build>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>2.10.2</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-site-plugin</artifactId>
+ <version>3.3</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-report-plugin</artifactId>
+ <version>2.18.1</version>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <version>2.6</version>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-compiler-plugin</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ <!-- enable tycho build extension -->
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-maven-plugin</artifactId>
+ <version>${tycho-version}</version>
+ <extensions>true</extensions>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-repository-plugin</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ <plugin><!-- enable source bundle generation -->
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <version>${tychoExtrasVersion}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-versions-plugin</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-director-plugin</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.jacoco</groupId>
+ <artifactId>jacoco-maven-plugin</artifactId>
+ <version>${jacoco-version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-surefire-plugin</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>target-platform-configuration</artifactId>
+ <version>${tycho-version}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-pack200a-plugin</artifactId>
+ <version>${tychoExtrasVersion}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-pack200b-plugin</artifactId>
+ <version>${tychoExtrasVersion}</version>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.cbi.maven.plugins</groupId>
+ <artifactId>eclipse-jarsigner-plugin</artifactId>
+ <version>1.1.2</version>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-resources-plugin</artifactId>
+ <configuration>
+ <encoding>UTF-8</encoding>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-compiler-plugin</artifactId>
+ <configuration>
+ <source>1.8</source>
+ <target>1.8</target>
+ <optimize>true</optimize>
+ <showWarnings>true</showWarnings>
+ </configuration>
+ </plugin>
+ <!-- enable tycho build extension -->
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-maven-plugin</artifactId>
+ <extensions>true</extensions>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-repository-plugin</artifactId>
+ </plugin>
+ <plugin><!-- enable source bundle generation -->
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-source-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>plugin-source</id>
+ <goals>
+ <goal>plugin-source</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho.extras</groupId>
+ <artifactId>tycho-source-feature-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>source-feature</id>
+ <phase>package</phase>
+ <goals>
+ <goal>source-feature</goal>
+ </goals>
+ <!-- <configuration> <excludes> <plugin id="org.eclipse.papyrus.sysml14.rcp"
+ /> </excludes> </configuration> -->
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-p2-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>attach-p2-metadata</id>
+ <phase>package</phase>
+ <goals>
+ <goal>p2-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-versions-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>tycho-surefire-plugin</artifactId>
+ <configuration>
+ <failIfNoTests>false</failIfNoTests>
+ <useUIHarness>true</useUIHarness>
+ <useUIThread>true</useUIThread>
+ <!--<showEclipseLog>true</showEclipseLog> -->
+ <!--<testFailureIgnore>true</testFailureIgnore> -->
+ <argLine>${ui.test.vmargs}</argLine>
+ <bundleStartLevel>
+ <!-- <bundle> <id>org.eclipse.papyrus.sysml14.service.types</id> <level>6</level>
+ <autoStart>true</autoStart> </bundle> -->
+ <bundle>
+ <id>org.eclipse.equinox.launcher</id>
+ <level>4</level>
+ <autoStart>true</autoStart>
+ </bundle>
+ </bundleStartLevel>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.eclipse.tycho</groupId>
+ <artifactId>target-platform-configuration</artifactId>
+ <configuration>
+ <includePackedArtifacts>true</includePackedArtifacts>
+ <targetDefinitionIncludeSource>honor</targetDefinitionIncludeSource>
+ <environments>
+ <environment>
+ <os>win32</os>
+ <ws>win32</ws>
+ <arch>x86_64</arch>
+ </environment>
+ <environment>
+ <os>linux</os>
+ <ws>gtk</ws>
+ <arch>x86_64</arch>
+ </environment>
+ <environment>
+ <os>macosx</os>
+ <ws>cocoa</ws>
+ <arch>x86_64</arch>
+ </environment>
+ </environments>
+ <target>
+ <artifact>
+ <groupId>org.eclipse.papyrus.moka</groupId>
+ <artifactId>org.eclipse.papyrus.moka.targetplatform.${eclipse.release}</artifactId>
+ <version>${project.version}</version>
+ </artifact>
+ </target>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ <profiles>
+ <!-- This profile is used because javadoc generator with jdk 1.8 is more
+ stringeant. We could deactivate it when the javadoc has been updated with
+ the new standard of java 1.8 -->
+ <profile>
+ <id>doclint-java8-disable</id>
+ <activation>
+ <jdk>[1.8,)</jdk>
+ </activation>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <additionalparam>-Xdoclint:none</additionalparam>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-report-plugin</artifactId>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-site-plugin</artifactId>
+ <configuration>
+ <reportPlugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <configuration>
+ <additionalparam>-Xdoclint:none</additionalparam>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-surefire-report-plugin</artifactId>
+ </plugin>
+ </reportPlugins>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ <profile>
+ <id>macosx</id>
+ <activation>
+ <os>
+ <family>mac</family>
+ </os>
+ </activation>
+ <properties>
+ <ui.test.vmargs>-XstartOnFirstThread ${env.ui.test}</ui.test.vmargs>
+ </properties>
+ </profile>
+ <profile>
+ <id>other-os</id>
+ <activation>
+ <os>
+ <family>!mac</family>
+ </os>
+ </activation>
+ <properties>
+ <ui.test.vmargs>${env.ui.test}</ui.test.vmargs>
+ </properties>
+ </profile>
+ </profiles>
+</project>
\ No newline at end of file
diff --git a/targetplatform/org.eclipse.papyrus.moka.targetplatform.neon/org.eclipse.papyrus.moka.targetplatform.neon.target b/targetplatform/org.eclipse.papyrus.moka.targetplatform.neon/org.eclipse.papyrus.moka.targetplatform.neon.target
new file mode 100644
index 0000000..754caaf
--- /dev/null
+++ b/targetplatform/org.eclipse.papyrus.moka.targetplatform.neon/org.eclipse.papyrus.moka.targetplatform.neon.target
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?pde?>
+<!-- generated with https://github.com/mbarbero/fr.obeo.releng.targetplatform -->
+<target name="Tycho Tutorial" sequenceNumber="1444987867">
+ <locations>
+ <location includeMode="planner" includeAllPlatforms="false" includeSource="true" includeConfigurePhase="false" type="InstallableUnit">
+ <unit id="org.eclipse.platform.feature.group" version="4.6.0.v20150916-2000"/>
+ <unit id="org.eclipse.rcp.feature.group" version="4.6.0.v20150916-2000"/>
+ <unit id="org.eclipse.jdt.feature.group" version="3.12.0.v20150916-2000"/>
+ <unit id="org.eclipse.papyrus.sdk.feature.feature.group" version="1.2.0.201509301002"/>
+ <unit id="org.eclipse.equinox.p2.discovery.feature.feature.group" version="1.0.300.v20150907-2149"/>
+ <unit id="org.eclipse.equinox.executable.feature.group" version="3.6.200.v20150831-1559"/>
+ <repository id="eclipse-neon" location="http://download.eclipse.org/releases/neon/"/>
+ </location>
+ </locations>
+</target>
diff --git a/targetplatform/org.eclipse.papyrus.moka.targetplatform.neon/org.eclipse.papyrus.moka.targetplatform.neon.tpd b/targetplatform/org.eclipse.papyrus.moka.targetplatform.neon/org.eclipse.papyrus.moka.targetplatform.neon.tpd
new file mode 100644
index 0000000..df6d0c3
--- /dev/null
+++ b/targetplatform/org.eclipse.papyrus.moka.targetplatform.neon/org.eclipse.papyrus.moka.targetplatform.neon.tpd
@@ -0,0 +1,10 @@
+target "Tycho Tutorial" with source requirements
+
+location "http://download.eclipse.org/releases/neon/" eclipse-neon {
+ org.eclipse.platform.feature.group
+ org.eclipse.rcp.feature.group
+ org.eclipse.jdt.feature.group
+ org.eclipse.papyrus.sdk.feature.feature.group
+ org.eclipse.equinox.p2.discovery.feature.feature.group
+ org.eclipse.equinox.executable.feature.group
+}
\ No newline at end of file
diff --git a/targetplatform/org.eclipse.papyrus.moka.targetplatform.neon/pom.xml b/targetplatform/org.eclipse.papyrus.moka.targetplatform.neon/pom.xml
new file mode 100644
index 0000000..a27c2d0
--- /dev/null
+++ b/targetplatform/org.eclipse.papyrus.moka.targetplatform.neon/pom.xml
@@ -0,0 +1,13 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <artifactId>org.eclipse.papyrus.moka.targetplatform</artifactId>
+ <groupId>org.eclipse.papyrus.moka</groupId>
+ <version>1.2.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>org.eclipse.papyrus.moka.targetplatform.neon</artifactId>
+ <packaging>eclipse-target-definition</packaging>
+ <name>Moka Neon Target Definition</name>
+ <description>This plug-in contains the target definition for Papyrus Moka in Neon</description>
+</project>
\ No newline at end of file
diff --git a/targetplatform/pom.xml b/targetplatform/pom.xml
new file mode 100644
index 0000000..cd6c1de
--- /dev/null
+++ b/targetplatform/pom.xml
@@ -0,0 +1,30 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.eclipse.papyrus.moka</groupId>
+ <artifactId>org.eclipse.papyrus.moka.parent</artifactId>
+ <version>1.2.0-SNAPSHOT</version>
+ </parent>
+ <artifactId>org.eclipse.papyrus.moka.targetplatform</artifactId>
+ <packaging>pom</packaging>
+ <name>Moka Target Platform</name>
+ <description>This module contains the different target platform definitions</description>
+ <profiles>
+ <profile>
+ <id>mars</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ <property>
+ <name>eclipse.release</name>
+ <value>neon</value>
+ </property>
+ </activation>
+ <modules>
+ <module>org.eclipse.papyrus.moka.targetplatform.neon</module>
+ </modules>
+ </profile>
+ </profiles>
+
+</project>
\ No newline at end of file
diff --git a/targetplatform/src/site/xdoc/home.xml b/targetplatform/src/site/xdoc/home.xml
new file mode 100644
index 0000000..cdfe381
--- /dev/null
+++ b/targetplatform/src/site/xdoc/home.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<document xmlns="http://maven.apache.org/XDOC/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/XDOC/2.0 http://maven.apache.org/xsd/xdoc-2.0.xsd">
+
+ <properties>
+ <title>SysML Target</title>
+ </properties>
+
+ <body>
+ <section name="Generate the last target platform configuration">
+ <p>Follow the tutorial : <a href="http://codeandme.blogspot.fr/2012/12/tycho-build-8-using-target-platform.html?m=1">http://codeandme.blogspot.fr/2012/12/tycho-build-8-using-target-platform.html?m=1</a></p>
+ </section>
+
+ </body>
+
+</document>
\ No newline at end of file