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
November 2009
- 3 participants
- 57 discussions
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
r725 - 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:46:35 +0100 (Fri, 27 Nov 2009)
New Revision: 725
Modified:
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/Template.java
Log:
les methodes abstraites en haut :)
Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/Template.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/Template.java 2009-11-26 20:06:51 UTC (rev 724)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/Template.java 2009-11-27 09:46:35 UTC (rev 725)
@@ -20,19 +20,20 @@
package org.nuiton.eugene;
+import org.apache.commons.lang.StringUtils;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.models.Model;
+
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Properties;
-import org.apache.commons.lang.StringUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.nuiton.eugene.models.Model;
-
/**
- * Generator.
+ * Generator. TODO javadoc
*
* Created: 5 août 2004
*
@@ -75,7 +76,13 @@
/** Model */
protected M model;
+
@Deprecated
+ public abstract void generate(File[] file, File destDir);
+
+ public abstract void applyTemplate(M model, File destDir) throws IOException;
+
+ @Deprecated
public void setOverwrite(boolean v) {
//overwrite = v;
properties.setProperty(PROP_OVERWRITE, String.valueOf(v));
@@ -126,10 +133,12 @@
if (generatedPackages == null) {
generatedPackages = new ArrayList<String>();
String genPackages = getProperty(PROP_GENERATED_PACKAGES);
- if (!StringUtils.isEmpty(genPackages)) {
- for (String s : genPackages.split(",")) {
- generatedPackages.add(s);
- }
+ if (!StringUtils.isEmpty(genPackages)) {
+ //TC-20091125 avoid manual array copy
+ generatedPackages.addAll(Arrays.asList(genPackages.split(",")));
+// for (String s : genPackages.split(",")) {
+// generatedPackages.add(s);
+// }
}
}
return this.generatedPackages;
@@ -149,9 +158,11 @@
excludeTemplates = new ArrayList<String>();
String excludes = getProperty(PROP_EXCLUDE_TEMPLATES);
if (!StringUtils.isEmpty(excludes)) {
- for (String s : excludes.split(",")) {
- excludeTemplates.add(s);
- }
+ //TC-20091125 avoid manual array copy
+ excludeTemplates.addAll(Arrays.asList(excludes.split(",")));
+// for (String s : excludes.split(",")) {
+// excludeTemplates.add(s);
+// }
}
}
return excludeTemplates;
@@ -166,9 +177,4 @@
return this.model;
}
- @Deprecated
- public abstract void generate(File[] file, File destDir);
-
- public abstract void applyTemplate(M model, File destDir) throws IOException;
-
}
1
0
r724 - branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene
by tchemit@users.nuiton.org 26 Nov '09
by tchemit@users.nuiton.org 26 Nov '09
26 Nov '09
Author: tchemit
Date: 2009-11-26 21:06:51 +0100 (Thu, 26 Nov 2009)
New Revision: 724
Modified:
branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
Log:
- add convertVariableNameToConstantName from Topia, can be used in eugene too (not Topia specific)
- remove a @see javadoc annotation on a test class
Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
===================================================================
--- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2009-11-25 11:39:03 UTC (rev 723)
+++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2009-11-26 20:06:51 UTC (rev 724)
@@ -20,25 +20,14 @@
package org.nuiton.eugene;
+import org.apache.commons.lang.StringUtils;
+import org.nuiton.eugene.models.Model;
+import org.nuiton.eugene.models.object.*;
+
import java.io.File;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.HashSet;
-import java.util.Iterator;
-import java.util.List;
-
-import java.util.Set;
+import java.util.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
-import org.apache.commons.lang.StringUtils;
-import org.nuiton.eugene.models.Model;
-import org.nuiton.eugene.models.object.ObjectModel;
-import org.nuiton.eugene.models.object.ObjectModelAttribute;
-import org.nuiton.eugene.models.object.ObjectModelClass;
-import org.nuiton.eugene.models.object.ObjectModelClassifier;
-import org.nuiton.eugene.models.object.ObjectModelElement;
-import org.nuiton.eugene.models.object.ObjectModelOperation;
-import org.nuiton.eugene.models.object.ObjectModelParameter;
/**
* GeneratorUtil.
@@ -594,7 +583,7 @@
/**
* Suppress packageName from a fullQualifiedName, even if it contains List, Map or other generics.
* See JUnit test for matching expressions.
- * @see org.nuiton.eugene.GeneratorUtilTest
+ * //@see org.nuiton.eugene.GeneratorUtilTest
* @param str FullQualifiedName for an attribute type (for exemple)
* @return the simple name associated to the str given
*/
@@ -642,4 +631,33 @@
return results;
}
+ /**
+ * Convertit un nom de variable en nom de constante.
+ *
+ * @param variableName le nom de variable a convertir
+ * @return le nom de la constante à partir du nom de la variable
+ */
+ public static String convertVariableNameToConstantName(String variableName) {
+ //TODO Faire des tests pour savoir si variableName est non null et valide
+ //TODO Ameliorer l'algo pour tenir compte des caractères non alpha
+ //TODO pour le moment cela convient, donc...
+ StringBuilder buffer = new StringBuilder();
+ boolean lastCarIsUp = false;
+ for (int i = 0, j = variableName.length(); i < j; i++) {
+ char c = variableName.charAt(i);
+ boolean carIsUp = Character.isUpperCase(c);
+ if (i > 0 && !lastCarIsUp && carIsUp) {
+ // ajout d'un _
+ buffer.append('_');
+ }
+ if (carIsUp) {
+ buffer.append(c);
+ } else {
+ buffer.append(Character.toUpperCase(c));
+ }
+ lastCarIsUp = carIsUp;
+ }
+ return buffer.toString();
+ }
+
} // GeneratorUtil
1
0
r723 - in trunk: eugene/src/site maven-eugene-plugin/src/site src/site
by fdesbois@users.nuiton.org 25 Nov '09
by fdesbois@users.nuiton.org 25 Nov '09
25 Nov '09
Author: fdesbois
Date: 2009-11-25 12:39:03 +0100 (Wed, 25 Nov 2009)
New Revision: 723
Removed:
trunk/eugene/src/site/fr/
trunk/maven-eugene-plugin/src/site/fr/
trunk/src/site/fr/
Log:
delete old folders from previous site hierarchy
1
0
r722 - in trunk: . eugene/src/site eugene/src/site/fr/rst eugene/src/site/rst maven-eugene-plugin/src/site src/site src/site/fr/resources/images src/site/fr/resources/models src/site/fr/resources/xmi src/site/fr/rst src/site/resources src/site/resources/images src/site/resources/models src/site/resources/xmi src/site/rst
by fdesbois@users.nuiton.org 25 Nov '09
by fdesbois@users.nuiton.org 25 Nov '09
25 Nov '09
Author: fdesbois
Date: 2009-11-25 12:37:26 +0100 (Wed, 25 Nov 2009)
New Revision: 722
Added:
trunk/eugene/src/site/rst/
trunk/eugene/src/site/rst/index.rst
trunk/eugene/src/site/site.xml
trunk/maven-eugene-plugin/src/site/site.xml
trunk/src/site/resources/
trunk/src/site/resources/images/
trunk/src/site/resources/images/Hotel.objectmodel.png
trunk/src/site/resources/images/Hotel.png
trunk/src/site/resources/images/ObjectModel.png
trunk/src/site/resources/images/ObjectModel_Generator.png
trunk/src/site/resources/images/ObjectModel_Interfaces.png
trunk/src/site/resources/images/StateModel.png
trunk/src/site/resources/images/plugin_choix.png
trunk/src/site/resources/images/plugin_menu.png
trunk/src/site/resources/images/plugin_newdepot.png
trunk/src/site/resources/images/plugin_typeinstall.png
trunk/src/site/resources/images/plugin_utilisation_editeur.png
trunk/src/site/resources/models/
trunk/src/site/resources/models/buix.guix
trunk/src/site/resources/models/exemple.topiaModel
trunk/src/site/resources/xmi/
trunk/src/site/resources/xmi/ObjectModel.zuml
trunk/src/site/resources/xmi/objectmodel.zargo
trunk/src/site/rst/
trunk/src/site/rst/DevUIDoc.rst
trunk/src/site/rst/DiscussionSurTypeDeGeneration.rst
trunk/src/site/rst/FAQ.rst
trunk/src/site/rst/ObjectModel.rst
trunk/src/site/rst/Todo.rst
trunk/src/site/rst/index.rst
trunk/src/site/rst/maven-plugin.rst
trunk/src/site/rst/plugineclipse.rst
trunk/src/site/site.xml
Removed:
trunk/eugene/src/site/fr/rst/index.rst
trunk/eugene/src/site/site_fr.xml
trunk/maven-eugene-plugin/src/site/site_fr.xml
trunk/src/site/fr/resources/images/Hotel.objectmodel.png
trunk/src/site/fr/resources/images/Hotel.png
trunk/src/site/fr/resources/images/ObjectModel.png
trunk/src/site/fr/resources/images/ObjectModel_Generator.png
trunk/src/site/fr/resources/images/ObjectModel_Interfaces.png
trunk/src/site/fr/resources/images/StateModel.png
trunk/src/site/fr/resources/images/plugin_choix.png
trunk/src/site/fr/resources/images/plugin_menu.png
trunk/src/site/fr/resources/images/plugin_newdepot.png
trunk/src/site/fr/resources/images/plugin_typeinstall.png
trunk/src/site/fr/resources/images/plugin_utilisation_editeur.png
trunk/src/site/fr/resources/models/buix.guix
trunk/src/site/fr/resources/models/exemple.topiaModel
trunk/src/site/fr/resources/xmi/ObjectModel.zuml
trunk/src/site/fr/resources/xmi/objectmodel.zargo
trunk/src/site/fr/rst/DevUIDoc.rst
trunk/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst
trunk/src/site/fr/rst/FAQ.rst
trunk/src/site/fr/rst/ObjectModel.rst
trunk/src/site/fr/rst/Todo.rst
trunk/src/site/fr/rst/index.rst
trunk/src/site/fr/rst/maven-plugin.rst
trunk/src/site/fr/rst/plugineclipse.rst
trunk/src/site/site_fr.xml
Modified:
trunk/eugene/src/site/site_en.xml
trunk/maven-eugene-plugin/src/site/site_en.xml
trunk/pom.xml
trunk/src/site/site_en.xml
Log:
Change site hierarchy
Deleted: trunk/eugene/src/site/fr/rst/index.rst
===================================================================
--- trunk/eugene/src/site/fr/rst/index.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/eugene/src/site/fr/rst/index.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,7 +0,0 @@
-======
-Eugene
-======
-
-Voir details sur le site `parent`_
-
-.. _parent: ../../fr/index.html
Copied: trunk/eugene/src/site/rst/index.rst (from rev 719, trunk/eugene/src/site/fr/rst/index.rst)
===================================================================
--- trunk/eugene/src/site/rst/index.rst (rev 0)
+++ trunk/eugene/src/site/rst/index.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,7 @@
+======
+Eugene
+======
+
+Voir details sur le site `parent`_
+
+.. _parent: ../index.html
Copied: trunk/eugene/src/site/site.xml (from rev 719, trunk/eugene/src/site/site_fr.xml)
===================================================================
--- trunk/eugene/src/site/site.xml (rev 0)
+++ trunk/eugene/src/site/site.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,19 @@
+<?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>
Property changes on: trunk/eugene/src/site/site.xml
___________________________________________________________________
Added: svn:mergeinfo
+
Modified: trunk/eugene/src/site/site_en.xml
===================================================================
--- trunk/eugene/src/site/site_en.xml 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/eugene/src/site/site_en.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -10,6 +10,10 @@
<breadcrumbs>
<item name="${project.name}" href="index.html" />
</breadcrumbs>
+
+ <menu name="Parent">
+ <item href="../../index.html" name="${project.parent.name}"/>
+ </menu>
<menu ref="reports"/>
Deleted: trunk/eugene/src/site/site_fr.xml
===================================================================
--- trunk/eugene/src/site/site_fr.xml 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/eugene/src/site/site_fr.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,17 +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="reports"/>
-
- </body>
-</project>
Added: trunk/maven-eugene-plugin/src/site/site.xml
===================================================================
--- trunk/maven-eugene-plugin/src/site/site.xml (rev 0)
+++ trunk/maven-eugene-plugin/src/site/site.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,19 @@
+<?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-25 11:36:25 UTC (rev 721)
+++ trunk/maven-eugene-plugin/src/site/site_en.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -11,6 +11,10 @@
<item name="${project.name}" href="index.html" />
</breadcrumbs>
+ <menu name="Parent">
+ <item href="../../index.html" name="${project.parent.name}"/>
+ </menu>
+
<menu ref="reports"/>
</body>
Deleted: trunk/maven-eugene-plugin/src/site/site_fr.xml
===================================================================
--- trunk/maven-eugene-plugin/src/site/site_fr.xml 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/maven-eugene-plugin/src/site/site_fr.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,17 +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="reports"/>
-
- </body>
-</project>
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/pom.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -246,29 +246,12 @@
<!--Multilanguage maven-site -->
<maven.site.locales>fr,en</maven.site.locales>
-
+ <defaultLocale>fr</defaultLocale>
</properties>
<build>
<defaultGoal>install</defaultGoal>
- <plugins>
- <plugin>
- <groupId>org.nuiton</groupId>
- <artifactId>maven-helper-plugin</artifactId>
- <executions>
- <execution>
- <id>generate-site-index</id>
- <goals>
- <goal>generate-site-index</goal>
- </goals>
- <configuration>
- <locales>${maven.site.locales}</locales>
- </configuration>
- </execution>
- </executions>
- </plugin>
- </plugins>
<pluginManagement>
<plugins>
Deleted: trunk/src/site/fr/resources/images/Hotel.objectmodel.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/Hotel.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/ObjectModel.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/ObjectModel_Generator.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/ObjectModel_Interfaces.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/StateModel.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/plugin_choix.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/plugin_menu.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/plugin_newdepot.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/plugin_typeinstall.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/images/plugin_utilisation_editeur.png
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/models/buix.guix
===================================================================
--- trunk/src/site/fr/resources/models/buix.guix 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/resources/models/buix.guix 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,409 +0,0 @@
-<GuixApplication id="Application">
- <properties>
- <property name="name" type="String"><value>Buix Application</value></property>
- </properties>
- <WidgetWindow id="GuixWindow">
- <properties>
- <property name="name" type="String"><value>Buix</value></property>
- <property name="title" type="String"><value>Application Buix</value></property>
- <property name="x" type="int"><value>50</value></property>
- <property name="y" type="int"><value>50</value></property>
- <property name="width" type="int"><value>1000</value></property>
- <property name="height" type="int"><value>800</value></property>
- <property name="menubar" type="ComponentResource"><value>MenuBar</value></property>
- </properties>
- <signals>
- <signal name="closing" argument="false" handler="onClosing"/>
- </signals>
- <children>
- <child>
- <WidgetContainer id="GuixGridBag">
- <properties>
- <property name="name" type="String"><value>vbox</value></property>
- </properties>
- <children>
- <child>
- <layout>
- <property name="x" type="int"><value>0</value></property>
- <property name="y" type="int"><value>1</value></property>
- <property name="weightx" type="double"><value>1.0</value></property>
- <property name="weighty" type="double"><value>1.0</value></property>
- </layout>
- <WidgetContainer id="GuixSpliter">
- <properties>
- <property name="name" type="String"><value>verticalSpliter</value></property>
- <property name="orientation" type="Enum"><value><enum type="int" select="0"><item>0</item><item>1</item></enum></value></property>
- <property name="dividerSize" type="int"><value>9</value></property>
- <property name="express" type="boolean"><value>true</value></property>
- </properties>
- <children>
- <child>
- <layout>
- <property name="position" type="Enum"><value><enum type="String" select="3"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
- </layout>
- <WidgetContainer id="GuixScrollPane">
- <properties>
- <property name="name" type="String"><value>scrollTree</value></property>
- </properties>
- <children>
- <child>
- <WidgetComponent id="GuixTree">
- <properties>
- <property name="name" type="String"><value>tree</value></property>
- </properties>
- <signals>
- <signal name="clicked" argument="false" handler="onTreeClicked"/>
- </signals>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <layout>
- <property name="position" type="Enum"><value><enum type="String" select="2"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
- </layout>
- <WidgetContainer id="GuixSpliter">
- <properties>
- <property name="name" type="String"><value>horizontalSpliter</value></property>
- <property name="orientation" type="Enum"><value><enum type="int" select="1"><item>0</item><item>1</item></enum></value></property>
- <property name="dividerSize" type="int"><value>9</value></property>
- <property name="express" type="boolean"><value>true</value></property>
- </properties>
- <children>
- <child>
- <layout>
- <property name="position" type="Enum"><value><enum type="String" select="1"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
- </layout>
- <WidgetContainer id="GuixTabbedPane">
- <properties>
- <property name="name" type="String"><value>tabProperties</value></property>
- <property name="childCount" type="int"><value>3</value></property>
- </properties>
- <children>
- <child>
- <layout>
- <property name="text" type="String"><value>Properties</value></property>
- <property name="position" type="int"><value>0</value></property>
- </layout>
- <WidgetContainer id="GuixScrollPane">
- <properties>
- <property name="name" type="String"><value>scrollProperties</value></property>
- </properties>
- <children>
- <child>
- <WidgetComponent id="GuixTable">
- <properties>
- <property name="name" type="String"><value>tableProperties</value></property>
- </properties>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <layout>
- <property name="position" type="int"><value>1</value></property>
- <property name="text" type="String"><value>Container Properties</value></property>
- </layout>
- <WidgetContainer id="GuixScrollPane">
- <properties>
- <property name="name" type="String"><value>scrollContainerProperties</value></property>
- </properties>
- <children>
- <child>
- <WidgetComponent id="GuixTable">
- <properties>
- <property name="name" type="String"><value>tableContainerProperties</value></property>
- </properties>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <layout>
- <property name="text" type="String"><value>Signals</value></property>
- <property name="position" type="int"><value>2</value></property>
- </layout>
- <WidgetContainer id="GuixGridBag">
- <properties>
- <property name="name" type="String"><value>gridSignals</value></property>
- </properties>
- <children>
- <child>
- <layout>
- <property name="weighty" type="double"><value>0.0</value></property>
- </layout>
- <WidgetComponent id="GuixComboBox">
- <properties>
- <property name="name" type="String"><value>comboAllSignals</value></property>
- </properties>
- </WidgetComponent>
- </child>
- <child>
- <layout>
- <property name="weightx" type="double"><value>0.0</value></property>
- <property name="weighty" type="double"><value>0.0</value></property>
- <property name="x" type="int"><value>1</value></property>
- </layout>
- <WidgetComponent id="GuixButton">
- <properties>
- <property name="name" type="String"><value>addSignal</value></property>
- <property name="text" type="String"><value>add</value></property>
- </properties>
- <signals>
- <signal name="clicked" argument="false" handler="onAddSignal"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <layout>
- <property name="x" type="int"><value>0</value></property>
- <property name="y" type="int"><value>1</value></property>
- <property name="width" type="int"><value>2</value></property>
- </layout>
- <WidgetContainer id="GuixScrollPane">
- <properties>
- <property name="name" type="String"><value>scrollSignals</value></property>
- </properties>
- <children>
- <child>
- <WidgetComponent id="GuixTable">
- <properties>
- <property name="name" type="String"><value>tableSignals</value></property>
- </properties>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- </children>
- </WidgetContainer>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <layout>
- <property name="position" type="Enum"><value><enum type="String" select="0"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
- </layout>
- <WidgetContainer id="GuixGridBag">
- <properties>
- <property name="name" type="String"><value>GuixGridBag1</value></property>
- </properties>
- <children>
- <child>
- <layout>
- <property name="weightx" type="double"><value>0.0</value></property>
- <property name="weighty" type="double"><value>0.0</value></property>
- </layout>
- <WidgetComponent id="GuixButton">
- <properties>
- <property name="name" type="String"><value>GuixButton16</value></property>
- <property name="text" type="String"><value>Selection</value></property>
- </properties>
- <signals>
- <signal name="clicked" argument="false" handler="onSelectionButton"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <layout>
- <property name="y" type="int"><value>1</value></property>
- <property name="width" type="int"><value>2</value></property>
- </layout>
- <WidgetContainer id="GuixTabbedPane">
- <properties>
- <property name="name" type="String"><value>tabTools</value></property>
- <property name="childCount" type="int"><value>4</value></property>
- </properties>
- </WidgetContainer>
- </child>
- </children>
- </WidgetContainer>
- </child>
- </children>
- </WidgetContainer>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <layout>
- <property name="weighty" type="double"><value>0.0</value></property>
- </layout>
- <WidgetContainer id="GuixGrid">
- <properties>
- <property name="name" type="String"><value>toolbar</value></property>
- </properties>
- <children>
- <child>
- <layout>
- <property name="x" type="int"><value>8</value></property>
- </layout>
- <WidgetComponent id="GuixCheckBox">
- <properties>
- <property name="name" type="String"><value>checkboxDesignTime</value></property>
- <property name="text" type="String"><value>Design</value></property>
- <property name="selected" type="boolean"><value>true</value></property>
- </properties>
- <signals>
- <signal name="itemStateChanged" argument="true" handler="onDesignTime"/>
- </signals>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <layout>
- <property name="y" type="int"><value>2</value></property>
- <property name="weighty" type="double"><value>0.0</value></property>
- </layout>
- <WidgetComponent id="GuixLabel">
- <properties>
- <property name="name" type="String"><value>statusBar</value></property>
- <property name="text" type="String"><value> </value></property>
- </properties>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- </children>
- </WidgetWindow>
- <WidgetWindow id="GuixWindowNG">
- <properties>
- <property name="name" type="String"><value>GuixWindowNG1</value></property>
- </properties>
- <children>
- <child>
- <WidgetContainer id="GuixMenuBar">
- <properties>
- <property name="name" type="String"><value>MenuBar</value></property>
- </properties>
- <children>
- <child>
- <WidgetContainer id="GuixMenu">
- <properties>
- <property name="name" type="String"><value>GuixMenu1</value></property>
- <property name="text" type="String"><value>File</value></property>
- </properties>
- <children>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem1</value></property>
- <property name="text" type="String"><value>new</value></property>
- <property name="icon" type="Resource"><value></value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onNew"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem2</value></property>
- <property name="text" type="String"><value>load</value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onLoad"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem3</value></property>
- <property name="text" type="String"><value>save</value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onSave"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem4</value></property>
- <property name="text" type="String"><value>export</value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onExport"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem8</value></property>
- <property name="text" type="String"><value>preview</value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onPreview"/>
- </signals>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <WidgetContainer id="GuixMenu">
- <properties>
- <property name="name" type="String"><value>GuixMenu2</value></property>
- <property name="text" type="String"><value>Edit</value></property>
- </properties>
- <children>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem5</value></property>
- <property name="text" type="String"><value>ajouter le composant</value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onAddComponent"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem6</value></property>
- <property name="text" type="String"><value>couper</value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onCouper"/>
- </signals>
- </WidgetComponent>
- </child>
- <child>
- <WidgetComponent id="GuixMenuItem">
- <properties>
- <property name="name" type="String"><value>GuixMenuItem7</value></property>
- <property name="text" type="String"><value>coller</value></property>
- </properties>
- <signals>
- <signal name="menuClicked" argument="false" handler="onColler"/>
- </signals>
- </WidgetComponent>
- </child>
- </children>
- </WidgetContainer>
- </child>
- <child>
- <WidgetContainer id="GuixMenu">
- <properties>
- <property name="name" type="String"><value>GuixMenu3</value></property>
- <property name="text" type="String"><value>help</value></property>
- </properties>
- </WidgetContainer>
- </child>
- </children>
- </WidgetContainer>
- </child>
- </children>
- </WidgetWindow>
-</GuixApplication>
Deleted: trunk/src/site/fr/resources/models/exemple.topiaModel
===================================================================
--- trunk/src/site/fr/resources/models/exemple.topiaModel 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/resources/models/exemple.topiaModel 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,48 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<topiaModel xmlns:topia="http://www.codelutin.org/topia/topiaModel">
- <class name="Person" stereotype="entity" package="org.codelutin.test">
- <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String">
- <tag name="mandatory" value="true"/>
- <tag name="indexed" value="false"/>
- <tag name="primaryKey" value="false"/>
- <tag name="readonly" value="false"/>
- </attribute>
- <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address">
- <tag name="mandatory" value="true"/>
- <tag name="indexed" value="false"/>
- <tag name="primaryKey" value="false"/>
- <tag name="readonly" value="false"/>
- </attribute>
- </class>
- <class name="Employee" type="entity" extends="org.codelutin.test.Person" package="org.codelutin.test">
- <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Company">
- <tag name="mandatory" value="true"/>
- <tag name="indexed" value="false"/>
- <tag name="primaryKey" value="false"/>
- <tag name="readonly" value="false"/>
- </attribute>
- </class>
- <class name="Company" type="entity" package="org.codelutin.test">
- <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String">
- <tag name="mandatory" value="true"/>
- <tag name="indexed" value="false"/>
- <tag name="primaryKey" value="false"/>
- <tag name="readonly" value="false"/>
- </attribute>
- <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address">
- <tag name="mandatory" value="true"/>
- <tag name="indexed" value="false"/>
- <tag name="primaryKey" value="false"/>
- <tag name="readonly" value="false"/>
- </attribute>
- <attribute multiplicity="n" name="address" visibility="public" type="org.codelutin.test.Employee">
- <tag name="mandatory" value="true"/>
- <tag name="indexed" value="false"/>
- <tag name="primaryKey" value="false"/>
- <tag name="readonly" value="false"/>
- </attribute>
- <operation name="getTime" visibility="public" returnType="int">
- <parameter name="year" type="org.codelutin.Employee"/>
- </operation>
- </class>
-</topiaModel>
Deleted: trunk/src/site/fr/resources/xmi/ObjectModel.zuml
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/resources/xmi/objectmodel.zargo
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/rst/DevUIDoc.rst
===================================================================
--- trunk/src/site/fr/rst/DevUIDoc.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/rst/DevUIDoc.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,103 +0,0 @@
-=======
-UIModel
-=======
-
-:Authors: Aurelie MAZELIER
-:Revision: $Revision$
-:Date: $Date$
-
-
-.. contents::
-
-
-Model UIModel
-=============
-
-En parcourant un fichier xml, il est possible de construire un objet
-UIModel. Cet objet est défini par les interfaces suivantes.
-
-
-Interfaces
-----------
-
-- UIModel :
-
- - version XML
- - root de type UIModelObject
- - le nom du package
- - liste des objets du model
-
-- UIModelObject :
-
- - nom
- - type
- - un UIModelObject parent
- - un UIModel
- - une liste d'arguments
- - une liste de propriétés
- - une liste d'évènements
- - une liste d'enfants
-
-- UIModelArgument :
-
- - une liste d'arguments
-
-- UIModelProperty :
-
- - un nom
- - une valeur (de différents type : int, float ...)
- - un index
-
-- UIModelEvent :
-
- - le nom de la addListenerMethod
- - le nom de la listenerInterface
- - le nom de la listenerMethod
- - le nom du handler
- - le nom de la eventProperty
-
-- UIModelChild :
-
- - un enfant UIModelObject
- - la contrainte de l'enfant de type UIModelConstraint
-
-- UIModelConstraint :
-
- - une valeur de type Object ou String
-
-
-Implantations
--------------
-
-Il existe deux implantations de ces interfaces.
-
-
-impl
-~~~~
-
-Cette première implantation permet d'obtenir un UIModel lors
-du parcours du fichier xml de type uimodel par le parser
-XMLParser.
-
-
-xml
-~~~
-
-Cette deuxième implantation permet d'obtenir un UIModel lors
-du parcours du fichier xml de type javaxml par le parser
-JavaXMLParser.
-
-
-JavaXMLParser
--------------
-
-Ce parser permet de parcourir des fichiers javaxml afin d'obtenir un
-objet UIModel. Ce parser utilise dom4j.
-
-
-Générateurs
-===========
-
-- Génération d'objet UIModel (UIModelGenerator). Ce générateur utilise les classes précédentes afin d'obtenir un objet UIModel en fonction des fichiers xml. A partir de cet objet UIModel, il est possible de lancer la génération. Ces générateurs sont utilisées dans Topia pour générer les fichiers java à partir de l'objet UIModel.
-
-- Génération d'objet UIModel (UIModelGeneratorWithCapitalizeName). Ce générateur est une sous classe du premier. Il est possède une méthode permettant de mettre la première lettre en majuscule du nom d'un objet, d'une propriété...
Deleted: trunk/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst
===================================================================
--- trunk/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,82 +0,0 @@
-=========================
-Principe de la génération
-=========================
-
-Il y a deux façon de voir la génération.
-
-La première que l'on rencontre le plus
-souvent génère des fichiers avec des sections à
-modifier par le développeur. Ces sections sont marquées par des commentaires
-que le générateur interprète pour savoir qu'il n'a pas le droit de modifier
-cette partie de code.
-
-La deuxième qui à pour principe:
-
-- le générateur ne doit jamais modifier les fichiers de l'utilisateur.
-- l'utilisateur ne doit jamais modifier le code généré
-
-De cette façon les choses sont clairement séparé, et cela est possible sans
-utilisation d'artifice perturbant le développeur grâce au nouveau langage à
-objet et à l'héritage.
-
-La grosse différence n'est pas dans les générateurs eux même mais dans les
-templates de génération. Si tous les générateurs de la première catégorie
-peuvent très bien servir pour faire de la génération de la seconde,
-l'inverse n'est pas vrai. Car la seconde catégorie demande des générateurs
-beaucoup plus simple, ce qui est d'ailleur un avantage pour la maintenance.
-
-Code Lutin utilise un générateur du deuxième type: Eugene
-
-Quelques générateurs de la première catégorie:
-
-- Acceleo (Obeo)
-- Pragmatic (Argia)
-
-Les principes de Eugene
-=======================
-
-- le générateur ne doit jamais modifier les fichiers de l'utilisateur.
-- l'utilisateur ne doit jamais modifier le code généré
-- le modèle est toujours la source (pas de reverse, pas de modification du
- modèle par le générateur
-- être le plus simple possible (simple à maintenir)
-- s'appuyer sur les normes (XMI)
-- pouvoir utiliser plusieurs fichiers XMI pour la même génération
-- ne pas mettre dans le modèle des choses techniques (ex: type pour la base de
- données) mais dans un fichier de propriété à coté du modèle.
-- avoir une couche d'abstraction du XMI pour évité la modification des
- templates si la version de XMI change (XMLObjectModel)
-- s'appuyer sur un modèle mémoire simple (ObjectModel écrit spécifiquement
- car aucun modèle simple n'a été trouvé)
-- s'appuyer sur un langage puissant et connu des développeurs (Java)
-- ne jamais mélanger le code généré et le code utilisateur
-- pouvoir générer n'importe quelle type de fichier (XML, Java, texte, ...)
-- être facilement intégrable dans une phase de génération/compilation
- (task ant, plugin maven)
-- être indépendant d'un outil de développement spécifique (chacun à le droit de
- choisir l'éditeur qu'il souhaite).
-
-Défaut de la première solution
-==============================
-
-- il faut prévoir partout ou l'utilisateur pourrait souhaiter ajouter du
- code. Par exemple dans Pragmatic, on ne peut pas utiliser les imports car il
- n'y a pas de section utilisateur à cet endroit, il faut donc à chaque fois
- écrire le package lorsque l'on souhaite utiliser une classe non encore
- importée.
-
-- le développeur voit beaucoup de code qu'il n'a pas le droit de modifier
- ce qui complexifie la vue du développeur pour rien
-
-Défaut des générateurs le plus souvent rencontré
-================================================
-
-- Les générateurs au lieu d'utiliser un langage et façon de faire que tous
- les développeurs connaissent réinvente leur propre syntaxe et langage.
-
-Eugene lui utilise seulement du Java et les tags JSP (<%, <%=, %>).
-De cette façon le générateur reste simple pas de langage à développer et
-parser. L'utilisateur qui connait Java connait le langage de template. Et
-surtout l'utilisateur n'est pas limité par le langage développé
-spécifiquement pour les templates.
-
Deleted: trunk/src/site/fr/rst/FAQ.rst
===================================================================
--- trunk/src/site/fr/rst/FAQ.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/rst/FAQ.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,16 +0,0 @@
-===
-FAQ
-===
-
-Comment convertir les modèles UML de Poseidon vers ArgoUML ?
-============================================================
-
-Il faut sauver le modèle sous Poseidon en XMI, on bien l'extraire du
-fichier .zmul qui est en fait un fichier zip::
-
- xlstproc -o <argo-file>.xmi poseidon2argouml.xsl <poseidon-file>.xmi
-
-Ensuite dans ArgoUML ouvrez le fichier généré.
-
-Les diagrammes ne sont pas convertie, il faut donc les recréer a partir des
-classes en faisant du drag&drop.
Deleted: trunk/src/site/fr/rst/ObjectModel.rst
===================================================================
--- trunk/src/site/fr/rst/ObjectModel.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/rst/ObjectModel.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,92 +0,0 @@
-===========
-ObjectModel
-===========
-
-:Authors: Arnaud Thimel, Florian Desbois
-:Contact: eugene-devel(a)list.nuiton.org ou eugene-users(a)list.nuiton.org
-:Revision: $Revision$
-:Date: $Date$
-
-
-.. contents::
-
-
-Introduction
-============
-
-Le générateur ObjectModelGenerator est prévu pour lire et analyser des modèles
-objets puis générer du code à partir de ceux-ci. En UML, un modèle objet est
-représenté par un diagramme de classe. Cette vision des modèles objet étant très
-répandue, elle sert de base à l'ObjectModelGenerator (il est à noter cependant
-que ce n'est pas obligatoire).
-
-Partons donc du principe que l'on dispose d'un modèle (diagramme de classe) créé
-à l'aide d'un outil de modélisation au format XMI (XML Metadata Interchange).
-
-La génération de code se fait ensuite en trois étapes :
-
-- Epuration du XMI en un code XML ne conservant que les informations utiles ;
-- Mise en mémoire du modèle simplifié ;
-- Application des templates / génération de code.
-
-
-Epuration du modèle XMI
-=======================
-
-La plupart des outils de modélisation décrivent leur modèle en XMI. Or le XMI
-est trop verbeux pour être compréhensible aisement.
-
-Eugene propose une tranformation XSLT permettant ainsi d'obtenir un XML
-épuré décrivant le modèle et ne conservant que l'essentiel des informations.
-
-Parmi les informations extraites, on peut citer :
-
-- Objets (classes, classes abtraites, interfaces)
-- Attributs (nom, type, visibilité, ...)
-- Relations entre les classes (toutes multiplicités, navigabilité, classes d'association, ...)
-- Opérations (nom, type de retour, noms et types des arguments, exceptions levées, ...)
-- Stéréotypes
-
-A partir du diagramme suivant :
-
-.. image:: images/Hotel.png
-
-On obtient un ObjectModel tel que :
-
-.. image:: images/Hotel.objectmodel.png
-
-
-Modèle mémoire
-==============
-
-Une fois le XMI ramené à un XML compréhensible, le modèle est chargé en
-mémoire afin de subir la génération.
-
-Ainsi, le modèle instancié est basé sur le diagramme de classes (méta-modèle) suivant :
-
-.. image:: images/ObjectModel.png
-
-Les interfaces disponibles pour les générateurs sont les suivantes :
-
-.. image:: images/ObjectModel_Interfaces.png
-
-ObjectModelGenerator :
-
-.. image:: images/ObjectModel_Generator.png
-
-Application des templates
-=========================
-
-Chaque template est à lui seul un générateur qui hérite de ObjectModelGenerator.
-Toute partie de ce générateur peut donc être surchargée permettant ainsi une
-forte personnalisation des générateurs. Le rôle de l'ObjectModelGenerator est
-donc de parcourir le modèle et à chaque élément clé du modèle, (model, classes
-interfaces, classifier) les méthodes correspondantes sont appelées. Par défaut,
-ces méthodes décrites dans le générateur de base sont vide, et il n'en ressort
-donc aucun code généré. Les templates ont donc pour but de surcharger ses
-méthodes et décrire le code qui va être généré.
-
-Les templates peuvent être de toutes sortes car ils peuvent générer un fichier
-différent par modèle, par interface, par classe ou encore par classifier (souche
-commune aux classes et interfaces). De plus, ils peuvent indifféremment générer
-du code Java / XML ou encore tout autre type de code (texte ou autre...).
Deleted: trunk/src/site/fr/rst/Todo.rst
===================================================================
--- trunk/src/site/fr/rst/Todo.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/rst/Todo.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,115 +0,0 @@
-====
-TODO
-====
-
-
-:Revision: $Revision$
-:Date: $Date$
-
-
-Idées ou choses à faire
-=======================
-
-- support des InnerClasses (en xmi argo: la classe est declarer dans une classe
- dans un element UML:Namespace.ownedElement) (`Evolution #59`_ )
-
-- support des static (tout element declarer dans une class/interface: methode,
- attribut, enumeration, class, ...)
- (en xmi argo: ownerScope='classifier' ou ownerScope='instance') (`Evolution #58`_ )
-
-.. _Evolution #59: http://www.nuiton.org/issues/show/59
-.. _Evolution #58: http://www.nuiton.org/issues/show/58
-
-- peut-etre faire des tests unitaires avec http://juxy.tigris.org/ pour le xls
-
-- Permettre de faire du 'model to model' avant la generation
-
-Model to Model
-==============
-
-(2009-10-19 : En cours de developpement : `branches/1.0.1-javabuilder`_ )
-
-.. _branches/1.0.1-javabuilder: http://nuiton.org/repositories/browse/eugene/branches/1.0.1-Javabuilder
-
-Pour tout ce qui est génération de classe Java, le principe de base d'Eugene
-est de dire que le développeur écrit directement ce qu'il souhaite voir dans
-le fichier final.
-
-Cela pose quelques difficultés:
-
-- difficulté de prévoir les imports
-- difficulté d'éviter la génération de deux méthodes ayant le même nom
-
-L'idée serait alors de constuire la classe Java souhaitée au final en appelant
-des méthodes (addImport, addMethod, addAttribute, ...). Ceci nous donnerait
-alors un nouveau modèle mémoire dont on demanderait la génération à un
-générateur sans inteligence qui se contenterait d'écrire le code Java modélisé.
-
-L'avantage est que pour chaque méthode à ajouter on peut demander avant si elle
-n'a pas déjà été ajoutée et ainsi potentiellement la renomé avant de l'inclure.
-D'ajouter de façon automatique tous les imports des arguments des méthodes, ...
-
-Pour pouvoir faire cela, nous pourrions nous baser sur ObjectModel, mais des
-ajouter doivent être fait:
-
-- pouvoir indiquer sur une Class une série d'import.
-- pouvoir ajouter un message de licence
-- pouvoir ajouter sur une méthode sont code source
-
-Ce dernier élément est le plus problèmatique, car il deviendrait pénible de
-devoir instancier tout le code de la méthode en objet et on perdrait l'idée
-de départ d'Eugene.
-
-Dans eugène il est déjà possible de modifier la transformation des tags de
-génération '/\*{' et '}\*/' qui par défaut génère un 'ouput.write("...");'
-Dans notre cas, il faudrait quelque chose comme 'method.addCode("...");' ou
-encore plus simplement '"..." +' ce qui pourrait donner::
-
- addImport(MonObject.class);
- method.addCode(
- /*{ int i = 0;
- i = 1+2;
- MonObject result = new MonObject(result);
- return result;
- }*/
- );
-
-qui deviendrait::
-
- addImport(MonObject.class);
- method.addCode(
- "int i = 0;\n" +
- "i = 1+2;\n" +
- "MonObject result = new MonObject(result);\n" +
- "return result;\n"
- );
-
-On garde la facilte d'écriture du code à générer et on permet d'ajouter
-facilement des imports dont on aurait besoin dans le coprs de la méthode. Aucun
-traitement complexe du code de la méthode n'est donc nécessaire.
-
-Ce nouveau mode de génération ne serait qu'une moyen complémentaire de la
-génération actuelle.
-
-Travail a faire:
-
-- ajout d'objet dans ObjectModel
-- ajout de méthode de modification dans ObjectModel
-- création d'un template de génération d'un POJO (génération direct d'un modèle)
-
-Il serait toute fois dommage d'ajouter tout un ensemnble de setter sur les
-interfaces d'ObjectModel qui le rendrait moins clair pour les générateurs.
-Il faut donc trouver une solution pour permettre l'instanciation et la
-modification de classe implantant l'ObjectModel sans pour autant les ajouter
-au interface.
-
-Une idée pourrait-être l'utilisation de Helper qui permette de créer et modifier
-le modèle::
-
- ObjectModelClass clazz = ObjectModelHelper.createClass();
- ObjectModelOperation method = ObjectModelHelper.addMethod(
- clazz, "name", "typeRetour", "paramName", "typeParam");
- ObjectModelHelper.addImport("java.util.List");
- ObjectModelHelper.addCode(method,
- /*{ blablabla
- }*/
Deleted: trunk/src/site/fr/rst/index.rst
===================================================================
--- trunk/src/site/fr/rst/index.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/rst/index.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,80 +0,0 @@
-======
-Eugene
-======
-
-.. contents::
-
-
-Origine du projet
------------------
-
-Eugene est né à la suite d'une recherche de générateur de code basé sur
-un modèle mémoire simple qui s'est terminée par un échec.
-
-Les projets alors étudiés étaient alors entre autres :
-
-- Jostraca ;
-- EMF ;
-- ...
-
-Le choix de la génération de code par rapport à l'introspection a été fait car
-la génération code permet de passer par l'étape compilation et donc de
-validation du code généré. En effet, si le besoin était initialement porté sur
-de la génération de code Java, Eugene a été pensé pour générer tout type
-de code.
-
-
-Côté technique
---------------
-
-Eugene permet l'utilisation d'un ensemble de générateurs. Ces
-générateurs sont abstraits de toute spécificité permettant ainsi de les adapter
-en fonction des besoins.
-
-Par défaut, Eugene propose trois implantations de ces générateurs :
-
-- ObjectModelGenerator (génération à partir d'un modèle objet) ;
-- StateModelGenerator (génération à partir d'un modèle d'états) ;
-- UIModelGenerator (génération à partir d'un modèle graphique).
-
-Chacun de ces modèles a ses propres spécificités liés à sa structure et son mode
-de fonctionnement...
-
-Cependant, ces générateurs sont inutiles sans des templates de génération. Les
-templates sont les fichiers qui vont permettre de déterminer quel sera le
-contenu généré en fonction du modèle initial. Grâce à NuitonProcessor_, ces
-templates sont écrit avec une sytaxe proche de la syntaxe JSP en imbriquant les
-portions de code Java avec les portions de code généré. Le rôle de
-NuitonProcessor_ est de transformer ces templates en remplaçant la syntaxe JSP par
-la syntaxe Java correpondante. Les classes Java obtenues peuvent donc être
-compilées et deviennent autonomes.
-
-.. _NuitonProcessor: http://maven-site.nuiton.org/processor/
-
-Règle ant
----------
-
-Voici un exemple d'utilisation de la règle ant.
-
-::
-
- <taskdef name="generator" classname="org.nuiton.eugene.GeneratorTask"
- classpath="${compile.classpath}:${targetbuild}:${resources}" />
-
- <target name="generate" description="generate">
- <generator srcdir="${modelDir}" destdir="${targetgen}"
- resolver="org.nuiton.exemple.ResourceResolver"
- templates="org.nuiton.example.JavaBeanGenerator"
- properties="defaultPackage=org.nuiton,fullPackagePath=org.nuiton,extraPackages=org.nuiton"
- classpath="${compile.classpath}:${targetbuild}:${resources}" />
- </target>
-
-Dans cette exemple, un template de génération sera apliqué sur tous les
-fichiers.
-
-Plugin maven
-------------
-
-Un plugin maven est disponnible à l'adresse suivante
-http://maven-site.nuiton.org/eugene/maven-eugene-plugin . Il permet l'utilisation
-depuis maven de Eugene.
Deleted: trunk/src/site/fr/rst/maven-plugin.rst
===================================================================
(Binary files differ)
Deleted: trunk/src/site/fr/rst/plugineclipse.rst
===================================================================
--- trunk/src/site/fr/rst/plugineclipse.rst 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/fr/rst/plugineclipse.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,44 +0,0 @@
-Installation du plugin LutinGenerator
-=====================================
-
-Ce guide détail comment installer le plugin eclipse LutinGenerator via
-l'update site (assitant d'instalation de plugins).
-
-Installation
-------------
-
-Ouvrez l'assitant d'installation de plugin via le menu
-(Help/Software Updates/Find and install...).
-
-.. image:: images/plugin_menu.png
-
-Sur la fenêtre suivante sélectionnez "Search for new features to install".
-
-.. image:: images/plugin_typeinstall.png
-
-Une nouvelle fenêtre s'affiche, sélectionnez "New remote site" pour ajouter le
-dépot "LutinGenerator".
-
-L'adresse du dépot à utiliser est :
-
-::
-
- http://lutingenerator.labs.libre-entreprise.org/eclipse/
-
-.. image:: images/plugin_newdepot.png
-
-
-Sélectionnez ensuite ce dépot et cliquez sur "Finish".
-
-Installez ensuite la dernière version disponible et redémarrez eclipse:
-
-.. image:: images/plugin_choix.png
-
-
-Utilisation
------------
-
-Pour disposer de la coloration des templates, cliquez droit sur un fichier
-source java et sélectionnez "Open with > / LutinGenerator Template Editor"
-
-.. image:: images/plugin_utilisation_editeur.png
\ No newline at end of file
Copied: trunk/src/site/resources/images/Hotel.objectmodel.png (from rev 719, trunk/src/site/fr/resources/images/Hotel.objectmodel.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/Hotel.png (from rev 719, trunk/src/site/fr/resources/images/Hotel.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/ObjectModel.png (from rev 719, trunk/src/site/fr/resources/images/ObjectModel.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/ObjectModel_Generator.png (from rev 719, trunk/src/site/fr/resources/images/ObjectModel_Generator.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/ObjectModel_Interfaces.png (from rev 719, trunk/src/site/fr/resources/images/ObjectModel_Interfaces.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/StateModel.png (from rev 719, trunk/src/site/fr/resources/images/StateModel.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/plugin_choix.png (from rev 719, trunk/src/site/fr/resources/images/plugin_choix.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/plugin_menu.png (from rev 719, trunk/src/site/fr/resources/images/plugin_menu.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/plugin_newdepot.png (from rev 719, trunk/src/site/fr/resources/images/plugin_newdepot.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/plugin_typeinstall.png (from rev 719, trunk/src/site/fr/resources/images/plugin_typeinstall.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/images/plugin_utilisation_editeur.png (from rev 719, trunk/src/site/fr/resources/images/plugin_utilisation_editeur.png)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/models/buix.guix (from rev 719, trunk/src/site/fr/resources/models/buix.guix)
===================================================================
--- trunk/src/site/resources/models/buix.guix (rev 0)
+++ trunk/src/site/resources/models/buix.guix 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,409 @@
+<GuixApplication id="Application">
+ <properties>
+ <property name="name" type="String"><value>Buix Application</value></property>
+ </properties>
+ <WidgetWindow id="GuixWindow">
+ <properties>
+ <property name="name" type="String"><value>Buix</value></property>
+ <property name="title" type="String"><value>Application Buix</value></property>
+ <property name="x" type="int"><value>50</value></property>
+ <property name="y" type="int"><value>50</value></property>
+ <property name="width" type="int"><value>1000</value></property>
+ <property name="height" type="int"><value>800</value></property>
+ <property name="menubar" type="ComponentResource"><value>MenuBar</value></property>
+ </properties>
+ <signals>
+ <signal name="closing" argument="false" handler="onClosing"/>
+ </signals>
+ <children>
+ <child>
+ <WidgetContainer id="GuixGridBag">
+ <properties>
+ <property name="name" type="String"><value>vbox</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="x" type="int"><value>0</value></property>
+ <property name="y" type="int"><value>1</value></property>
+ <property name="weightx" type="double"><value>1.0</value></property>
+ <property name="weighty" type="double"><value>1.0</value></property>
+ </layout>
+ <WidgetContainer id="GuixSpliter">
+ <properties>
+ <property name="name" type="String"><value>verticalSpliter</value></property>
+ <property name="orientation" type="Enum"><value><enum type="int" select="0"><item>0</item><item>1</item></enum></value></property>
+ <property name="dividerSize" type="int"><value>9</value></property>
+ <property name="express" type="boolean"><value>true</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="position" type="Enum"><value><enum type="String" select="3"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
+ </layout>
+ <WidgetContainer id="GuixScrollPane">
+ <properties>
+ <property name="name" type="String"><value>scrollTree</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixTree">
+ <properties>
+ <property name="name" type="String"><value>tree</value></property>
+ </properties>
+ <signals>
+ <signal name="clicked" argument="false" handler="onTreeClicked"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="position" type="Enum"><value><enum type="String" select="2"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
+ </layout>
+ <WidgetContainer id="GuixSpliter">
+ <properties>
+ <property name="name" type="String"><value>horizontalSpliter</value></property>
+ <property name="orientation" type="Enum"><value><enum type="int" select="1"><item>0</item><item>1</item></enum></value></property>
+ <property name="dividerSize" type="int"><value>9</value></property>
+ <property name="express" type="boolean"><value>true</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="position" type="Enum"><value><enum type="String" select="1"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
+ </layout>
+ <WidgetContainer id="GuixTabbedPane">
+ <properties>
+ <property name="name" type="String"><value>tabProperties</value></property>
+ <property name="childCount" type="int"><value>3</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="text" type="String"><value>Properties</value></property>
+ <property name="position" type="int"><value>0</value></property>
+ </layout>
+ <WidgetContainer id="GuixScrollPane">
+ <properties>
+ <property name="name" type="String"><value>scrollProperties</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixTable">
+ <properties>
+ <property name="name" type="String"><value>tableProperties</value></property>
+ </properties>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="position" type="int"><value>1</value></property>
+ <property name="text" type="String"><value>Container Properties</value></property>
+ </layout>
+ <WidgetContainer id="GuixScrollPane">
+ <properties>
+ <property name="name" type="String"><value>scrollContainerProperties</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixTable">
+ <properties>
+ <property name="name" type="String"><value>tableContainerProperties</value></property>
+ </properties>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="text" type="String"><value>Signals</value></property>
+ <property name="position" type="int"><value>2</value></property>
+ </layout>
+ <WidgetContainer id="GuixGridBag">
+ <properties>
+ <property name="name" type="String"><value>gridSignals</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="weighty" type="double"><value>0.0</value></property>
+ </layout>
+ <WidgetComponent id="GuixComboBox">
+ <properties>
+ <property name="name" type="String"><value>comboAllSignals</value></property>
+ </properties>
+ </WidgetComponent>
+ </child>
+ <child>
+ <layout>
+ <property name="weightx" type="double"><value>0.0</value></property>
+ <property name="weighty" type="double"><value>0.0</value></property>
+ <property name="x" type="int"><value>1</value></property>
+ </layout>
+ <WidgetComponent id="GuixButton">
+ <properties>
+ <property name="name" type="String"><value>addSignal</value></property>
+ <property name="text" type="String"><value>add</value></property>
+ </properties>
+ <signals>
+ <signal name="clicked" argument="false" handler="onAddSignal"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <layout>
+ <property name="x" type="int"><value>0</value></property>
+ <property name="y" type="int"><value>1</value></property>
+ <property name="width" type="int"><value>2</value></property>
+ </layout>
+ <WidgetContainer id="GuixScrollPane">
+ <properties>
+ <property name="name" type="String"><value>scrollSignals</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixTable">
+ <properties>
+ <property name="name" type="String"><value>tableSignals</value></property>
+ </properties>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="position" type="Enum"><value><enum type="String" select="0"><item>left</item><item>right</item><item>bottom</item><item>top</item></enum></value></property>
+ </layout>
+ <WidgetContainer id="GuixGridBag">
+ <properties>
+ <property name="name" type="String"><value>GuixGridBag1</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="weightx" type="double"><value>0.0</value></property>
+ <property name="weighty" type="double"><value>0.0</value></property>
+ </layout>
+ <WidgetComponent id="GuixButton">
+ <properties>
+ <property name="name" type="String"><value>GuixButton16</value></property>
+ <property name="text" type="String"><value>Selection</value></property>
+ </properties>
+ <signals>
+ <signal name="clicked" argument="false" handler="onSelectionButton"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <layout>
+ <property name="y" type="int"><value>1</value></property>
+ <property name="width" type="int"><value>2</value></property>
+ </layout>
+ <WidgetContainer id="GuixTabbedPane">
+ <properties>
+ <property name="name" type="String"><value>tabTools</value></property>
+ <property name="childCount" type="int"><value>4</value></property>
+ </properties>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="weighty" type="double"><value>0.0</value></property>
+ </layout>
+ <WidgetContainer id="GuixGrid">
+ <properties>
+ <property name="name" type="String"><value>toolbar</value></property>
+ </properties>
+ <children>
+ <child>
+ <layout>
+ <property name="x" type="int"><value>8</value></property>
+ </layout>
+ <WidgetComponent id="GuixCheckBox">
+ <properties>
+ <property name="name" type="String"><value>checkboxDesignTime</value></property>
+ <property name="text" type="String"><value>Design</value></property>
+ <property name="selected" type="boolean"><value>true</value></property>
+ </properties>
+ <signals>
+ <signal name="itemStateChanged" argument="true" handler="onDesignTime"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <layout>
+ <property name="y" type="int"><value>2</value></property>
+ <property name="weighty" type="double"><value>0.0</value></property>
+ </layout>
+ <WidgetComponent id="GuixLabel">
+ <properties>
+ <property name="name" type="String"><value>statusBar</value></property>
+ <property name="text" type="String"><value> </value></property>
+ </properties>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetWindow>
+ <WidgetWindow id="GuixWindowNG">
+ <properties>
+ <property name="name" type="String"><value>GuixWindowNG1</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetContainer id="GuixMenuBar">
+ <properties>
+ <property name="name" type="String"><value>MenuBar</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetContainer id="GuixMenu">
+ <properties>
+ <property name="name" type="String"><value>GuixMenu1</value></property>
+ <property name="text" type="String"><value>File</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem1</value></property>
+ <property name="text" type="String"><value>new</value></property>
+ <property name="icon" type="Resource"><value></value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onNew"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem2</value></property>
+ <property name="text" type="String"><value>load</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onLoad"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem3</value></property>
+ <property name="text" type="String"><value>save</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onSave"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem4</value></property>
+ <property name="text" type="String"><value>export</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onExport"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem8</value></property>
+ <property name="text" type="String"><value>preview</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onPreview"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <WidgetContainer id="GuixMenu">
+ <properties>
+ <property name="name" type="String"><value>GuixMenu2</value></property>
+ <property name="text" type="String"><value>Edit</value></property>
+ </properties>
+ <children>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem5</value></property>
+ <property name="text" type="String"><value>ajouter le composant</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onAddComponent"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem6</value></property>
+ <property name="text" type="String"><value>couper</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onCouper"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ <child>
+ <WidgetComponent id="GuixMenuItem">
+ <properties>
+ <property name="name" type="String"><value>GuixMenuItem7</value></property>
+ <property name="text" type="String"><value>coller</value></property>
+ </properties>
+ <signals>
+ <signal name="menuClicked" argument="false" handler="onColler"/>
+ </signals>
+ </WidgetComponent>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ <child>
+ <WidgetContainer id="GuixMenu">
+ <properties>
+ <property name="name" type="String"><value>GuixMenu3</value></property>
+ <property name="text" type="String"><value>help</value></property>
+ </properties>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetContainer>
+ </child>
+ </children>
+ </WidgetWindow>
+</GuixApplication>
Copied: trunk/src/site/resources/models/exemple.topiaModel (from rev 719, trunk/src/site/fr/resources/models/exemple.topiaModel)
===================================================================
--- trunk/src/site/resources/models/exemple.topiaModel (rev 0)
+++ trunk/src/site/resources/models/exemple.topiaModel 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,48 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<topiaModel xmlns:topia="http://www.codelutin.org/topia/topiaModel">
+ <class name="Person" stereotype="entity" package="org.codelutin.test">
+ <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ </class>
+ <class name="Employee" type="entity" extends="org.codelutin.test.Person" package="org.codelutin.test">
+ <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Company">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ </class>
+ <class name="Company" type="entity" package="org.codelutin.test">
+ <attribute multiplicity="1" name="name" visibility="public" type="java.lang.String">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ <attribute multiplicity="1" name="address" visibility="public" type="org.codelutin.test.Address">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ <attribute multiplicity="n" name="address" visibility="public" type="org.codelutin.test.Employee">
+ <tag name="mandatory" value="true"/>
+ <tag name="indexed" value="false"/>
+ <tag name="primaryKey" value="false"/>
+ <tag name="readonly" value="false"/>
+ </attribute>
+ <operation name="getTime" visibility="public" returnType="int">
+ <parameter name="year" type="org.codelutin.Employee"/>
+ </operation>
+ </class>
+</topiaModel>
Copied: trunk/src/site/resources/xmi/ObjectModel.zuml (from rev 719, trunk/src/site/fr/resources/xmi/ObjectModel.zuml)
===================================================================
(Binary files differ)
Copied: trunk/src/site/resources/xmi/objectmodel.zargo (from rev 719, trunk/src/site/fr/resources/xmi/objectmodel.zargo)
===================================================================
(Binary files differ)
Copied: trunk/src/site/rst/DevUIDoc.rst (from rev 719, trunk/src/site/fr/rst/DevUIDoc.rst)
===================================================================
--- trunk/src/site/rst/DevUIDoc.rst (rev 0)
+++ trunk/src/site/rst/DevUIDoc.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,103 @@
+=======
+UIModel
+=======
+
+:Authors: Aurelie MAZELIER
+:Revision: $Revision$
+:Date: $Date$
+
+
+.. contents::
+
+
+Model UIModel
+=============
+
+En parcourant un fichier xml, il est possible de construire un objet
+UIModel. Cet objet est défini par les interfaces suivantes.
+
+
+Interfaces
+----------
+
+- UIModel :
+
+ - version XML
+ - root de type UIModelObject
+ - le nom du package
+ - liste des objets du model
+
+- UIModelObject :
+
+ - nom
+ - type
+ - un UIModelObject parent
+ - un UIModel
+ - une liste d'arguments
+ - une liste de propriétés
+ - une liste d'évènements
+ - une liste d'enfants
+
+- UIModelArgument :
+
+ - une liste d'arguments
+
+- UIModelProperty :
+
+ - un nom
+ - une valeur (de différents type : int, float ...)
+ - un index
+
+- UIModelEvent :
+
+ - le nom de la addListenerMethod
+ - le nom de la listenerInterface
+ - le nom de la listenerMethod
+ - le nom du handler
+ - le nom de la eventProperty
+
+- UIModelChild :
+
+ - un enfant UIModelObject
+ - la contrainte de l'enfant de type UIModelConstraint
+
+- UIModelConstraint :
+
+ - une valeur de type Object ou String
+
+
+Implantations
+-------------
+
+Il existe deux implantations de ces interfaces.
+
+
+impl
+~~~~
+
+Cette première implantation permet d'obtenir un UIModel lors
+du parcours du fichier xml de type uimodel par le parser
+XMLParser.
+
+
+xml
+~~~
+
+Cette deuxième implantation permet d'obtenir un UIModel lors
+du parcours du fichier xml de type javaxml par le parser
+JavaXMLParser.
+
+
+JavaXMLParser
+-------------
+
+Ce parser permet de parcourir des fichiers javaxml afin d'obtenir un
+objet UIModel. Ce parser utilise dom4j.
+
+
+Générateurs
+===========
+
+- Génération d'objet UIModel (UIModelGenerator). Ce générateur utilise les classes précédentes afin d'obtenir un objet UIModel en fonction des fichiers xml. A partir de cet objet UIModel, il est possible de lancer la génération. Ces générateurs sont utilisées dans Topia pour générer les fichiers java à partir de l'objet UIModel.
+
+- Génération d'objet UIModel (UIModelGeneratorWithCapitalizeName). Ce générateur est une sous classe du premier. Il est possède une méthode permettant de mettre la première lettre en majuscule du nom d'un objet, d'une propriété...
Copied: trunk/src/site/rst/DiscussionSurTypeDeGeneration.rst (from rev 719, trunk/src/site/fr/rst/DiscussionSurTypeDeGeneration.rst)
===================================================================
--- trunk/src/site/rst/DiscussionSurTypeDeGeneration.rst (rev 0)
+++ trunk/src/site/rst/DiscussionSurTypeDeGeneration.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,82 @@
+=========================
+Principe de la génération
+=========================
+
+Il y a deux façon de voir la génération.
+
+La première que l'on rencontre le plus
+souvent génère des fichiers avec des sections à
+modifier par le développeur. Ces sections sont marquées par des commentaires
+que le générateur interprète pour savoir qu'il n'a pas le droit de modifier
+cette partie de code.
+
+La deuxième qui à pour principe:
+
+- le générateur ne doit jamais modifier les fichiers de l'utilisateur.
+- l'utilisateur ne doit jamais modifier le code généré
+
+De cette façon les choses sont clairement séparé, et cela est possible sans
+utilisation d'artifice perturbant le développeur grâce au nouveau langage à
+objet et à l'héritage.
+
+La grosse différence n'est pas dans les générateurs eux même mais dans les
+templates de génération. Si tous les générateurs de la première catégorie
+peuvent très bien servir pour faire de la génération de la seconde,
+l'inverse n'est pas vrai. Car la seconde catégorie demande des générateurs
+beaucoup plus simple, ce qui est d'ailleur un avantage pour la maintenance.
+
+Code Lutin utilise un générateur du deuxième type: Eugene
+
+Quelques générateurs de la première catégorie:
+
+- Acceleo (Obeo)
+- Pragmatic (Argia)
+
+Les principes de Eugene
+=======================
+
+- le générateur ne doit jamais modifier les fichiers de l'utilisateur.
+- l'utilisateur ne doit jamais modifier le code généré
+- le modèle est toujours la source (pas de reverse, pas de modification du
+ modèle par le générateur
+- être le plus simple possible (simple à maintenir)
+- s'appuyer sur les normes (XMI)
+- pouvoir utiliser plusieurs fichiers XMI pour la même génération
+- ne pas mettre dans le modèle des choses techniques (ex: type pour la base de
+ données) mais dans un fichier de propriété à coté du modèle.
+- avoir une couche d'abstraction du XMI pour évité la modification des
+ templates si la version de XMI change (XMLObjectModel)
+- s'appuyer sur un modèle mémoire simple (ObjectModel écrit spécifiquement
+ car aucun modèle simple n'a été trouvé)
+- s'appuyer sur un langage puissant et connu des développeurs (Java)
+- ne jamais mélanger le code généré et le code utilisateur
+- pouvoir générer n'importe quelle type de fichier (XML, Java, texte, ...)
+- être facilement intégrable dans une phase de génération/compilation
+ (task ant, plugin maven)
+- être indépendant d'un outil de développement spécifique (chacun à le droit de
+ choisir l'éditeur qu'il souhaite).
+
+Défaut de la première solution
+==============================
+
+- il faut prévoir partout ou l'utilisateur pourrait souhaiter ajouter du
+ code. Par exemple dans Pragmatic, on ne peut pas utiliser les imports car il
+ n'y a pas de section utilisateur à cet endroit, il faut donc à chaque fois
+ écrire le package lorsque l'on souhaite utiliser une classe non encore
+ importée.
+
+- le développeur voit beaucoup de code qu'il n'a pas le droit de modifier
+ ce qui complexifie la vue du développeur pour rien
+
+Défaut des générateurs le plus souvent rencontré
+================================================
+
+- Les générateurs au lieu d'utiliser un langage et façon de faire que tous
+ les développeurs connaissent réinvente leur propre syntaxe et langage.
+
+Eugene lui utilise seulement du Java et les tags JSP (<%, <%=, %>).
+De cette façon le générateur reste simple pas de langage à développer et
+parser. L'utilisateur qui connait Java connait le langage de template. Et
+surtout l'utilisateur n'est pas limité par le langage développé
+spécifiquement pour les templates.
+
Copied: trunk/src/site/rst/FAQ.rst (from rev 719, trunk/src/site/fr/rst/FAQ.rst)
===================================================================
--- trunk/src/site/rst/FAQ.rst (rev 0)
+++ trunk/src/site/rst/FAQ.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,16 @@
+===
+FAQ
+===
+
+Comment convertir les modèles UML de Poseidon vers ArgoUML ?
+============================================================
+
+Il faut sauver le modèle sous Poseidon en XMI, on bien l'extraire du
+fichier .zmul qui est en fait un fichier zip::
+
+ xlstproc -o <argo-file>.xmi poseidon2argouml.xsl <poseidon-file>.xmi
+
+Ensuite dans ArgoUML ouvrez le fichier généré.
+
+Les diagrammes ne sont pas convertie, il faut donc les recréer a partir des
+classes en faisant du drag&drop.
Copied: trunk/src/site/rst/ObjectModel.rst (from rev 719, trunk/src/site/fr/rst/ObjectModel.rst)
===================================================================
--- trunk/src/site/rst/ObjectModel.rst (rev 0)
+++ trunk/src/site/rst/ObjectModel.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,92 @@
+===========
+ObjectModel
+===========
+
+:Authors: Arnaud Thimel, Florian Desbois
+:Contact: eugene-devel(a)list.nuiton.org ou eugene-users(a)list.nuiton.org
+:Revision: $Revision$
+:Date: $Date$
+
+
+.. contents::
+
+
+Introduction
+============
+
+Le générateur ObjectModelGenerator est prévu pour lire et analyser des modèles
+objets puis générer du code à partir de ceux-ci. En UML, un modèle objet est
+représenté par un diagramme de classe. Cette vision des modèles objet étant très
+répandue, elle sert de base à l'ObjectModelGenerator (il est à noter cependant
+que ce n'est pas obligatoire).
+
+Partons donc du principe que l'on dispose d'un modèle (diagramme de classe) créé
+à l'aide d'un outil de modélisation au format XMI (XML Metadata Interchange).
+
+La génération de code se fait ensuite en trois étapes :
+
+- Epuration du XMI en un code XML ne conservant que les informations utiles ;
+- Mise en mémoire du modèle simplifié ;
+- Application des templates / génération de code.
+
+
+Epuration du modèle XMI
+=======================
+
+La plupart des outils de modélisation décrivent leur modèle en XMI. Or le XMI
+est trop verbeux pour être compréhensible aisement.
+
+Eugene propose une tranformation XSLT permettant ainsi d'obtenir un XML
+épuré décrivant le modèle et ne conservant que l'essentiel des informations.
+
+Parmi les informations extraites, on peut citer :
+
+- Objets (classes, classes abtraites, interfaces)
+- Attributs (nom, type, visibilité, ...)
+- Relations entre les classes (toutes multiplicités, navigabilité, classes d'association, ...)
+- Opérations (nom, type de retour, noms et types des arguments, exceptions levées, ...)
+- Stéréotypes
+
+A partir du diagramme suivant :
+
+.. image:: images/Hotel.png
+
+On obtient un ObjectModel tel que :
+
+.. image:: images/Hotel.objectmodel.png
+
+
+Modèle mémoire
+==============
+
+Une fois le XMI ramené à un XML compréhensible, le modèle est chargé en
+mémoire afin de subir la génération.
+
+Ainsi, le modèle instancié est basé sur le diagramme de classes (méta-modèle) suivant :
+
+.. image:: images/ObjectModel.png
+
+Les interfaces disponibles pour les générateurs sont les suivantes :
+
+.. image:: images/ObjectModel_Interfaces.png
+
+ObjectModelGenerator :
+
+.. image:: images/ObjectModel_Generator.png
+
+Application des templates
+=========================
+
+Chaque template est à lui seul un générateur qui hérite de ObjectModelGenerator.
+Toute partie de ce générateur peut donc être surchargée permettant ainsi une
+forte personnalisation des générateurs. Le rôle de l'ObjectModelGenerator est
+donc de parcourir le modèle et à chaque élément clé du modèle, (model, classes
+interfaces, classifier) les méthodes correspondantes sont appelées. Par défaut,
+ces méthodes décrites dans le générateur de base sont vide, et il n'en ressort
+donc aucun code généré. Les templates ont donc pour but de surcharger ses
+méthodes et décrire le code qui va être généré.
+
+Les templates peuvent être de toutes sortes car ils peuvent générer un fichier
+différent par modèle, par interface, par classe ou encore par classifier (souche
+commune aux classes et interfaces). De plus, ils peuvent indifféremment générer
+du code Java / XML ou encore tout autre type de code (texte ou autre...).
Copied: trunk/src/site/rst/Todo.rst (from rev 719, trunk/src/site/fr/rst/Todo.rst)
===================================================================
--- trunk/src/site/rst/Todo.rst (rev 0)
+++ trunk/src/site/rst/Todo.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,115 @@
+====
+TODO
+====
+
+
+:Revision: $Revision$
+:Date: $Date$
+
+
+Idées ou choses à faire
+=======================
+
+- support des InnerClasses (en xmi argo: la classe est declarer dans une classe
+ dans un element UML:Namespace.ownedElement) (`Evolution #59`_ )
+
+- support des static (tout element declarer dans une class/interface: methode,
+ attribut, enumeration, class, ...)
+ (en xmi argo: ownerScope='classifier' ou ownerScope='instance') (`Evolution #58`_ )
+
+.. _Evolution #59: http://www.nuiton.org/issues/show/59
+.. _Evolution #58: http://www.nuiton.org/issues/show/58
+
+- peut-etre faire des tests unitaires avec http://juxy.tigris.org/ pour le xls
+
+- Permettre de faire du 'model to model' avant la generation
+
+Model to Model
+==============
+
+(2009-10-19 : En cours de developpement : `branches/1.0.1-javabuilder`_ )
+
+.. _branches/1.0.1-javabuilder: http://nuiton.org/repositories/browse/eugene/branches/1.0.1-Javabuilder
+
+Pour tout ce qui est génération de classe Java, le principe de base d'Eugene
+est de dire que le développeur écrit directement ce qu'il souhaite voir dans
+le fichier final.
+
+Cela pose quelques difficultés:
+
+- difficulté de prévoir les imports
+- difficulté d'éviter la génération de deux méthodes ayant le même nom
+
+L'idée serait alors de constuire la classe Java souhaitée au final en appelant
+des méthodes (addImport, addMethod, addAttribute, ...). Ceci nous donnerait
+alors un nouveau modèle mémoire dont on demanderait la génération à un
+générateur sans inteligence qui se contenterait d'écrire le code Java modélisé.
+
+L'avantage est que pour chaque méthode à ajouter on peut demander avant si elle
+n'a pas déjà été ajoutée et ainsi potentiellement la renomé avant de l'inclure.
+D'ajouter de façon automatique tous les imports des arguments des méthodes, ...
+
+Pour pouvoir faire cela, nous pourrions nous baser sur ObjectModel, mais des
+ajouter doivent être fait:
+
+- pouvoir indiquer sur une Class une série d'import.
+- pouvoir ajouter un message de licence
+- pouvoir ajouter sur une méthode sont code source
+
+Ce dernier élément est le plus problèmatique, car il deviendrait pénible de
+devoir instancier tout le code de la méthode en objet et on perdrait l'idée
+de départ d'Eugene.
+
+Dans eugène il est déjà possible de modifier la transformation des tags de
+génération '/\*{' et '}\*/' qui par défaut génère un 'ouput.write("...");'
+Dans notre cas, il faudrait quelque chose comme 'method.addCode("...");' ou
+encore plus simplement '"..." +' ce qui pourrait donner::
+
+ addImport(MonObject.class);
+ method.addCode(
+ /*{ int i = 0;
+ i = 1+2;
+ MonObject result = new MonObject(result);
+ return result;
+ }*/
+ );
+
+qui deviendrait::
+
+ addImport(MonObject.class);
+ method.addCode(
+ "int i = 0;\n" +
+ "i = 1+2;\n" +
+ "MonObject result = new MonObject(result);\n" +
+ "return result;\n"
+ );
+
+On garde la facilte d'écriture du code à générer et on permet d'ajouter
+facilement des imports dont on aurait besoin dans le coprs de la méthode. Aucun
+traitement complexe du code de la méthode n'est donc nécessaire.
+
+Ce nouveau mode de génération ne serait qu'une moyen complémentaire de la
+génération actuelle.
+
+Travail a faire:
+
+- ajout d'objet dans ObjectModel
+- ajout de méthode de modification dans ObjectModel
+- création d'un template de génération d'un POJO (génération direct d'un modèle)
+
+Il serait toute fois dommage d'ajouter tout un ensemnble de setter sur les
+interfaces d'ObjectModel qui le rendrait moins clair pour les générateurs.
+Il faut donc trouver une solution pour permettre l'instanciation et la
+modification de classe implantant l'ObjectModel sans pour autant les ajouter
+au interface.
+
+Une idée pourrait-être l'utilisation de Helper qui permette de créer et modifier
+le modèle::
+
+ ObjectModelClass clazz = ObjectModelHelper.createClass();
+ ObjectModelOperation method = ObjectModelHelper.addMethod(
+ clazz, "name", "typeRetour", "paramName", "typeParam");
+ ObjectModelHelper.addImport("java.util.List");
+ ObjectModelHelper.addCode(method,
+ /*{ blablabla
+ }*/
Copied: trunk/src/site/rst/index.rst (from rev 719, trunk/src/site/fr/rst/index.rst)
===================================================================
--- trunk/src/site/rst/index.rst (rev 0)
+++ trunk/src/site/rst/index.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,80 @@
+======
+Eugene
+======
+
+.. contents::
+
+
+Origine du projet
+-----------------
+
+Eugene est né à la suite d'une recherche de générateur de code basé sur
+un modèle mémoire simple qui s'est terminée par un échec.
+
+Les projets alors étudiés étaient alors entre autres :
+
+- Jostraca ;
+- EMF ;
+- ...
+
+Le choix de la génération de code par rapport à l'introspection a été fait car
+la génération code permet de passer par l'étape compilation et donc de
+validation du code généré. En effet, si le besoin était initialement porté sur
+de la génération de code Java, Eugene a été pensé pour générer tout type
+de code.
+
+
+Côté technique
+--------------
+
+Eugene permet l'utilisation d'un ensemble de générateurs. Ces
+générateurs sont abstraits de toute spécificité permettant ainsi de les adapter
+en fonction des besoins.
+
+Par défaut, Eugene propose trois implantations de ces générateurs :
+
+- ObjectModelGenerator (génération à partir d'un modèle objet) ;
+- StateModelGenerator (génération à partir d'un modèle d'états) ;
+- UIModelGenerator (génération à partir d'un modèle graphique).
+
+Chacun de ces modèles a ses propres spécificités liés à sa structure et son mode
+de fonctionnement...
+
+Cependant, ces générateurs sont inutiles sans des templates de génération. Les
+templates sont les fichiers qui vont permettre de déterminer quel sera le
+contenu généré en fonction du modèle initial. Grâce à NuitonProcessor_, ces
+templates sont écrit avec une sytaxe proche de la syntaxe JSP en imbriquant les
+portions de code Java avec les portions de code généré. Le rôle de
+NuitonProcessor_ est de transformer ces templates en remplaçant la syntaxe JSP par
+la syntaxe Java correpondante. Les classes Java obtenues peuvent donc être
+compilées et deviennent autonomes.
+
+.. _NuitonProcessor: http://maven-site.nuiton.org/processor/
+
+Règle ant
+---------
+
+Voici un exemple d'utilisation de la règle ant.
+
+::
+
+ <taskdef name="generator" classname="org.nuiton.eugene.GeneratorTask"
+ classpath="${compile.classpath}:${targetbuild}:${resources}" />
+
+ <target name="generate" description="generate">
+ <generator srcdir="${modelDir}" destdir="${targetgen}"
+ resolver="org.nuiton.exemple.ResourceResolver"
+ templates="org.nuiton.example.JavaBeanGenerator"
+ properties="defaultPackage=org.nuiton,fullPackagePath=org.nuiton,extraPackages=org.nuiton"
+ classpath="${compile.classpath}:${targetbuild}:${resources}" />
+ </target>
+
+Dans cette exemple, un template de génération sera apliqué sur tous les
+fichiers.
+
+Plugin maven
+------------
+
+Un plugin maven est disponnible à l'adresse suivante
+http://maven-site.nuiton.org/eugene/maven-eugene-plugin . Il permet l'utilisation
+depuis maven de Eugene.
Property changes on: trunk/src/site/rst/index.rst
___________________________________________________________________
Added: svn:mergeinfo
+
Copied: trunk/src/site/rst/maven-plugin.rst (from rev 719, trunk/src/site/fr/rst/maven-plugin.rst)
===================================================================
(Binary files differ)
Copied: trunk/src/site/rst/plugineclipse.rst (from rev 719, trunk/src/site/fr/rst/plugineclipse.rst)
===================================================================
--- trunk/src/site/rst/plugineclipse.rst (rev 0)
+++ trunk/src/site/rst/plugineclipse.rst 2009-11-25 11:37:26 UTC (rev 722)
@@ -0,0 +1,44 @@
+Installation du plugin LutinGenerator
+=====================================
+
+Ce guide détail comment installer le plugin eclipse LutinGenerator via
+l'update site (assitant d'instalation de plugins).
+
+Installation
+------------
+
+Ouvrez l'assitant d'installation de plugin via le menu
+(Help/Software Updates/Find and install...).
+
+.. image:: images/plugin_menu.png
+
+Sur la fenêtre suivante sélectionnez "Search for new features to install".
+
+.. image:: images/plugin_typeinstall.png
+
+Une nouvelle fenêtre s'affiche, sélectionnez "New remote site" pour ajouter le
+dépot "LutinGenerator".
+
+L'adresse du dépot à utiliser est :
+
+::
+
+ http://lutingenerator.labs.libre-entreprise.org/eclipse/
+
+.. image:: images/plugin_newdepot.png
+
+
+Sélectionnez ensuite ce dépot et cliquez sur "Finish".
+
+Installez ensuite la dernière version disponible et redémarrez eclipse:
+
+.. image:: images/plugin_choix.png
+
+
+Utilisation
+-----------
+
+Pour disposer de la coloration des templates, cliquez droit sur un fichier
+source java et sélectionnez "Open with > / LutinGenerator Template Editor"
+
+.. image:: images/plugin_utilisation_editeur.png
\ No newline at end of file
Added: trunk/src/site/site.xml
===================================================================
--- trunk/src/site/site.xml (rev 0)
+++ trunk/src/site/site.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -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>
Modified: trunk/src/site/site_en.xml
===================================================================
--- trunk/src/site/site_en.xml 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/site_en.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -6,9 +6,9 @@
</bannerLeft>
<poweredBy>
- <logo href="http://maven.apache.org" name="Maven" img="../../jrst/images/logos/maven-feather.png"/>
- <logo href="../../jrst" name="JRst" img="../../jrst/images/jrst-logo.png"/>
- <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="../../jrst/images/restructuredtext-logo.png"/>
+ <logo href="http://maven.apache.org" name="Maven" img="${project.url}/jrst/images/logos/maven-feather.png"/>
+ <logo href="http://maven-site.nuiton.org/jrst" name="JRst" img="${project.url}/jrst/images/jrst-logo.png"/>
+ <logo href="http://docutils.sourceforge.net/rst.html" name="ReStructuredText" img="${project.url}/jrst/images/restructuredtext-logo.png"/>
</poweredBy>
<body>
@@ -27,11 +27,10 @@
</menu>
<menu name="Links">
- <item href="../fr/index.html" name="EUGene project [ FR ]" />
+ <item href="../index.html" name="EUGene project [ FR ]" />
<item href="http://${platform}/projects/list_files/eugene" name="Downloads" />
- <item href="../eugene/en/index.html" name="EUGene Module" title="Access to reports and javadoc for EUGene module" />
- <item href="../../processor" name="Nuiton-processor" />
- <item href="../../topia" name="ToPIA" />
+ <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">
@@ -40,6 +39,11 @@
<item name="Help" href="${project.issueManagement.url}?query_id=3"/>
</menu>
+ <menu name="Modules">
+ <item href="../eugene/en/index.html" name="EUGene"/>
+ <item href="../maven-eugene-plugin/en/index.html" name="EUGene - plugin maven"/>
+ </menu>
+
<menu ref="reports"/>
</body>
Deleted: trunk/src/site/site_fr.xml
===================================================================
--- trunk/src/site/site_fr.xml 2009-11-25 11:36:25 UTC (rev 721)
+++ trunk/src/site/site_fr.xml 2009-11-25 11:37:26 UTC (rev 722)
@@ -1,57 +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="../../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/fr/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="../eugene/fr/index.html" name="Module EUGene" title="Accès aux rapports et javadoc du module EUGene"/>
- <item href="../../processor" name="Nuiton-processor" />
- <item href="../../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