Eugene-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- 1738 discussions
Author: tchemit
Date: 2009-12-07 18:21:29 +0100 (Mon, 07 Dec 2009)
New Revision: 735
Modified:
trunk/eugene/pom.xml
trunk/maven-eugene-plugin/pom.xml
trunk/pom.xml
Log:
[maven-release-plugin] prepare release eugene-1.0.1
Modified: trunk/eugene/pom.xml
===================================================================
--- trunk/eugene/pom.xml 2009-12-07 17:14:23 UTC (rev 734)
+++ trunk/eugene/pom.xml 2009-12-07 17:21:29 UTC (rev 735)
@@ -9,7 +9,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>1.0.1-SNAPSHOT</version>
+ <version>1.0.1</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: trunk/maven-eugene-plugin/pom.xml
===================================================================
--- trunk/maven-eugene-plugin/pom.xml 2009-12-07 17:14:23 UTC (rev 734)
+++ trunk/maven-eugene-plugin/pom.xml 2009-12-07 17:21:29 UTC (rev 735)
@@ -1,6 +1,5 @@
<?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">
+<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>
@@ -10,7 +9,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>1.0.1-SNAPSHOT</version>
+ <version>1.0.1</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2009-12-07 17:14:23 UTC (rev 734)
+++ trunk/pom.xml 2009-12-07 17:21:29 UTC (rev 735)
@@ -1,6 +1,5 @@
<?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">
+<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>
@@ -14,7 +13,7 @@
</parent>
<artifactId>eugene</artifactId>
- <version>1.0.1-SNAPSHOT</version>
+ <version>1.0.1</version>
<modules>
<module>eugene</module>
@@ -278,9 +277,9 @@
<!-- Source control management. -->
<scm>
- <connection>scm:svn:http://svn.nuiton.org/svn/eugene/trunk</connection>
- <developerConnection>scm:svn:http://svn.nuiton.org/svn/eugene/trunk</developerConnection>
- <url>http://www.nuiton.org/repositories/browse/eugene/trunk</url>
+ <connection>scm:svn:http://svn.nuiton.org/svn/eugene/tags/eugene-1.0.1</connection>
+ <developerConnection>scm:svn:http://svn.nuiton.org/svn/eugene/tags/eugene-1.0.1</developerConnection>
+ <url>http://www.nuiton.org/repositories/browse/eugene/tags/eugene-1.0.1</url>
</scm>
</project>
1
0
Author: fdesbois
Date: 2009-12-07 18:14:23 +0100 (Mon, 07 Dec 2009)
New Revision: 734
Added:
tags/eugene-2.0.0-beta-1/
Log:
Create tag to release topia-2.3.0-beta
Property changes on: tags/eugene-2.0.0-beta-1
___________________________________________________________________
Added: svn:ignore
+ target
.settings
bin
.classpath
.project
*.iml
*.ipr
*.iws
Added: svn:mergeinfo
+
1
0
r733 - in branches/eugene-2.0: . eugene eugene/src/site/fr/rst eugene-test maven-eugene-plugin
by fdesbois@users.nuiton.org 07 Dec '09
by fdesbois@users.nuiton.org 07 Dec '09
07 Dec '09
Author: fdesbois
Date: 2009-12-07 18:11:54 +0100 (Mon, 07 Dec 2009)
New Revision: 733
Removed:
branches/eugene-2.0/eugene-demo/
Modified:
branches/eugene-2.0/eugene-test/pom.xml
branches/eugene-2.0/eugene/pom.xml
branches/eugene-2.0/eugene/src/site/fr/rst/Todo.rst
branches/eugene-2.0/maven-eugene-plugin/pom.xml
branches/eugene-2.0/pom.xml
Log:
- Remove old module eugene-demo
- Change mavenpom version to 1.1.1
- Change processor version to 1.0.2
Modified: branches/eugene-2.0/eugene/pom.xml
===================================================================
--- branches/eugene-2.0/eugene/pom.xml 2009-12-07 16:59:48 UTC (rev 732)
+++ branches/eugene-2.0/eugene/pom.xml 2009-12-07 17:11:54 UTC (rev 733)
@@ -10,7 +10,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.0.0-beta-SNAPSHOT</version>
+ <version>2.0.0-beta-1</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: branches/eugene-2.0/eugene/src/site/fr/rst/Todo.rst
===================================================================
--- branches/eugene-2.0/eugene/src/site/fr/rst/Todo.rst 2009-12-07 16:59:48 UTC (rev 732)
+++ branches/eugene-2.0/eugene/src/site/fr/rst/Todo.rst 2009-12-07 17:11:54 UTC (rev 733)
@@ -113,3 +113,8 @@
ObjectModelHelper.addCode(method,
/*{ blablabla
}*/
+
+Other
+=====
+
+- Ajouter une gestion pour les annotations dans l'ObjectModel (Extension à l'instar des imports)
Modified: branches/eugene-2.0/eugene-test/pom.xml
===================================================================
--- branches/eugene-2.0/eugene-test/pom.xml 2009-12-07 16:59:48 UTC (rev 732)
+++ branches/eugene-2.0/eugene-test/pom.xml 2009-12-07 17:11:54 UTC (rev 733)
@@ -10,7 +10,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.0.0-beta-SNAPSHOT</version>
+ <version>2.0.0-beta-1</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: branches/eugene-2.0/maven-eugene-plugin/pom.xml
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/pom.xml 2009-12-07 16:59:48 UTC (rev 732)
+++ branches/eugene-2.0/maven-eugene-plugin/pom.xml 2009-12-07 17:11:54 UTC (rev 733)
@@ -10,7 +10,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>eugene</artifactId>
- <version>2.0.0-beta-SNAPSHOT</version>
+ <version>2.0.0-beta-1</version>
</parent>
<groupId>org.nuiton.eugene</groupId>
Modified: branches/eugene-2.0/pom.xml
===================================================================
--- branches/eugene-2.0/pom.xml 2009-12-07 16:59:48 UTC (rev 732)
+++ branches/eugene-2.0/pom.xml 2009-12-07 17:11:54 UTC (rev 733)
@@ -10,11 +10,11 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom</artifactId>
- <version>1.1.1-SNAPSHOT</version>
+ <version>1.1.1</version>
</parent>
<artifactId>eugene</artifactId>
- <version>2.0.0-beta-SNAPSHOT</version>
+ <version>2.0.0-beta-1</version>
<modules>
<module>eugene</module>
@@ -251,7 +251,7 @@
<!-- TODO TC-20090823 remove ant deps -->
<ant.version>1.7.1</ant.version>
- <processor.version>1.0.2-SNAPSHOT</processor.version>
+ <processor.version>1.0.2</processor.version>
<nuiton-utils.version>1.1.0</nuiton-utils.version>
<!--Multilanguage maven-site -->
1
0
r732 - in trunk: . eugene/src/site maven-eugene-plugin maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin maven-eugene-plugin/src/site src/site
by tchemit@users.nuiton.org 07 Dec '09
by tchemit@users.nuiton.org 07 Dec '09
07 Dec '09
Author: tchemit
Date: 2009-12-07 17:59:48 +0100 (Mon, 07 Dec 2009)
New Revision: 732
Added:
trunk/eugene/src/site/site_fr.xml
trunk/maven-eugene-plugin/src/site/site_fr.xml
trunk/src/site/site_fr.xml
Removed:
trunk/eugene/src/site/site.xml
trunk/maven-eugene-plugin/src/site/site.xml
trunk/src/site/site.xml
Modified:
trunk/eugene/src/site/site_en.xml
trunk/maven-eugene-plugin/pom.xml
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java
trunk/maven-eugene-plugin/src/site/site_en.xml
trunk/pom.xml
Log:
remplace site.xml by site_fr.xml, fix javadoc, add language links in site
Deleted: trunk/eugene/src/site/site.xml
===================================================================
--- trunk/eugene/src/site/site.xml 2009-11-27 11:29:08 UTC (rev 731)
+++ trunk/eugene/src/site/site.xml 2009-12-07 16:59:48 UTC (rev 732)
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="${project.name}">
-
- <bannerLeft>
- <name>${project.name}</name>
- </bannerLeft>
-
- <body>
-
- <breadcrumbs>
- <item name="${project.name}" href="index.html" />
- </breadcrumbs>
-
- <menu ref="parent"/>
-
- <menu ref="reports"/>
-
- </body>
-</project>
Modified: trunk/eugene/src/site/site_en.xml
===================================================================
--- trunk/eugene/src/site/site_en.xml 2009-11-27 11:29:08 UTC (rev 731)
+++ trunk/eugene/src/site/site_en.xml 2009-12-07 16:59:48 UTC (rev 732)
@@ -14,7 +14,11 @@
<menu name="Parent">
<item href="../../index.html" name="${project.parent.name}"/>
</menu>
-
+
+ <menu name="Liens">
+ <item href="../index.html" name="EUGene [ FR ]"/>
+ </menu>
+
<menu ref="reports"/>
</body>
Copied: trunk/eugene/src/site/site_fr.xml (from rev 731, trunk/eugene/src/site/site.xml)
===================================================================
--- trunk/eugene/src/site/site_fr.xml (rev 0)
+++ trunk/eugene/src/site/site_fr.xml 2009-12-07 16:59:48 UTC (rev 732)
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="${project.name}">
+
+ <bannerLeft>
+ <name>${project.name}</name>
+ </bannerLeft>
+
+ <body>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html" />
+ </breadcrumbs>
+
+ <menu ref="parent"/>
+
+ <menu name="Liens">
+ <item href="en/index.html" name="EUGene [ EN ]"/>
+ </menu>
+
+ <menu ref="reports"/>
+
+ </body>
+</project>
Property changes on: trunk/eugene/src/site/site_fr.xml
___________________________________________________________________
Added: svn:mergeinfo
+
Modified: trunk/maven-eugene-plugin/pom.xml
===================================================================
--- trunk/maven-eugene-plugin/pom.xml 2009-11-27 11:29:08 UTC (rev 731)
+++ trunk/maven-eugene-plugin/pom.xml 2009-12-07 16:59:48 UTC (rev 732)
@@ -1,5 +1,6 @@
<?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">
+<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>
@@ -59,7 +60,7 @@
<name>EUGene - plugin maven</name>
<inceptionYear>2006</inceptionYear>
<description>maven plugin to use the eugene library</description>
-
+
<!-- ************************************************************* -->
<!-- *** Build Settings ****************************************** -->
<!-- ************************************************************* -->
@@ -68,7 +69,7 @@
<build>
<defaultGoal>install</defaultGoal>
-
+
<plugins>
<!-- plugin plugin -->
<plugin>
@@ -84,15 +85,401 @@
</plugins>
+ <pluginManagement>
+ <plugins>
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>${javadoc.version}</version>
+ <configuration>
+ <docencoding>${project.reporting.outputEncoding}</docencoding>
+ <encoding>${project.reporting.outputEncoding}</encoding>
+ <charset>${project.reporting.outputEncoding}</charset>
+ <quiet>true</quiet>
+ <skip>${maven.javadoc.skip}</skip>
+ <taglets>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoAggregatorTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoComponentFieldTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoConfiguratorTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoExecuteTypeTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoExecutionStrategyTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoGoalTypeTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoInheritByDefaultTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoInstantiationStrategyTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoParameterFieldTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoPhaseTypeTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoReadOnlyFieldTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiredFieldTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>
+ org.apache.maven.tools.plugin.javadoc.MojoRequiresDependencyResolutionTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>
+ org.apache.maven.tools.plugin.javadoc.MojoRequiresDirectInvocationTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiresOnLineTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiresProjectTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiresReportsTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+
+ <taglet>
+ <tagletClass>org.codehaus.plexus.javadoc.PlexusComponentTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-javadoc</artifactId>
+ <version>1.0</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.codehaus.plexus.javadoc.PlexusConfigurationTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-javadoc</artifactId>
+ <version>1.0</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.codehaus.plexus.javadoc.PlexusRequirementTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-javadoc</artifactId>
+ <version>1.0</version>
+ </tagletArtifact>
+ </taglet>
+ </taglets>
+ </configuration>
+ </plugin>
+ </plugins>
+ </pluginManagement>
+
</build>
<!--Site-->
<reporting>
<plugins>
- <!--Site report's plugin-->
+ <!--Site report's plugin-->
<plugin>
<artifactId>maven-plugin-plugin</artifactId>
</plugin>
+
+ <plugin>
+ <artifactId>maven-javadoc-plugin</artifactId>
+ <version>${javadoc.version}</version>
+ <configuration>
+ <quiet>true</quiet>
+ <skip>${maven.javadoc.skip}</skip>
+ <docencoding>${project.build.sourceEncoding}</docencoding>
+ <encoding>${project.build.sourceEncoding}</encoding>
+ <charset>${project.reporting.outputEncoding}</charset>
+ <excludePackageNames>${maven.javadoc.excludePackageNames}</excludePackageNames>
+ <taglets>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoAggregatorTypeTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoComponentFieldTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoConfiguratorTypeTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoExecuteTypeTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoExecutionStrategyTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoGoalTypeTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoInheritByDefaultTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoInstantiationStrategyTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoParameterFieldTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoPhaseTypeTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoReadOnlyFieldTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiredFieldTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>
+ org.apache.maven.tools.plugin.javadoc.MojoRequiresDependencyResolutionTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiresDirectInvocationTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiresOnLineTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiresProjectTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.apache.maven.tools.plugin.javadoc.MojoRequiresReportsTypeTaglet
+ </tagletClass>
+ <tagletArtifact>
+ <groupId>org.apache.maven.plugin-tools</groupId>
+ <artifactId>maven-plugin-tools-javadoc</artifactId>
+ <version>2.4.2</version>
+ </tagletArtifact>
+ </taglet>
+
+ <taglet>
+ <tagletClass>org.codehaus.plexus.javadoc.PlexusComponentTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-javadoc</artifactId>
+ <version>1.0</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.codehaus.plexus.javadoc.PlexusConfigurationTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-javadoc</artifactId>
+ <version>1.0</version>
+ </tagletArtifact>
+ </taglet>
+ <taglet>
+ <tagletClass>org.codehaus.plexus.javadoc.PlexusRequirementTaglet</tagletClass>
+ <tagletArtifact>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-javadoc</artifactId>
+ <version>1.0</version>
+ </tagletArtifact>
+ </taglet>
+ </taglets>
+ </configuration>
+ <reportSets>
+ <reportSet>
+ <reports>
+ <report>javadoc</report>
+ <report>test-javadoc</report>
+ </reports>
+ </reportSet>
+ </reportSets>
+ </plugin>
</plugins>
</reporting>
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java 2009-11-27 11:29:08 UTC (rev 731)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java 2009-12-07 16:59:48 UTC (rev 732)
@@ -63,7 +63,7 @@
/**
*
- * Note : l'objet peut etre {@null} si la configuration ne definit
+ * Note : l'objet peut etre {@code null} si la configuration ne definit
* pas la propriété associées dans l'implentation.
* <p/>
*
Deleted: trunk/maven-eugene-plugin/src/site/site.xml
===================================================================
--- trunk/maven-eugene-plugin/src/site/site.xml 2009-11-27 11:29:08 UTC (rev 731)
+++ trunk/maven-eugene-plugin/src/site/site.xml 2009-12-07 16:59:48 UTC (rev 732)
@@ -1,19 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="${project.name}">
-
- <bannerLeft>
- <name>${project.name}</name>
- </bannerLeft>
-
- <body>
-
- <breadcrumbs>
- <item name="${project.name}" href="index.html" />
- </breadcrumbs>
-
- <menu ref="parent"/>
-
- <menu ref="reports"/>
-
- </body>
-</project>
Modified: trunk/maven-eugene-plugin/src/site/site_en.xml
===================================================================
--- trunk/maven-eugene-plugin/src/site/site_en.xml 2009-11-27 11:29:08 UTC (rev 731)
+++ trunk/maven-eugene-plugin/src/site/site_en.xml 2009-12-07 16:59:48 UTC (rev 732)
@@ -6,15 +6,20 @@
</bannerLeft>
<body>
-
+
<breadcrumbs>
- <item name="${project.name}" href="index.html" />
+ <item name="${project.name}" href="index.html"/>
</breadcrumbs>
<menu name="Parent">
<item href="../../index.html" name="${project.parent.name}"/>
</menu>
+ <menu name="Liens">
+ <item href="../index.html" name="maven-eugene-plugin [ FR ]"/>
+ </menu>
+
+
<menu ref="reports"/>
</body>
Copied: trunk/maven-eugene-plugin/src/site/site_fr.xml (from rev 731, trunk/maven-eugene-plugin/src/site/site.xml)
===================================================================
--- trunk/maven-eugene-plugin/src/site/site_fr.xml (rev 0)
+++ trunk/maven-eugene-plugin/src/site/site_fr.xml 2009-12-07 16:59:48 UTC (rev 732)
@@ -0,0 +1,24 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="${project.name}">
+
+ <bannerLeft>
+ <name>${project.name}</name>
+ </bannerLeft>
+
+ <body>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html" />
+ </breadcrumbs>
+
+ <menu ref="parent"/>
+
+ <menu name="Liens">
+ <item href="en/index.html" name="maven-eugene-plugin [ EN ]" />
+ </menu>
+
+ <menu ref="reports"/>
+
+
+ </body>
+</project>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2009-11-27 11:29:08 UTC (rev 731)
+++ trunk/pom.xml 2009-12-07 16:59:48 UTC (rev 732)
@@ -10,7 +10,7 @@
<parent>
<groupId>org.nuiton</groupId>
<artifactId>mavenpom</artifactId>
- <version>1.1.1-SNAPSHOT</version>
+ <version>1.1.1</version>
</parent>
<artifactId>eugene</artifactId>
@@ -28,7 +28,7 @@
<dependency>
<groupId>org.nuiton</groupId>
<artifactId>nuiton-utils</artifactId>
- <version>1.1.0</version>
+ <version>${nuiton-utils.version}</version>
<scope>compile</scope>
</dependency>
@@ -243,10 +243,10 @@
<!-- TODO TC-20090823 remove ant deps -->
<ant.version>1.7.1</ant.version>
-
+ <nuiton-utils.version>1.1.0</nuiton-utils.version>
+
<!--Multilanguage maven-site -->
<maven.site.locales>fr,en</maven.site.locales>
- <defaultLocale>fr</defaultLocale>
</properties>
<build>
Deleted: trunk/src/site/site.xml
===================================================================
--- trunk/src/site/site.xml 2009-11-27 11:29:08 UTC (rev 731)
+++ trunk/src/site/site.xml 2009-12-07 16:59:48 UTC (rev 732)
@@ -1,56 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project name="${project.name}">
-
- <bannerLeft>
- <name>${project.name}</name>
- </bannerLeft>
-
- <poweredBy>
- <logo href="http://maven.apache.org" name="Maven" img="${project.url}/images/logos/maven-feather.png"/>
- <logo href="http://maven-site.nuiton.org/jrst" name="JRst" img="${project.url}/images/jrst-logo.png"/>
- <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="${project.url}/images/restructuredtext-logo.png"/>
- </poweredBy>
-
- <body>
-
- <breadcrumbs>
- <item name="${project.name}" href="index.html" />
- </breadcrumbs>
-
- <links>
- <item name="Libre-Entreprise" href="http://www.libre-entreprise.org/" />
- </links>
-
- <menu name="Utilisateur">
- <item href="index.html" name="Accueil"/>
- <item href="DiscussionSurTypeDeGeneration.html" name="Génération"/>
- <item href="maven-eugene-plugin/plugin-info.html" name="Plugin maven" />
- <item href="FAQ.html" name="FAQ"/>
- </menu>
-
- <menu name="Développeur">
- <item name="ObjectModel" href="ObjectModel.html"/>
- <item name="UIModel" href="DevUIDoc.html"/>
- <item name="Plugin Eclipse" href="plugineclipse.html"/>
- <item name="Todo" href="Todo.html"/>
- </menu>
-
- <menu name="Liens">
- <item href="en/index.html" name="EUGene project [ EN ]" />
- <item href="http://${platform}/projects/list_files/eugene" name="Téléchargement" />
- <item href="http://maven-site.nuiton.org/processor" name="Nuiton-processor" />
- <item href="http://maven-site.nuiton.org/topia" name="ToPIA" />
- </menu>
-
- <menu name="Trackers">
- <item name="Bugs" href="${project.issueManagement.url}?query_id=2"/>
- <item name="Améliorations" href="${project.issueManagement.url}?query_id=1"/>
- <item name="Aide" href="${project.issueManagement.url}?query_id=3"/>
- </menu>
-
- <menu ref="modules"/>
-
- <menu ref="reports"/>
-
- </body>
-</project>
Copied: trunk/src/site/site_fr.xml (from rev 731, trunk/src/site/site.xml)
===================================================================
--- trunk/src/site/site_fr.xml (rev 0)
+++ trunk/src/site/site_fr.xml 2009-12-07 16:59:48 UTC (rev 732)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project name="${project.name}">
+
+ <bannerLeft>
+ <name>${project.name}</name>
+ </bannerLeft>
+
+ <poweredBy>
+ <logo href="http://maven.apache.org" name="Maven" img="${project.url}/images/logos/maven-feather.png"/>
+ <logo href="http://maven-site.nuiton.org/jrst" name="JRst" img="${project.url}/images/jrst-logo.png"/>
+ <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="${project.url}/images/restructuredtext-logo.png"/>
+ </poweredBy>
+
+ <body>
+
+ <breadcrumbs>
+ <item name="${project.name}" href="index.html" />
+ </breadcrumbs>
+
+ <links>
+ <item name="Libre-Entreprise" href="http://www.libre-entreprise.org/" />
+ </links>
+
+ <menu name="Utilisateur">
+ <item href="index.html" name="Accueil"/>
+ <item href="DiscussionSurTypeDeGeneration.html" name="Génération"/>
+ <item href="maven-eugene-plugin/plugin-info.html" name="Plugin maven" />
+ <item href="FAQ.html" name="FAQ"/>
+ </menu>
+
+ <menu name="Développeur">
+ <item name="ObjectModel" href="ObjectModel.html"/>
+ <item name="UIModel" href="DevUIDoc.html"/>
+ <item name="Plugin Eclipse" href="plugineclipse.html"/>
+ <item name="Todo" href="Todo.html"/>
+ </menu>
+
+ <menu name="Liens">
+ <item href="en/index.html" name="EUGene project [ EN ]" />
+ <item href="http://${platform}/projects/list_files/eugene" name="Téléchargement" />
+ <item href="http://maven-site.nuiton.org/processor" name="Nuiton-processor" />
+ <item href="http://maven-site.nuiton.org/topia" name="ToPIA" />
+ </menu>
+
+ <menu name="Trackers">
+ <item name="Bugs" href="${project.issueManagement.url}?query_id=2"/>
+ <item name="Améliorations" href="${project.issueManagement.url}?query_id=1"/>
+ <item name="Aide" href="${project.issueManagement.url}?query_id=3"/>
+ </menu>
+
+ <menu ref="modules"/>
+
+ <menu ref="reports"/>
+
+ </body>
+</project>
1
0
Author: tchemit
Date: 2009-11-27 12:29:08 +0100 (Fri, 27 Nov 2009)
New Revision: 731
Added:
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/AbstractModelFileWriter.java
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriter.java
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterConfiguration.java
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterUtil.java
branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/ModelFileWriterUtilTest.java
branches/eugene-2.0/maven-eugene-plugin/src/it/
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/README.txt
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/invoker.properties
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/pom.xml
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.properties
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.xmi
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.properties
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.zargo
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/verify.groovy
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/README.txt
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/invoker.properties
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/pom.xml
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.properties
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.xmi
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.zargo
branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/verify.groovy
branches/eugene-2.0/maven-eugene-plugin/src/it/settings.xml
branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AbstractEugeneMojo.java
branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GeneratateModelFilesMojo.java
branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/
branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseModelFileWriter.java
branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToModelFileWriter.java
branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToObjectModelFileWriter.java
branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToStateModelFileWriter.java
branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoModelFileWriter.java
Modified:
branches/eugene-2.0/maven-eugene-plugin/
branches/eugene-2.0/maven-eugene-plugin/pom.xml
branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java
branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java
branches/eugene-2.0/maven-eugene-plugin/src/main/resources/log4j.properties
Log:
- add ModelFileWriter api
- add some integration tests in plugin (to run them use -Prun-its)
Added: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/AbstractModelFileWriter.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/AbstractModelFileWriter.java (rev 0)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/AbstractModelFileWriter.java 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,150 @@
+package org.nuiton.eugene;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import static org.nuiton.eugene.ModelFileWriterUtil.ModelFileWriterEntry;
+import org.nuiton.eugene.models.Model;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * Abstract implementation of the {@link org.nuiton.eugene.ModelFileWriter}.
+ *
+ * @author tchemit
+ * @since 2.0.0
+ */
+public abstract class AbstractModelFileWriter implements ModelFileWriter {
+
+ private static final Log log = LogFactory.getLog(AbstractModelFileWriter.class);
+ /**
+ * entries to treate
+ */
+ protected List<ModelFileWriterEntry> entries;
+ /**
+ * previous writer (can be null)
+ */
+ protected ModelFileWriter previousWriter;
+ /**
+ * next writer (can be null)
+ */
+ protected ModelFileWriter nextWriter;
+
+ /**
+ * common configuration of all writers available in generate method scope
+ */
+ protected ModelFileWriterConfiguration configuration;
+
+ protected AbstractModelFileWriter() {
+ entries = new ArrayList<ModelFileWriterEntry>();
+ }
+
+ /**
+ * Generates some files for a given input, output and include pattern.
+ *
+ * @param outputDir where to generate files
+ * @param inputDirectory where to pick up files
+ * @param includePattern pattern of files to include
+ * @param overwrite {@code true} if should regenerate even if files are up to date
+ * @throws IOException for any IO pb.
+ */
+ protected abstract void generate(File outputDir, File inputDirectory, String includePattern, boolean overwrite) throws IOException;
+
+ @Override
+ public void clear() {
+ entries.clear();
+ }
+
+ @Override
+ public void addEntry(ModelFileWriterEntry entry) {
+ entries.add(entry);
+ }
+
+ @Override
+ public <T> T getProperty(String key, Class<T> type) {
+ return (T) getConfiguration().getProperties().get(key);
+ }
+
+ @Override
+ public void generate(ModelFileWriterConfiguration configuration) throws IOException {
+ if (log.isDebugEnabled()) {
+ log.debug("[" + getInputProtocol() + "] Start generate with writer " + this);
+ }
+ this.configuration = configuration;
+ try {
+ File outputDir = getOutputDirectory(configuration.getOutputDirectory());
+
+ if (!outputDir.exists()) {
+ if (log.isDebugEnabled()) {
+ log.debug("[" + getInputProtocol() + "] Create output directory " + outputDir);
+ }
+ boolean b = outputDir.mkdirs();
+ if (!b) {
+ throw new IOException("Could not creat directory " + outputDir);
+ }
+ }
+
+ for (ModelFileWriterEntry e : entries) {
+ if (log.isDebugEnabled()) {
+ log.debug("[" + getInputProtocol() + "] Will generate entry " + e.getInputDirectory() + " : " + e.getIncludePattern());
+ }
+ generate(outputDir, e.getInputDirectory(), e.getIncludePattern(), configuration.isOverwrite());
+ }
+ } finally {
+ this.configuration = null;
+ }
+ }
+
+ @Override
+ public <M extends Model> String getInputProtocol(Class<M> modelType) {
+ // input protocol is the same for all model
+ return acceptModel(modelType) ? getInputProtocol() : null;
+ }
+
+ @Override
+ public File getOutputDirectory(File outputBasedir) {
+ return new File(outputBasedir, getDefaultOutputDirectory());
+ }
+
+ @Override
+ public List<ModelFileWriterEntry> getEntries() {
+ return entries;
+ }
+
+ /**
+ * @return the shared configuration used by the writer
+ */
+ protected ModelFileWriterConfiguration getConfiguration() {
+ return configuration;
+ }
+//
+// protected File createOutputDirectory(File outputDir) throws IOException {
+//
+// outputDir = getOutputDirectory(outputDir);
+//
+// if (!outputDir.exists()) {
+// if (log.isDebugEnabled()) {
+// log.debug("[" + getInputProtocol() + "] Create output directory " + outputDir);
+// }
+// boolean b = outputDir.mkdirs();
+// if (!b) {
+// throw new IOException("Could not creat directory " + outputDir);
+// }
+// }
+// return outputDir;
+// }
+
+ protected ModelFileWriter getNextWriter() {
+ return nextWriter;
+ }
+
+ protected ModelFileWriter getPreviousWriter() {
+ return previousWriter;
+ }
+
+ protected void setNextWriter(ModelFileWriter nextWriter) {
+ this.nextWriter = nextWriter;
+ }
+}
\ No newline at end of file
Property changes on: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/AbstractModelFileWriter.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriter.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriter.java (rev 0)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriter.java 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,117 @@
+package org.nuiton.eugene;
+
+import org.nuiton.eugene.models.Model;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.List;
+
+/**
+ * User: chemit
+ * Date: 27 nov. 2009
+ * Time: 11:20:39
+ */
+public interface ModelFileWriter {
+
+ /**
+ * @return the accepted incoming protocol
+ */
+ String getInputProtocol();
+
+ /**
+ * Obtain the input protocol of this writer given the passed {@code modelType}.
+ *
+ * @param modelType the type of model used
+ * @param <M> the type of model used
+ * @return the input protocol or {@code null} if this writer does not accept the type of model
+ */
+ <M extends Model> String getInputProtocol(Class<M> modelType);
+
+ /**
+ * Obtain the output protocol of this writer given the passed {@code modelType}.
+ *
+ * @param modelType the type of model used
+ * @param <M> the type of model used
+ * @return the output protocol or {@code null} if should not be chained
+ */
+ <M extends Model> String getOutputProtocol(Class<M> modelType);
+
+ /**
+ * Test if a type of model can be treated by this writer.
+ *
+ * @param modelType model type to test
+ * @param <M> model type to test
+ * @return {@code true} if this writer accept the given type of model, {@code false} otherwise.
+ */
+ <M extends Model> boolean acceptModel(Class<M> modelType);
+
+ /**
+ * Test in a entry can be treated by this writer.
+ *
+ * @param include the include to test
+ * @return {@code true} if the writer accept the entry, {@code false} otherwise.
+ */
+ boolean acceptInclude(String include);
+
+ /**
+ * @return the default includes files to be treated by the writer (can be an ant-like expression)
+ */
+ String getDefaultIncludes();
+
+ /**
+ * @return the defalt relative path where to pick files to treate.
+ */
+ String getDefaultInputDirectory();
+
+ /**
+ * @return the default relative path to add to output basedir
+ */
+ String getDefaultOutputDirectory();
+
+ /**
+ * Obtain the real directory where to write files.
+ * <p/>
+ * //FIXME-TC20091126 make this configurable (via the properties)
+ *
+ * @param outputBasedir the output base directory
+ * @return the real output directory where to generate for this particular writer
+ */
+ File getOutputDirectory(File outputBasedir);
+
+ /**
+ * Generates.
+ *
+ * @param configuration the share configuration of all writers.
+ * @throws IOException if any io pb.
+ */
+ void generate(ModelFileWriterConfiguration configuration) throws IOException;
+
+ /**
+ * Clear all internal states
+ */
+ void clear();
+
+ /**
+ * Add an entry to treate.
+ *
+ * @param entry the entry to add to writer
+ */
+ void addEntry(ModelFileWriterUtil.ModelFileWriterEntry entry);
+
+ /**
+ * Obtain a writer extra property.
+ *
+ * @param key the key of required property
+ * @param type the type of property
+ * @param <T> the type of property
+ * @return the property found or {@code null} if not found.
+ */
+ <T> T getProperty(String key, Class<T> type);
+
+// ModelFileWriterConfiguration getConfiguration();
+
+ /**
+ * @return the list of all entries registered
+ */
+ List<ModelFileWriterUtil.ModelFileWriterEntry> getEntries();
+}
Property changes on: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriter.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterConfiguration.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterConfiguration.java (rev 0)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterConfiguration.java 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,63 @@
+package org.nuiton.eugene;
+
+import org.nuiton.eugene.models.Model;
+
+import java.io.File;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Shared configuration of a {@link ModelFileWriter}, should be the same for all writer
+ * to use in a time.
+ *
+ * @author tchemit
+ * @since 2.0.0
+ */
+public interface ModelFileWriterConfiguration {
+
+ /**
+ * @return the type of model used
+ */
+ Class<? extends Model> getModelClass();
+
+ /**
+ * @return project base directory
+ */
+ File getBasedir();
+
+ /**
+ * @return base directory where to generate
+ */
+ File getOutputDirectory();
+
+ /**
+ * @return {@code true} if must regenerate files even if they are up to date
+ */
+ boolean isOverwrite();
+
+ /**
+ * @return {@code true} if build is off-line and should not be able to access outside resources.
+ */
+ boolean isOffline();
+
+ /**
+ * @return {@code true} if build is verbose.
+ */
+ boolean isVerbose();
+
+ /**
+ * @return encoding to use to read and write files
+ */
+ String getEncoding();
+
+ /**
+ * @return Set of all availables writers
+ */
+ Set<ModelFileWriter> getAvailableWriters();
+
+ /**
+ * @return properties to pass to writers
+ */
+ Map<String, Object> getProperties();
+
+}
Property changes on: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterConfiguration.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterUtil.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterUtil.java (rev 0)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterUtil.java 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,311 @@
+package org.nuiton.eugene;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.models.Model;
+
+import java.io.File;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+/**
+ * User: chemit
+ * Date: 26 nov. 2009
+ * Time: 00:18:29
+ */
+public class ModelFileWriterUtil {
+
+ private static final Log log = LogFactory.getLog(ModelFileWriterUtil.class);
+
+ public static void registerInclude(ModelFileWriterConfiguration configuration, String include, List<ModelFileWriter> selectedWriters) {
+ if (log.isDebugEnabled()) {
+ log.debug(">>>>>>>>>>>>>>>>> [" + include + "]");
+ log.debug("Will register include " + "[" + include + "]");
+ log.debug("actual selected writers : " + selectedWriters);
+ }
+ ModelFileWriterEntryType selectedType = null;
+ Matcher matcher = null;
+
+ // obtain the good type of entry and the corresponding matcher
+
+ for (ModelFileWriterEntryType type : ModelFileWriterEntryType.values()) {
+ matcher = type.getMatcher(include);
+ if (matcher != null) {
+ // get a matcher
+ selectedType = type;
+ break;
+ }
+ }
+
+ if (selectedType == null) {
+ // no writer
+ throw new IllegalArgumentException("could not find a writer for include pattern : " + include);
+ }
+
+ // obtain the writer
+ ModelFileWriter writer = selectedType.getWriter(configuration, include, matcher);
+
+ // create the new entry
+
+ ModelFileWriterEntry writerEntry = selectedType.newEntry(configuration, include, matcher, writer);
+
+ // register the new entry
+
+ writer.addEntry(writerEntry);
+ if (!selectedWriters.contains(writer)) {
+ // register the writer as to be used
+ if (log.isDebugEnabled()) {
+ log.debug("[" + include + "] Associated with writer " + writer);
+ }
+ selectedWriters.add(writer);
+ }
+
+ Class<? extends Model> modelType = configuration.getModelClass();
+
+ String outpoutProtocol = writer.getOutputProtocol(modelType);
+
+ if (outpoutProtocol == null) {
+ // nothing more to do
+ if (log.isDebugEnabled()) {
+ log.debug("<<<<<<<<<<<<<<<<< [" + include + "]");
+ }
+ return;
+ }
+
+ // the writer need the includes of another writer
+
+ if (log.isDebugEnabled()) {
+ log.debug("[" + include + "]" + " writer " + writer.getClass().getSimpleName() + " require a next writer of protocol " + outpoutProtocol);
+ }
+
+ ModelFileWriter nextWriter = ((AbstractModelFileWriter)writer).getNextWriter();
+ if (nextWriter == null) {
+ // the next writer was not initialize, just have to add new entry
+
+ nextWriter = getWriterForInputProtocole(configuration.getAvailableWriters(), outpoutProtocol, modelType);
+
+ if (nextWriter == null) {
+ throw new IllegalArgumentException("could not find a writer for protocole " + outpoutProtocol + " on model " + modelType);
+ }
+ // chain writer
+ ((AbstractModelFileWriter)writer).setNextWriter(nextWriter);
+ }
+
+ // build the next include to do
+
+ String basedirpath = configuration.getBasedir().getAbsolutePath();
+
+ String outputpath = writer.getOutputDirectory(configuration.getOutputDirectory()).getAbsolutePath();
+
+ String path = outputpath.substring(basedirpath.length() + 1);
+
+ String newInclude = outpoutProtocol + ":" + path + ":" + nextWriter.getDefaultIncludes();
+
+ registerInclude(configuration, newInclude, selectedWriters);
+
+ if (log.isDebugEnabled()) {
+ log.debug("<<<<<<<<<<<<<<<<< [" + include + "]");
+ }
+ }
+
+ public static Set<ModelFileWriter> filterWriterForModelType(Map<String, ModelFileWriter> universe, Class<? extends Model> modelType) {
+ Set<ModelFileWriter> result = new HashSet<ModelFileWriter>();
+ for (ModelFileWriter w : universe.values()) {
+ if (w.acceptModel(modelType)) {
+ if (log.isDebugEnabled()) {
+ log.debug("writer [" + w + "] accept model " + modelType);
+ }
+ result.add(w);
+ }
+ }
+ return result;
+ }
+
+ public static ModelFileWriter getWriterForInputProtocole(Set<ModelFileWriter> universe, String inputProtocol, Class<? extends Model> modelType) {
+ for (ModelFileWriter writer : universe) {
+ if (inputProtocol.equals(writer.getInputProtocol(modelType))) {
+ return writer;
+ }
+ }
+ return null;
+ }
+
+ public static ModelFileWriter getWriterForInclude(Set<ModelFileWriter> universe, String include, Class<? extends Model> modelType) {
+ for (ModelFileWriter w : universe) {
+ if (w.acceptInclude(include)) {
+ return w;
+ }
+ }
+ return null;
+ }
+
+ /**
+ *
+ */
+ public static class ModelFileWriterEntry {
+
+ /**
+ *
+ */
+ protected File inputDirectory;
+ /**
+ *
+ */
+ protected String includePattern;
+
+ public ModelFileWriterEntry(File inputDirectory, String includePattern) {
+ this.inputDirectory = inputDirectory;
+ this.includePattern = includePattern;
+ }
+
+ public String getIncludePattern() {
+ return includePattern;
+ }
+
+ public File getInputDirectory() {
+ return inputDirectory;
+ }
+
+ }
+
+ /**
+ *
+ */
+ public enum ModelFileWriterEntryType {
+
+ ONLY_PROTOCOL_PATTERN(Pattern.compile("^([a-zA-Z]+)$")) {
+
+ @Override
+ public ModelFileWriter getWriter(ModelFileWriterConfiguration configuration, String include, Matcher matcher) {
+ Set<ModelFileWriter> universe = configuration.getAvailableWriters();
+
+ String protocol = matcher.group(1).toLowerCase();
+ ModelFileWriter writer = getWriterForInputProtocole(universe, protocol, configuration.getModelClass());
+ if (writer == null) {
+ throw new IllegalArgumentException("could not find the writer named '" + protocol + "', use one of " + universe);
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("[" + include + "] " + "writer = (" + writer + ")");
+ }
+ return writer;
+ }
+
+ @Override
+ public ModelFileWriterEntry newEntry(ModelFileWriterConfiguration configuration, String include, Matcher matcher, ModelFileWriter writer) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("[" + include + "] " + "detected pattern (" + name() + ")");
+ }
+
+ ModelFileWriterEntry writerEntry = new ModelFileWriterEntry(
+ new File(configuration.getBasedir(), writer.getDefaultInputDirectory()),
+ writer.getDefaultIncludes()
+ );
+ return writerEntry;
+ }
+ },
+
+ NO_PROTOCOL_PATTERN(Pattern.compile("^([^:]+):([^:]+)$")) {
+ @Override
+ public ModelFileWriter getWriter(ModelFileWriterConfiguration configuration, String include, Matcher matcher) {
+ Set<ModelFileWriter> universe = configuration.getAvailableWriters();
+
+ Class<? extends Model> modelType = configuration.getModelClass();
+ // with no protocol pattern
+ // pattern is discover from the includes
+
+ // discover the writer from the given pattern
+ ModelFileWriter writer = getWriterForInclude(universe, include, modelType);
+ if (writer == null) {
+ throw new IllegalArgumentException("could not find a writer for include " + include);
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("[" + include + "] " + "writer = (" + writer + ")");
+ }
+ return writer;
+ }
+
+ @Override
+ public ModelFileWriterEntry newEntry(ModelFileWriterConfiguration configuration, String include, Matcher matcher, ModelFileWriter writer) {
+ // with no protocol pattern
+ // pattern is discover from the includes
+ if (log.isDebugEnabled()) {
+ log.debug("[" + include + "] " + "detected pattern (" + name() + ")");
+ }
+
+ String inputPath = matcher.group(1);
+ String includes = matcher.group(2);
+
+ ModelFileWriterEntry writerEntry = new ModelFileWriterEntry(
+ new File(configuration.getBasedir(), inputPath),
+ includes
+ );
+ return writerEntry;
+ }
+ },
+
+ FULL_PATTERN(Pattern.compile("^(\\w+):([^:]+):([^:]+)$")) {
+ @Override
+ public ModelFileWriter getWriter(ModelFileWriterConfiguration configuration, String include, Matcher matcher) {
+ // with full pattern (protocol + directory + includes)
+ // pattern is discover from the includes
+
+ Set<ModelFileWriter> universe = configuration.getAvailableWriters();
+
+ String protocol = matcher.group(1).toLowerCase();
+ ModelFileWriter writer = getWriterForInputProtocole(universe, protocol, configuration.getModelClass());
+
+ if (writer == null) {
+ throw new IllegalArgumentException("could not find the writer named '" + protocol + "', use one of " + universe);
+ }
+ if (log.isDebugEnabled()) {
+ log.debug("[" + include + "] " + "writer = (" + writer + ")");
+ }
+ return writer;
+ }
+
+ @Override
+ public ModelFileWriterEntry newEntry(ModelFileWriterConfiguration configuration, String include, Matcher matcher, ModelFileWriter writer) {
+
+ // with full pattern (protocol + directory + includes)
+ // pattern is discover from the includes
+ if (log.isDebugEnabled()) {
+ log.debug("[" + include + "] " + "detected pattern (" + name() + ")");
+ }
+
+ String inputPath = matcher.group(2);
+ String includes = matcher.group(3);
+ ModelFileWriterEntry writerEntry = new ModelFileWriterEntry(
+ new File(configuration.getBasedir(), inputPath),
+ includes
+ );
+ return writerEntry;
+ }
+ };
+
+ private final Pattern pattern;
+
+ ModelFileWriterEntryType(Pattern pattern) {
+ this.pattern = pattern;
+ }
+
+ public Pattern getPattern() {
+ return pattern;
+ }
+
+ public Matcher getMatcher(String include) {
+ Matcher matcher = getPattern().matcher(include);
+ return matcher.matches() ? matcher : null;
+ }
+
+ public abstract ModelFileWriterEntry newEntry(ModelFileWriterConfiguration configuration, String include, Matcher matcher, ModelFileWriter writer);
+
+ public abstract ModelFileWriter getWriter(ModelFileWriterConfiguration configuration, String include, Matcher matcher);
+ }
+
+
+}
Property changes on: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelFileWriterUtil.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/ModelFileWriterUtilTest.java
===================================================================
--- branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/ModelFileWriterUtilTest.java (rev 0)
+++ branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/ModelFileWriterUtilTest.java 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,97 @@
+package org.nuiton.eugene;
+
+import org.junit.Assert;
+
+/**
+ * User: chemit
+ * Date: 25 nov. 2009
+ * Time: 18:38:01
+ */
+
+public abstract class ModelFileWriterUtilTest extends Assert {
+// /**
+// * Les writers disponibles pour le test
+// */
+// static Map<String, ToModelWriter> writers;
+//
+// @BeforeClass
+// public static void beforeClass() throws Exception {
+// writers = new HashMap<String, ToModelWriter>();
+// writers.put("test1", new ToModelWriter1());
+// writers.put("test2", new ToModelWriter2());
+// }
+//
+// @Before
+// public void setUp() throws Exception {
+// }
+//
+// @After
+// public void tearDown() throws Exception {
+// }
+//
+// @Test
+// public void testConstructor() throws Exception {
+// String pattern;
+// ToModelWriterContext writerContext;
+// ToModelWriter writer;
+// writer = writers.get("test1");
+//
+// pattern = "test1:";
+// writerContext = new ToModelWriterContext(basedir, pattern, ObjectModel.class, overwrite, writers);
+// assertEquals(writerContext, pattern, "test1", writer.getDefaultInputDirectory(), writer.getDefaultIncludes());
+//
+// pattern = "src/main/test1:**/*.test1";
+// writerContext = new ToModelWriterContext(basedir, pattern, ObjectModel.class, overwrite, writers);
+// assertEquals(writerContext, pattern, "test1", "src/main/test1", "**/*.test1");
+//
+// pattern = "test2:src/main/test1:**/*.test1";
+// writerContext = new ToModelWriterContext(basedir, pattern, ObjectModel.class, overwrite, writers);
+// assertEquals(writerContext, pattern, "test2", "src/main/test1", "**/*.test1");
+// }
+//
+// @Test(expected = IllegalArgumentException.class)
+// public void testConstructorUnknownInclude0() throws Exception {
+//
+// new ToModelWriterContext(basedir, ":", ObjectModel.class, overwrite, writers);
+// }
+//
+// @Test(expected = IllegalArgumentException.class)
+// public void testConstructorUnknownInclude1() throws Exception {
+//
+// new ToModelWriterContext(basedir, "test3:", ObjectModel.class, overwrite, writers);
+// }
+//
+// @Test(expected = IllegalArgumentException.class)
+// public void testConstructorUnknownInclude2() throws Exception {
+//
+// new ToModelWriterContext(basedir, "test1$", ObjectModel.class, overwrite, writers);
+// }
+//
+// @Test(expected = IllegalArgumentException.class)
+// public void testConstructorUnknownInclude3() throws Exception {
+//
+// new ToModelWriterContext(basedir, "test1$YO:", ObjectModel.class, overwrite, writers);
+// }
+//
+// @Test(expected = IllegalArgumentException.class)
+// public void testConstructorUnknownInclude4() throws Exception {
+//
+// new ToModelWriterContext(basedir, "test1$YO:yo", ObjectModel.class, overwrite, writers);
+// }
+//
+// @Test(expected = IllegalArgumentException.class)
+// public void testConstructorUnknownInclude5() throws Exception {
+//
+// new ToModelWriterContext(basedir, "test1$YO:yo:", ObjectModel.class, overwrite, writers);
+// }
+
+
+// protected void assertEquals(ToModelWriterContext writerContext, String pattern, String protocol, String inputDirectory, String includes) {
+// assertNotNull(writerContext);
+// assertEquals(pattern, writerContext.getPattern());
+// assertEquals(protocol, writerContext.getProtocol());
+// assertEquals(includes, writerContext.getIncludes());
+// assertEquals(inputDirectory, writerContext.getInputPath());
+// }
+
+}
Property changes on: branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/ModelFileWriterUtilTest.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Property changes on: branches/eugene-2.0/maven-eugene-plugin
___________________________________________________________________
Modified: svn:ignore
- target
target/*
*.ipr
*.iws
.settings
.classpath
.project
+ target
*.iml
*.ipr
*.iws
.settings
.classpath
.project
Modified: branches/eugene-2.0/maven-eugene-plugin/pom.xml
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/pom.xml 2009-11-27 10:00:00 UTC (rev 730)
+++ branches/eugene-2.0/maven-eugene-plugin/pom.xml 2009-11-27 11:29:08 UTC (rev 731)
@@ -83,6 +83,20 @@
</executions>
</plugin>
+ <!-- expose new plexus components -->
+ <plugin>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-component-metadata</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate-metadata</goal>
+ <!--<goal>merge-metadata</goal>-->
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+
</plugins>
<pluginManagement>
@@ -275,6 +289,12 @@
</taglets>
</configuration>
</plugin>
+
+ <plugin>
+ <artifactId>maven-invoker-plugin</artifactId>
+ <version>1.4</version>
+ </plugin>
+
</plugins>
</pluginManagement>
@@ -484,5 +504,43 @@
</plugins>
</reporting>
+ <profiles>
+ <profile>
+ <id>run-its</id>
+ <activation>
+ <property>
+ <name>performRedmineRelease</name>
+ <value>true</value>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+ <plugin>
+ <artifactId>maven-invoker-plugin</artifactId>
+ <configuration>
+ <pomIncludes>
+ <pomInclude>**/pom.xml</pomInclude>
+ </pomIncludes>
+ <postBuildHookScript>verify</postBuildHookScript>
+ <localRepositoryPath>${basedir}/target/local-repo</localRepositoryPath>
+ <settingsFile>src/it/settings.xml</settingsFile>
+ <cloneProjectsTo>${project.build.directory}/its</cloneProjectsTo>
+ </configuration>
+ <executions>
+ <execution>
+ <id>integration-test</id>
+ <goals>
+ <goal>install</goal>
+ <goal>run</goal>
+ </goals>
+ <phase>integration-test</phase>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
+
</project>
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/README.txt
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/README.txt (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/README.txt 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,16 @@
+On teste ici le goal generate-model-files avec en include que des includes sans protocol
+des writers connus :
+
+<execution>
+ <phase>generate-sources</phase>
+ <configuration>
+ <modelType>objectmodel</modelType>
+ <includes>
+ <include>src/main/zargo:**/*.zargo</include>
+ </includes>
+ <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath>
+ </configuration>
+ <goals>
+ <goal>generate-model</goal>
+ </goals>
+</execution>
\ No newline at end of file
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/invoker.properties
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/invoker.properties (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/invoker.properties 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,21 @@
+# A comma or space separated list of goals/phases to execute, may
+# specify an empty list to execute the default goal of the IT project
+invoker.goals=clean generate-sources
+
+# Optionally, a list of goals to run during further invocations of Maven
+#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
+
+# A comma or space separated list of profiles to activate
+#invoker.profiles=run-all run-once
+
+# The value for the environment variable MAVEN_OPTS
+#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
+
+# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
+invoker.failureBehavior=fail-at-end
+
+# The expected result of the build, possible values are "success" (default) and "failure"
+#invoker.buildResult=success
+
+# A boolean value controlling the -N flag, defaults to "false"
+#invoker.nonRecursive=false
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/pom.xml
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/pom.xml (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/pom.xml 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,137 @@
+<?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/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <!-- ************************************************************* -->
+ <!-- *** POM Relationships *************************************** -->
+ <!-- ************************************************************* -->
+
+ <groupId>org.nuiton.eugene.test</groupId>
+ <artifactId>testIncludeWithOnlyProtocol</artifactId>
+ <version>2.0.0</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.nuiton.eugene</groupId>
+ <artifactId>eugene</artifactId>
+ <version>${eugeneVersion}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.nuiton</groupId>
+ <artifactId>nuiton-utils</artifactId>
+ <version>1.1.1</version>
+ <scope>compile</scope>
+ </dependency>
+
+ </dependencies>
+
+
+ <!-- ************************************************************* -->
+ <!-- *** Project Information ************************************* -->
+ <!-- ************************************************************* -->
+
+ <name>EUGene Test :: testIncludeWithOnlyProtocol</name>
+
+ <!-- ************************************************************* -->
+ <!-- *** Build Settings ****************************************** -->
+ <!-- ************************************************************* -->
+
+ <packaging>jar</packaging>
+
+ <properties>
+
+ <eugeneVersion>@pom.version@</eugeneVersion>
+
+ <!-- default encoding -->
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
+ </properties>
+
+ <build>
+
+ <plugins>
+
+ <plugin>
+ <groupId>org.nuiton.eugene</groupId>
+ <artifactId>maven-eugene-plugin</artifactId>
+ <version>${eugeneVersion}</version>
+ <executions>
+ <execution>
+ <id>Zargo to object model</id>
+ <phase>generate-sources</phase>
+ <configuration>
+ <modelType>objectmodel</modelType>
+ <includes>
+ <include>src/main/zargo:**/*.zargo</include>
+ </includes>
+ <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath>
+ <outputDirectory>target/generated-sources-zargo2ObjectModel</outputDirectory>
+ </configuration>
+ <goals>
+ <goal>generate-model-files</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>Zargo to state model</id>
+ <phase>generate-sources</phase>
+ <configuration>
+ <modelType>statemodel</modelType>
+ <includes>
+ <include>src/main/zargo:**/*.zargo</include>
+ </includes>
+ <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath>
+ <outputDirectory>target/generated-sources-zargo2StateModel</outputDirectory>
+ </configuration>
+ <goals>
+ <goal>generate-model-files</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>Xmi to object model</id>
+ <phase>generate-sources</phase>
+ <configuration>
+ <modelType>objectmodel</modelType>
+ <includes>
+ <include>src/main/xmi:**/*.xmi</include>
+ </includes>
+ <fullPackagePath>org.nuiton.topia</fullPackagePath>
+ <outputDirectory>target/generated-sources-xmi2ObjectModel</outputDirectory>
+ </configuration>
+ <goals>
+ <goal>generate-model-files</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>Xmi to state model</id>
+ <phase>generate-sources</phase>
+ <configuration>
+ <modelType>statemodel</modelType>
+ <includes>
+ <include>src/main/xmi:**/*.xmi</include>
+ </includes>
+ <fullPackagePath>org.nuiton.topia</fullPackagePath>
+ <outputDirectory>target/generated-sources-xmi2StateModel</outputDirectory>
+ </configuration>
+ <goals>
+ <goal>generate-model-files</goal>
+ </goals>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.14</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
+
+
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.properties
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.properties (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.properties 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1 @@
+model.tagvalue.generateOperatorForDAOHelper=true
\ No newline at end of file
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.xmi
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.xmi (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/xmi/topiatest.xmi 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,1334 @@
+<?xml version = '1.0' encoding = 'UTF-8' ?>
+<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Mon Oct 19 15:56:54 CEST 2009'>
+ <XMI.header> <XMI.documentation>
+ <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter>
+ <XMI.exporterVersion>0.28.1(6) revised on $Date: 2007-05-12 08:08:08 +0200 (Sat, 12 May 2007) $ </XMI.exporterVersion>
+ </XMI.documentation>
+ <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header>
+ <XMI.content>
+ <UML:Model xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000077B'
+ name = 'xmiTopiaTest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:ModelElement.taggedValue>
+ <UML:TaggedValue xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E3'
+ isSpecification = 'false'>
+ <UML:TaggedValue.dataValue>1.2</UML:TaggedValue.dataValue>
+ <UML:TaggedValue.type>
+ <UML:TagDefinition xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E4'/>
+ </UML:TaggedValue.type>
+ </UML:TaggedValue>
+ </UML:ModelElement.taggedValue>
+ <UML:Namespace.ownedElement>
+ <UML:TagDefinition xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E4'
+ name = 'version' isSpecification = 'false' tagType = 'String'>
+ <UML:TagDefinition.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E6'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E5'
+ lower = '0' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:TagDefinition.multiplicity>
+ </UML:TagDefinition>
+ <UML:Stereotype xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'
+ name = 'entity' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090B'
+ name = 'org' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090C'
+ name = 'nuiton' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090D'
+ name = 'topiatest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'
+ name = 'Personne' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001020'/>
+ </UML:GeneralizableElement.generalization>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF9'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFD'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFC'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB0'
+ name = 'otherNames' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB8'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB7'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'
+ name = 'Employe' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E2'/>
+ </UML:GeneralizableElement.generalization>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D54'
+ name = 'salary' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5A'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D59'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'
+ name = 'Company' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011BD'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011C5'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011C4'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008F9'
+ name = 'Address' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000903'
+ name = 'city' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF7'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF6'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CE8'
+ name = 'adress' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF3'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF2'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FB'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FC'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FD'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FE'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FF'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000900'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000901'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008F9'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E2'
+ isSpecification = 'false'>
+ <UML:Generalization.child>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/>
+ </UML:Generalization.child>
+ <UML:Generalization.parent>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/>
+ </UML:Generalization.parent>
+ </UML:Generalization>
+ <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFE'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFF'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102C'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102B'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D02'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102A'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001029'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'
+ name = 'Department' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D25'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D29'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D28'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'
+ name = 'Product' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D37'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D3F'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D3E'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5B'
+ name = 'Store' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D7D'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D83'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D82'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D40'
+ name = 'Type' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4D'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D53'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D52'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:AssociationClass xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D65'
+ name = 'Bill' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D66'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D89'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D88'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D69'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D8D'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D8C'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5B'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D6D'
+ name = 'cost' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D75'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D74'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D76'
+ name = 'date' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D7A'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D79'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000085F'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:AssociationClass>
+ <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D18'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D19'
+ name = 'lead' visibility = 'public' isSpecification = 'false' isNavigable = 'false'
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D24'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D23'
+ lower = '0' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1C'
+ name = 'leader' visibility = 'public' isSpecification = 'false' isNavigable = 'true'
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1D'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1E'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0D'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0E'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0F'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D10'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D11'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D17'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D16'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2C'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2D'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2E'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2F'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D30'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D36'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D35'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D42'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D43'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4C'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4B'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D46'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D47'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D48'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D40'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Package xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E71'
+ name = 'beangen' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'
+ name = 'Voiture' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'true' isActive = 'false'>
+ <UML:ModelElement.clientDependency>
+ <UML:Abstraction xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E77'/>
+ </UML:ModelElement.clientDependency>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/>
+ </UML:ModelElement.stereotype>
+ <UML:ModelElement.taggedValue>
+ <UML:TaggedValue xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA1'
+ isSpecification = 'false'>
+ <UML:TaggedValue.dataValue>Doc for BeanA</UML:TaggedValue.dataValue>
+ <UML:TaggedValue.type>
+ <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/>
+ </UML:TaggedValue.type>
+ </UML:TaggedValue>
+ </UML:ModelElement.taggedValue>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7C'
+ name = 'immatriculation' visibility = 'public' isSpecification = 'false'
+ ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7D'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7E'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:ModelElement.taggedValue>
+ <UML:TaggedValue xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA2'
+ isSpecification = 'false'>
+ <UML:TaggedValue.dataValue>attrA of BeanA</UML:TaggedValue.dataValue>
+ <UML:TaggedValue.type>
+ <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/>
+ </UML:TaggedValue.type>
+ </UML:TaggedValue>
+ </UML:ModelElement.taggedValue>
+ <UML:StructuralFeature.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7F'
+ name = 'modele' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E80'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E81'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE6'
+ name = 'proprietaire' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE7'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE8'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E75'
+ name = 'Roue' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E85'
+ name = 'mount' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E86'
+ name = 'return' isSpecification = 'false' kind = 'return'>
+ <UML:Parameter.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086B'/>
+ </UML:Parameter.type>
+ </UML:Parameter>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E87'
+ name = 'getModel' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E88'
+ name = 'return' isSpecification = 'false' kind = 'return'>
+ <UML:Parameter.type>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/>
+ </UML:Parameter.type>
+ </UML:Parameter>
+ <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E89'
+ name = 'id' isSpecification = 'false'>
+ <UML:Parameter.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:Parameter.type>
+ </UML:Parameter>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Abstraction xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E77'
+ isSpecification = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E78'/>
+ </UML:ModelElement.stereotype>
+ <UML:Dependency.client>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/>
+ </UML:Dependency.client>
+ <UML:Dependency.supplier>
+ <UML:Interface xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E76'/>
+ </UML:Dependency.supplier>
+ </UML:Abstraction>
+ <UML:Interface xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E76'
+ name = 'Vehicule' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false'>
+ <UML:Classifier.feature>
+ <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7A'
+ name = 'start' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7B'
+ name = 'return' isSpecification = 'false' kind = 'return'>
+ <UML:Parameter.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086B'/>
+ </UML:Parameter.type>
+ </UML:Parameter>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Interface>
+ <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8A'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8B'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8C'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8D'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8E'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED2'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED1'
+ lower = '4' upper = '4'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E75'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAB'
+ name = 'RelationDTO' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAC'
+ name = 'idCompany' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAD'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAE'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAF'
+ name = 'idDepartement' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB0'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB1'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBB'
+ name = 'dateDebut' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBC'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBD'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000085F'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'
+ name = 'PersonneDTO' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.clientDependency>
+ <UML:Dependency xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAA'/>
+ </UML:ModelElement.clientDependency>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'/>
+ </UML:ModelElement.stereotype>
+ <UML:Namespace.ownedElement>
+ <UML:Dependency xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAA'
+ isSpecification = 'false'>
+ <UML:Dependency.client>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'/>
+ </UML:Dependency.client>
+ <UML:Dependency.supplier>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/>
+ </UML:Dependency.supplier>
+ </UML:Dependency>
+ </UML:Namespace.ownedElement>
+ </UML:Class>
+ <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB2'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB3'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBA'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB9'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAB'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB6'
+ name = 'person' visibility = 'public' isSpecification = 'false' isNavigable = 'true'
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB7'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB8'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED3'
+ name = 'Siege' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDB'
+ name = 'noSerie' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDC'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDD'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED4'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED5'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE5'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE4'
+ lower = '1' upper = '4'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED3'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED8'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED9'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDA'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Package xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100A'
+ name = 'deletetest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'
+ name = 'Contact2' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001019'
+ name = 'contactValue' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101A'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101B'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101C'
+ name = 'type' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101D'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101E'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Operation xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102F'
+ name = 'findAllByCompany' visibility = 'public' isSpecification = 'false'
+ ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001034'/>
+ </UML:ModelElement.stereotype>
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001030'
+ name = 'return' isSpecification = 'false' kind = 'return'>
+ <UML:Parameter.type>
+ <UML:Class xmi.idref = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001032'/>
+ </UML:Parameter.type>
+ </UML:Parameter>
+ <UML:Parameter xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001033'
+ name = 'company' isSpecification = 'false'>
+ <UML:Parameter.type>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/>
+ </UML:Parameter.type>
+ </UML:Parameter>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Association xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100C'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100D'
+ name = 'contacts' visibility = 'public' isSpecification = 'false' isNavigable = 'true'
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001026'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001025'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001010'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001028'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001027'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001017'
+ name = 'Telephone2' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001018'/>
+ </UML:GeneralizableElement.generalization>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001021'
+ name = 'prefix' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001022'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001023'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001024'
+ name = 'country' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001025'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001026'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Generalization xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001018'
+ isSpecification = 'false'>
+ <UML:Generalization.child>
+ <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001017'/>
+ </UML:Generalization.child>
+ <UML:Generalization.parent>
+ <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'/>
+ </UML:Generalization.parent>
+ </UML:Generalization>
+ <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'
+ name = 'Party2' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ </UML:Class>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Generalization xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001020'
+ isSpecification = 'false'>
+ <UML:Generalization.child>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/>
+ </UML:Generalization.child>
+ <UML:Generalization.parent>
+ <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'/>
+ </UML:Generalization.parent>
+ </UML:Generalization>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121D'
+ name = 'topia' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121E'
+ name = 'test' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121F'
+ name = 'entities' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Class xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001220'
+ name = 'Person' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001228'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001229'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122A'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122B'
+ name = 'firstname' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122C'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122D'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'
+ name = 'Pet' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001222'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001223'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001224'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001225'
+ name = 'type' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001226'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001227'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Association xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001237'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001238'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001239'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123A'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001220'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123B'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123F'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123E'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102A'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102B'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
+ aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102C'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102D'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102E'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102F'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001030'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001029'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Class xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001029'
+ name = 'Race' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001031'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001032'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001033'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'
+ name = 'bean' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'
+ name = 'dto' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E78'
+ name = 'realize' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Package xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001031'
+ name = 'java.util' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Class xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001032'
+ name = 'Set<Contact2>' visibility = 'public' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Stereotype xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001034'
+ name = 'dao' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Operation</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ </UML:Namespace.ownedElement>
+ </UML:Model>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001233'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001234'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123C'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123D'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </XMI.content>
+</XMI>
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.properties
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.properties (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.properties 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1 @@
+model.tagvalue.generateOperatorForDAOHelper=true
\ No newline at end of file
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.zargo
===================================================================
(Binary files differ)
Property changes on: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/src/main/zargo/topiatest.zargo
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/verify.groovy
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/verify.groovy (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithNoProtocol/verify.groovy 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,42 @@
+
+
+// Zargo to object model
+
+assert new File(basedir, 'target/generated-sources-zargo2ObjectModel').exists();
+assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi').exists();
+assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi/topiatest.properties').exists();
+assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi/topiatest.xmi').exists();
+
+assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models').exists();
+assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models/topiatest.properties').exists();
+assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models/topiatest.objectmodel').exists();
+
+// Zargo to state model
+
+assert new File(basedir, 'target/generated-sources-zargo2StateModel').exists();
+
+assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi').exists();
+assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi/topiatest.properties').exists();
+assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi/topiatest.xmi').exists();
+
+assert new File(basedir, 'target/generated-sources-zargo2StateModel/models').exists();
+assert new File(basedir, 'target/generated-sources-zargo2StateModel/models/topiatest.properties').exists();
+assert new File(basedir, 'target/generated-sources-zargo2StateModel/models/topiatest.statemodel').exists();
+
+// Xmi to object model
+
+assert new File(basedir, 'target/generated-sources-xmi2ObjectModel').exists();
+assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models').exists();
+assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models/topiatest.properties').exists();
+assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models/topiatest.objectmodel').exists();
+
+
+// Xmi to state model
+
+assert new File(basedir, 'target/generated-sources-xmi2StateModel').exists();
+assert new File(basedir, 'target/generated-sources-xmi2StateModel/models').exists();
+assert new File(basedir, 'target/generated-sources-xmi2StateModel/models/topiatest.properties').exists();
+assert new File(basedir, 'target/generated-sources-xmi2StateModel/models/topiatest.statemodel').exists();
+
+return true;
+
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/README.txt
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/README.txt (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/README.txt 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,16 @@
+On teste ici le goal generate-model-files avec en include que des includes simplifiés n'utilisant que les noms
+des writers connus :
+
+<execution>
+ <phase>generate-sources</phase>
+ <configuration>
+ <modelType>objectmodel</modelType>
+ <includes>
+ <include>zargo</include>
+ </includes>
+ <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath>
+ </configuration>
+ <goals>
+ <goal>generate-model</goal>
+ </goals>
+</execution>
\ No newline at end of file
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/invoker.properties
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/invoker.properties (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/invoker.properties 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,21 @@
+# A comma or space separated list of goals/phases to execute, may
+# specify an empty list to execute the default goal of the IT project
+invoker.goals=clean generate-sources
+
+# Optionally, a list of goals to run during further invocations of Maven
+#invoker.goals.2=${project.groupId}:${project.artifactId}:${project.version}:run
+
+# A comma or space separated list of profiles to activate
+#invoker.profiles=run-all run-once
+
+# The value for the environment variable MAVEN_OPTS
+#invoker.mavenOpts=-Dfile.encoding=UTF-16 -Xms32m -Xmx256m
+
+# Possible values are "fail-fast" (default), "fail-at-end" and "fail-never"
+invoker.failureBehavior=fail-at-end
+
+# The expected result of the build, possible values are "success" (default) and "failure"
+#invoker.buildResult=success
+
+# A boolean value controlling the -N flag, defaults to "false"
+#invoker.nonRecursive=false
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/pom.xml
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/pom.xml (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/pom.xml 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,137 @@
+<?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/maven-v4_0_0.xsd">
+
+ <modelVersion>4.0.0</modelVersion>
+
+ <!-- ************************************************************* -->
+ <!-- *** POM Relationships *************************************** -->
+ <!-- ************************************************************* -->
+
+ <groupId>org.nuiton.eugene.test</groupId>
+ <artifactId>testIncludeWithOnlyProtocol</artifactId>
+ <version>2.0.0</version>
+
+ <dependencies>
+ <dependency>
+ <groupId>org.nuiton.eugene</groupId>
+ <artifactId>eugene</artifactId>
+ <version>${eugeneVersion}</version>
+ <scope>compile</scope>
+ </dependency>
+
+ <dependency>
+ <groupId>org.nuiton</groupId>
+ <artifactId>nuiton-utils</artifactId>
+ <version>1.1.1</version>
+ <scope>compile</scope>
+ </dependency>
+
+ </dependencies>
+
+
+ <!-- ************************************************************* -->
+ <!-- *** Project Information ************************************* -->
+ <!-- ************************************************************* -->
+
+ <name>EUGene Test :: testIncludeWithOnlyProtocol</name>
+
+ <!-- ************************************************************* -->
+ <!-- *** Build Settings ****************************************** -->
+ <!-- ************************************************************* -->
+
+ <packaging>jar</packaging>
+
+ <properties>
+
+ <eugeneVersion>@pom.version@</eugeneVersion>
+
+ <!-- default encoding -->
+ <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+
+ </properties>
+
+ <build>
+
+ <plugins>
+
+ <plugin>
+ <groupId>org.nuiton.eugene</groupId>
+ <artifactId>maven-eugene-plugin</artifactId>
+ <version>${eugeneVersion}</version>
+ <executions>
+ <execution>
+ <id>Zargo to object model</id>
+ <phase>generate-sources</phase>
+ <configuration>
+ <modelType>objectmodel</modelType>
+ <includes>
+ <include>zargo</include>
+ </includes>
+ <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath>
+ <outputDirectory>target/generated-sources-zargo2ObjectModel</outputDirectory>
+ </configuration>
+ <goals>
+ <goal>generate-model-files</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>Zargo to state model</id>
+ <phase>generate-sources</phase>
+ <configuration>
+ <modelType>statemodel</modelType>
+ <includes>
+ <include>zargo</include>
+ </includes>
+ <fullPackagePath>org.nuiton.topia.test.entities</fullPackagePath>
+ <outputDirectory>target/generated-sources-zargo2StateModel</outputDirectory>
+ </configuration>
+ <goals>
+ <goal>generate-model-files</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>Xmi to object model</id>
+ <phase>generate-sources</phase>
+ <configuration>
+ <modelType>objectmodel</modelType>
+ <includes>
+ <include>xmi</include>
+ </includes>
+ <fullPackagePath>org.nuiton.topia</fullPackagePath>
+ <outputDirectory>target/generated-sources-xmi2ObjectModel</outputDirectory>
+ </configuration>
+ <goals>
+ <goal>generate-model-files</goal>
+ </goals>
+ </execution>
+ <execution>
+ <id>Xmi to state model</id>
+ <phase>generate-sources</phase>
+ <configuration>
+ <modelType>statemodel</modelType>
+ <includes>
+ <include>xmi</include>
+ </includes>
+ <fullPackagePath>org.nuiton.topia</fullPackagePath>
+ <outputDirectory>target/generated-sources-xmi2StateModel</outputDirectory>
+ </configuration>
+ <goals>
+ <goal>generate-model-files</goal>
+ </goals>
+ </execution>
+ </executions>
+ <dependencies>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.14</version>
+ </dependency>
+ </dependencies>
+ </plugin>
+ </plugins>
+ </build>
+
+</project>
+
+
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.properties
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.properties (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.properties 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1 @@
+model.tagvalue.generateOperatorForDAOHelper=true
\ No newline at end of file
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.xmi
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.xmi (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.xmi 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,1334 @@
+<?xml version = '1.0' encoding = 'UTF-8' ?>
+<XMI xmi.version = '1.2' xmlns:UML = 'org.omg.xmi.namespace.UML' timestamp = 'Mon Oct 19 15:56:54 CEST 2009'>
+ <XMI.header> <XMI.documentation>
+ <XMI.exporter>ArgoUML (using Netbeans XMI Writer version 1.0)</XMI.exporter>
+ <XMI.exporterVersion>0.28.1(6) revised on $Date: 2007-05-12 08:08:08 +0200 (Sat, 12 May 2007) $ </XMI.exporterVersion>
+ </XMI.documentation>
+ <XMI.metamodel xmi.name="UML" xmi.version="1.4"/></XMI.header>
+ <XMI.content>
+ <UML:Model xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000077B'
+ name = 'xmiTopiaTest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:ModelElement.taggedValue>
+ <UML:TaggedValue xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E3'
+ isSpecification = 'false'>
+ <UML:TaggedValue.dataValue>1.2</UML:TaggedValue.dataValue>
+ <UML:TaggedValue.type>
+ <UML:TagDefinition xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E4'/>
+ </UML:TaggedValue.type>
+ </UML:TaggedValue>
+ </UML:ModelElement.taggedValue>
+ <UML:Namespace.ownedElement>
+ <UML:TagDefinition xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E4'
+ name = 'version' isSpecification = 'false' tagType = 'String'>
+ <UML:TagDefinition.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E6'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E5'
+ lower = '0' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:TagDefinition.multiplicity>
+ </UML:TagDefinition>
+ <UML:Stereotype xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'
+ name = 'entity' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090B'
+ name = 'org' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090C'
+ name = 'nuiton' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Package xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:000000000000090D'
+ name = 'topiatest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'
+ name = 'Personne' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001020'/>
+ </UML:GeneralizableElement.generalization>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF9'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFD'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFC'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB0'
+ name = 'otherNames' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB8'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-67f6b63e:12187ee3a69:-8000:0000000000000EB7'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'
+ name = 'Employe' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E2'/>
+ </UML:GeneralizableElement.generalization>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D54'
+ name = 'salary' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5A'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D59'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'
+ name = 'Company' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011BD'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011C5'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000011C4'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008F9'
+ name = 'Address' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000903'
+ name = 'city' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF7'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF6'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CE8'
+ name = 'adress' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF3'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CF2'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FB'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FC'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FD'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FE'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008FF'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000900'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000901'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008F9'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Generalization xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E2'
+ isSpecification = 'false'>
+ <UML:Generalization.child>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/>
+ </UML:Generalization.child>
+ <UML:Generalization.parent>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/>
+ </UML:Generalization.parent>
+ </UML:Generalization>
+ <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFE'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000CFF'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102C'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102B'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D02'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102A'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001029'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'
+ name = 'Department' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D25'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D29'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D28'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'
+ name = 'Product' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D37'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D3F'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D3E'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5B'
+ name = 'Store' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D7D'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D83'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D82'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D40'
+ name = 'Type' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4D'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D53'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D52'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:AssociationClass xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D65'
+ name = 'Bill' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D66'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D89'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D88'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D69'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D8D'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D8C'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D5B'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D6D'
+ name = 'cost' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D75'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D74'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D76'
+ name = 'date' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D7A'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D79'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000085F'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:AssociationClass>
+ <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D18'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D19'
+ name = 'lead' visibility = 'public' isSpecification = 'false' isNavigable = 'false'
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D24'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D23'
+ lower = '0' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1C'
+ name = 'leader' visibility = 'public' isSpecification = 'false' isNavigable = 'true'
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1D'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D1E'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DE'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0D'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0E'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0F'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D10'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D11'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D17'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D16'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2C'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2D'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2E'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2F'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D0B'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D30'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D36'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D35'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D42'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D43'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4C'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D4B'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D46'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D47'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D48'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D40'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Package xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E71'
+ name = 'beangen' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'
+ name = 'Voiture' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'true' isActive = 'false'>
+ <UML:ModelElement.clientDependency>
+ <UML:Abstraction xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E77'/>
+ </UML:ModelElement.clientDependency>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/>
+ </UML:ModelElement.stereotype>
+ <UML:ModelElement.taggedValue>
+ <UML:TaggedValue xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA1'
+ isSpecification = 'false'>
+ <UML:TaggedValue.dataValue>Doc for BeanA</UML:TaggedValue.dataValue>
+ <UML:TaggedValue.type>
+ <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/>
+ </UML:TaggedValue.type>
+ </UML:TaggedValue>
+ </UML:ModelElement.taggedValue>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7C'
+ name = 'immatriculation' visibility = 'public' isSpecification = 'false'
+ ownerScope = 'instance' changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7D'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7E'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:ModelElement.taggedValue>
+ <UML:TaggedValue xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA2'
+ isSpecification = 'false'>
+ <UML:TaggedValue.dataValue>attrA of BeanA</UML:TaggedValue.dataValue>
+ <UML:TaggedValue.type>
+ <UML:TagDefinition href = 'http://argouml.org/profiles/uml14/default-uml14.xmi#.:000000000000087C'/>
+ </UML:TaggedValue.type>
+ </UML:TaggedValue>
+ </UML:ModelElement.taggedValue>
+ <UML:StructuralFeature.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7F'
+ name = 'modele' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E80'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E81'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE6'
+ name = 'proprietaire' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE7'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE8'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E75'
+ name = 'Roue' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E85'
+ name = 'mount' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E86'
+ name = 'return' isSpecification = 'false' kind = 'return'>
+ <UML:Parameter.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086B'/>
+ </UML:Parameter.type>
+ </UML:Parameter>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E87'
+ name = 'getModel' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E88'
+ name = 'return' isSpecification = 'false' kind = 'return'>
+ <UML:Parameter.type>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:0000000000000D2A'/>
+ </UML:Parameter.type>
+ </UML:Parameter>
+ <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E89'
+ name = 'id' isSpecification = 'false'>
+ <UML:Parameter.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:Parameter.type>
+ </UML:Parameter>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Abstraction xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E77'
+ isSpecification = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E78'/>
+ </UML:ModelElement.stereotype>
+ <UML:Dependency.client>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/>
+ </UML:Dependency.client>
+ <UML:Dependency.supplier>
+ <UML:Interface xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E76'/>
+ </UML:Dependency.supplier>
+ </UML:Abstraction>
+ <UML:Interface xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E76'
+ name = 'Vehicule' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false'>
+ <UML:Classifier.feature>
+ <UML:Operation xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7A'
+ name = 'start' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ isQuery = 'false' concurrency = 'sequential' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E7B'
+ name = 'return' isSpecification = 'false' kind = 'return'>
+ <UML:Parameter.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086B'/>
+ </UML:Parameter.type>
+ </UML:Parameter>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Interface>
+ <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8A'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8B'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8C'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8D'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E8E'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED2'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED1'
+ lower = '4' upper = '4'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E75'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAB'
+ name = 'RelationDTO' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAC'
+ name = 'idCompany' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAD'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAE'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAF'
+ name = 'idDepartement' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB0'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB1'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBB'
+ name = 'dateDebut' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBC'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBD'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000085F'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'
+ name = 'PersonneDTO' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.clientDependency>
+ <UML:Dependency xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAA'/>
+ </UML:ModelElement.clientDependency>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'/>
+ </UML:ModelElement.stereotype>
+ <UML:Namespace.ownedElement>
+ <UML:Dependency xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAA'
+ isSpecification = 'false'>
+ <UML:Dependency.client>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'/>
+ </UML:Dependency.client>
+ <UML:Dependency.supplier>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/>
+ </UML:Dependency.supplier>
+ </UML:Dependency>
+ </UML:Namespace.ownedElement>
+ </UML:Class>
+ <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB2'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB3'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EBA'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB9'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EAB'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB6'
+ name = 'person' visibility = 'public' isSpecification = 'false' isNavigable = 'true'
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB7'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EB8'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EA9'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Class xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED3'
+ name = 'Siege' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDB'
+ name = 'noSerie' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDC'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDD'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:DataType href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:000000000000086C'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Association xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED4'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED5'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE5'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EE4'
+ lower = '1' upper = '4'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED3'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED8'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000ED9'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000EDA'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E72'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Package xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100A'
+ name = 'deletetest' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'
+ name = 'Contact2' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001019'
+ name = 'contactValue' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101A'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101B'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101C'
+ name = 'type' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101D'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101E'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Operation xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:000000000000102F'
+ name = 'findAllByCompany' visibility = 'public' isSpecification = 'false'
+ ownerScope = 'instance' isQuery = 'false' concurrency = 'sequential' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001034'/>
+ </UML:ModelElement.stereotype>
+ <UML:BehavioralFeature.parameter>
+ <UML:Parameter xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001030'
+ name = 'return' isSpecification = 'false' kind = 'return'>
+ <UML:Parameter.type>
+ <UML:Class xmi.idref = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001032'/>
+ </UML:Parameter.type>
+ </UML:Parameter>
+ <UML:Parameter xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001033'
+ name = 'company' isSpecification = 'false'>
+ <UML:Parameter.type>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E0'/>
+ </UML:Parameter.type>
+ </UML:Parameter>
+ </UML:BehavioralFeature.parameter>
+ </UML:Operation>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Association xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100C'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100D'
+ name = 'contacts' visibility = 'public' isSpecification = 'false' isNavigable = 'true'
+ ordering = 'unordered' aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001026'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001025'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001010'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001028'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001027'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001017'
+ name = 'Telephone2' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:GeneralizableElement.generalization>
+ <UML:Generalization xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001018'/>
+ </UML:GeneralizableElement.generalization>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001021'
+ name = 'prefix' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001022'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001023'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001024'
+ name = 'country' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001025'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001026'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Generalization xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001018'
+ isSpecification = 'false'>
+ <UML:Generalization.child>
+ <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001017'/>
+ </UML:Generalization.child>
+ <UML:Generalization.parent>
+ <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000100B'/>
+ </UML:Generalization.parent>
+ </UML:Generalization>
+ <UML:Class xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'
+ name = 'Party2' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ </UML:Class>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Generalization xmi.id = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:0000000000001020'
+ isSpecification = 'false'>
+ <UML:Generalization.child>
+ <UML:Class xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008DA'/>
+ </UML:Generalization.child>
+ <UML:Generalization.parent>
+ <UML:Class xmi.idref = '-64--88-99-15-7b62aac4:121aaa56ef3:-8000:000000000000101F'/>
+ </UML:Generalization.parent>
+ </UML:Generalization>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121D'
+ name = 'topia' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121E'
+ name = 'test' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Package xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000121F'
+ name = 'entities' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Class xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001220'
+ name = 'Person' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001228'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001229'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122A'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122B'
+ name = 'firstname' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122C'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000122D'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Class xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'
+ name = 'Pet' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001222'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001223'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001224'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ <UML:Attribute xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001225'
+ name = 'type' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001226'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001227'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ <UML:Association xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001237'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001238'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001239'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123A'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001220'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123B'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123F'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123E'
+ lower = '0' upper = '-1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Association xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102A'
+ name = '' isSpecification = 'false' isRoot = 'false' isLeaf = 'false' isAbstract = 'false'>
+ <UML:Association.connection>
+ <UML:AssociationEnd xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102B'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'false' ordering = 'unordered'
+ aggregation = 'composite' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102C'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102D'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1-13652238:1219c622604:-8000:0000000000001221'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ <UML:AssociationEnd xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102E'
+ visibility = 'public' isSpecification = 'false' isNavigable = 'true' ordering = 'unordered'
+ aggregation = 'none' targetScope = 'instance' changeability = 'changeable'>
+ <UML:AssociationEnd.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:000000000000102F'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001030'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:AssociationEnd.multiplicity>
+ <UML:AssociationEnd.participant>
+ <UML:Class xmi.idref = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001029'/>
+ </UML:AssociationEnd.participant>
+ </UML:AssociationEnd>
+ </UML:Association.connection>
+ </UML:Association>
+ <UML:Class xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001029'
+ name = 'Race' visibility = 'public' isSpecification = 'false' isRoot = 'false'
+ isLeaf = 'false' isAbstract = 'false' isActive = 'false'>
+ <UML:ModelElement.stereotype>
+ <UML:Stereotype xmi.idref = '127-0-0-1-3f03561c:11667f969c5:-8000:00000000000008E7'/>
+ </UML:ModelElement.stereotype>
+ <UML:Classifier.feature>
+ <UML:Attribute xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001031'
+ name = 'name' visibility = 'public' isSpecification = 'false' ownerScope = 'instance'
+ changeability = 'changeable' targetScope = 'instance'>
+ <UML:StructuralFeature.multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001032'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1--7876194c:121c66e8e17:-8000:0000000000001033'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </UML:StructuralFeature.multiplicity>
+ <UML:StructuralFeature.type>
+ <UML:Class href = 'http://argouml.org/profiles/uml14/default-java.xmi#.:0000000000000859'/>
+ </UML:StructuralFeature.type>
+ </UML:Attribute>
+ </UML:Classifier.feature>
+ </UML:Class>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E73'
+ name = 'bean' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E74'
+ name = 'dto' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Class</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Stereotype xmi.id = '-64--88-99-15-6093e433:1215d2d04f2:-8000:0000000000000E78'
+ name = 'realize' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Abstraction</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ <UML:Package xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001031'
+ name = 'java.util' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Namespace.ownedElement>
+ <UML:Class xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001032'
+ name = 'Set<Contact2>' visibility = 'public' isSpecification = 'false'
+ isRoot = 'false' isLeaf = 'false' isAbstract = 'false' isActive = 'false'/>
+ </UML:Namespace.ownedElement>
+ </UML:Package>
+ <UML:Stereotype xmi.id = '-64--88-99-15--164a0c3b:121af97fc30:-8000:0000000000001034'
+ name = 'dao' isSpecification = 'false' isRoot = 'false' isLeaf = 'false'
+ isAbstract = 'false'>
+ <UML:Stereotype.baseClass>Operation</UML:Stereotype.baseClass>
+ </UML:Stereotype>
+ </UML:Namespace.ownedElement>
+ </UML:Model>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001233'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:0000000000001234'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ <UML:Multiplicity xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123C'>
+ <UML:Multiplicity.range>
+ <UML:MultiplicityRange xmi.id = '127-0-0-1-13652238:1219c622604:-8000:000000000000123D'
+ lower = '1' upper = '1'/>
+ </UML:Multiplicity.range>
+ </UML:Multiplicity>
+ </XMI.content>
+</XMI>
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.zargo
===================================================================
(Binary files differ)
Property changes on: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/src/main/xmi/topiatest.zargo
___________________________________________________________________
Added: svn:mime-type
+ application/octet-stream
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/verify.groovy
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/verify.groovy (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/it/generate-model-files/testIncludeWithOnlyProtocol/verify.groovy 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,42 @@
+
+
+// Zargo to object model
+
+assert new File(basedir, 'target/generated-sources-zargo2ObjectModel').exists();
+assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi').exists();
+assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi/topiatest.properties').exists();
+assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/xmi/topiatest.xmi').exists();
+
+assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models').exists();
+assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models/topiatest.properties').exists();
+assert new File(basedir, 'target/generated-sources-zargo2ObjectModel/models/topiatest.objectmodel').exists();
+
+// Zargo to state model
+
+assert new File(basedir, 'target/generated-sources-zargo2StateModel').exists();
+
+assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi').exists();
+assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi/topiatest.properties').exists();
+assert new File(basedir, 'target/generated-sources-zargo2StateModel/xmi/topiatest.xmi').exists();
+
+assert new File(basedir, 'target/generated-sources-zargo2StateModel/models').exists();
+assert new File(basedir, 'target/generated-sources-zargo2StateModel/models/topiatest.properties').exists();
+assert new File(basedir, 'target/generated-sources-zargo2StateModel/models/topiatest.statemodel').exists();
+
+// Xmi to object model
+
+assert new File(basedir, 'target/generated-sources-xmi2ObjectModel').exists();
+assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models').exists();
+assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models/topiatest.properties').exists();
+assert new File(basedir, 'target/generated-sources-xmi2ObjectModel/models/topiatest.objectmodel').exists();
+
+
+// Xmi to state model
+
+assert new File(basedir, 'target/generated-sources-xmi2StateModel').exists();
+assert new File(basedir, 'target/generated-sources-xmi2StateModel/models').exists();
+assert new File(basedir, 'target/generated-sources-xmi2StateModel/models/topiatest.properties').exists();
+assert new File(basedir, 'target/generated-sources-xmi2StateModel/models/topiatest.statemodel').exists();
+
+return true;
+
Added: branches/eugene-2.0/maven-eugene-plugin/src/it/settings.xml
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/it/settings.xml (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/it/settings.xml 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,56 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements. See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership. The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied. See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<settings>
+
+ <profiles>
+ <profile>
+ <id>it-repo</id>
+ <activation>
+ <activeByDefault>true</activeByDefault>
+ </activation>
+ <repositories>
+ <repository>
+ <id>local.central</id>
+ <url>file:///@localRepository@</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </repository>
+ </repositories>
+ <pluginRepositories>
+ <pluginRepository>
+ <id>local.central</id>
+ <url>file:///@localRepository@</url>
+ <releases>
+ <enabled>true</enabled>
+ </releases>
+ <snapshots>
+ <enabled>true</enabled>
+ </snapshots>
+ </pluginRepository>
+ </pluginRepositories>
+ </profile>
+ </profiles>
+</settings>
Added: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AbstractEugeneMojo.java
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AbstractEugeneMojo.java (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AbstractEugeneMojo.java 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,141 @@
+package org.nuiton.eugene.plugin;
+
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+import org.apache.maven.settings.Settings;
+import org.nuiton.eugene.models.Model;
+import org.nuiton.plugin.AbstractPlugin;
+
+import java.util.Map;
+
+/**
+ * User: chemit
+ * Date: 23 nov. 2009
+ * Time: 20:19:35
+ */
+public abstract class AbstractEugeneMojo extends AbstractPlugin {
+
+ /**
+ * Maven project.
+ *
+ * @description Dépendance du projet.
+ * @parameter default-value="${project}"
+ * @readonly
+ * @since 2.0.0
+ */
+ protected MavenProject project;
+ /**
+ * @description le settings (pour obtenir le mode offline)
+ * @parameter default-value="${settings}"
+ * @readonly
+ * @since 2.0.0
+ */
+ protected Settings settings;
+ /**
+ * Ecrase les fichiers générés.
+ *
+ * @parameter expression="${eugene.overwrite}" default-value="false"
+ * @since 2.0.0
+ */
+ protected boolean overwrite;
+ /**
+ * Pour activer le mode verbeux.
+ *
+ * @parameter expression="${eugene.verbose}" default-value="${maven.verbose}"
+ * @since 2.0.0
+ */
+ protected boolean verbose;
+ /**
+ * Encoding to be used for generation of files.
+ *
+ * @parameter expression="${eugene.encoding}" default-value="${project.build.sourceEncoding}"
+ * @since 2.0.0
+ */
+ protected String encoding;
+ /**
+ * A flag to mark the mojo to be used in a test phase. This will permits to add generated sources in test compile roots.
+ *
+ * @parameter expression="${eugene.testPhase}" default-value="false"
+ * @since 2.0.0
+ */
+ protected boolean testPhase;
+ /**
+ * The type of model to be used.
+ *
+ * @parameter expression="${eugene.modelType}"
+ * @required
+ * @since 2.0.0
+ */
+ protected String modelType;
+
+
+ protected Class<? extends Model> modelClass;
+
+ /**
+ * All available models
+ *
+ * @component role="org.nuiton.eugene.models.Model"
+ */
+ protected Map<String, Model> _models;
+
+ @Override
+ protected boolean init() throws Exception {
+
+ // on recupere le fqn du model à traiter via le container plexus (plus pratique dans ce cas où on veut
+ // pouvoir associé un nom à un type de service).
+ Model model = _models.get(modelType.trim().toLowerCase());
+ if (model == null) {
+ throw new MojoExecutionException("No modelType named '" + modelType + "', use one of " + _models.keySet());
+ }
+ modelClass = model.getClass();
+ return true;
+ }
+
+
+ @Override
+ public MavenProject getProject() {
+ return project;
+ }
+
+ public void setProject(MavenProject project) {
+ this.project = project;
+ }
+
+ @Override
+ public boolean isVerbose() {
+ return verbose;
+ }
+
+ public void setVerbose(boolean verbose) {
+ this.verbose = verbose;
+ }
+
+ public String getEncoding() {
+ return encoding;
+ }
+
+ public void setEncoding(String encoding) {
+ this.encoding = encoding;
+ }
+
+ public boolean isOverwrite() {
+ return overwrite;
+ }
+
+ public void setOverwrite(boolean overwrite) {
+ this.overwrite = overwrite;
+ }
+
+ public Settings getSettings() {
+ return settings;
+ }
+
+ public void setSettings(Settings settings) {
+ this.settings = settings;
+ }
+
+ public boolean isOffline() {
+ return settings.isOffline();
+ }
+
+}
Property changes on: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AbstractEugeneMojo.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Modified: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java 2009-11-27 10:00:00 UTC (rev 730)
+++ branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java 2009-11-27 11:29:08 UTC (rev 731)
@@ -83,7 +83,7 @@
/**
*
- * Note : l'objet peut etre {@null} si la configuration ne definit
+ * Note : l'objet peut etre {@code null} si la configuration ne definit
* pas la propriété associées dans l'implentation.
* <p/>
*
Added: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GeneratateModelFilesMojo.java
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GeneratateModelFilesMojo.java (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GeneratateModelFilesMojo.java 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,323 @@
+package org.nuiton.eugene.plugin;
+
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.plugin.MojoExecutionException;
+import org.apache.maven.project.MavenProject;
+import org.nuiton.eugene.ModelFileWriter;
+import org.nuiton.eugene.ModelFileWriterConfiguration;
+import org.nuiton.eugene.ModelFileWriterUtil;
+import org.nuiton.eugene.models.Model;
+import org.nuiton.eugene.plugin.writer.BaseModelFileWriter;
+import org.nuiton.eugene.plugin.writer.BaseXmiToModelFileWriter;
+
+import java.io.File;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLClassLoader;
+import java.util.*;
+
+/**
+ * User: chemit
+ * Date: 24 nov. 2009
+ * Time: 00:22:37
+ *
+ * @goal generate-model-files
+ * @projectRequired true
+ * @requiresDependencyResolution compile
+ */
+public class GeneratateModelFilesMojo extends AbstractEugeneMojo implements ModelFileWriterConfiguration {
+
+ /**
+ * Inputs files to used to generate the required model files.
+ * </p>
+ * An include has the following pattern :
+ * <pre>
+ * writer:
+ * </pre>
+ * when you want to use a specific writer with his default io values.
+ * <p/>
+ * Can also write :
+ * <pre>
+ * [writer:]directory:includes
+ * </pre>
+ * where {@code includes} is the pattern to find files from the directory given and must be terminated by the extension
+ * of files.
+ * <p/>
+ * Specifying the {@code writer} can be usefull when you want to use a writer for an unknown extension
+ * by any writer.
+ * <p/>
+ * Example :
+ * <pre>
+ * <includes>
+ * <include>zargo:<include>
+ * <include>src/main/xmi2:**\/*.zargo<include>
+ * <include>zargo:src/main/xmi:**\/*.zargo2<include>
+ * </includes>
+ * </pre>
+ *
+ * @parameter expression="${eugene.includes}"
+ * @required
+ * @since 2.0.0
+ */
+ protected String[] includes;
+ /**
+ * Where to generate files.
+ *
+ * @parameter expression="${eugene.outputDirectory}" default-value="target/generated-sources"
+ * @required
+ * @since 2.0.0
+ */
+ protected File outputDirectory;
+ /**
+ * Properties to pass to writer.
+ *
+ * @parameter
+ * @since 2.0.0
+ */
+ protected Map<String, Object> properties;
+ /**
+ * Ne génère rien, analyse juste la configuration.
+ *
+ * @parameter expression="${eugene.dryRun}" default-value="false"
+ * @since 2.0.0
+ */
+ protected boolean dryRun;
+ /**
+ * Nom du paquetage pour les fichiers générés
+ *
+ * @parameter expression="${generator.fullPackagePath}" default-value="${project.groupId}.${project.artifactId}"
+ * @since 2.0.0
+ */
+ protected String fullPackagePath;
+ /**
+ * Nom du paquetage à générer
+ *
+ * @parameter expression="${generator.extractedPackages}" default-value="${project.groupId}.${project.artifactId}"
+ * @since 2.0.0
+ */
+ protected String extractedPackages;
+ /**
+ * Nom du resolver a utiliser
+ *
+ * @parameter expression="${generator.resolver}" default-value="org.nuiton.util.ResourceResolver"
+ * @since 2.0.0
+ */
+ protected String resolver;
+ /**
+ * An extra directory to be added to the classpath.
+ *
+ * @parameter expression="${eugene.extraClassPathDirectory}"
+ * @since 2.0.0
+ */
+ protected File extraClassPathDirectory;
+
+ /**
+ * All available writers
+ *
+ * @component role="org.nuiton.eugene.ModelFileWriter"
+ */
+ protected Map<String, ModelFileWriter> writers;
+
+ /**
+ * All available writers for the given {@link #getModelClass()}
+ */
+ protected Set<ModelFileWriter> availableWriters;
+
+ /**
+ * Writers to process
+ */
+ protected List<ModelFileWriter> plan;
+
+ @Override
+ protected boolean init() throws Exception {
+ boolean b = super.init();
+ if (b) {
+ if (includes.length == 0) {
+ throw new MojoExecutionException("Must specify something to include using the includes property");
+ }
+
+ availableWriters = ModelFileWriterUtil.filterWriterForModelType(writers, getModelClass());
+
+ if (availableWriters.isEmpty()) {
+ throw new MojoExecutionException("Could not find any writer in class-path.");
+ }
+
+ for (ModelFileWriter writer : availableWriters) {
+ if (writer instanceof BaseModelFileWriter) {
+ ((BaseModelFileWriter) writer).setLog(getLog());
+ }
+ }
+
+ plan = new ArrayList<ModelFileWriter>();
+
+ // first pass to detect top level writers
+ for (String include : includes) {
+
+ getLog().info("Register include : " + include);
+ ModelFileWriterUtil.registerInclude(this, include, plan);
+ }
+
+ if (properties == null) {
+ properties = new TreeMap<String, Object>();
+ }
+ }
+ return b;
+ }
+
+ @Override
+ protected void doAction() throws Exception {
+ if (dryRun) {
+ getLog().warn("dryRun property is set, no file will be generated.");
+ }
+ try {
+ // transfert to properties
+
+ ClassLoader loader = fixClassLoader();
+
+ properties.put(BaseModelFileWriter.PROP_CLASS_LOADER, loader);
+ properties.put(BaseXmiToModelFileWriter.PROP_FULL_PACKAGE_PATH, fullPackagePath);
+ //properties.put("extractedPackages", extractedPackages);
+ properties.put(BaseXmiToModelFileWriter.PROP_RESOLVER, resolver);
+
+ // launch writers in incoming order of dicovering of them
+ for (ModelFileWriter writer : plan) {
+ int size = writer.getEntries().size();
+ if (size == 1) {
+ getLog().info("Process phase [" + writer.getInputProtocol() + "] for one entry.");
+ } else {
+ getLog().info("Process phase [" + writer.getInputProtocol() + "] for " + size + " entries.");
+ }
+ if (dryRun || isVerbose()) {
+ for (ModelFileWriterUtil.ModelFileWriterEntry entry : writer.getEntries()) {
+ getLog().info(" entry : " + entry.getInputDirectory() + " - " + entry.getIncludePattern());
+ }
+ if (dryRun) {
+ continue;
+ }
+ }
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("Generating files and copying resources...");
+ }
+
+ writer.generate(this);
+
+ }
+ } finally {
+ // always clear everything to avoid side-effects in goal is invoked more than once
+ properties.clear();
+ for (ModelFileWriter writer : plan) {
+ writer.clear();
+ }
+ plan.clear();
+ }
+ }
+
+ @Override
+ public File getOutputDirectory() {
+ return outputDirectory;
+ }
+
+ @Override
+ public Map<String, Object> getProperties() {
+ return properties;
+ }
+
+ @Override
+ public Set<ModelFileWriter> getAvailableWriters() {
+ return availableWriters;
+ }
+
+ @Override
+ public Class<? extends Model> getModelClass() {
+ return modelClass;
+ }
+
+ @Override
+ public File getBasedir() {
+ return getProject().getBasedir();
+ }
+
+ /**
+ * Prepare le classLoader a utiliser dans le generateur.
+ * <p/>
+ * Si un {@link #extraClassPathDirectory} a été renseigné, il est rajouté.
+ * <p/>
+ * Si des références à des sibling modules, ils seront rajoutés aussi.
+ *
+ * @return le class loader modifie
+ * @throws MojoExecutionException if any pb
+ */
+ protected ClassLoader fixClassLoader() throws MojoExecutionException {
+ Set<String> urlsAsString = new HashSet<String>();
+ List<URL> urls = new ArrayList<URL>();
+ try {
+ ClassLoader loader;
+ if (extraClassPathDirectory != null) {
+ if (verbose) {
+ getLog().info("Add extra directory in generator's classLoader : " + extraClassPathDirectory);
+ }
+ addDirectoryToUrlsList(extraClassPathDirectory, urls, urlsAsString);
+ }
+ if (project.getProjectReferences() != null) {
+ // this case is for multi-module when calling from a parent module
+ for (Object o : project.getProjectReferences().entrySet()) {
+ Map.Entry<?, ?> entry = (Map.Entry<?, ?>) o;
+ MavenProject relatedProject = (MavenProject) entry.getValue();
+ if (verbose) {
+ getLog().info("Add project reference in generator's classLoader : '" + relatedProject.getArtifact() + "'");
+ }
+ //TODO il faudrait peut-etre aussi ajouter les dependances ?
+ addDirectoryToUrlsList(relatedProject.getArtifact().getFile(), urls, urlsAsString);
+ }
+ }
+ if (!project.getArtifacts().isEmpty()) {
+ // this is a special case when artifacts were resolved (for example in site phase)
+ if (verbose) {
+ getLog().info("Use resolved artifacts to build class-path");
+ }
+ for (Object o : project.getArtifacts()) {
+ Artifact a = (Artifact) o;
+ if (!a.getScope().equals("provided")) {
+ addDirectoryToUrlsList(a.getFile(), urls, urlsAsString);
+ }
+ }
+ }
+ // we ask to add the directory in classloader
+ loader = getClass().getClassLoader();
+ if (getLog().isDebugEnabled()) {
+ getLog().info("original classloader " + loader);
+ }
+ if (loader instanceof URLClassLoader) {
+ // on reinjecte les urls de loader de base
+ // car sinon on risque de ne pas retrouver les resources...
+ for (URL u : ((URLClassLoader) loader).getURLs()) {
+ addUrlToUrlsList(u, urls, urlsAsString);
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("original cp entry: " + u);
+ }
+ }
+ // et on force l'utilisation du classloader parent
+ // s'il existe
+ if (loader.getParent() != null) {
+ loader = loader.getParent();
+ }
+ }
+ if (!urls.isEmpty()) {
+ loader = new URLClassLoader(urls.toArray(new URL[urls.size()]),
+ loader);
+ }
+ if (getLog().isDebugEnabled()) {
+ for (URL u : urls) {
+ getLog().debug("cp entry: " + u);
+ }
+ }
+ return loader;
+ } catch (MalformedURLException e) {
+ throw new MojoExecutionException(e.getMessage());
+ } finally {
+ urls.clear();
+ urlsAsString.clear();
+ }
+
+ }
+}
Property changes on: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/GeneratateModelFilesMojo.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Modified: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java 2009-11-27 10:00:00 UTC (rev 730)
+++ branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java 2009-11-27 11:29:08 UTC (rev 731)
@@ -293,7 +293,7 @@
URIResolver result = null;
try {
- Class<?> clazz = (Class<?>) Class.forName(resolver, true, cl);
+ Class<?> clazz = Class.forName(resolver, true, cl);
// Try to set the base using the constructor
try {
@@ -345,7 +345,7 @@
Set<String> urlsAsString = new HashSet<String>();
List<URL> urls = new ArrayList<URL>();
try {
- ClassLoader loader = null;
+ ClassLoader loader;
if (extraClassPathDirectory != null) {
if (verbose) {
getLog().info("Add extra directory in generator's classLoader : " + extraClassPathDirectory);
Added: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseModelFileWriter.java
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseModelFileWriter.java (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseModelFileWriter.java 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,38 @@
+package org.nuiton.eugene.plugin.writer;
+
+import org.apache.maven.plugin.logging.Log;
+import org.apache.maven.plugin.logging.SystemStreamLog;
+import org.nuiton.eugene.AbstractModelFileWriter;
+
+/**
+ * Surcharge de l'implentation abstraite pour avoir le logger de la console maven.
+ *
+ * @author tchemit
+ * @since 2.0.0
+ */
+public abstract class BaseModelFileWriter extends AbstractModelFileWriter {
+
+ /**
+ * Logger
+ */
+ private Log log;
+ public static final String PROP_CLASS_LOADER = "classLoader";
+
+ public void setLog(Log log) {
+ this.log = log;
+ }
+
+ public Log getLog() {
+ if (log == null) {
+ log = new SystemStreamLog();
+ }
+
+ return log;
+ }
+
+ public ClassLoader getClassLoader() {
+ return getProperty(PROP_CLASS_LOADER, ClassLoader.class);
+ }
+
+
+}
\ No newline at end of file
Property changes on: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseModelFileWriter.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToModelFileWriter.java
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToModelFileWriter.java (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToModelFileWriter.java 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,226 @@
+package org.nuiton.eugene.plugin.writer;
+
+import org.nuiton.eugene.models.Model;
+import org.nuiton.plugin.PluginHelper;
+import org.nuiton.plugin.PluginIOContext;
+import org.nuiton.util.FasterCachedResourceResolver;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.Resource;
+import org.nuiton.util.ResourceResolver;
+
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.URIResolver;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.lang.reflect.Constructor;
+import java.net.URL;
+import java.util.List;
+
+/**
+ * Implentation pour les writer to type xmi (qui transforme du xmi via xsl).
+ *
+ * @author tchemit
+ * @since 2.0.0
+ */
+public abstract class BaseXmiToModelFileWriter extends BaseModelFileWriter {
+ public static final String PROP_RESOLVER = "resolver";
+ public static final String PROP_EXTRACTED_PACKAGES = "extractedPackages";
+ public static final String PROP_FULL_PACKAGE_PATH = "fullPackagePath";
+
+ /**
+ * Get style sheet.
+ *
+ * @param model the model file used to determine the stylesheet to use
+ * @return the stylesheet name
+ */
+ protected abstract String getStyleSheet(File model);
+
+ /**
+ * Get extension.
+ *
+ * @return the extension
+ */
+ protected abstract String getExtension();
+
+ @Override
+ public String getInputProtocol() {
+ return "xmi";
+ }
+
+ @Override
+ public <M extends Model> String getOutputProtocol(Class<M> modelType) {
+ // no next writer : write model files
+ return null;
+ }
+
+ @Override
+ public boolean acceptInclude(String include) {
+ return include.startsWith("xmi:") || include.endsWith(".xmi") || include.endsWith(".uml");
+ }
+
+ @Override
+ public String getDefaultIncludes() {
+ return "**/*.xmi";
+ }
+
+ @Override
+ public String getDefaultInputDirectory() {
+ return "src/main/xmi";
+ }
+
+ @Override
+ public String getDefaultOutputDirectory() {
+ return "models";
+ }
+
+ protected TransformerFactory transformerFactory;
+
+ protected TransformerFactory getTransformerFactory() {
+ if (transformerFactory == null) {
+ transformerFactory = TransformerFactory.newInstance();
+ }
+ return transformerFactory;
+ }
+
+ public String getFullPackagePath() {
+ return getProperty(PROP_FULL_PACKAGE_PATH, String.class);
+ }
+
+ public String getExtractedPackages() {
+ return getProperty(PROP_EXTRACTED_PACKAGES, String.class);
+ }
+
+ public String getResolver() {
+ return getProperty(PROP_RESOLVER, String.class);
+ }
+
+
+ @Override
+ public void generate(File outputDir, File inputDirectory, String includePattern, boolean overwrite) throws IOException {
+ long t0 = System.nanoTime();
+ try {
+ getLog().info("Processing XSL tranformation on " + inputDirectory + " for " + includePattern);
+
+ getLog().info(" with fullPackagePath : " + getFullPackagePath());
+ getLog().info(" with extractedPackages : " + getExtractedPackages());
+// getLog().info(" with acceptedXmiTypes : " + getFullPackagePath());
+ getLog().info(" with resolver : " + getResolver());
+
+ // recuperation des fichiers a traiter
+ List<File> files = PluginHelper.getIncludedFiles(inputDirectory, new String[]{includePattern}, null);
+
+ // lancement des traitements xsl sur les fichiers trouvés
+ // dans le repertoire
+ actionXsl(outputDir, inputDirectory, files, getClassLoader(), overwrite);
+ } finally {
+ getLog().info("xsl done in " + PluginHelper.convertTime(System.nanoTime() - t0));
+ }
+
+ getLog().info("Copy resources files");
+
+ PluginIOContext ioContext = new PluginIOContext();
+ ioContext.setInput(inputDirectory);
+ ioContext.setOutput(outputDir);
+// String[] excludes = getSuffixPattern("**/*");
+ PluginHelper.copyFiles(ioContext, null, new String[]{includePattern}, overwrite);
+ }
+
+
+ protected void actionXsl(File outputDir, File dir, List<File> files, ClassLoader fixedClassLoader, boolean overwrite) throws IOException {
+
+ for (File file : files) {
+ try {
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("treate file : " + file);
+ }
+ // Prepare resolver, stylesheet
+ URIResolver fileResolver = getUriResolver(file, fixedClassLoader);
+ String styleSheet = getStyleSheet(file);
+ URL xsl = Resource.getURL(styleSheet);
+
+ //TC-20090820 : using recursive for xmi
+// File result = new File(destDirModel, FileUtil.basename(file,
+// acceptedSuffixes).concat(".").concat(getExtension()));
+
+ String extension = "." + FileUtil.extension(file);
+ String filename = FileUtil.basename(file, extension).concat(".").concat(getExtension());
+ String relatifPath = file.getParentFile().getAbsolutePath().substring(dir.getAbsolutePath().length());
+ File dstDir = outputDir;
+ if (!relatifPath.isEmpty()) {
+ dstDir = new File(dstDir, relatifPath);
+ dstDir.mkdirs();
+ }
+ File result = new File(dstDir, filename);
+ if (!overwrite && file.lastModified() < result.lastModified()) {
+ getLog().info("file up-to-date : " + result);
+ continue;
+ }
+ if (getLog().isDebugEnabled()) {
+ getLog().debug("generate " + result);
+ }
+
+ // Create the xsl transformer and set parameters
+ Transformer transformer = getTransformerFactory().newTransformer(new StreamSource(xsl.openStream()));
+
+ transformer.setParameter(PROP_FULL_PACKAGE_PATH, getFullPackagePath());
+ //transformer.setParameter("extraPackages", getExtractedPackages());
+
+ transformer.setURIResolver(fileResolver);
+ transformer.transform(new StreamSource(file), new StreamResult(
+ new FileOutputStream(result)));
+
+ } catch (Exception e) {
+ throw new IOException(e.getMessage(), e);
+ }
+ }
+ }
+
+
+ protected URIResolver getUriResolver(File model, ClassLoader cl) {
+ URIResolver result = null;
+
+ try {
+ Class<?> clazz = Class.forName(getResolver(), true, cl);
+
+ // Try to set the base using the constructor
+ try {
+ // Look for a constructor with a String parameter (base)
+ Constructor<?> withBaseConstructor = clazz.getConstructor(String.class);
+ // Set the xmi folder as the base
+ String base = model.getParentFile().getAbsolutePath();
+ // Instantiate
+ result = (URIResolver) withBaseConstructor.newInstance(base);
+ } catch (Exception eee) {
+ getLog().warn("Unable to instantiate resolver with String parameter",
+ eee);
+ }
+
+ // If resolver is still not created, create it using the default
+ // constructor
+ if (result == null) {
+ result = (URIResolver) clazz.newInstance();
+ }
+
+ if (result instanceof ResourceResolver) {
+ ((ResourceResolver) result).setVerbose(getConfiguration().isVerbose());
+ ((ResourceResolver) result).setCl(cl);
+ if (result instanceof FasterCachedResourceResolver) {
+ boolean offline = getConfiguration().isOffline();
+ getLog().debug("using offline mode ? : " + offline);
+ ((FasterCachedResourceResolver) result).setOffline(offline);
+ }
+ }
+
+ } catch (Exception eee) {
+ getLog().warn("Unable to instantiate resolver using the default constructor", eee);
+ }
+
+ return result;
+ }
+
+
+}
\ No newline at end of file
Property changes on: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseXmiToModelFileWriter.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToObjectModelFileWriter.java
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToObjectModelFileWriter.java (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToObjectModelFileWriter.java 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,116 @@
+package org.nuiton.eugene.plugin.writer;
+
+import org.nuiton.eugene.models.Model;
+import org.nuiton.eugene.models.object.ObjectModel;
+import org.xml.sax.Attributes;
+import org.xml.sax.SAXException;
+import org.xml.sax.helpers.DefaultHandler;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * This {@link org.nuiton.eugene.ModelFileWriter} transform xmi files to object model file.
+ *
+ * @author tchemit
+ * @plexus.component role="org.nuiton.eugene.ModelFileWriter" role-hint="xmi2objectmodel" description="xmi to object model"
+ * @since 2.0.0
+ */
+public class XmiToObjectModelFileWriter extends BaseXmiToModelFileWriter {
+
+
+ public static final String[] XMI_FILE_FILTER = new String[]{"*.xmi", "**/*.xmi"};
+
+ @Override
+ public <M extends Model> boolean acceptModel(Class<M> modelType) {
+ // accept only state models
+ return ObjectModel.class.isAssignableFrom(modelType);
+ }
+
+ @Override
+ public String getExtension() {
+ return "objectmodel";
+ }
+
+ @Override
+ protected String getStyleSheet(File model) {
+ String styleSheet = null;
+
+ String version = getXmiVersion(model);
+ if (version.startsWith("1.")) {
+ styleSheet = "xmi1.2ToObjectModel.xsl";
+ } else if (version.startsWith("2.")) {
+ styleSheet = "xmi2.1ToObjectModel.xsl";
+ } else {
+ getLog().error("Unsupported xmi version [" + version + "]");
+ }
+
+ return styleSheet;
+ }
+
+ /**
+ * Try to find xmi version on a file.
+ *
+ * @param xmiFile file to inspect
+ * @return version or null if version can't have been found
+ */
+ protected String getXmiVersion(File xmiFile) {
+ String version = null;
+
+ SAXParserFactory factory = SAXParserFactory.newInstance();
+
+ try {
+ SAXParser parser = factory.newSAXParser();
+
+ XmiVersionHandler handler = new XmiVersionHandler();
+ parser.parse(xmiFile, handler);
+
+ version = handler.getVersion();
+ } catch (ParserConfigurationException e) {
+ getLog().debug("Can't parse file as xmi", e);
+ } catch (SAXException e) {
+ getLog().debug("Can't parse file as xmi", e);
+ } catch (IOException e) {
+ getLog().debug("Can't parse file as xmi", e);
+ }
+
+ return version;
+ }
+
+ /**
+ * Sax handler to find xmi version into xmi document.
+ */
+ protected class XmiVersionHandler extends DefaultHandler {
+
+ public String version = null;
+
+ public XmiVersionHandler() {
+ super();
+ }
+
+ public String getVersion() {
+ return version;
+ }
+
+ @Override
+ public void startElement(String uri, String localName, String qName,
+ Attributes attributes) throws SAXException {
+
+ if (qName.equals("XMI")) {
+ version = attributes.getValue("xmi.version");
+ getLog().debug("XMI version found : " + version);
+ }
+
+ if (version == null) {
+ version = attributes.getValue("xmi:version");
+ getLog().debug("XMI version found : " + version);
+ }
+
+ }
+ }
+
+
+}
\ No newline at end of file
Property changes on: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToObjectModelFileWriter.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToStateModelFileWriter.java
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToStateModelFileWriter.java (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToStateModelFileWriter.java 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,34 @@
+package org.nuiton.eugene.plugin.writer;
+
+import org.nuiton.eugene.models.Model;
+import org.nuiton.eugene.models.state.StateModel;
+import org.nuiton.plugin.PluginIOContext;
+
+import java.io.File;
+import java.io.IOException;
+import java.util.Map;
+
+/**
+ * @author tchemit
+ * @plexus.component role="org.nuiton.eugene.ModelFileWriter" role-hint="xmi2statemodel" description="xmi to state model"
+ * @since 2.0.0
+ */
+public class XmiToStateModelFileWriter extends BaseXmiToModelFileWriter {
+
+ @Override
+ public <M extends Model> boolean acceptModel(Class<M> modelType) {
+ // accept only state models
+ return StateModel.class.isAssignableFrom(modelType);
+ }
+
+ @Override
+ protected String getExtension() {
+ return "statemodel";
+ }
+
+ @Override
+ protected String getStyleSheet(File model) {
+ //TODO when StateModel will be supported in 2.1, compute the version to resolve the correct stylesheet
+ return "xmi1.2ToStateModel.xsl";
+ }
+}
\ No newline at end of file
Property changes on: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiToStateModelFileWriter.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Added: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoModelFileWriter.java
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoModelFileWriter.java (rev 0)
+++ branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoModelFileWriter.java 2009-11-27 11:29:08 UTC (rev 731)
@@ -0,0 +1,69 @@
+package org.nuiton.eugene.plugin.writer;
+
+import org.nuiton.eugene.models.Model;
+import org.nuiton.plugin.PluginHelper;
+import org.nuiton.plugin.PluginIOContext;
+
+import java.io.File;
+import java.io.IOException;
+
+/**
+ * @author tchemit
+ * @plexus.component role="org.nuiton.eugene.ModelFileWriter" role-hint="zargo2xmi" description="zargo to xmi model"
+ * @since 2.0.0
+ */
+public class ZargoModelFileWriter extends BaseModelFileWriter {
+
+ public static final String[] XMI_FILE_FILTER = new String[]{"*.xmi", "**/*.xmi"};
+
+ @Override
+ public String getInputProtocol() {
+ return "zargo";
+ }
+
+ @Override
+ public <M extends Model> String getOutputProtocol(Class<M> modelType) {
+ // next writer to use is a xmi to model one
+ return "xmi";
+ }
+
+ @Override
+ public <M extends Model> boolean acceptModel(Class<M> modelType) {
+ // accept all models
+ return true;
+ }
+
+ @Override
+ public boolean acceptInclude(String include) {
+ return include.startsWith("zargo:") || include.endsWith(".zargo") || include.endsWith(".zuml");
+ }
+
+ @Override
+ public String getDefaultIncludes() {
+ return "**/*.zargo";
+ }
+
+ @Override
+ public String getDefaultInputDirectory() {
+ return "src/main/xmi";
+ }
+
+ @Override
+ public String getDefaultOutputDirectory() {
+ return "xmi";
+ }
+
+ @Override
+ public void generate(File outputDir, File inputDirectory, String includePattern, boolean overwrite) throws IOException {
+
+ PluginIOContext ioContext = new PluginIOContext();
+ ioContext.setInput(inputDirectory);
+ ioContext.setOutput(outputDir);
+
+ getLog().info("Expanding xmi from " + inputDirectory + " : " + includePattern);
+ PluginHelper.expandFiles(ioContext, new String[]{includePattern}, null, XMI_FILE_FILTER, overwrite);
+
+ getLog().info("Copying resources from " + inputDirectory + " : " + includePattern);
+ PluginHelper.copyFiles(ioContext, null, new String[]{includePattern}, overwrite);
+ }
+}
Property changes on: branches/eugene-2.0/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoModelFileWriter.java
___________________________________________________________________
Added: svn:keywords
+ "Author Date Id Revision HeadURL
Modified: branches/eugene-2.0/maven-eugene-plugin/src/main/resources/log4j.properties
===================================================================
--- branches/eugene-2.0/maven-eugene-plugin/src/main/resources/log4j.properties 2009-11-27 10:00:00 UTC (rev 730)
+++ branches/eugene-2.0/maven-eugene-plugin/src/main/resources/log4j.properties 2009-11-27 11:29:08 UTC (rev 731)
@@ -6,3 +6,4 @@
log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n
# package level
log4j.logger.org.nuiton=INFO
+#log4j.logger.org.nuiton.eugene=DEBUG
1
0
Author: tchemit
Date: 2009-11-27 11:00:00 +0100 (Fri, 27 Nov 2009)
New Revision: 730
Modified:
branches/eugene-2.0/
branches/eugene-2.0/pom.xml
Log:
- ajout des marqueurs plexus sur les implantations de mod?\195?\168les
- ajout log4J en test
Property changes on: branches/eugene-2.0
___________________________________________________________________
Modified: svn:ignore
- target
.settings
bin
.classpath
.project
+ target
.settings
bin
.classpath
.project
*.iml
*.ipr
*.iws
Modified: branches/eugene-2.0/pom.xml
===================================================================
--- branches/eugene-2.0/pom.xml 2009-11-27 09:54:35 UTC (rev 729)
+++ branches/eugene-2.0/pom.xml 2009-11-27 10:00:00 UTC (rev 730)
@@ -220,6 +220,14 @@
<scope>test</scope>
</dependency>
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <version>1.2.14</version>
+ <scope>test</scope>
+ </dependency>
+
+
</dependencies>
</dependencyManagement>
@@ -248,6 +256,7 @@
<!--Multilanguage maven-site -->
<maven.site.locales>en,fr</maven.site.locales>
+ <defaultLocale>en</defaultLocale>
</properties>
<build>
@@ -274,6 +283,12 @@
<version>${processor.version}</version>
</plugin>
+ <plugin>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-component-metadata</artifactId>
+ <version>1.4.0</version>
+ </plugin>
+
</plugins>
</pluginManagement>
1
0
r729 - in branches/eugene-2.0/eugene: . src/main/java/org/nuiton/eugene/models src/main/java/org/nuiton/eugene/models/object src/main/java/org/nuiton/eugene/models/object/xml src/main/java/org/nuiton/eugene/models/state src/main/java/org/nuiton/eugene/models/state/xml
by tchemit@users.nuiton.org 27 Nov '09
by tchemit@users.nuiton.org 27 Nov '09
27 Nov '09
Author: tchemit
Date: 2009-11-27 10:54:35 +0100 (Fri, 27 Nov 2009)
New Revision: 729
Modified:
branches/eugene-2.0/eugene/pom.xml
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/Model.java
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/state/StateModel.java
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java
Log:
- ajout des marqueurs plexus sur les implantations de mod?\195?\168les
- ajout des annotations Override quand n?\195?\169cessaire
- nettoyage des contrats (pas d'abstract, public, static ou autre) : tout est public et toutes les variables sont static finales
- ajout log4J en test
Modified: branches/eugene-2.0/eugene/pom.xml
===================================================================
--- branches/eugene-2.0/eugene/pom.xml 2009-11-27 09:50:19 UTC (rev 728)
+++ branches/eugene-2.0/eugene/pom.xml 2009-11-27 09:54:35 UTC (rev 729)
@@ -89,6 +89,12 @@
<artifactId>junit</artifactId>
<scope>test</scope>
</dependency>
+
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ <scope>test</scope>
+ </dependency>
</dependencies>
@@ -223,6 +229,19 @@
<filters>org.nuiton.processor.filters.GeneratorTemplatesFilter</filters>
</configuration>
</plugin>
+
+ <!-- expose new plexus components -->
+ <plugin>
+ <groupId>org.codehaus.plexus</groupId>
+ <artifactId>plexus-component-metadata</artifactId>
+ <executions>
+ <execution>
+ <goals>
+ <goal>generate-metadata</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
</plugins>
</build>
Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/Model.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/Model.java 2009-11-27 09:50:19 UTC (rev 728)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/Model.java 2009-11-27 09:54:35 UTC (rev 729)
@@ -32,18 +32,23 @@
public interface Model {
/**
+ * Plexus role name
+ */
+ String ROLE_NAME = Model.class.getName();
+
+ /**
* Returns the name of this model.
*
* @return the name of this model.
*/
- public abstract String getName();
+ String getName();
/**
* Returns the version of this model.
*
* @return the version of this model.
*/
- public abstract String getVersion();
+ String getVersion();
/**
* Returns the tagValues associated with this element.
@@ -51,7 +56,7 @@
*
* @return a Map containing all tagValues associated with this element
*/
- public abstract Map<String, String> getTagValues();
+ Map<String, String> getTagValues();
/**
* Returns the tagValue corresponding to the given name, or null if the element has no associated tagValue for this name.
@@ -59,6 +64,6 @@
* @param tagValue tag value key
* @return the value of the found tagValue, or null if the element has no associated tagValue for this name.
*/
- public abstract String getTagValue(String tagValue);
+ String getTagValue(String tagValue);
} //Model
Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java 2009-11-27 09:50:19 UTC (rev 728)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java 2009-11-27 09:54:35 UTC (rev 729)
@@ -47,7 +47,7 @@
*
* @return a Collection containing all ObjectModelClassifier for this model.
*/
- public Collection<ObjectModelClassifier> getClassifiers();
+ Collection<ObjectModelClassifier> getClassifiers();
/**
* Returns the classifier corresponding to the given qualified name, or null if the model contains no classifier for this qualified name.
@@ -55,8 +55,7 @@
*
* @return the ObjectModelClassifier of the found classifier, or null if the model contains no classifier for this qualified name.
*/
- public ObjectModelClassifier getClassifier(
- String qualifiedClassifierName);
+ ObjectModelClassifier getClassifier(String qualifiedClassifierName);
/**
* Returns all classes defined in this model. (Except innerClasses)
@@ -64,7 +63,7 @@
*
* @return a Collection containing all ObjectModelClass for this model.
*/
- public Collection<ObjectModelClass> getClasses();
+ Collection<ObjectModelClass> getClasses();
/**
* Returns the class corresponding to the given qualified name, or null if the model contains no class for this qualified name.
@@ -72,7 +71,7 @@
*
* @return the ObjectModelClass of the found class, or null if the model contains no class for this qualified name.
*/
- public ObjectModelClass getClass(String qualifiedClassName);
+ ObjectModelClass getClass(String qualifiedClassName);
/**
@@ -81,7 +80,7 @@
*
* @return true if the class has been found.
*/
- public boolean hasClass(String qualifiedClassName);
+ boolean hasClass(String qualifiedClassName);
/**
* Returns all interfaces defined in this model.
@@ -89,7 +88,7 @@
*
* @return a Collection containing all ObjectModelInterface for this model.
*/
- public Collection<ObjectModelInterface> getInterfaces();
+ Collection<ObjectModelInterface> getInterfaces();
/**
* Returns the interface corresponding to the given qualified name, or null if the model contains no interface for this qualified name.
@@ -97,8 +96,7 @@
*
* @return the ObjectModelInterface of the found interface, or null if the model contains no interface for this qualified name.
*/
- public ObjectModelInterface getInterface(
- String qualifiedInterfaceName);
+ ObjectModelInterface getInterface(String qualifiedInterfaceName);
/**
@@ -107,21 +105,21 @@
*
* @return a Collection containing all ObjectModelEnumeration for this model.
*/
- public Collection<ObjectModelEnumeration> getEnumerations();
+ Collection<ObjectModelEnumeration> getEnumerations();
/**
* Return the enumeration corresponding to the given qualified name
* @param qualifiedEnumerationName
* @return the ObjectModelEnumeration of the found enumeration or null if the model contains no enumeration for this qualified name.
*/
- public ObjectModelEnumeration getEnumeration(String qualifiedEnumerationName);
+ ObjectModelEnumeration getEnumeration(String qualifiedEnumerationName);
/**
* Returns all comments not lied to a particular model element
*
* @return a List containing all comments for this model as Strings.
*/
- public List<String> getComments();
+ List<String> getComments();
/**
* Get the extension associated to the reference (unique)
@@ -132,7 +130,7 @@
* @throws ClassCastException when extensionClass is not valid
* @throws IllegalArgumentException for non existing extension with reference
*/
- public <O> O getExtension(String reference, Class<O> extensionClass)
+ <O> O getExtension(String reference, Class<O> extensionClass)
throws ClassCastException, IllegalArgumentException;
} //ObjectModel
Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java 2009-11-27 09:50:19 UTC (rev 728)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java 2009-11-27 09:54:35 UTC (rev 729)
@@ -49,6 +49,8 @@
*
* Last update : $Date$
* by : $Author$
+ *
+ * @plexus.component role="org.nuiton.eugene.models.Model" role-hint="objectmodel" description="Object model implementation"
*/
public class ObjectModelImpl implements ObjectModel {
@@ -142,6 +144,7 @@
*
* @return the name of this model.
*/
+ @Override
public String getName() {
return name;
}
@@ -153,6 +156,7 @@
*
* @return a Collection containing all ObjectModelClassifier for this model.
*/
+ @Override
public Collection<ObjectModelClassifier> getClassifiers() {
return classifiers.values();
}
@@ -167,6 +171,7 @@
* @return the ObjectModelClassifier of the found classifier, or null if the
* model contains no classifier for this qualified name.
*/
+ @Override
public ObjectModelClassifier getClassifier(String qualifiedClassifierName) {
return (qualifiedClassifierName == null ? null
: (ObjectModelClassifier) classifiers.get(qualifiedClassifierName));
@@ -179,6 +184,7 @@
*
* @return a Collection containing all ObjectModelClass for this model.
*/
+ @Override
public Collection<ObjectModelClass> getClasses() {
return classes.values();
}
@@ -207,11 +213,7 @@
return classes.get(qualifiedClassName);
}
- /*
- * (non-Javadoc)
- *
- * @see org.nuiton.eugene.models.object.ObjectModel#hasClass(java.lang.String)
- */
+ @Override
public boolean hasClass(String qualifiedClassName) {
boolean hasClass = classes.containsKey(qualifiedClassName);
return hasClass;
@@ -252,6 +254,7 @@
* @return the ObjectModelInterface of the found interface, or null if the
* model contains no interface for this qualified name.
*/
+ @Override
public ObjectModelInterface getInterface(String qualifiedInterfaceName) {
ObjectModelInterface result = null;
result = (ObjectModelInterface) interfaces.get(qualifiedInterfaceName);
@@ -268,6 +271,7 @@
*
* @return a Collection containing all ObjectModelInterface for this model.
*/
+ @Override
public Collection<ObjectModelInterface> getInterfaces() {
return interfaces.values();
}
@@ -297,6 +301,7 @@
*
* @return a List containing all comments for this model as Strings.
*/
+ @Override
public List<String> getComments() {
return comments;
}
@@ -427,8 +432,7 @@
private boolean contains(Collection<ObjectModelAttribute> coll,
ObjectModelAttributeImpl toFind) {
- for (Iterator<ObjectModelAttribute> it = coll.iterator(); it.hasNext();) {
- ObjectModelAttribute attribute = it.next();
+ for (ObjectModelAttribute attribute : coll) {
if (attribute.getName().equals(toFind.getName())) { // Seul le nom
// de l'attribut
// compte
@@ -463,6 +467,7 @@
*
* @return a Map containing all tagValues associated with this element
*/
+ @Override
public Map<String, String> getTagValues() {
return tagValues;
}
@@ -474,6 +479,7 @@
* @return the value of the found tagValue, or null if the element has no
* associated tagValue for this name.
*/
+ @Override
public String getTagValue(String tagValue) {
return (tagValue == null ? null : (String) tagValues.get(tagValue));
}
Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/state/StateModel.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/state/StateModel.java 2009-11-27 09:50:19 UTC (rev 728)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/state/StateModel.java 2009-11-27 09:54:35 UTC (rev 729)
@@ -40,6 +40,6 @@
* Return the collection of charts
* @return collection of charts
*/
- public abstract List<StateModelStateChart> getStateCharts();
+ List<StateModelStateChart> getStateCharts();
}
Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java 2009-11-27 09:50:19 UTC (rev 728)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java 2009-11-27 09:54:35 UTC (rev 729)
@@ -36,6 +36,8 @@
*
* Last update : $Date$
* By : $Author$
+ *
+ * @plexus.component role="org.nuiton.eugene.models.Model" role-hint="statemodel" description="State model implementation"
*/
public class StateModelImpl implements StateModel {
@@ -68,9 +70,7 @@
modelTagValues = new HashMap<String, String>();
}
- /*
- * @see org.nuiton.eugene.models.state.StateModel#getName()
- */
+ @Override
public String getName() {
return this.name;
}
@@ -99,9 +99,7 @@
listStateCharts.add(chart);
}
- /*
- * @see org.nuiton.eugene.models.state.StateModel#getStateCharts()
- */
+ @Override
public List<StateModelStateChart> getStateCharts() {
return listStateCharts;
}
@@ -114,9 +112,7 @@
listStateCharts.addAll(charts);
}
- /*
- * @see org.nuiton.eugene.models.state.StateModel#getTagValues()
- */
+ @Override
public Map<String, String> getTagValues() {
return modelTagValues;
}
@@ -137,6 +133,7 @@
* @return the value of the found tagValue, or null if the element has no
* associated tagValue for this name.
*/
+ @Override
public String getTagValue(String key) {
return (key == null ? null : (String) modelTagValues.get(key));
}
@@ -144,7 +141,7 @@
/**
* Set model version.
*
- * @param name model version
+ * @param version model version
*/
public void setVersion(String version) {
this.version = version;
1
0
r728 - branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object
by tchemit@users.nuiton.org 27 Nov '09
by tchemit@users.nuiton.org 27 Nov '09
27 Nov '09
Author: tchemit
Date: 2009-11-27 10:50:19 +0100 (Fri, 27 Nov 2009)
New Revision: 728
Removed:
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/builder/
Log:
remove empty directory
1
0
r727 - branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene
by tchemit@users.nuiton.org 27 Nov '09
by tchemit@users.nuiton.org 27 Nov '09
27 Nov '09
Author: tchemit
Date: 2009-11-27 10:49:21 +0100 (Fri, 27 Nov 2009)
New Revision: 727
Modified:
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelReader.java
Log:
ajout TODO : deux m?\195?\169thodes au lieu d'une...
Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelReader.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2009-11-27 09:48:23 UTC (rev 726)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2009-11-27 09:49:21 UTC (rev 727)
@@ -21,13 +21,14 @@
package org.nuiton.eugene;
-import java.io.File;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.eugene.models.Model;
+import java.io.File;
+
/**
- * FileReader
+ * FileReader TODO real doc :)
*
* Created: 26 oct. 2009
*
@@ -59,7 +60,10 @@
public long getLastModifiedSource() {
return lastModifiedSource;
}
-
+
+ //TODO-TC : il vaut mieux directement un type dit variable
+ // example : public abstract M read(File... file) {}
+
public M read(File file) {
return read(new File[] { file });
}
1
0
r726 - branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene
by tchemit@users.nuiton.org 27 Nov '09
by tchemit@users.nuiton.org 27 Nov '09
27 Nov '09
Author: tchemit
Date: 2009-11-27 10:48:23 +0100 (Fri, 27 Nov 2009)
New Revision: 726
Modified:
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/StateModelGenerator.java
Log:
reformat
Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/StateModelGenerator.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/StateModelGenerator.java 2009-11-27 09:46:35 UTC (rev 725)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/StateModelGenerator.java 2009-11-27 09:48:23 UTC (rev 726)
@@ -19,38 +19,40 @@
package org.nuiton.eugene;
-import java.io.File;
-import java.io.IOException;
-import java.io.StringWriter;
-import java.io.Writer;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.eugene.models.state.StateModel;
import org.nuiton.eugene.models.state.StateModelState;
import org.nuiton.eugene.models.state.StateModelStateChart;
+import java.io.File;
+import java.io.IOException;
+import java.io.StringWriter;
+import java.io.Writer;
+
/**
* StateModelGenerator.
- *
+ * <p/>
* Pour utiliser ce type de générateur, il faut implanter au moins une des
* méthodes generateFrom... et le getFilenameFor... associé si l'on souhaite un
* nom de fichier convenable. Si dans une méthode generateFrom... on utilise pas
* le writer (output) alors aucun fichier n'est généré.
- *
+ * <p/>
* Le nom de l'argument writer doit absolument etre output et pas autre chose si
* vous souhaitez utiliser le processeur
- * {@link org.codelutin.processor.filters.GeneratorTemplatesFilter} pour vous
+ * {@code org.nuiton.processor.filters.GeneratorTemplatesFilter} pour vous
* s'implifier l'écriture des templates.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$ By : $Author$
+ * <p/>
+ * Last update : $Date$ By : $Author$
*/
public class StateModelGenerator extends AbstractGenerator<StateModel> {
- /** Logger for this class */
+ /**
+ * Logger for this class
+ */
private static Log log = LogFactory.getLog(StateModelGenerator.class);
/**
@@ -61,8 +63,8 @@
}
/**
- * Constructor with parent generator.
- *
+ * Constructor with parent generator.
+ *
* @param parent parent generator
*/
public StateModelGenerator(AbstractGenerator<StateModel> parent) {
@@ -93,9 +95,9 @@
* Par défaut, appel {@link #generateFromModel(MonitorWriter, org.nuiton.eugene.models.state.StateModel)} pour le
* model et {@link #generateFromState(Writer,StateModelState)} pour tous les
* etats du modele.
- *
+ *
* @param stateModel Le modele d'état
- * @param destDir le dossier de destination
+ * @param destDir le dossier de destination
* @throws IOException
*/
@Override
@@ -153,35 +155,34 @@
/**
* Test if given element can be generated.
- *
+ *
* @param chart chart to test
* @return generation allowed
*/
protected boolean canGenerateElement(StateModelStateChart chart) {
-
+
boolean canGenerate = true;
// disabled until tested
//String chartPackage = chart.getPackageName();
//canGenerate = super.canGeneratePackage(chartPackage);
-
+
return canGenerate;
}
/**
* Generate model code
- *
+ *
* @param monitorOut
* @param stateModel
*/
- protected void generateFromModel(MonitorWriter monitorOut,
- StateModel stateModel) {
+ protected void generateFromModel(MonitorWriter monitorOut, StateModel stateModel) {
}
/**
* Return filename from model
- *
+ *
* @param stateModel
* @return model file name
*/
@@ -191,28 +192,23 @@
/**
* Return filename from state
- *
- * @param state
- * the state
+ *
+ * @param state the state
* @param packageName
* @return the filename
*/
public String getFilenameFromState(StateModelState state, String packageName) {
- return (packageName + '.' + state.getName()).replace('.',
- File.separatorChar);
+ return (packageName + '.' + state.getName()).replace('.', File.separatorChar);
}
/**
* Generate a state code
- *
- * @param monitorOut
- * the output writer
- * @param state
- * the state
+ *
+ * @param monitorOut the output writer
+ * @param state the state
* @throws IOException
*/
- public void generateFromState(Writer monitorOut, StateModelState state)
- throws IOException {
+ public void generateFromState(Writer monitorOut, StateModelState state) throws IOException {
}
}
1
0