summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjmusset2009-03-05 11:44:17 (EST)
committerjmusset2009-03-05 11:44:17 (EST)
commitf46719bd4e96d735e3e263006e10da65b28d0a2d (patch)
treeb19af9b1e049e5511a672df559b7120a30d619f9
parent43c7c6dfb2816450345fdf1be5a4b6a27f43e4c3 (diff)
downloadorg.eclipse.acceleo-f46719bd4e96d735e3e263006e10da65b28d0a2d.zip
org.eclipse.acceleo-f46719bd4e96d735e3e263006e10da65b28d0a2d.tar.gz
org.eclipse.acceleo-f46719bd4e96d735e3e263006e10da65b28d0a2d.tar.bz2
Project renaming from MTL to Acceleo
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/.classpath7
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/.cvsignore1
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/.project34
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.core.resources.prefs3
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.jdt.core.prefs12
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.jdt.ui.prefs3
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.jst.jsp.core.prefs28
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.ltk.core.refactoring.prefs3
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.wst.html.core.prefs36
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/META-INF/MANIFEST.MF19
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/build.properties15
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/model/example.uml69
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/model/example.umlclass529
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/GenerateJava.java295
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/Uml2JavaPlugin.java70
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/common/classBody.mtl91
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/common/common.mtl72
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/common/interfaceBody.mtl29
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/generateJava.mtl39
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/tasks/generateJava.readme16
-rw-r--r--examples/org.eclipse.acceleo.module.example.uml2java/tasks/generateJava.xml39
21 files changed, 1410 insertions, 0 deletions
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/.classpath b/examples/org.eclipse.acceleo.module.example.uml2java/.classpath
new file mode 100644
index 0000000..64c5e31
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/.classpath
@@ -0,0 +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>
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/.cvsignore b/examples/org.eclipse.acceleo.module.example.uml2java/.cvsignore
new file mode 100644
index 0000000..ba077a4
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/.cvsignore
@@ -0,0 +1 @@
+bin
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/.project b/examples/org.eclipse.acceleo.module.example.uml2java/.project
new file mode 100644
index 0000000..4e451b3
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/.project
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+ <name>org.eclipse.acceleo.module.example.uml2java</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>
+ <buildCommand>
+ <name>org.eclipse.acceleo.ide.ui.acceleoBuilder</name>
+ <arguments>
+ </arguments>
+ </buildCommand>
+ </buildSpec>
+ <natures>
+ <nature>org.eclipse.acceleo.ide.ui.acceleoNature</nature>
+ <nature>org.eclipse.pde.PluginNature</nature>
+ <nature>org.eclipse.jdt.core.javanature</nature>
+ </natures>
+</projectDescription>
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.core.resources.prefs b/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.core.resources.prefs
new file mode 100644
index 0000000..a02d27b
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.core.resources.prefs
@@ -0,0 +1,3 @@
+#Thu Oct 02 11:38:05 CEST 2008
+eclipse.preferences.version=1
+encoding//model/example.umlclass=UTF-8
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.jdt.core.prefs b/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.jdt.core.prefs
new file mode 100644
index 0000000..eae64a5
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.jdt.core.prefs
@@ -0,0 +1,12 @@
+#Thu Oct 02 15:04:05 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.5
+org.eclipse.jdt.core.compiler.codegen.unusedLocal=preserve
+org.eclipse.jdt.core.compiler.compliance=1.5
+org.eclipse.jdt.core.compiler.debug.lineNumber=generate
+org.eclipse.jdt.core.compiler.debug.localVariable=generate
+org.eclipse.jdt.core.compiler.debug.sourceFile=generate
+org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
+org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
+org.eclipse.jdt.core.compiler.source=1.5
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.jdt.ui.prefs b/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.jdt.ui.prefs
new file mode 100644
index 0000000..b7613ff
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.jdt.ui.prefs
@@ -0,0 +1,3 @@
+#Mon Oct 13 11:15:21 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.jdt.ui.text.custom_code_templates=<?xml version\="1.0" encoding\="UTF-8" standalone\="no"?><templates/>
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.jst.jsp.core.prefs b/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.jst.jsp.core.prefs
new file mode 100644
index 0000000..fa884a1
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.jst.jsp.core.prefs
@@ -0,0 +1,28 @@
+#Thu Oct 02 15:04:05 CEST 2008
+eclipse.preferences.version=1
+validateFragments=true
+validation.actions-missing-required-attribute=1
+validation.actions-non-empty-inline-tag=2
+validation.actions-unknown-attribute=2
+validation.directive-include-fragment-file-not-found=1
+validation.directive-include-fragment-file-not-specified=1
+validation.directive-taglib-duplicate-prefixes-different-uris=1
+validation.directive-taglib-duplicate-prefixes-same-uris=-1
+validation.directive-taglib-missing-prefix=1
+validation.directive-taglib-missing-uri-or-tagdir=1
+validation.directive-taglib-unresolvable-uri-or-tagdir=1
+validation.el-general-syntax=1
+validation.el-lexical-failure=-1
+validation.java-=-1
+validation.java-local-variable-is-never-used=-1
+validation.java-null-local-variable-reference=-1
+validation.java-potential-null-local-variable-reference=-1
+validation.java-unused-import=-1
+validation.translation-tag-class-not-found=2
+validation.translation-tei-class-not-found=2
+validation.translation-tei-class-not-instantiated=2
+validation.translation-tei-class-runtime-exception=2
+validation.translation-tei-message=1
+validation.translation-usebean-ambiguous-type-info=2
+validation.translation-usebean-invalid-id=1
+validation.translation-usebean-missing-type-info=1
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.ltk.core.refactoring.prefs b/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.ltk.core.refactoring.prefs
new file mode 100644
index 0000000..5358249
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.ltk.core.refactoring.prefs
@@ -0,0 +1,3 @@
+#Thu Oct 02 15:04:05 CEST 2008
+eclipse.preferences.version=1
+org.eclipse.ltk.core.refactoring.enable.project.refactoring.history=false
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.wst.html.core.prefs b/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.wst.html.core.prefs
new file mode 100644
index 0000000..e5459cc
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/.settings/org.eclipse.wst.html.core.prefs
@@ -0,0 +1,36 @@
+#Thu Oct 02 15:04:05 CEST 2008
+attrDuplicate=2
+attrInvalidName=2
+attrInvalidValue=2
+attrNameMismatch=2
+attrUndefName=2
+attrUndefValue=2
+attrValueMismatch=1
+attrValueUnclosed=2
+cdataInvalidContent=2
+cdataUnclosed=1
+commentInvalidContent=2
+commentUnclosed=1
+docDoctypeUnclosed=1
+docDuplicateTag=1
+docInvalidChar=2
+docInvalidContent=2
+eclipse.preferences.version=1
+elemCoexistence=2
+elemDuplicate=2
+elemEndInvalidCase=1
+elemInvalidContent=2
+elemInvalidDirective=1
+elemInvalidEmptyTag=2
+elemInvalidName=1
+elemMissingEnd=2
+elemMissingStart=1
+elemStartInvalidCase=2
+elemUnclosedEndTag=1
+elemUnclosedStartTag=1
+elemUnknownName=2
+elemUnnecessaryEnd=2
+piInvalidContent=2
+piUnclosed=1
+piUndefined=2
+refInvalidContent=2
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/META-INF/MANIFEST.MF b/examples/org.eclipse.acceleo.module.example.uml2java/META-INF/MANIFEST.MF
new file mode 100644
index 0000000..cc6104b
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/META-INF/MANIFEST.MF
@@ -0,0 +1,19 @@
+Manifest-Version: 1.0
+Bundle-ManifestVersion: 2
+Bundle-Name: Acceleo Uml2java Module Example
+Bundle-SymbolicName: org.eclipse.acceleo.module.example.uml2java
+Bundle-Version: 0.8.0.qualifier
+Bundle-Activator: org.eclipse.acceleo.module.example.uml2java.Uml2JavaPlugin
+Bundle-Vendor: Eclipse.org
+Require-Bundle: org.eclipse.core.runtime,
+ org.eclipse.uml2.uml,
+ org.eclipse.emf.ecore,
+ org.eclipse.emf.ecore.xmi,
+ org.eclipse.ocl,
+ org.eclipse.ocl.ecore,
+ org.eclipse.acceleo.model,
+ org.eclipse.acceleo.engine
+Bundle-RequiredExecutionEnvironment: J2SE-1.5
+Eclipse-LazyStart: true
+Bundle-ActivationPolicy: lazy
+Export-Package: org.eclipse.acceleo.module.example.uml2java
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/build.properties b/examples/org.eclipse.acceleo.module.example.uml2java/build.properties
new file mode 100644
index 0000000..b8d4b6d
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/build.properties
@@ -0,0 +1,15 @@
+################################################################################
+# Copyright (c) 2008, 2009 Obeo.
+# 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:
+# Obeo - initial API and implementation
+################################################################################
+source.. = src/
+output.. = bin/
+bin.includes = META-INF/,\
+ .
+
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/model/example.uml b/examples/org.eclipse.acceleo.module.example.uml2java/model/example.uml
new file mode 100644
index 0000000..b39f875
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/model/example.uml
@@ -0,0 +1,69 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<uml:Model xmi:version="2.1" xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML" xmi:id="_w8FzIJBjEd2MY5zfT4Awfg" name="model">
+ <packagedElement xmi:type="uml:Package" xmi:id="_Tj-XsJBlEd2MY5zfT4Awfg" name="org.eclipse.acceleo.java">
+ <packagedElement xmi:type="uml:Class" xmi:id="_GUaJoJBmEd2MY5zfT4Awfg" name="Person">
+ <ownedAttribute xmi:id="_JrASAJBmEd2MY5zfT4Awfg" name="name" type="_bFkDkJCWEd2Xeb6Jt2sbCQ" aggregation="composite"/>
+ <ownedAttribute xmi:id="_LuJ1gJBmEd2MY5zfT4Awfg" name="firstname" type="_bFkDkJCWEd2Xeb6Jt2sbCQ" aggregation="composite"/>
+ <ownedAttribute xmi:id="_PPM6YJBmEd2MY5zfT4Awfg" name="dateOfBirth" type="_G1LiIJBrEd2MY5zfT4Awfg" aggregation="composite"/>
+ <ownedAttribute xmi:id="_-Bp9gJFbEd2gfL_kAZmBgw" name="emails" type="_bFkDkJCWEd2Xeb6Jt2sbCQ" aggregation="composite">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_BCAJEJFcEd2gfL_kAZmBgw" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_Bob28JFcEd2gfL_kAZmBgw"/>
+ </ownedAttribute>
+ <ownedOperation xmi:id="_YRLRMJBmEd2MY5zfT4Awfg" name="getAge">
+ <ownedComment xmi:id="_Y-zloJFKEd2gfL_kAZmBgw">
+ <body>Calculate the age from birthdate to now.</body>
+ </ownedComment>
+ <ownedParameter xmi:id="_c-2vAJBrEd2MY5zfT4Awfg" type="_q-uUoJCWEd2Xeb6Jt2sbCQ" direction="return"/>
+ </ownedOperation>
+ <ownedOperation xmi:id="_ZrDOMJBmEd2MY5zfT4Awfg" name="getFullName">
+ <ownedParameter xmi:id="_d4-08JBrEd2MY5zfT4Awfg" type="_bFkDkJCWEd2Xeb6Jt2sbCQ" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_pC1TsJBqEd2MY5zfT4Awfg" name="owns" memberEnd="_pC1TsZBqEd2MY5zfT4Awfg _pC16wZBqEd2MY5zfT4Awfg">
+ <ownedEnd xmi:id="_pC1TsZBqEd2MY5zfT4Awfg" name="owner" type="_GUaJoJBmEd2MY5zfT4Awfg" association="_pC1TsJBqEd2MY5zfT4Awfg">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pC16wJBqEd2MY5zfT4Awfg" value="1"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pC1TspBqEd2MY5zfT4Awfg"/>
+ </ownedEnd>
+ <ownedEnd xmi:id="_pC16wZBqEd2MY5zfT4Awfg" name="owned" type="_k9nKwJBqEd2MY5zfT4Awfg" aggregation="shared" association="_pC1TsJBqEd2MY5zfT4Awfg">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_pC16w5BqEd2MY5zfT4Awfg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_pC16wpBqEd2MY5zfT4Awfg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Association" xmi:id="_A96esJBpEd2MY5zfT4Awfg" name="" memberEnd="_A96esZBpEd2MY5zfT4Awfg _A97FwZBpEd2MY5zfT4Awfg">
+ <ownedEnd xmi:id="_A96esZBpEd2MY5zfT4Awfg" name="parent" type="_GUaJoJBmEd2MY5zfT4Awfg" association="_A96esJBpEd2MY5zfT4Awfg">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A97FwJBpEd2MY5zfT4Awfg" value="2"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A96espBpEd2MY5zfT4Awfg"/>
+ </ownedEnd>
+ <ownedEnd xmi:id="_A97FwZBpEd2MY5zfT4Awfg" name="children" type="_GUaJoJBmEd2MY5zfT4Awfg" association="_A96esJBpEd2MY5zfT4Awfg">
+ <upperValue xmi:type="uml:LiteralUnlimitedNatural" xmi:id="_A97Fw5BpEd2MY5zfT4Awfg" value="*"/>
+ <lowerValue xmi:type="uml:LiteralInteger" xmi:id="_A97FwpBpEd2MY5zfT4Awfg"/>
+ </ownedEnd>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Interface" xmi:id="_gG4FUJBqEd2MY5zfT4Awfg" name="NeedALicense">
+ <ownedOperation xmi:id="_jNYjQJBqEd2MY5zfT4Awfg" name="canDrive">
+ <ownedParameter xmi:id="_1wO98JBrEd2MY5zfT4Awfg" type="_cHO78JCWEd2Xeb6Jt2sbCQ" direction="return"/>
+ <ownedParameter xmi:id="_1wO98ZBrEd2MY5zfT4Awfg" name="driver" type="_GUaJoJBmEd2MY5zfT4Awfg"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_k9nKwJBqEd2MY5zfT4Awfg" name="Vehicle" isAbstract="true">
+ <ownedOperation xmi:id="_tLZEgJBqEd2MY5zfT4Awfg" name="drive">
+ <ownedParameter xmi:id="_ttEOMJBqEd2MY5zfT4Awfg" direction="return"/>
+ </ownedOperation>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_queWIJBqEd2MY5zfT4Awfg" name="Car" clientDependency="_kmJGIJCPEd2Xeb6Jt2sbCQ">
+ <generalization xmi:id="_vLQqgJBqEd2MY5zfT4Awfg" general="_k9nKwJBqEd2MY5zfT4Awfg"/>
+ <interfaceRealization xmi:id="_kmJGIJCPEd2Xeb6Jt2sbCQ" supplier="_gG4FUJBqEd2MY5zfT4Awfg" client="_queWIJBqEd2MY5zfT4Awfg" contract="_gG4FUJBqEd2MY5zfT4Awfg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_rRaEEJBqEd2MY5zfT4Awfg" name="Bicycle">
+ <generalization xmi:id="_uu9JAJBqEd2MY5zfT4Awfg" general="_k9nKwJBqEd2MY5zfT4Awfg"/>
+ </packagedElement>
+ <packagedElement xmi:type="uml:Class" xmi:id="_sSj_EJBqEd2MY5zfT4Awfg" name="Boat" clientDependency="_lEMUEJCPEd2Xeb6Jt2sbCQ">
+ <generalization xmi:id="_viEoAJBqEd2MY5zfT4Awfg" general="_k9nKwJBqEd2MY5zfT4Awfg"/>
+ <interfaceRealization xmi:id="_lEMUEJCPEd2Xeb6Jt2sbCQ" supplier="_gG4FUJBqEd2MY5zfT4Awfg" client="_sSj_EJBqEd2MY5zfT4Awfg" contract="_gG4FUJBqEd2MY5zfT4Awfg"/>
+ </packagedElement>
+ </packagedElement>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_G1LiIJBrEd2MY5zfT4Awfg" name="Date"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_bFkDkJCWEd2Xeb6Jt2sbCQ" name="String"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_cHO78JCWEd2Xeb6Jt2sbCQ" name="Boolean"/>
+ <packagedElement xmi:type="uml:PrimitiveType" xmi:id="_q-uUoJCWEd2Xeb6Jt2sbCQ" name="Integer"/>
+</uml:Model>
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/model/example.umlclass b/examples/org.eclipse.acceleo.module.example.uml2java/model/example.umlclass
new file mode 100644
index 0000000..9d715da
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/model/example.umlclass
@@ -0,0 +1,529 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<xmi:XMI xmi:version="2.0" xmlns:xmi="http://www.omg.org/XMI" xmlns:notation="http://www.eclipse.org/gmf/runtime/1.0.1/notation" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML">
+ <notation:Diagram xmi:id="_0MJjwJBlEd2MY5zfT4Awfg" type="UMLClass" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_WIXqQJBpEd2MY5zfT4Awfg" type="2014">
+ <children xmi:type="notation:Node" xmi:id="_WIY4YJBpEd2MY5zfT4Awfg" type="5020"/>
+ <children xmi:type="notation:Node" xmi:id="_WIY4YZBpEd2MY5zfT4Awfg" type="7032">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_WIY4YpBpEd2MY5zfT4Awfg" collapsed="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WIY4Y5BpEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WIY4ZJBpEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_WIXqQZBpEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Model" href="example.uml#_w8FzIJBjEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WIXqQpBpEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_WIZfcJBpEd2MY5zfT4Awfg" type="2002">
+ <children xmi:type="notation:Node" xmi:id="_WIaGgJBpEd2MY5zfT4Awfg" type="5004"/>
+ <children xmi:type="notation:Node" xmi:id="_WIaGgZBpEd2MY5zfT4Awfg" type="7010">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_WIaGgpBpEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WIaGg5BpEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WIaGhJBpEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WIaGhZBpEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_WIaGhpBpEd2MY5zfT4Awfg" type="7011">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_WIaGh5BpEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WIaGiJBpEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WIaGiZBpEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WIaGipBpEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_WIatkJBpEd2MY5zfT4Awfg" type="7012">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_WIatkZBpEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_WIatkpBpEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_WIatk5BpEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WIatlJBpEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_WIZfcZBpEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <styles xmi:type="notation:HintedDiagramLinkStyle" xmi:id="_WIZfcpBpEd2MY5zfT4Awfg" diagramLink="_WVybMJBpEd2MY5zfT4Awfg"/>
+ <element xmi:type="uml:Package" href="example.uml#_Tj-XsJBlEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_WIZfc5BpEd2MY5zfT4Awfg" x="190" y="30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ryODkJCVEd2Xeb6Jt2sbCQ" type="2005">
+ <children xmi:type="notation:Node" xmi:id="_ryOqoJCVEd2Xeb6Jt2sbCQ" type="5007">
+ <styles xmi:type="notation:FontStyle" xmi:id="_ryQf0JCVEd2Xeb6Jt2sbCQ" bold="true"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ryOqoZCVEd2Xeb6Jt2sbCQ" type="7020">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ryOqopCVEd2Xeb6Jt2sbCQ"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ryOqo5CVEd2Xeb6Jt2sbCQ" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ryOqpJCVEd2Xeb6Jt2sbCQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ryOqpZCVEd2Xeb6Jt2sbCQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ryOqppCVEd2Xeb6Jt2sbCQ" type="7021">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_ryOqp5CVEd2Xeb6Jt2sbCQ"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_ryOqqJCVEd2Xeb6Jt2sbCQ" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_ryOqqZCVEd2Xeb6Jt2sbCQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_ryOqqpCVEd2Xeb6Jt2sbCQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_ryODkZCVEd2Xeb6Jt2sbCQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:PrimitiveType" href="example.uml#_G1LiIJBrEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_ryODkpCVEd2Xeb6Jt2sbCQ" x="380" y="30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_bFtNgJCWEd2Xeb6Jt2sbCQ" type="2005">
+ <children xmi:type="notation:Node" xmi:id="_bFt0kJCWEd2Xeb6Jt2sbCQ" type="5007">
+ <styles xmi:type="notation:FontStyle" xmi:id="_bFvpwJCWEd2Xeb6Jt2sbCQ" bold="true"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_bFt0kZCWEd2Xeb6Jt2sbCQ" type="7020">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_bFt0kpCWEd2Xeb6Jt2sbCQ"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bFt0k5CWEd2Xeb6Jt2sbCQ" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bFt0lJCWEd2Xeb6Jt2sbCQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bFt0lZCWEd2Xeb6Jt2sbCQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_bFt0lpCWEd2Xeb6Jt2sbCQ" type="7021">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_bFt0l5CWEd2Xeb6Jt2sbCQ"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_bFt0mJCWEd2Xeb6Jt2sbCQ" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_bFt0mZCWEd2Xeb6Jt2sbCQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_bFt0mpCWEd2Xeb6Jt2sbCQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_bFtNgZCWEd2Xeb6Jt2sbCQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:PrimitiveType" href="example.uml#_bFkDkJCWEd2Xeb6Jt2sbCQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_bFtNgpCWEd2Xeb6Jt2sbCQ" x="485" y="30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_cHW3wJCWEd2Xeb6Jt2sbCQ" type="2005">
+ <children xmi:type="notation:Node" xmi:id="_cHXe0JCWEd2Xeb6Jt2sbCQ" type="5007">
+ <styles xmi:type="notation:FontStyle" xmi:id="_cHYs8JCWEd2Xeb6Jt2sbCQ" bold="true"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_cHXe0ZCWEd2Xeb6Jt2sbCQ" type="7020">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_cHXe0pCWEd2Xeb6Jt2sbCQ"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cHXe05CWEd2Xeb6Jt2sbCQ" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cHXe1JCWEd2Xeb6Jt2sbCQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cHXe1ZCWEd2Xeb6Jt2sbCQ"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_cHXe1pCWEd2Xeb6Jt2sbCQ" type="7021">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_cHXe15CWEd2Xeb6Jt2sbCQ"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_cHXe2JCWEd2Xeb6Jt2sbCQ" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_cHXe2ZCWEd2Xeb6Jt2sbCQ"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_cHXe2pCWEd2Xeb6Jt2sbCQ"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_cHW3wZCWEd2Xeb6Jt2sbCQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:PrimitiveType" href="example.uml#_cHO78JCWEd2Xeb6Jt2sbCQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_cHW3wpCWEd2Xeb6Jt2sbCQ" x="590" y="30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_y4UMMJFIEd2gfL_kAZmBgw" type="2005">
+ <children xmi:type="notation:Node" xmi:id="_y4VaUJFIEd2gfL_kAZmBgw" type="5007">
+ <styles xmi:type="notation:FontStyle" xmi:id="_y4vC8JFIEd2gfL_kAZmBgw" bold="true"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_y4WBYJFIEd2gfL_kAZmBgw" type="7020">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_y4WBYZFIEd2gfL_kAZmBgw"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_y4WBYpFIEd2gfL_kAZmBgw" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_y4WBY5FIEd2gfL_kAZmBgw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_y4WBZJFIEd2gfL_kAZmBgw"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_y4hAgJFIEd2gfL_kAZmBgw" type="7021">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_y4hAgZFIEd2gfL_kAZmBgw"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_y4hAgpFIEd2gfL_kAZmBgw" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_y4hAg5FIEd2gfL_kAZmBgw"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_y4hAhJFIEd2gfL_kAZmBgw"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_y4UMMZFIEd2gfL_kAZmBgw" fontName="Segoe UI"/>
+ <element xmi:type="uml:PrimitiveType" href="example.uml#_q-uUoJCWEd2Xeb6Jt2sbCQ"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_y4UMMpFIEd2gfL_kAZmBgw" x="695" y="30"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_0MJjwZBlEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_0MJjwpBlEd2MY5zfT4Awfg"/>
+ <element xmi:type="uml:Model" href="example.uml#_w8FzIJBjEd2MY5zfT4Awfg"/>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_FFyaYJBmEd2MY5zfT4Awfg" type="UMLClass" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_FGzHAJBmEd2MY5zfT4Awfg" type="2014">
+ <children xmi:type="notation:Node" xmi:id="_FGzHA5BmEd2MY5zfT4Awfg" type="5020"/>
+ <children xmi:type="notation:Node" xmi:id="_FGzuEJBmEd2MY5zfT4Awfg" type="7032">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_FGzuEZBmEd2MY5zfT4Awfg" collapsed="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_FGzuEpBmEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FGzuE5BmEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_FGzHAZBmEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Package" href="example.uml#_Tj-XsJBlEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_FGzHApBmEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_GWlT4JBmEd2MY5zfT4Awfg" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_GWl68JBmEd2MY5zfT4Awfg" type="5003">
+ <styles xmi:type="notation:FontStyle" xmi:id="_GXerwJBmEd2MY5zfT4Awfg" bold="true"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_GWl68ZBmEd2MY5zfT4Awfg" type="5019"/>
+ <children xmi:type="notation:Node" xmi:id="_GWmiAJBmEd2MY5zfT4Awfg" type="7001">
+ <children xmi:type="notation:Node" xmi:id="_Jr3NoJBmEd2MY5zfT4Awfg" type="3001">
+ <element xmi:type="uml:Property" href="example.uml#_JrASAJBmEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_Jr3NoZBmEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_LuWp0JBmEd2MY5zfT4Awfg" type="3001">
+ <element xmi:type="uml:Property" href="example.uml#_LuJ1gJBmEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_LuWp0ZBmEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_PPXScJBmEd2MY5zfT4Awfg" type="3001">
+ <element xmi:type="uml:Property" href="example.uml#_PPM6YJBmEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_PPXScZBmEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_GWmiAZBmEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GWmiApBmEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GWmiA5BmEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GWmiBJBmEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_GWnwIJBmEd2MY5zfT4Awfg" type="7002">
+ <children xmi:type="notation:Node" xmi:id="_YRVCMJBmEd2MY5zfT4Awfg" type="3002">
+ <element xmi:type="uml:Operation" href="example.uml#_YRLRMJBmEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_YRVCMZBmEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ZrM_MJBmEd2MY5zfT4Awfg" type="3002">
+ <element xmi:type="uml:Operation" href="example.uml#_ZrDOMJBmEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ZrM_MZBmEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_GWnwIZBmEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GWnwIpBmEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GWnwI5BmEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GWnwJJBmEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_GWoXMJBmEd2MY5zfT4Awfg" type="7003">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_GWoXMZBmEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_GWoXMpBmEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_GWoXM5BmEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_GWoXNJBmEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_GWlT4ZBmEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Class" href="example.uml#_GUaJoJBmEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_GWlT4pBmEd2MY5zfT4Awfg" x="150" y="150" width="146" height="176"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_kHafYJBmEd2MY5zfT4Awfg" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_kHafY5BmEd2MY5zfT4Awfg" type="5003">
+ <styles xmi:type="notation:FontStyle" xmi:id="_kHdisJBmEd2MY5zfT4Awfg" bold="true"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_kHbGcJBmEd2MY5zfT4Awfg" type="5019"/>
+ <children xmi:type="notation:Node" xmi:id="_kHbGcZBmEd2MY5zfT4Awfg" type="7001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_kHbGcpBmEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_kHbGc5BmEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kHbGdJBmEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kHbGdZBmEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_kHbGdpBmEd2MY5zfT4Awfg" type="7002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_kHbGd5BmEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_kHbGeJBmEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kHbGeZBmEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kHbGepBmEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_kHbtgJBmEd2MY5zfT4Awfg" type="7003">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_kHbtgZBmEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_kHbtgpBmEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_kHbtg5BmEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_kHbthJBmEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_kHafYZBmEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_kHafYpBmEd2MY5zfT4Awfg" x="455" y="155"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_FFyaYZBmEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_FFyaYpBmEd2MY5zfT4Awfg"/>
+ <element xmi:type="uml:Package" href="example.uml#_Tj-XsJBlEd2MY5zfT4Awfg"/>
+ <edges xmi:type="notation:Edge" xmi:id="_A9868JBpEd2MY5zfT4Awfg" type="4005" source="_GWlT4JBmEd2MY5zfT4Awfg" target="_GWlT4JBmEd2MY5zfT4Awfg">
+ <children xmi:type="notation:Node" xmi:id="_A9869JBpEd2MY5zfT4Awfg" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A9869ZBpEd2MY5zfT4Awfg" y="20"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_A99iAJBpEd2MY5zfT4Awfg" type="6004">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A99iAZBpEd2MY5zfT4Awfg" y="-15"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_A99iApBpEd2MY5zfT4Awfg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A99iA5BpEd2MY5zfT4Awfg" y="-15"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_A99iBJBpEd2MY5zfT4Awfg" type="6006">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A99iBZBpEd2MY5zfT4Awfg" y="-30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_A99iBpBpEd2MY5zfT4Awfg" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A99iB5BpEd2MY5zfT4Awfg" y="-30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_A99iCJBpEd2MY5zfT4Awfg" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A99iCZBpEd2MY5zfT4Awfg" y="15"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_A99iCpBpEd2MY5zfT4Awfg" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_A99iC5BpEd2MY5zfT4Awfg" y="15"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_A9868ZBpEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_A9868pBpEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="example.uml#_A96esJBpEd2MY5zfT4Awfg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_A98685BpEd2MY5zfT4Awfg" points="[33, 0, 35, 6]$[95, 0, 97, 6]$[95, 87, 97, 93]$[-3, 87, -1, 93]$[-3, 25, -1, 31]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A9_-QJBpEd2MY5zfT4Awfg" id="(0.77397263,0.85795456)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_A9_-QZBpEd2MY5zfT4Awfg" id="(0.760274,0.82954544)"/>
+ </edges>
+ </notation:Diagram>
+ <notation:Diagram xmi:id="_WVybMJBpEd2MY5zfT4Awfg" type="UMLClass" measurementUnit="Pixel">
+ <children xmi:type="notation:Node" xmi:id="_erMxgJBqEd2MY5zfT4Awfg" type="2014">
+ <children xmi:type="notation:Node" xmi:id="_erMxg5BqEd2MY5zfT4Awfg" type="5020"/>
+ <children xmi:type="notation:Node" xmi:id="_erMxhJBqEd2MY5zfT4Awfg" type="7032">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_erMxhZBqEd2MY5zfT4Awfg" collapsed="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_erMxhpBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_erMxh5BqEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_erMxgZBqEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Package" href="example.uml#_Tj-XsJBlEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_erMxgpBqEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_erNYkJBqEd2MY5zfT4Awfg" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_erNYk5BqEd2MY5zfT4Awfg" type="5003">
+ <styles xmi:type="notation:FontStyle" xmi:id="_erQb4JBqEd2MY5zfT4Awfg" bold="true"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_erNYlJBqEd2MY5zfT4Awfg" type="5019"/>
+ <children xmi:type="notation:Node" xmi:id="_erNYlZBqEd2MY5zfT4Awfg" type="7001">
+ <children xmi:type="notation:Node" xmi:id="_ICGkMJFbEd2gfL_kAZmBgw" type="3001">
+ <element xmi:type="uml:Property" href="example.uml#_JrASAJBmEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ICGkMZFbEd2gfL_kAZmBgw"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ICHLQJFbEd2gfL_kAZmBgw" type="3001">
+ <element xmi:type="uml:Property" href="example.uml#_LuJ1gJBmEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ICHLQZFbEd2gfL_kAZmBgw"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_ICHLQpFbEd2gfL_kAZmBgw" type="3001">
+ <element xmi:type="uml:Property" href="example.uml#_PPM6YJBmEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_ICHLQ5FbEd2gfL_kAZmBgw"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_-BzugJFbEd2gfL_kAZmBgw" type="3001">
+ <element xmi:type="uml:Property" href="example.uml#_-Bp9gJFbEd2gfL_kAZmBgw"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_-BzugZFbEd2gfL_kAZmBgw"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_erNYlpBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_erNYl5BqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_erNYmJBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_erNYmZBqEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_erN_oJBqEd2MY5zfT4Awfg" type="7002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_erN_oZBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_erN_opBqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_erN_o5BqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_erN_pJBqEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_erN_pZBqEd2MY5zfT4Awfg" type="7003">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_erN_ppBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_erN_p5BqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_erN_qJBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_erN_qZBqEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_erNYkZBqEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Class" href="example.uml#_GUaJoJBmEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_erNYkpBqEd2MY5zfT4Awfg" x="185" y="20"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_imWYcJBqEd2MY5zfT4Awfg" type="2013">
+ <children xmi:type="notation:Node" xmi:id="_imW_gJBqEd2MY5zfT4Awfg" type="5018"/>
+ <children xmi:type="notation:Node" xmi:id="_imW_gZBqEd2MY5zfT4Awfg" type="7029">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_imW_gpBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_imW_g5BqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_imW_hJBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_imW_hZBqEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_imW_hpBqEd2MY5zfT4Awfg" type="7030">
+ <children xmi:type="notation:Node" xmi:id="_jNfQ8JBqEd2MY5zfT4Awfg" type="3029">
+ <element xmi:type="uml:Operation" href="example.uml#_jNYjQJBqEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_jNfQ8ZBqEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_imW_h5BqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_imW_iJBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_imW_iZBqEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_imW_ipBqEd2MY5zfT4Awfg" type="7031">
+ <styles xmi:type="notation:TitleStyle" xmi:id="_imW_i5BqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_imW_jJBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_imW_jZBqEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_imWYcZBqEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Interface" href="example.uml#_gG4FUJBqEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_imWYcpBqEd2MY5zfT4Awfg" x="275" y="465"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_k9vGkJBqEd2MY5zfT4Awfg" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_k9vtoJBqEd2MY5zfT4Awfg" type="5003">
+ <styles xmi:type="notation:FontStyle" xmi:id="_k9w7wJBqEd2MY5zfT4Awfg" bold="true" italic="true"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_k9vtoZBqEd2MY5zfT4Awfg" type="5019"/>
+ <children xmi:type="notation:Node" xmi:id="_k9vtopBqEd2MY5zfT4Awfg" type="7001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_k9vto5BqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_k9vtpJBqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_k9vtpZBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_k9vtppBqEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_k9vtp5BqEd2MY5zfT4Awfg" type="7002">
+ <children xmi:type="notation:Node" xmi:id="_tLfyMJBqEd2MY5zfT4Awfg" type="3002">
+ <element xmi:type="uml:Operation" href="example.uml#_tLZEgJBqEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_tLfyMZBqEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_k9vtqJBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_k9vtqZBqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_k9vtqpBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_k9vtq5BqEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_k9vtrJBqEd2MY5zfT4Awfg" type="7003">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_k9vtrZBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_k9vtrpBqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_k9vtr5BqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_k9vtsJBqEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_k9vGkZBqEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Class" href="example.uml#_k9nKwJBqEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_k9vGkpBqEd2MY5zfT4Awfg" x="525" y="75"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_qum5AJBqEd2MY5zfT4Awfg" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_qungEJBqEd2MY5zfT4Awfg" type="5003">
+ <styles xmi:type="notation:FontStyle" xmi:id="_qupVQJBqEd2MY5zfT4Awfg" bold="true"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_qungEZBqEd2MY5zfT4Awfg" type="5019"/>
+ <children xmi:type="notation:Node" xmi:id="_qungEpBqEd2MY5zfT4Awfg" type="7001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_qungE5BqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_qungFJBqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qungFZBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qungFpBqEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_qungF5BqEd2MY5zfT4Awfg" type="7002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_qungGJBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_qungGZBqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_qungGpBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_qungG5BqEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_quoHIJBqEd2MY5zfT4Awfg" type="7003">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_quoHIZBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_quoHIpBqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_quoHI5BqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_quoHJJBqEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_qum5AZBqEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Class" href="example.uml#_queWIJBqEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_qum5ApBqEd2MY5zfT4Awfg" x="380" y="300"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_rRj1EJBqEd2MY5zfT4Awfg" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_rRkcIJBqEd2MY5zfT4Awfg" type="5003">
+ <styles xmi:type="notation:FontStyle" xmi:id="_rRmRUJBqEd2MY5zfT4Awfg" bold="true"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_rRkcIZBqEd2MY5zfT4Awfg" type="5019"/>
+ <children xmi:type="notation:Node" xmi:id="_rRkcIpBqEd2MY5zfT4Awfg" type="7001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_rRkcI5BqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rRkcJJBqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rRkcJZBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rRkcJpBqEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_rRkcJ5BqEd2MY5zfT4Awfg" type="7002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_rRkcKJBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rRkcKZBqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rRkcKpBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rRkcK5BqEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_rRkcLJBqEd2MY5zfT4Awfg" type="7003">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_rRkcLZBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_rRkcLpBqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_rRkcL5BqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_rRkcMJBqEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_rRj1EZBqEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Class" href="example.uml#_rRaEEJBqEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_rRj1EpBqEd2MY5zfT4Awfg" x="561" y="294"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_sSwMUJBqEd2MY5zfT4Awfg" type="2001">
+ <children xmi:type="notation:Node" xmi:id="_sSwzYJBqEd2MY5zfT4Awfg" type="5003">
+ <styles xmi:type="notation:FontStyle" xmi:id="_sSyokJBqEd2MY5zfT4Awfg" bold="true"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_sSwzYZBqEd2MY5zfT4Awfg" type="5019"/>
+ <children xmi:type="notation:Node" xmi:id="_sSwzYpBqEd2MY5zfT4Awfg" type="7001">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_sSwzY5BqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_sSwzZJBqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sSwzZZBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sSwzZpBqEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_sSwzZ5BqEd2MY5zfT4Awfg" type="7002">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_sSwzaJBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_sSwzaZBqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sSwzapBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sSwza5BqEd2MY5zfT4Awfg"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_sSxacJBqEd2MY5zfT4Awfg" type="7003">
+ <styles xmi:type="notation:DrawerStyle" xmi:id="_sSxacZBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:TitleStyle" xmi:id="_sSxacpBqEd2MY5zfT4Awfg" showTitle="true"/>
+ <styles xmi:type="notation:SortingStyle" xmi:id="_sSxac5BqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_sSxadJBqEd2MY5zfT4Awfg"/>
+ </children>
+ <styles xmi:type="notation:ShapeStyle" xmi:id="_sSwMUZBqEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Class" href="example.uml#_sSj_EJBqEd2MY5zfT4Awfg"/>
+ <layoutConstraint xmi:type="notation:Bounds" xmi:id="_sSwMUpBqEd2MY5zfT4Awfg" x="264" y="302"/>
+ </children>
+ <styles xmi:type="notation:DiagramStyle" xmi:id="_WVybMZBpEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FilteringStyle" xmi:id="_WVybMpBpEd2MY5zfT4Awfg"/>
+ <element xmi:type="uml:Package" href="example.uml#_Tj-XsJBlEd2MY5zfT4Awfg"/>
+ <edges xmi:type="notation:Edge" xmi:id="_erXJkJBqEd2MY5zfT4Awfg" type="4005" source="_erNYkJBqEd2MY5zfT4Awfg" target="_erNYkJBqEd2MY5zfT4Awfg">
+ <children xmi:type="notation:Node" xmi:id="_erXJlJBqEd2MY5zfT4Awfg" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_erXJlZBqEd2MY5zfT4Awfg" y="20"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_erXJlpBqEd2MY5zfT4Awfg" type="6004">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_erXJl5BqEd2MY5zfT4Awfg" x="-18" y="-20"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_erXJmJBqEd2MY5zfT4Awfg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_erXJmZBqEd2MY5zfT4Awfg" y="-40"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_erXwoJBqEd2MY5zfT4Awfg" type="6006">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_erXwoZBqEd2MY5zfT4Awfg" y="-30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_erXwopBqEd2MY5zfT4Awfg" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_erXwo5BqEd2MY5zfT4Awfg" y="-30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_erXwpJBqEd2MY5zfT4Awfg" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_erXwpZBqEd2MY5zfT4Awfg" y="15"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_erXwppBqEd2MY5zfT4Awfg" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_erXwp5BqEd2MY5zfT4Awfg" y="15"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_erXJkZBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_erXJkpBqEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="example.uml#_A96esJBpEd2MY5zfT4Awfg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_erXJk5BqEd2MY5zfT4Awfg" points="[-4, 0, -66, 44]$[-64, 0, -126, 44]$[-64, 112, -126, 156]$[62, 112, 0, 156]$[62, 39, 0, 83]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_OZelsJFKEd2gfL_kAZmBgw" id="(0.030303031,0.76506025)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_pC3v8JBqEd2MY5zfT4Awfg" type="4005" source="_erNYkJBqEd2MY5zfT4Awfg" target="_k9vGkJBqEd2MY5zfT4Awfg">
+ <children xmi:type="notation:Node" xmi:id="_pC3v9JBqEd2MY5zfT4Awfg" type="6003">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pC3v9ZBqEd2MY5zfT4Awfg" y="20"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_pC3v9pBqEd2MY5zfT4Awfg" type="6004">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pC3v95BqEd2MY5zfT4Awfg" y="-15"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_pC4XAJBqEd2MY5zfT4Awfg" type="6005">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pC4XAZBqEd2MY5zfT4Awfg" y="-15"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_pC4XApBqEd2MY5zfT4Awfg" type="6006">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pC4XA5BqEd2MY5zfT4Awfg" y="-30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_pC4XBJBqEd2MY5zfT4Awfg" type="6007">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pC4XBZBqEd2MY5zfT4Awfg" y="-30"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_pC4XBpBqEd2MY5zfT4Awfg" type="6008">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pC4XB5BqEd2MY5zfT4Awfg" y="15"/>
+ </children>
+ <children xmi:type="notation:Node" xmi:id="_pC4XCJBqEd2MY5zfT4Awfg" type="6009">
+ <layoutConstraint xmi:type="notation:Location" xmi:id="_pC4XCZBqEd2MY5zfT4Awfg" y="15"/>
+ </children>
+ <styles xmi:type="notation:RoutingStyle" xmi:id="_pC3v8ZBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_pC3v8pBqEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Association" href="example.uml#_pC1TsJBqEd2MY5zfT4Awfg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_pC3v85BqEd2MY5zfT4Awfg" points="[55, 14, -466, -117]$[502, 116, -19, -15]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_pC6MMJBqEd2MY5zfT4Awfg" id="(0.19,0.24175824)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_uu-XIJBqEd2MY5zfT4Awfg" type="4001" source="_rRj1EJBqEd2MY5zfT4Awfg" target="_k9vGkJBqEd2MY5zfT4Awfg">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_uu-XIZBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_uu-XIpBqEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="example.uml#_uu9JAJBqEd2MY5zfT4Awfg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_uu-XI5BqEd2MY5zfT4Awfg" points="[0, -18, 25, 157]$[25, -142, 50, 33]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_uu_lQJBqEd2MY5zfT4Awfg" id="(0.38,0.1978022)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_vLR4oJBqEd2MY5zfT4Awfg" type="4001" source="_qum5AJBqEd2MY5zfT4Awfg" target="_k9vGkJBqEd2MY5zfT4Awfg">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_vLR4oZBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_vLR4opBqEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="example.uml#_vLQqgJBqEd2MY5zfT4Awfg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_vLR4o5BqEd2MY5zfT4Awfg" points="[32, -45, -112, 149]$[94, -147, -50, 47]"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_viF2IJBqEd2MY5zfT4Awfg" type="4001" source="_sSwMUJBqEd2MY5zfT4Awfg" target="_k9vGkJBqEd2MY5zfT4Awfg">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_viF2IZBqEd2MY5zfT4Awfg"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_viF2IpBqEd2MY5zfT4Awfg" fontName="Segoe UI"/>
+ <element xmi:type="uml:Generalization" href="example.uml#_viEoAJBqEd2MY5zfT4Awfg"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_viF2I5BqEd2MY5zfT4Awfg" points="[50, -44, -182, 162]$[209, -185, -23, 21]"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_viHEQJBqEd2MY5zfT4Awfg" id="(0.23,0.5471698)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_kmNXkJCPEd2Xeb6Jt2sbCQ" type="4008" source="_qum5AJBqEd2MY5zfT4Awfg" target="_imWYcJBqEd2MY5zfT4Awfg">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_kmNXkZCPEd2Xeb6Jt2sbCQ"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_kmNXkpCPEd2Xeb6Jt2sbCQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:InterfaceRealization" href="example.uml#_kmJGIJCPEd2Xeb6Jt2sbCQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_kmNXk5CPEd2Xeb6Jt2sbCQ" points="[-3, 18, 13, -93]$[12, 92, 28, -19]"/>
+ <sourceAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmRB8JCPEd2Xeb6Jt2sbCQ" id="(0.6,0.8021978)"/>
+ <targetAnchor xmi:type="notation:IdentityAnchor" xmi:id="_kmRB8ZCPEd2Xeb6Jt2sbCQ" id="(0.75634515,0.17924528)"/>
+ </edges>
+ <edges xmi:type="notation:Edge" xmi:id="_lEPXYJCPEd2Xeb6Jt2sbCQ" type="4008" source="_sSwMUJBqEd2MY5zfT4Awfg" target="_imWYcJBqEd2MY5zfT4Awfg">
+ <styles xmi:type="notation:ConnectorStyle" xmi:id="_lEPXYZCPEd2Xeb6Jt2sbCQ"/>
+ <styles xmi:type="notation:FontStyle" xmi:id="_lEPXYpCPEd2Xeb6Jt2sbCQ" fontName="Segoe UI"/>
+ <element xmi:type="uml:InterfaceRealization" href="example.uml#_lEMUEJCPEd2Xeb6Jt2sbCQ"/>
+ <bendpoints xmi:type="notation:RelativeBendpoints" xmi:id="_lEPXY5CPEd2Xeb6Jt2sbCQ" points="[15, 46, -44, -125]$[41, 118, -18, -53]"/>
+ </edges>
+ </notation:Diagram>
+</xmi:XMI>
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/GenerateJava.java b/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/GenerateJava.java
new file mode 100644
index 0000000..7ad31a8
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/GenerateJava.java
@@ -0,0 +1,295 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.module.example.uml2java;
+
+import java.io.File;
+import java.io.IOException;
+import java.net.URL;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.ecore.resource.impl.ResourceSetImpl;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+import org.eclipse.emf.ecore.xmi.XMLResource;
+import org.eclipse.emf.ecore.xmi.impl.EcoreResourceFactoryImpl;
+import org.eclipse.emf.ecore.xmi.impl.XMIResourceFactoryImpl;
+import org.eclipse.acceleo.model.mtl.Module;
+import org.eclipse.acceleo.model.mtl.MtlPackage;
+import org.eclipse.acceleo.engine.service.AcceleoService;
+import org.eclipse.ocl.ecore.EcoreEnvironment;
+import org.eclipse.ocl.ecore.EcoreEnvironmentFactory;
+
+/**
+ * Entry point of the 'GenerateJava' generation module.
+ *
+ * @author <a href="mailto:stephane.bouchet@obeo.fr">Stephane Bouchet</a>
+ */
+public class GenerateJava {
+
+ /**
+ * The name of the module.
+ *
+ * @generated
+ */
+ public static final String MODULE_FILE_NAME = "generateJava";
+
+ /**
+ * The name of the templates that are to be generated.
+ *
+ * @generated
+ */
+ public static final String[] TEMPLATE_NAMES = { "generateClass", "generateInterface", };
+
+ /**
+ * The root element of the module.
+ */
+ private Module module;
+
+ /**
+ * The model.
+ */
+ private EObject model;
+
+ /**
+ * The output folder.
+ */
+ private File targetFolder;
+
+ /**
+ * The other arguments.
+ */
+ List<? extends Object> arguments;
+
+ /**
+ * Constructor.
+ *
+ * @param modelURI
+ * is the URI of the model.
+ * @param targetFolder
+ * is the output folder
+ * @param arguments
+ * are the other arguments
+ * @throws IOException
+ * Thrown when the output cannot be saved.
+ * @generated
+ */
+ public GenerateJava(URI modelURI, File targetFolder, List<? extends Object> arguments) throws IOException {
+ ResourceSet resourceSet = new ResourceSetImpl();
+ registerResourceFactories(resourceSet);
+ registerPackages(resourceSet);
+ URL templateURL = GenerateJava.class.getResource(MODULE_FILE_NAME + ".emtl");
+ if (templateURL == null) {
+ throw new IOException("'" + MODULE_FILE_NAME + ".emtl' not found");
+ } else {
+ URI templateURI = createTemplateURI(templateURL.getPath());
+ module = (Module)load(templateURI, resourceSet);
+ model = load(modelURI, resourceSet);
+ this.targetFolder = targetFolder;
+ this.arguments = arguments;
+ }
+ }
+
+ /**
+ * Constructor.
+ *
+ * @param model
+ * is the root element of the model.
+ * @param targetFolder
+ * is the output folder
+ * @param arguments
+ * are the other arguments
+ * @throws IOException
+ * Thrown when the output cannot be saved.
+ * @generated
+ */
+ public GenerateJava(EObject model, File targetFolder, List<? extends Object> arguments)
+ throws IOException {
+ ResourceSet resourceSet = model.eResource().getResourceSet();
+ registerResourceFactories(resourceSet);
+ registerPackages(resourceSet);
+ URL templateURL = GenerateJava.class.getResource(MODULE_FILE_NAME + ".emtl");
+ if (templateURL == null) {
+ throw new IOException("'" + MODULE_FILE_NAME + ".emtl' not found");
+ } else {
+ URI templateURI = createTemplateURI(templateURL.getPath());
+ module = (Module)load(templateURI, resourceSet);
+ this.model = model;
+ this.targetFolder = targetFolder;
+ this.arguments = arguments;
+ }
+ }
+
+ /**
+ * Creates the template URI.
+ *
+ * @param entry
+ * is the local path of the EMTL file
+ * @return an EMF URI of the file specified
+ * @generated
+ */
+ protected URI createTemplateURI(String entry) {
+ return URI.createFileURI(URI.decode(entry));
+ }
+
+ /**
+ * Gets the model.
+ *
+ * @return the model root element
+ */
+ public EObject getModel() {
+ return model;
+ }
+
+ /**
+ * Updates the registry used for looking up a package based namespace, in the resource set.
+ *
+ * @param resourceSet
+ * is the resource set
+ * @generated
+ */
+ private void registerPackages(ResourceSet resourceSet) {
+ resourceSet.getPackageRegistry().put(org.eclipse.uml2.uml.UMLPackage.eINSTANCE.getNsURI(), org.eclipse.uml2.uml.UMLPackage.eINSTANCE);
+ resourceSet.getPackageRegistry().put(org.eclipse.ocl.ecore.EcorePackage.eINSTANCE.getNsURI(), org.eclipse.ocl.ecore.EcorePackage.eINSTANCE);
+ resourceSet.getPackageRegistry().put(org.eclipse.ocl.expressions.ExpressionsPackage.eINSTANCE.getNsURI(), org.eclipse.ocl.expressions.ExpressionsPackage.eINSTANCE);
+ resourceSet.getPackageRegistry().put(MtlPackage.eINSTANCE.getNsURI(), MtlPackage.eINSTANCE);
+ resourceSet.getPackageRegistry().put("http://www.eclipse.org/ocl/1.1.0/oclstdlib.ecore", getOCLStdLibPackage());
+ }
+
+ /**
+ * Returns the package containing the OCL standard library.
+ *
+ * @return The package containing the OCL standard library.
+ * @generated
+ */
+ private EPackage getOCLStdLibPackage() {
+ EcoreEnvironmentFactory factory = new EcoreEnvironmentFactory();
+ EcoreEnvironment environment = (EcoreEnvironment)factory.createEnvironment();
+ return (EPackage)EcoreUtil.getRootContainer(environment.getOCLStandardLibrary().getBag());
+ }
+
+ /**
+ * Updates the registry used for looking up resources factory in the given resource set.
+ *
+ * @param resourceSet
+ * The resource set that is to be updated.
+ * @generated
+ */
+ private void registerResourceFactories(ResourceSet resourceSet) {
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("ecore", new EcoreResourceFactoryImpl());
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put("emtl", new org.eclipse.acceleo.model.mtl.resource.EMtlResourceFactoryImpl());
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(Resource.Factory.Registry.DEFAULT_EXTENSION, new XMIResourceFactoryImpl());
+ }
+
+ /**
+ * The main method.
+ *
+ * @param args
+ * are the arguments
+ * @generated
+ */
+ public static void main(String[] args) {
+ try {
+ if (args.length < 2) {
+ System.out.println("Arguments not valid : {model, folder}.");
+ } else {
+ URI modelURI = URI.createFileURI(args[0]);
+ File folder = new File(args[1]);
+ List<String> arguments = new ArrayList<String>();
+ for (int i = 2; i < args.length; i++) {
+ arguments.add(args[i]);
+ }
+ GenerateJava generator = new GenerateJava(modelURI, folder, arguments);
+ generator.doGenerate();
+ }
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
+ /**
+ * Launches the generation.
+ *
+ * @throws IOException
+ * Thrown when the output cannot be saved.
+ * @generated
+ */
+ public void doGenerate() throws IOException {
+ if (!targetFolder.exists()) {
+ targetFolder.mkdirs();
+ }
+ for (int i = 0; i < TEMPLATE_NAMES.length; i++) {
+ AcceleoService.doGenerate(module, TEMPLATE_NAMES[i], model, arguments, targetFolder, false);
+ }
+ }
+
+ /**
+ * Loads a model from an {@link org.eclipse.emf.common.util.URI URI} in a given {@link ResourceSet}.
+ * <p>
+ * This will return the first root of the loaded model, other roots can be accessed via the resource's
+ * content.
+ * </p>
+ *
+ * @param modelURI
+ * {@link org.eclipse.emf.common.util.URI URI} where the model is stored.
+ * @param resourceSet
+ * The {@link ResourceSet} to load the model in.
+ * @return The model loaded from the URI.
+ * @throws IOException
+ * If the given file does not exist.
+ * @generated
+ */
+ private EObject load(URI modelURI, ResourceSet resourceSet) throws IOException {
+ EObject result = null;
+ final Resource modelResource = createResource(modelURI, resourceSet);
+ final Map<String, String> options = new HashMap<String, String>();
+ options.put(XMLResource.OPTION_ENCODING, System.getProperty("file.encoding"));
+ modelResource.load(options);
+ if (modelResource.getContents().size() > 0) {
+ result = modelResource.getContents().get(0);
+ }
+ return result;
+ }
+
+ /**
+ * This will create a {@link Resource} given the model extension it is intended for and a ResourceSet.
+ *
+ * @param modelURI
+ * {@link org.eclipse.emf.common.util.URI URI} where the model is stored.
+ * @param resourceSet
+ * The {@link ResourceSet} to load the model in.
+ * @return The {@link Resource} given the model extension it is intended for.
+ * @generated
+ */
+ private Resource createResource(URI modelURI, ResourceSet resourceSet) {
+ String fileExtension = modelURI.fileExtension();
+ if (fileExtension == null || fileExtension.length() == 0) {
+ fileExtension = Resource.Factory.Registry.DEFAULT_EXTENSION;
+ }
+ final Resource.Factory.Registry registry = Resource.Factory.Registry.INSTANCE;
+ final Object resourceFactory = registry.getExtensionToFactoryMap().get(fileExtension);
+ if (resourceFactory != null) {
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(fileExtension,
+ resourceFactory);
+ } else {
+ resourceSet.getResourceFactoryRegistry().getExtensionToFactoryMap().put(fileExtension,
+ new XMIResourceFactoryImpl());
+ }
+ return resourceSet.createResource(modelURI);
+ }
+
+}
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/Uml2JavaPlugin.java b/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/Uml2JavaPlugin.java
new file mode 100644
index 0000000..9f9645e
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/Uml2JavaPlugin.java
@@ -0,0 +1,70 @@
+/*******************************************************************************
+ * Copyright (c) 2008, 2009 Obeo.
+ * 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:
+ * Obeo - initial API and implementation
+ *******************************************************************************/
+package org.eclipse.acceleo.module.example.uml2java;
+
+import org.eclipse.core.runtime.Plugin;
+import org.osgi.framework.BundleContext;
+
+/**
+ * The activator class controls the plug-in life cycle.
+ *
+ * @author <a href="mailto:stephane.bouchet@obeo.fr">Stephane Bouchet</a>
+ */
+public class Uml2JavaPlugin extends Plugin {
+
+ /**
+ * The plug-in ID.
+ */
+ public static final String PLUGIN_ID = "org.eclipse.acceleo.module.example.uml2java";
+
+ /**
+ * The shared instance.
+ */
+ private static Uml2JavaPlugin plugin;
+
+ /**
+ * The constructor.
+ */
+ public Uml2JavaPlugin() {
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.runtime.Plugin#start(org.osgi.framework.BundleContext)
+ */
+ @Override
+ public void start(BundleContext context) throws Exception {
+ super.start(context);
+ plugin = this;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @see org.eclipse.core.runtime.Plugin#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 Uml2JavaPlugin getDefault() {
+ return plugin;
+ }
+
+}
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/common/classBody.mtl b/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/common/classBody.mtl
new file mode 100644
index 0000000..84cbc4a
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/common/classBody.mtl
@@ -0,0 +1,91 @@
+[comment]
+ Copyright � 2008 Obeo
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 1.0
+
+ Any license can be applied to the files generated with this template.
+
+ author <a href="mailto:stephane.bouchet@obeo.fr">Stephane Bouchet</a>
+[/comment]
+[module classBody('http://www.eclipse.org/uml2/2.1.0/UML')/]
+[import common/]
+
+[template public generateClassBody(c : Class)]
+public[if (c.isAbstract)] abstract[/if] class [c.name.toUpperFirst()/][for (superC : Class | c.superClass) before(' extends ') separator(',')] [superC.name/][/for][for (interf : Interface | c.getImplementedInterfaces()) before(' implements ') separator(',')] [interf.name/][/for] {
+[for (p : Property | c.getAllAttributes())]
+[if (p.upper = -1 or p.upper > 1)]
+ /**
+ * the [p.name/] attribute.
+ */
+ private List<[p.type.name/]> [p.name/];
+[else]
+ /**
+ * the [p.name/] attribute.
+ */
+ private [p.type.name/] [p.name/];
+[/if]
+[/for]
+[for (p : Property | c.getAllAttributes())]
+ /**
+ * the [p.name/] getter.
+ * @return the [p.name/].
+ */
+ public [if (p.upper = -1 or p.upper > 1)]List<[p.type.name/]>[else][p.type.name/][/if] get[p.name.toUpperFirst()/]() {
+ return this.[p.name/];
+ }
+
+ /**
+ * the [p.name/] setter.
+ * @param p_[p.name/] the [p.name/] to set.
+ */
+ public void set[p.name.toUpperFirst()/]([if (p.upper = -1 or p.upper > 1)]List<[p.type.name/]>[else][p.type.name/][/if] p_[p.name/]) {
+ this.[p.name/] = p_[p.name/];
+ }
+[/for]
+[for (p : Property | c.getAssociations().memberEnd)]
+[if (p.upper = -1 or p.upper > 1)]
+ /**
+ * the [p.name/] attribute.
+ */
+ private List<[p.type.name/]> [p.name/];
+[else]
+ /**
+ * the [p.name/] attribute.
+ */
+ private [p.type.name/] [p.name/];
+[/if]
+[/for]
+[for (o : Operation | c.getOperations())]
+ [o.operationBody().trim()/]
+[/for]
+[for (interf : Interface | c.getImplementedInterfaces())]
+[for (o : Operation | interf.ownedOperation)]
+ [o.operationBody().trim()/]
+[/for]
+[/for]
+}
+[/template]
+
+[template private operationBody(o : Operation)]
+ /**
+ *[for (cmt : Comment | o.ownedComment)] [cmt.body/][/for]
+[for (p : Parameter | o.ownedParameter) ? (p.direction <> ParameterDirectionKind::return)]
+[paramOperationComment(p)/]
+[/for]
+[if (not o.type.name.oclIsUndefined())]
+[returnOperationComment()/]
+[/if]
+ */
+ public [o.returnTypeOperation().trim()/]([o.getInParameter().trim()/]) {
+[if (not o.type.name.oclIsUndefined())]
+ // [protected ('for operation '.concat(o.name))]
+ // TODO should be implemented
+ return null;
+ // [/protected]
+[else]
+ // [protected ('for operation '.concat(o.name))]
+ // TODO should be implemented
+ // [/protected]
+[/if]
+ }
+[/template] \ No newline at end of file
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/common/common.mtl b/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/common/common.mtl
new file mode 100644
index 0000000..f82b704
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/common/common.mtl
@@ -0,0 +1,72 @@
+[comment]
+ Copyright � 2008 Obeo
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 1.0
+
+ Any license can be applied to the files generated with this template.
+
+ author <a href="mailto:stephane.bouchet@obeo.fr">Stephane Bouchet</a>
+[/comment]
+[module common('http://www.eclipse.org/uml2/2.1.0/UML')/]
+
+[template public packagePath(cl : Classifier)]
+[cl.getNearestPackage().normalizeName().trim()/]
+[/template]
+
+[template public getFullPathFile(cl : Classifier)]
+[if (not cl.getNearestPackage().oclIsUndefined())]
+[cl.getNearestPackage().normalizeName().trim().substituteAll('.', '/').concat('/').concat(cl.name).concat('.java')/]
+[else]
+[cl.name.concat('.java')/]
+[/if]
+[/template]
+
+[template public getInParameter(o : Operation)]
+[for (p : Parameter | o.ownedParameter) separator(',') ? (p.direction <> ParameterDirectionKind::return)]
+[p.type.name/] [p.name/]
+[/for]
+[/template]
+
+[template public returnTypeOperation(o : Operation)]
+[if (o.type.name.oclIsUndefined())]void [o.name/][else][o.type.name/] [o.name/][/if]
+[/template]
+
+[template public importBlock()]
+// [protected ('for imports')]
+import java.util.*;
+// [/protected]
+[/template]
+
+[template public packageBlock(cl : Classifier)]
+[if (not cl.getNearestPackage().oclIsUndefined())]
+package [cl.packagePath().trim()/];
+[/if]
+[/template]
+
+[template private normalizeName(element : NamedElement)]
+[if ((element.name = 'package') or (element.name = 'interface') or (element.name = 'class'))]
+[element.name.concat('_')/]
+[else]
+[element.name/]
+[/if]
+[/template]
+
+[template public _commentFileBlock()]
+/**
+ * Generated with MTL UML 2 Java example
+ */
+[/template]
+
+[template public _commentBodyBlock()]
+/**
+ * @author MTL
+ */
+[/template]
+
+[template public returnOperationComment()]
+ * @return
+[/template]
+
+[template public paramOperationComment(p : Parameter)]
+ * @param [p.name/]
+[/template]
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/common/interfaceBody.mtl b/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/common/interfaceBody.mtl
new file mode 100644
index 0000000..54851bd
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/common/interfaceBody.mtl
@@ -0,0 +1,29 @@
+[comment]
+ Copyright � 2008 Obeo
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 1.0
+
+ Any license can be applied to the files generated with this template.
+
+ author <a href="mailto:stephane.bouchet@obeo.fr">Stephane Bouchet</a>
+[/comment]
+[module interfaceBody('http://www.eclipse.org/uml2/2.1.0/UML')/]
+[import common/]
+
+[template public generateInterfaceBody(i : Interface)]
+public interface [i.name.toUpperFirst()/] {
+
+[for (o : Operation | i.ownedOperation)]
+ /**
+ *[for (cmt : Comment | o.ownedComment)] [cmt.body/][/for]
+[for (p : Parameter | o.ownedParameter) ? (p.direction <> ParameterDirectionKind::return)]
+[paramOperationComment(p)/]
+[/for]
+[if (not o.type.name.oclIsUndefined())]
+[returnOperationComment()/]
+[/if]
+ */
+ public [o.returnTypeOperation().trim()/]([o.getInParameter().trim()/]);
+[/for]
+}
+[/template] \ No newline at end of file
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/generateJava.mtl b/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/generateJava.mtl
new file mode 100644
index 0000000..48a0d3c
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/src/org/eclipse/acceleo/module/example/uml2java/generateJava.mtl
@@ -0,0 +1,39 @@
+[comment]
+ Copyright � 2008 Obeo
+ All rights reserved. This program and the accompanying materials
+ are made available under the terms of the Eclipse Public License 1.0
+
+ Any license can be applied to the files generated with this template.
+
+ author <a href="mailto:stephane.bouchet@obeo.fr">Stephane Bouchet</a>
+[/comment]
+[module generateJava('http://www.eclipse.org/uml2/2.1.0/UML')/]
+[import common/]
+[import interfaceBody/]
+[import classBody/]
+
+[template public generateClass(c : Class)]
+[comment @main /]
+[file (c.getFullPathFile().trim(), false)]
+[_commentFileBlock().trim()/]
+[c.packageBlock().trim()/]
+
+[importBlock().trim()/]
+
+[_commentBodyBlock().trim()/]
+[c.generateClassBody().trim()/]
+[/file]
+[/template]
+
+[template public generateInterface(i : Interface)]
+[comment @main /]
+[file (i.getFullPathFile().trim(), true)]
+[_commentFileBlock().trim()/]
+[i.packageBlock().trim()/]
+
+[importBlock().trim()/]
+
+[_commentBodyBlock().trim()/]
+[i.generateInterfaceBody().trim()/]
+[/file]
+[/template] \ No newline at end of file
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/tasks/generateJava.readme b/examples/org.eclipse.acceleo.module.example.uml2java/tasks/generateJava.readme
new file mode 100644
index 0000000..079d2eb
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/tasks/generateJava.readme
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- Rename this file, put it in the target project and call it with "External Tools > Run As > Ant Build" -->
+<!-- You have to change the MODEL and the TARGET values -->
+
+<project basedir="." default="generateJavaSample" name="org.eclipse.acceleo.module.example.uml2javaSample">
+ <import file="../org.eclipse.acceleo.module.example.uml2java/tasks/generateJava.xml"/>
+ <property name="MODEL" value="${basedir}/model/file.xmi"/>
+ <property name="TARGET" value="${basedir}/src-gen"/>
+ <target name="generateJavaSample" description="Generate files in '${TARGET}'">
+ <antcall target="generateJava" >
+ <param name="model" value="${MODEL}"/>
+ <param name="target" value="${TARGET}"/>
+ </antcall>
+ </target>
+</project> \ No newline at end of file
diff --git a/examples/org.eclipse.acceleo.module.example.uml2java/tasks/generateJava.xml b/examples/org.eclipse.acceleo.module.example.uml2java/tasks/generateJava.xml
new file mode 100644
index 0000000..e36b149
--- /dev/null
+++ b/examples/org.eclipse.acceleo.module.example.uml2java/tasks/generateJava.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project default="generateJava" name="org.eclipse.acceleo.module.example.uml2java">
+ <property name="ECLIPSE_HOME" value="../../"/>
+ <property name="ECLIPSE_WORKSPACE" value="../"/>
+ <path id="org.eclipse.acceleo.module.example.uml2java.libraryclasspath">
+ <pathelement location="../org.eclipse.acceleo.module.example.uml2java/bin"/>
+
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.runtime_3.4.0.v20080512.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.osgi_3.4.0.v20080529-1200.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.equinox.common_3.4.0.v20080421-2006.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.jobs_3.4.0.v20080512.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.runtime.compatibility.registry_3.2.200.v20070717/runtime_registry_compatibility.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.equinox.registry_3.4.0.v20080516-0950.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.equinox.preferences_3.2.200.v20080421-2006.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.core.contenttype_3.3.0.v20080414.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.equinox.app_1.1.0.v20080421-2006.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.uml2.uml_2.2.0.v200805141133.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.emf.ecore_2.4.0.v200806091234.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.emf.common_2.4.0.v200806091234.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.emf.ecore.xmi_2.4.0.v200806091234.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.uml2.common_1.4.0.v200805131030.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.ocl_1.2.0.v200806091438.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/net.sourceforge.lpg.lpgjavaruntime_1.1.0.v200803061910.jar"/>
+ <pathelement location="${ECLIPSE_HOME}/plugins/org.eclipse.ocl.ecore_1.2.0.v200805130238.jar"/>
+ </path>
+ <path id="org.eclipse.acceleo.module.example.uml2java.classpath">
+ <path refid="org.eclipse.acceleo.module.example.uml2java.libraryclasspath"/>
+ </path>
+
+ <target name="generateJava">
+
+ <java classname="org.eclipse.acceleo.module.example.uml2java.GenerateJava" classpathref="org.eclipse.acceleo.module.example.uml2java.classpath">
+ <arg value="${model}"/>
+ <arg value="${target}"/>
+ </java>
+
+ </target>
+
+</project>