Eugene-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- 1738 discussions
r835 - in trunk: eugene/src/main/java/org/nuiton/eugene/writer maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer
by tchemit@users.nuiton.org 04 Mar '10
by tchemit@users.nuiton.org 04 Mar '10
04 Mar '10
Author: tchemit
Date: 2010-03-04 19:03:17 +0100 (Thu, 04 Mar 2010)
New Revision: 835
Log:
- improve javadoc
- reformat code (80 car max per line)
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/writer/AbstractChainedFileWriter.java
trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriter.java
trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterConfiguration.java
trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterEntry.java
trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedWriterEngine.java
trunk/eugene/src/main/java/org/nuiton/eugene/writer/DefaultChainedWriterEngine.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/SmartGenerateMojo.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2ObjectModel.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2StateModel.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriter.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiChainedFileWriter.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoChainedFileWriter.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/writer/AbstractChainedFileWriter.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/writer/AbstractChainedFileWriter.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/writer/AbstractChainedFileWriter.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -22,7 +22,6 @@
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;
@@ -35,42 +34,45 @@
* @since 2.0.0
*/
public abstract class AbstractChainedFileWriter implements ChainedFileWriter {
- /**
- * Logger
- */
- private static final Log log = LogFactory.getLog(AbstractChainedFileWriter.class);
- /**
- * entries to treate with this writer
- */
+ /** Logger */
+ private static final Log log =
+ LogFactory.getLog(AbstractChainedFileWriter.class);
+ /** entries to treate with this writer */
protected List<ChainedFileWriterEntry> entries;
- /**
- * previous writer (can be null)
- */
+ /** previous writer (can be null) */
protected ChainedFileWriter previousWriter;
- /**
- * next writer (can be null)
- */
+ /** next writer (can be null) */
protected ChainedFileWriter nextWriter;
/**
- * universe of authorized properties (keys are property names, values are property descriptions).
+ * universe of authorized properties (keys are property names, values are
+ * property descriptions).
*/
protected final Map<String, String> authorizedPropertyDescriptions;
/**
- * real properties obtained fro a configuration in {@link #initWriter(ChainedFileWriterConfiguration)} method
+ * real properties obtained fro a configuration in {@link
+ * #initWriter(ChainedFileWriterConfiguration)} method
*/
protected Map<String, Object> properties;
protected AbstractChainedFileWriter(String... propertyNameAndDescriptions) {
if (propertyNameAndDescriptions.length % 2 != 0) {
- throw new IllegalArgumentException("propertyNameAndDescriptions must be couple of (property key, property description), but was " + Arrays.toString(propertyNameAndDescriptions));
+ throw new IllegalArgumentException(
+ "propertyNameAndDescriptions must be couple of " +
+ "(property key, property description), but was " +
+ Arrays.toString(propertyNameAndDescriptions));
}
entries = new ArrayList<ChainedFileWriterEntry>();
properties = new TreeMap<String, Object>();
- Map<String, String> authorizedPropertyDescriptions = new TreeMap<String, String>();
- for (int i = 0, max = propertyNameAndDescriptions.length / 2; i < max; i++) {
- authorizedPropertyDescriptions.put(propertyNameAndDescriptions[2 * i], propertyNameAndDescriptions[2 * i + 1]);
+ Map<String, String> authorizedPropertyDescriptions =
+ new TreeMap<String, String>();
+ for (int i = 0, max = propertyNameAndDescriptions.length / 2;
+ i < max; i++) {
+ authorizedPropertyDescriptions.put(
+ propertyNameAndDescriptions[2 * i],
+ propertyNameAndDescriptions[2 * i + 1]);
}
- this.authorizedPropertyDescriptions = Collections.unmodifiableMap(authorizedPropertyDescriptions);
+ this.authorizedPropertyDescriptions =
+ Collections.unmodifiableMap(authorizedPropertyDescriptions);
}
/**
@@ -82,7 +84,11 @@
* @param includePattern pattern of files to include
* @throws IOException for any IO pb.
*/
- protected abstract void generate(ChainedFileWriterConfiguration configuration, File outputDir, File inputDirectory, String includePattern) throws IOException;
+ protected abstract void generate(
+ ChainedFileWriterConfiguration configuration,
+ File outputDir,
+ File inputDirectory,
+ String includePattern) throws IOException;
@Override
public Map<String, String> getAuthorizedPropertyDescriptions() {
@@ -113,30 +119,43 @@
}
@Override
- public void generate(ChainedFileWriterConfiguration configuration) throws IOException {
+ public void generate(ChainedFileWriterConfiguration configuration)
+ throws IOException {
if (log.isDebugEnabled()) {
- log.debug("[" + getInputProtocol() + "] Start generate with writer " + this);
+ log.debug("[" + getInputProtocol() +
+ "] Start generate with writer " + this);
}
initWriter(configuration);
try {
- File outputDir = getOutputDirectory(configuration.getOutputDirectory(), configuration.isTestPhase());
+ File outputDir = getOutputDirectory(
+ configuration.getOutputDirectory(),
+ configuration.isTestPhase()
+ );
if (!outputDir.exists()) {
if (log.isDebugEnabled()) {
- log.debug("[" + getInputProtocol() + "] Create output directory " + outputDir);
+ log.debug("[" + getInputProtocol() +
+ "] Create output directory " + outputDir);
}
boolean b = outputDir.mkdirs();
if (!b) {
- throw new IOException("Could not creat directory " + outputDir);
+ throw new IOException("Could not creat directory " +
+ outputDir);
}
}
for (ChainedFileWriterEntry e : entries) {
if (log.isDebugEnabled()) {
- log.debug("[" + getInputProtocol() + "] Will generate entry " + e.getInputDirectory() + " : " + e.getIncludePattern());
+ log.debug("[" + getInputProtocol() +
+ "] Will generate entry " + e.getInputDirectory()
+ + " : " + e.getIncludePattern());
}
- generate(configuration, outputDir, e.getInputDirectory(), e.getIncludePattern());
+ generate(configuration,
+ outputDir,
+ e.getInputDirectory(),
+ e.getIncludePattern()
+ );
}
} finally {
clear();
@@ -151,7 +170,10 @@
@Override
public File getOutputDirectory(File outputBasedir, boolean testPhase) {
- return new File(outputBasedir, testPhase ? getDefaultTestOutputDirectory() : getDefaultOutputDirectory());
+ return new File(outputBasedir, testPhase ?
+ getDefaultTestOutputDirectory() :
+ getDefaultOutputDirectory()
+ );
}
@Override
@@ -180,11 +202,12 @@
Map<String, Object> map = configuration.getProperties();
for (String key : getAuthorizedPropertyNames()) {
- //TODO-TC-20091217, should prefix keys by the inputProtocol to avoid collisions ?
+ //TODO-TC-20091217, should prefix keys by the inputProtocol to
+ //TODO-TC-20091217 avoid collisions ?
if (map.containsKey(key)) {
// keep this property
properties.put(key, map.get(key));
}
}
}
-}
\ No newline at end of file
+}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriter.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriter.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriter.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -24,33 +24,34 @@
import java.io.IOException;
import java.util.List;
import java.util.Map;
+import java.util.regex.Matcher;
/**
- * Contract to generate files from any incoming sources (zargo, xmi, ...) to any other ones.
+ * Contract to generate files from any incoming sources (zargo, xmi, ...) to any
+ * other ones.
* <p/>
- * User: chemit
- * Date: 27 nov. 2009
- * Time: 11:20:39
+ * User: chemit Date: 27 nov. 2009 Time: 11:20:39
*
* @since 2.0.0
*/
public interface ChainedFileWriter {
- /**
- * @return the accepted incoming protocol
- */
+ /** @return the accepted incoming protocol */
String getInputProtocol();
/**
- * Obtain the input protocol of this writer given the passed {@code modelType}.
+ * Obtain the input protocol of this writer given the passed {@code
+ * modelType}.
*
* @param modelType the type of model used
- * @return the input protocol or {@code null} if this writer does not accept the type of model
+ * @return the input protocol or {@code null} if this writer does not accept
+ * the type of model
*/
String getInputProtocol(String modelType);
/**
- * Obtain the output protocol of this writer given the passed {@code modelType}.
+ * Obtain the output protocol of this writer given the passed {@code
+ * modelType}.
*
* @param modelType the type of model used
* @return the output protocol or {@code null} if should not be chained
@@ -61,7 +62,8 @@
* Test if a type of model can be treated by this writer.
*
* @param modelType model type to test
- * @return {@code true} if this writer accept the given type of model, {@code false} otherwise.
+ * @return {@code true} if this writer accept the given type of model,
+ * {@code false} otherwise.
*/
boolean acceptModel(String modelType);
@@ -69,32 +71,32 @@
* 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.
+ * @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)
+ * @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.
- */
+ /** @return the defalt relative path where to pick files to treate. */
String getDefaultInputDirectory();
/**
- * @return the defalt relative path where to pick files to treate on a test phase.
+ * @return the defalt relative path where to pick files to treate on a test
+ * phase.
*/
String getDefaultTestInputDirectory();
- /**
- * @return the default relative path to add to output basedir
- */
+ /** @return the default relative path to add to output basedir */
String getDefaultOutputDirectory();
/**
- * @return the default relative path to add to output basedir on a test phase.
+ * @return the default relative path to add to output basedir on a test
+ * phase.
*/
String getDefaultTestOutputDirectory();
@@ -105,7 +107,8 @@
*
* @param outputBasedir the output base directory
* @param testPhase {@code true} if writer is used in a test phase
- * @return the real output directory where to generate for this particular writer
+ * @return the real output directory where to generate for this particular
+ * writer
*/
File getOutputDirectory(File outputBasedir, boolean testPhase);
@@ -115,11 +118,10 @@
* @param configuration the share configuration of all writers.
* @throws IOException if any io pb.
*/
- void generate(ChainedFileWriterConfiguration configuration) throws IOException;
+ void generate(ChainedFileWriterConfiguration configuration)
+ throws IOException;
- /**
- * Clear all internal states
- */
+ /** Clear all internal states */
void clear();
/**
@@ -129,14 +131,12 @@
*/
void addEntry(ChainedFileWriterEntry entry);
- /**
- * @return the array of properties names authorized for the chanied writer.
- */
+ /** @return the array of properties names authorized for the chanied writer. */
String[] getAuthorizedPropertyNames();
/**
- * @return the dictionnary of authorized property descriptions (keys are property names and
- * values are descriptions).
+ * @return the dictionnary of authorized property descriptions (keys are
+ * property names and values are descriptions).
*/
Map<String, String> getAuthorizedPropertyDescriptions();
@@ -150,8 +150,6 @@
*/
<T> T getProperty(String key, Class<T> type);
- /**
- * @return the list of all entries registered
- */
+ /** @return the list of all entries registered */
List<ChainedFileWriterEntry> getEntries();
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterConfiguration.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterConfiguration.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterConfiguration.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -27,83 +27,57 @@
import java.util.Map;
/**
- * Shared configuration of a {@link ChainedFileWriter}, should be the same for all writers
- * to use at a time.
+ * Shared configuration of a {@link ChainedFileWriter}, should be the same for
+ * all writers to use at a time.
*
* @author tchemit
* @since 2.0.0
*/
public interface ChainedFileWriterConfiguration {
- /**
- * @return the type of model used
- */
+ /** @return the type of model used */
String getModelType();
-// /**
-// * @return the type of model used
-// */
-// Class<? extends Model> getModelClass();
-
- /**
- * @return project base directory
- */
+ /** @return project base directory */
File getBasedir();
- /**
- * @return base directory where to generate
- */
+ /** @return base directory where to generate */
File getOutputDirectory();
/**
- * @return {@code true} if must regenerate files even if they are up to date
+ * @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.
+ * @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.
- */
+ /** @return {@code true} if build is verbose. */
boolean isVerbose();
- /**
- * @return {@code true} if build is done on a test phase.
- */
+ /** @return {@code true} if build is done on a test phase. */
boolean isTestPhase();
- /**
- * @return encoding to use to read and write files
- */
+ /** @return encoding to use to read and write files */
String getEncoding();
- /**
- * @return the universe of availables writers
- */
+ /** @return the universe of availables writers */
Map<String, ChainedFileWriter> getWriters();
- /**
- * @return the universe of available model readers
- */
+ /** @return the universe of available model readers */
Map<String, ModelReader<?>> getModelReaders();
- /**
- * @return the universe of available model templates
- */
+ /** @return the universe of available model templates */
Map<String, Template<?>> getModelTemplates();
- /**
- * @return properties to pass to writers
- */
+ /** @return properties to pass to writers */
Map<String, Object> getProperties();
- /**
- *
- * @return the classloader to use to seek for resources
- */
+ /** @return the classloader to use to seek for resources */
ClassLoader getClassLoader();
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterEntry.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterEntry.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterEntry.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -3,16 +3,26 @@
import java.io.File;
/**
+ * Definition of of the chained writer entry.
+ *
+ * Created: 04 mars. 2010
*
+ * @author Tony Chemit <chemit(a)codelutin.com> Copyright Code Lutin
+ * @version $Revision$
+ * <p/>
+ * Mise a jour: $Date$
+ * par : $Author: tchemit $
+ * @since 2.0.0
+ *
*/
public class ChainedFileWriterEntry {
/**
- *
+ * input directory of entry
*/
protected File inputDirectory;
/**
- *
+ * include pattern of entry
*/
protected String includePattern;
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedWriterEngine.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedWriterEngine.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedWriterEngine.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -9,36 +9,105 @@
* <p/>
* You can register inputs via the method {@link #registerInclude(String)}.
* <p/>
- * And later obtain of the selected writers for your inputs via the method {@link #getSelectedWriters()}.
+ * And later obtain of the selected writers for your inputs via the method
+ * {@link #getSelectedWriters()}.
* <p/>
* Created: 17 déc. 2009
*
* @author Tony Chemit <chemit(a)codelutin.com> Copyright Code Lutin
* @version $Revision$
* <p/>
- * Mise a jour: $Date$ par :
- * $Author: tchemit $
+ * Mise a jour: $Date$
+ * par : $Author: tchemit $
* @since 2.0.0
*/
public interface ChainedWriterEngine {
+ /**
+ * Register in engine a new input source.
+ * <p/>
+ * this method will detects writers to register and chain them if
+ * necessary.
+ *
+ * @param include the new include to digest
+ */
+ void registerInclude(String include);
+ /** @return the common configuration of engine */
ChainedFileWriterConfiguration getConfiguration();
+ /**
+ * Sets the common configuration.
+ *
+ * @param configuration the new configuration ot use.
+ */
void setConfiguration(ChainedFileWriterConfiguration configuration);
+ /** @return the set of all available writers discovered at runtime */
Set<ChainedFileWriter> getAvailableWriters();
+ /** @return the list of selected writers after having registred some inputs. */
List<ChainedFileWriter> getSelectedWriters();
+ /**
+ * Tests if there is a selected writer using the given input protocol.
+ *
+ * @param inputProtocol the inputProtocol to test
+ * @return {@code true} if there is a selected writer using this input
+ * protocol
+ * @see ChainedFileWriter#getInputProtocol()
+ * @see #getSelectedWriters()
+ */
boolean containsWriter(String inputProtocol);
- Set<ChainedFileWriter> filterWriterForModelType(Map<String, ChainedFileWriter> universe, String modelType);
+ /**
+ * Filter the given {@code universe} of writers which accept the given
+ * {@code modelType}.
+ *
+ * @param universe the list of writers to filter
+ * @param modelType the accepted model type
+ * @return the set of filtered writers
+ * @see ChainedFileWriter#acceptModel(String)
+ */
+ Set<ChainedFileWriter> filterWriterForModelType(
+ Map<String, ChainedFileWriter> universe,
+ String modelType);
- ChainedFileWriter getWriterForInputProtocol(Set<ChainedFileWriter> universe, String inputProtocol, String modelType);
+ /**
+ * Filter the given {@code universe} of writers which accept the given
+ * {@code modelType} and {@code inputProtocol}.
+ *
+ * @param universe the list of writers to filter
+ * @param inputProtocol the accepted input protocol
+ * @param modelType the accepted model type
+ * @return the set of filtered writers
+ * @see ChainedFileWriter#acceptModel(String)
+ * @see ChainedFileWriter#getInputProtocol()
+ * @see ChainedFileWriter#getInputProtocol(String)
+ */
+ ChainedFileWriter getWriterForInputProtocol(
+ Set<ChainedFileWriter> universe,
+ String inputProtocol,
+ String modelType);
- ChainedFileWriter getWriterForInclude(Set<ChainedFileWriter> universe, String include, String modelType);
+ /**
+ * Filter the given {@code universe} of writers which accept the given
+ * {@code modelType} and {@code include}.
+ * <p/>
+ * The include can have several forms : <ul> <li></li> <li></li> </ul>
+ *
+ * @param universe the list of writers to filter
+ * @param include the include configuration
+ * @param modelType the accepted model type
+ * @return the set of filtered writers
+ * @see ChainedFileWriter#acceptModel(String)
+ * @see ChainedFileWriter#getInputProtocol()
+ * @see ChainedFileWriter#getInputProtocol(String)
+ */
+ ChainedFileWriter getWriterForInclude(
+ Set<ChainedFileWriter> universe,
+ String include,
+ String modelType);
- void registerInclude(String include);
-
+ /** clean internal states */
void clear();
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/writer/DefaultChainedWriterEngine.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/writer/DefaultChainedWriterEngine.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/writer/DefaultChainedWriterEngine.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -26,7 +26,8 @@
/**
* Logger
*/
- private static final Log log = LogFactory.getLog(DefaultChainedWriterEngine.class);
+ private static final Log log =
+ LogFactory.getLog(DefaultChainedWriterEngine.class);
/**
* shared configuration
*/
@@ -73,7 +74,10 @@
public Set<ChainedFileWriter> getAvailableWriters() {
if (availableWriters == null) {
checkConfiguration("getAvailableWriters");
- availableWriters = filterWriterForModelType(getConfiguration().getWriters(), getConfiguration().getModelType());
+ availableWriters = filterWriterForModelType(
+ getConfiguration().getWriters(),
+ getConfiguration().getModelType()
+ );
}
return availableWriters;
}
@@ -94,7 +98,8 @@
// obtain the good type of entry and the corresponding matcher
- for (ModelFileWriterEntryType type : ModelFileWriterEntryType.values()) {
+ for (ModelFileWriterEntryType type :
+ ModelFileWriterEntryType.values()) {
matcher = type.getMatcher(include);
if (matcher != null) {
// get a matcher
@@ -105,15 +110,18 @@
if (selectedType == null) {
// no writer
- throw new IllegalArgumentException("could not find a writer for include pattern : " + include);
+ throw new IllegalArgumentException("could not find a writer for " +
+ "include pattern : " + include);
}
// obtain the writer
- ChainedFileWriter writer = selectedType.getWriter(this, include, matcher);
+ ChainedFileWriter writer =
+ selectedType.getWriter(this, include, matcher);
// create the new entry
- ChainedFileWriterEntry writerEntry = selectedType.newEntry(this, include, matcher, writer);
+ ChainedFileWriterEntry writerEntry =
+ selectedType.newEntry(this, include, matcher, writer);
// register the new entry
@@ -143,17 +151,26 @@
// 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);
+ log.debug("[" + include + "]" + " writer " +
+ writer.getClass().getSimpleName() +
+ " require a next writer of protocol " + outpoutProtocol);
}
- ChainedFileWriter nextWriter = ((AbstractChainedFileWriter) writer).getNextWriter();
+ ChainedFileWriter nextWriter =
+ ((AbstractChainedFileWriter) writer).getNextWriter();
if (nextWriter == null) {
// the next writer was not initialize, just have to add new entry
- nextWriter = getWriterForInputProtocol(getAvailableWriters(), outpoutProtocol, modelType);
+ nextWriter = getWriterForInputProtocol(
+ getAvailableWriters(),
+ outpoutProtocol,
+ modelType
+ );
if (nextWriter == null) {
- throw new IllegalArgumentException("could not find a writer for protocole " + outpoutProtocol + " on model " + modelType);
+ throw new IllegalArgumentException(
+ "could not find a writer for protocole " +
+ outpoutProtocol + " on model " + modelType);
}
// chain writer
((AbstractChainedFileWriter) writer).setNextWriter(nextWriter);
@@ -163,11 +180,14 @@
String basedirpath = configuration.getBasedir().getAbsolutePath();
- String outputpath = writer.getOutputDirectory(configuration.getOutputDirectory(), configuration.isTestPhase()).getAbsolutePath();
+ String outputpath = writer.getOutputDirectory(
+ configuration.getOutputDirectory(),
+ configuration.isTestPhase()).getAbsolutePath();
String path = outputpath.substring(basedirpath.length() + 1);
- String newInclude = outpoutProtocol + ":" + path + ":" + nextWriter.getDefaultIncludes();
+ String newInclude = outpoutProtocol + ":" + path + ":" +
+ nextWriter.getDefaultIncludes();
registerInclude(newInclude);
@@ -193,7 +213,8 @@
}
@Override
- public Set<ChainedFileWriter> filterWriterForModelType(Map<String, ChainedFileWriter> universe, String modelType) {
+ public Set<ChainedFileWriter> filterWriterForModelType(
+ Map<String, ChainedFileWriter> universe, String modelType) {
Set<ChainedFileWriter> result = new HashSet<ChainedFileWriter>();
for (ChainedFileWriter w : universe.values()) {
if (w.acceptModel(modelType)) {
@@ -207,7 +228,10 @@
}
@Override
- public ChainedFileWriter getWriterForInputProtocol(Set<ChainedFileWriter> universe, String inputProtocol, String modelType) {
+ public ChainedFileWriter getWriterForInputProtocol(
+ Set<ChainedFileWriter> universe,
+ String inputProtocol,
+ String modelType) {
for (ChainedFileWriter writer : universe) {
if (inputProtocol.equals(writer.getInputProtocol(modelType))) {
return writer;
@@ -217,7 +241,10 @@
}
@Override
- public ChainedFileWriter getWriterForInclude(Set<ChainedFileWriter> universe, String include, String modelType) {
+ public ChainedFileWriter getWriterForInclude(
+ Set<ChainedFileWriter> universe,
+ String include,
+ String modelType) {
for (ChainedFileWriter w : universe) {
if (w.acceptInclude(include)) {
return w;
@@ -226,9 +253,11 @@
return null;
}
- protected void checkConfiguration(String method) throws IllegalStateException {
+ protected void checkConfiguration(String method)
+ throws IllegalStateException {
if (getConfiguration() == null) {
- throw new IllegalStateException("can not acces to " + method + "before configuration is set!");
+ throw new IllegalStateException("can not acces to " + method +
+ "before configuration is set!");
}
}
@@ -240,30 +269,50 @@
ONLY_PROTOCOL_PATTERN(Pattern.compile("^([a-zA-Z]+)$")) {
@Override
- public ChainedFileWriter getWriter(ChainedWriterEngine engine, String include, Matcher matcher) {
- ChainedFileWriterConfiguration configuration = engine.getConfiguration();
+ public ChainedFileWriter getWriter(ChainedWriterEngine engine,
+ String include,
+ Matcher matcher) {
+ ChainedFileWriterConfiguration configuration =
+ engine.getConfiguration();
Set<ChainedFileWriter> universe = engine.getAvailableWriters();
String protocol = matcher.group(1).toLowerCase();
- ChainedFileWriter writer = engine.getWriterForInputProtocol(universe, protocol, configuration.getModelType());
+ ChainedFileWriter writer = engine.getWriterForInputProtocol(
+ universe,
+ protocol,
+ configuration.getModelType()
+ );
if (writer == null) {
- throw new IllegalArgumentException("could not find the writer named '" + protocol + "', use one of " + universe);
+ throw new IllegalArgumentException(
+ "could not find the writer named '" + protocol +
+ "', use one of " + universe);
}
if (log.isDebugEnabled()) {
- log.debug("[" + include + "] " + "writer = (" + writer + ")");
+ log.debug("[" + include + "] " + "writer = (" + writer +
+ ")");
}
return writer;
}
@Override
- public ChainedFileWriterEntry newEntry(ChainedWriterEngine engine, String include, Matcher matcher, ChainedFileWriter writer) {
- ChainedFileWriterConfiguration configuration = engine.getConfiguration();
+ public ChainedFileWriterEntry newEntry(
+ ChainedWriterEngine engine,
+ String include,
+ Matcher matcher,
+ ChainedFileWriter writer) {
+ ChainedFileWriterConfiguration configuration =
+ engine.getConfiguration();
if (log.isDebugEnabled()) {
- log.debug("[" + include + "] " + "detected pattern (" + name() + ")");
+ log.debug("[" + include + "] " + "detected pattern (" +
+ name() + ")");
}
ChainedFileWriterEntry writerEntry = new ChainedFileWriterEntry(
- new File(configuration.getBasedir(), configuration.isTestPhase() ? writer.getDefaultTestInputDirectory() : writer.getDefaultInputDirectory()),
+ new File(configuration.getBasedir(),
+ configuration.isTestPhase() ?
+ writer.getDefaultTestInputDirectory() :
+ writer.getDefaultInputDirectory()
+ ),
writer.getDefaultIncludes()
);
return writerEntry;
@@ -272,8 +321,11 @@
NO_PROTOCOL_PATTERN(Pattern.compile("^([^:]+):([^:]+)$")) {
@Override
- public ChainedFileWriter getWriter(ChainedWriterEngine engine, String include, Matcher matcher) {
- ChainedFileWriterConfiguration configuration = engine.getConfiguration();
+ public ChainedFileWriter getWriter(ChainedWriterEngine engine,
+ String include,
+ Matcher matcher) {
+ ChainedFileWriterConfiguration configuration =
+ engine.getConfiguration();
Set<ChainedFileWriter> universe = engine.getAvailableWriters();
String modelType = configuration.getModelType();
@@ -281,23 +333,32 @@
// pattern is discover from the includes
// discover the writer from the given pattern
- ChainedFileWriter writer = engine.getWriterForInclude(universe, include, modelType);
+ ChainedFileWriter writer = engine.getWriterForInclude(
+ universe, include, modelType
+ );
if (writer == null) {
- throw new IllegalArgumentException("could not find a writer for include " + include);
+ throw new IllegalArgumentException(
+ "could not find a writer for include " + include);
}
if (log.isDebugEnabled()) {
- log.debug("[" + include + "] " + "writer = (" + writer + ")");
+ log.debug("[" + include + "] " + "writer = (" +
+ writer + ")");
}
return writer;
}
@Override
- public ChainedFileWriterEntry newEntry(ChainedWriterEngine engine, String include, Matcher matcher, ChainedFileWriter writer) {
- ChainedFileWriterConfiguration configuration = engine.getConfiguration();
+ public ChainedFileWriterEntry newEntry(ChainedWriterEngine engine,
+ String include,
+ Matcher matcher,
+ ChainedFileWriter writer) {
+ ChainedFileWriterConfiguration configuration =
+ engine.getConfiguration();
// with no protocol pattern
// pattern is discover from the includes
if (log.isDebugEnabled()) {
- log.debug("[" + include + "] " + "detected pattern (" + name() + ")");
+ log.debug("[" + include + "] " + "detected pattern (" +
+ name() + ")");
}
String inputPath = matcher.group(1);
@@ -313,31 +374,43 @@
FULL_PATTERN(Pattern.compile("^(\\w+):([^:]+):([^:]+)$")) {
@Override
- public ChainedFileWriter getWriter(ChainedWriterEngine engine, String include, Matcher matcher) {
+ public ChainedFileWriter getWriter(ChainedWriterEngine engine,
+ String include,
+ Matcher matcher) {
// with full pattern (protocol + directory + includes)
// pattern is discover from the includes
- ChainedFileWriterConfiguration configuration = engine.getConfiguration();
+ ChainedFileWriterConfiguration configuration =
+ engine.getConfiguration();
Set<ChainedFileWriter> universe = engine.getAvailableWriters();
String protocol = matcher.group(1).toLowerCase();
- ChainedFileWriter writer = engine.getWriterForInputProtocol(universe, protocol, configuration.getModelType());
+ ChainedFileWriter writer = engine.getWriterForInputProtocol(
+ universe, protocol, configuration.getModelType());
if (writer == null) {
- throw new IllegalArgumentException("could not find the writer named '" + protocol + "', use one of " + universe);
+ throw new IllegalArgumentException(
+ "could not find the writer named '" + protocol +
+ "', use one of " + universe);
}
if (log.isDebugEnabled()) {
- log.debug("[" + include + "] " + "writer = (" + writer + ")");
+ log.debug("[" + include + "] " + "writer = (" + writer +
+ ")");
}
return writer;
}
@Override
- public ChainedFileWriterEntry newEntry(ChainedWriterEngine engine, String include, Matcher matcher, ChainedFileWriter writer) {
- ChainedFileWriterConfiguration configuration = engine.getConfiguration();
+ public ChainedFileWriterEntry newEntry(ChainedWriterEngine engine,
+ String include,
+ Matcher matcher,
+ ChainedFileWriter writer) {
+ ChainedFileWriterConfiguration configuration =
+ engine.getConfiguration();
// with full pattern (protocol + directory + includes)
// pattern is discover from the includes
if (log.isDebugEnabled()) {
- log.debug("[" + include + "] " + "detected pattern (" + name() + ")");
+ log.debug("[" + include + "] " + "detected pattern (" +
+ name() + ")");
}
String inputPath = matcher.group(2);
@@ -365,9 +438,15 @@
return matcher.matches() ? matcher : null;
}
- public abstract ChainedFileWriterEntry newEntry(ChainedWriterEngine engine, String include, Matcher matcher, ChainedFileWriter writer);
+ public abstract ChainedFileWriterEntry newEntry(
+ ChainedWriterEngine engine,
+ String include,
+ Matcher matcher, ChainedFileWriter writer);
- public abstract ChainedFileWriter getWriter(ChainedWriterEngine engine, String include, Matcher matcher);
+ public abstract ChainedFileWriter getWriter(
+ ChainedWriterEngine engine,
+ String include,
+ Matcher matcher);
}
}
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/AvailableDataMojo.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -38,18 +38,16 @@
/**
* Obtain the list of some known data informations.
* <p/>
- * Use the {@code dataTypes} property to specify a specific data type to use (otherwise
- * will display all known data types).
+ * Use the {@code dataTypes} property to specify a specific data type to use
+ * (otherwise will display all known data types).
* <p/>
- * User: chemit
- * Date: 24 nov. 2009
- * Time: 00:22:37
*
* @goal available-data
* @requiresProject true
* @requiresDirectInvocation true
* @requiresDependencyResolution test
* @since 2.0.0
+ * @author tchemit <chemit(a)codelutin.com>
*/
public class AvailableDataMojo extends AbstractMojo {
@@ -73,8 +71,8 @@
protected String dataTypes;
/**
- * All available models (obtain by plexus, keys are plexus roles, values are a
- * instance of corresponding model).
+ * All available models (obtain by plexus, keys are plexus roles, values
+ * are a instance of corresponding model).
*
* @component role="org.nuiton.eugene.models.Model"
*/
@@ -125,7 +123,9 @@
}
safeDataTypes.add(data);
} catch (IllegalArgumentException e) {
- getLog().warn("does not know data type : " + s + " use one of " + Arrays.toString(AvailableData.values()));
+ getLog().warn(
+ "does not know data type : " + s + " use one of " +
+ Arrays.toString(AvailableData.values()));
}
}
}
@@ -135,7 +135,8 @@
appendData(data, buffer);
}
- getLog().info("Get datas for data types : " + safeDataTypes + buffer.toString());
+ getLog().info("Get datas for data types : " + safeDataTypes +
+ buffer.toString());
}
protected void appendData(AvailableData data, StringBuilder buffer) {
@@ -149,12 +150,20 @@
} else if (size == 1) {
buffer.append("\nFound one ").append(dataType).append(" : ");
} else {
- buffer.append("\nFound ").append(size).append(" ").append(dataType).append("s : ");
+ buffer.append("\nFound ");
+ buffer.append(size);
+ buffer.append(" ");
+ buffer.append(dataType);
+ buffer.append("s : ");
}
for (Map.Entry<String, ?> e : map.entrySet()) {
String name = e.getKey();
Object value = e.getValue();
- buffer.append("\n [").append(name).append("] with implementation '").append(data.toString(value)).append("'");
+ buffer.append("\n [");
+ buffer.append(name);
+ buffer.append("] with implementation '");
+ buffer.append(data.toString(value));
+ buffer.append('\'');
}
}
@@ -174,11 +183,16 @@
String toString(Object data) {
ChainedFileWriter w = (ChainedFileWriter) data;
StringBuilder b = new StringBuilder(super.toString(data));
- b.append("\n").append(" inputProtocol : ").append(w.getInputProtocol());
- b.append("\n").append(" outputProtocol : ").append(w.getOutputProtocol(ObjectModel.NAME));
- b.append("\n").append(" defaultIncludes : ").append(w.getDefaultIncludes());
- b.append("\n").append(" defaultInputDirectory : ").append(w.getDefaultInputDirectory());
- b.append("\n").append(" defaultTestInputDirectory : ").append(w.getDefaultTestInputDirectory());
+ b.append("\n").append(" inputProtocol : ");
+ b.append(w.getInputProtocol());
+ b.append("\n").append(" outputProtocol : ");
+ b.append(w.getOutputProtocol(ObjectModel.NAME));
+ b.append("\n").append(" defaultIncludes : ");
+ b.append(w.getDefaultIncludes());
+ b.append("\n").append(" defaultInputDirectory : ");
+ b.append(w.getDefaultInputDirectory());
+ b.append("\n").append(" defaultTestInputDirectory : ");
+ b.append(w.getDefaultTestInputDirectory());
return b.toString();
}
},
@@ -202,4 +216,4 @@
}
}
-}
\ No newline at end of file
+}
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/CopyVersionFiles.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -46,7 +46,8 @@
*
* <p/>
*
- * En entrée on demande des répertoires où chercher les fichiers objectmodel a convertir.
+ * En entrée on demande des répertoires où chercher les fichiers
+ * objectmodel a convertir.
* <p/>
* En sortie on demande le répertoire ou generer les classes java.
* <p/>
@@ -125,21 +126,27 @@
// find version and model name
findVersionAndModelName();
- if (versionFound == null || !versionFound.matches("[0-9]+(\\.[0-9]+)*")) {
+ if (versionFound == null ||
+ !versionFound.matches("[0-9]+(\\.[0-9]+)*")) {
versionFound = "0";
- getLog().info("No version found in model files, setting version to '" + versionFound + "'");
+ getLog().info(
+ "No version found in model files, setting version to '" +
+ versionFound + "'");
} else {
- getLog().info("Version '" + versionFound + "' found in model description");
+ getLog().info("Version '" + versionFound +
+ "' found in model description");
}
- String destDir = copyVersionDir.replace("%MODELNAME%", modelNameFound) + File.separator + versionFound;
+ String destDir = copyVersionDir.replace("%MODELNAME%", modelNameFound)
+ + File.separator + versionFound;
fVersionDir = new File(destDir);
if (overwrite || !checkExistence()) {
-// try {
- PluginHelper.copyFiles(copyVersionResources.getOutput(), fVersionDir, new String[]{copyVersionFiles}, null, true);
-// } catch (IOException ex) {
-// throw new MojoExecutionException("could not copy some files for reason " + ex.getMessage(), ex);
-// }
+ PluginHelper.copyFiles(copyVersionResources.getOutput(),
+ fVersionDir,
+ new String[]{copyVersionFiles},
+ null,
+ true
+ );
}
}
@@ -151,28 +158,41 @@
@Override
protected PluginIOContext initResources() {
- File defaultIn = getFileFromBasedir("target", "generated-sources", "models");
- File defaultOut = getFileFromBasedir("target", "generated-sources", "java");
+ File defaultIn = getFileFromBasedir("target", "generated-sources",
+ "models");
+ File defaultOut = getFileFromBasedir("target", "generated-sources",
+ "java");
- File defaultTestIn = getFileFromBasedir("target", "generated-sources", "test-models");
- File defaultTestOut = getFileFromBasedir("target", "generated-sources", "test-java");
+ File defaultTestIn = getFileFromBasedir("target", "generated-sources",
+ "test-models");
+ File defaultTestOut = getFileFromBasedir("target", "generated-sources",
+ "test-java");
- copyVersionResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut);
+ copyVersionResources = initResources(
+ defaultIn,
+ defaultOut,
+ defaultTestIn,
+ defaultTestOut
+ );
return copyVersionResources;
}
/**
- * Check if previous saved files are already present
- * @return <code>true</code> if already present,<code>false</code> otherwise.
+ * Check if previous saved files are already present.
+ *
+ * @return {@code true} if already present,{@code false} otherwise.
*/
protected boolean checkExistence() {
boolean exist = false;
if (fVersionDir.exists() && fVersionDir.listFiles().length > 0) {
- getLog().warn("[COPY] Warning saved files for version '" + versionFound + "' and name '" + modelNameFound + "' already exists");
- getLog().warn("[COPY] Copy won't be done unless copyOverwrite " + "parameter is set to 'true' or version is updated");
+ getLog().warn("[COPY] Warning saved files for version '" +
+ versionFound + "' and name '" + modelNameFound +
+ "' already exists");
+ getLog().warn("[COPY] Copy won't be done unless copyOverwrite " +
+ "parameter is set to 'true' or version is updated");
exist = true;
}
@@ -180,38 +200,8 @@
return exist;
}
-// /**
-// * Copy hibernate files.
-// *
-// * Using ant task
-// * @throws IOException
-// */
-// protected void copyAction() throws IOException {
- // creation du repertoire
-// fVersionDir.mkdirs();
-// destDirGen.mkdirs();
-//
-// /* Création d'un projet ant */
-// Project p = createProject();
-//
-// /* Création de la tâche ant Copy */
-// Copy copy = createCopyTask(p);
-//
-// /* Configuration */
-// copy.setTodir(fVersionDir);
-// copy.setOverwrite(true);
-//
-// FileSet fileSet = new FileSet();
-//// fileSet.setDir(destDirGen);
-// fileSet.setDir(copyVersionResources.getOutput());
-// fileSet.setIncludes(copyVersionFiles);
-// copy.addFileset(fileSet);
-//
-// /* Execution */
-// copy.execute();
-// }
/**
- * Find version and name in object model files
+ * Find version and name in object model files.
*/
protected void findVersionAndModelName() {
@@ -220,7 +210,8 @@
File[] modelFiles = srcModelDir.listFiles(this);
- //FIXME TC-20090820 this is a bit funny iterate and keep the last model values ?
+ //FIXME TC-20090820 this is a bit funny iterate and keep the last
+ //FIXME TC-20090820 model values ?
// should iterate and do the treatment for each model
for (File modelFile : modelFiles) {
SAXReader saxR = new SAXReader();
@@ -246,8 +237,9 @@
public boolean accept(File arg0) {
String fullPath = arg0.getAbsolutePath();
// regex
- String regexInclude = includes.replaceAll("\\.", "\\.").replaceAll(
- "([^\\*])\\*([^\\*])", "$1[^/]*$2").replaceAll("\\*\\*", ".*") + "$";
+ String regexInclude = includes.replaceAll("\\.", "\\.").
+ replaceAll("([^\\*])\\*([^\\*])", "$1[^/]*$2").
+ replaceAll("\\*\\*", ".*") + "$";
return fullPath.matches(regexInclude);
}
}
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugeneAbstractMojo.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -76,7 +76,8 @@
*/
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.
+ * 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 0.64
@@ -111,7 +112,10 @@
* @param defaultTestOut the default test output directory
* @return the new {@link PluginIOContext} to use in the goal
*/
- protected PluginIOContext initResources(File defaultIn, File defaultOut, File defaultTestIn, File defaultTestOut) {
+ protected PluginIOContext initResources(File defaultIn,
+ File defaultOut,
+ File defaultTestIn,
+ File defaultTestOut) {
PluginIOContext resources = getResources();
if (resources == null) {
@@ -125,9 +129,11 @@
} else {
resources.setInput(defaultIn);
}
- getLog().info(" using default in : " + Arrays.asList(resources.getInputs()));
+ getLog().info(" using default in : " +
+ Arrays.asList(resources.getInputs()));
} else {
- getLog().info(" in : " + Arrays.asList(resources.getInputs()));
+ getLog().info(" in : " +
+ Arrays.asList(resources.getInputs()));
}
if (resources.getOutput() == null) {
@@ -146,7 +152,6 @@
@Override
protected void init() throws Exception {
-// protected boolean init() throws Exception {
// init goal io context
PluginIOContext p = initResources();
@@ -159,13 +164,6 @@
}
createDirectoryIfNecessary(p.getOutput());
-// if (!p.getOutput().exists()) {
-// boolean b = p.getOutput().mkdirs();
-// if (!b) {
-// throw new IOException("could not create directory " + p.getOutput());
-// }
-// }
-// return true;
}
@Override
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/EugenePlugin.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -58,7 +58,8 @@
* <p/>
* <p/>
* <p/>
- * En entrée on demande des répertoires où chercher les fichiers objectmodel a convertir.
+ * En entrée on demande des répertoires où chercher les fichiers
+ * objectmodel a convertir.
* <p/>
* En sortie on demande le répertoire ou generer les classes java.
* <p/>
@@ -172,8 +173,8 @@
fixCompileSourceRoots();
}
- protected <M extends Model> void generate(File[] modelFiles, ModelReader<M> modelReader) throws Exception {
-// protected <M extends Model> void generate(File[] modelFiles, ModelReader<M> modelReader) throws MojoFailureException, MojoExecutionException {
+ protected <M extends Model> void generate(
+ File[] modelFiles, ModelReader<M> modelReader) throws Exception {
if (modelReader == null) {
// can skip
@@ -182,8 +183,6 @@
}
M model = modelReader.read(modelFiles);
- //List<String> packages = getPackagesToGenerate();
-
if (StringUtils.isEmpty(generatedPackages)) {
getLog().info(" generating all packages");
} else {
@@ -193,13 +192,10 @@
List<Template<M>> templatesList = getTemplates(modelReader);
for (Template<M> template : templatesList) {
- getLog().info("Apply " + template.getClass().getSimpleName() + " generator");
+ getLog().info("Apply " + template.getClass().getSimpleName() +
+ " generator");
-// try {
- template.applyTemplate(model, generateResources.getOutput());
-// } catch (IOException eee) {
-// throw new MojoExecutionException("Generation problem", eee);
-// }
+ template.applyTemplate(model, generateResources.getOutput());
}
}
@@ -211,13 +207,22 @@
@Override
protected PluginIOContext initResources() {
- File defaultIn = getFileFromBasedir("target", "generated-sources", "models");
- File defaultOut = getFileFromBasedir("target", "generated-sources", "java");
+ File defaultIn = getFileFromBasedir("target", "generated-sources",
+ "models");
+ File defaultOut = getFileFromBasedir("target", "generated-sources",
+ "java");
- File defaultTestIn = getFileFromBasedir("target", "generated-sources", "test-models");
- File defaultTestOut = getFileFromBasedir("target", "generated-sources", "test-java");
+ File defaultTestIn = getFileFromBasedir("target", "generated-sources",
+ "test-models");
+ File defaultTestOut = getFileFromBasedir("target", "generated-sources",
+ "test-java");
- generateResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut);
+ generateResources = initResources(
+ defaultIn,
+ defaultOut,
+ defaultTestIn,
+ defaultTestOut
+ );
return generateResources;
}
@@ -234,42 +239,61 @@
for (File srcDirGen : generateResources.getInputs()) {
if (verbose) {
- getLog().info("Search for " + Arrays.toString(includePatterns) + " in " + srcDirGen.getAbsolutePath());
+ getLog().info("Search for " + Arrays.toString(includePatterns)
+ + " in " + srcDirGen.getAbsolutePath());
}
- List<File> currentFiles = PluginHelper.getIncludedFiles(srcDirGen, includePatterns, null);
+ List<File> currentFiles = PluginHelper.getIncludedFiles(
+ srcDirGen,
+ includePatterns,
+ null
+ );
modelFiles.addAll(currentFiles);
}
return modelFiles.toArray(new File[modelFiles.size()]);
}
- protected ModelReader<?> getReader() throws MojoFailureException, MojoExecutionException {
+ protected ModelReader<?> getReader() throws MojoFailureException,
+ MojoExecutionException {
ModelReader<?> modelReader;
try {
ClassLoader fixedClassLoader = fixClassLoader();
- modelReader = (ModelReader<?>) Class.forName(reader, true, fixedClassLoader).newInstance();
+ modelReader = (ModelReader<?>) Class.forName(
+ reader,
+ true,
+ fixedClassLoader).newInstance();
} catch (InstantiationException eee) {
- throw new MojoFailureException("Can't instantiate reader : " + reader, eee);
+ throw new MojoFailureException("Can't instantiate reader : " +
+ reader, eee);
} catch (IllegalAccessException eee) {
- throw new MojoFailureException("Can't access reader : " + reader, eee);
+ throw new MojoFailureException("Can't access reader : " + reader,
+ eee);
} catch (ClassNotFoundException eee) {
- throw new MojoFailureException("Can't found reader : " + reader, eee);
+ throw new MojoFailureException("Can't found reader : " + reader,
+ eee);
}
return modelReader;
}
@SuppressWarnings("unchecked")
- protected <M extends Model> List<Template<M>> getTemplates(ModelReader<M> modelReader)
+ protected <M extends Model> List<Template<M>> getTemplates(
+ ModelReader<M> modelReader)
throws MojoFailureException, MojoExecutionException {
// init generators
Properties templateProperties = new Properties();
- templateProperties.setProperty(Template.PROP_DEFAULT_PACKAGE, defaultPackage);
- templateProperties.setProperty(Template.PROP_OVERWRITE, String.valueOf(overwrite));
+ templateProperties.setProperty(Template.PROP_DEFAULT_PACKAGE,
+ defaultPackage);
+ templateProperties.setProperty(Template.PROP_OVERWRITE,
+ String.valueOf(overwrite));
templateProperties.setProperty(Template.PROP_ENCODING, encoding);
- templateProperties.setProperty(Template.PROP_LAST_MODIFIED_SOURCE, String.valueOf(modelReader.getLastModifiedSource()));
+ templateProperties.setProperty(
+ Template.PROP_LAST_MODIFIED_SOURCE,
+ String.valueOf(modelReader.getLastModifiedSource()));
if (generatedPackages != null) {
- templateProperties.setProperty(Template.PROP_GENERATED_PACKAGES, generatedPackages);
+ templateProperties.setProperty(Template.PROP_GENERATED_PACKAGES,
+ generatedPackages);
}
- templateProperties.setProperty(Template.PROP_EXCLUDE_TEMPLATES, getExcludeTemplatesAsString());
+ templateProperties.setProperty(Template.PROP_EXCLUDE_TEMPLATES,
+ getExcludeTemplatesAsString());
List<Template<M>> templatesList = new ArrayList<Template<M>>();
String[] templatesNames = templates.split(",");
@@ -284,11 +308,14 @@
template.setProperties(templateProperties);
templatesList.add(template);
} catch (InstantiationException e) {
- throw new MojoFailureException("Can't instantiate generator : " + templateName, e);
+ throw new MojoFailureException("Can't instantiate generator : "
+ + templateName, e);
} catch (IllegalAccessException e) {
- throw new MojoFailureException("Can't access generator : " + templateName, e);
+ throw new MojoFailureException("Can't access generator : " +
+ templateName, e);
} catch (ClassNotFoundException e) {
- throw new MojoFailureException("Can't found generator : " + templateName, e);
+ throw new MojoFailureException("Can't found generator : " +
+ templateName, e);
}
}
return templatesList;
@@ -306,14 +333,15 @@
}
/**
- * permet d'ajout le répertoire de génération des fichiers java dans les répertoires
- * de compilation du projet Maven.
+ * permet d'ajout le répertoire de génération des fichiers java dans les
+ * répertoires de compilation du projet Maven.
*/
protected void fixCompileSourceRoots() {
if (project == null) {
// no project defined, can not fix anything
- // this case could appears if we wanted to do some tests of the plugin
+ // this case could appears if we wanted to do some tests of the
+ // plugin
return;
}
@@ -332,7 +360,8 @@
project.addTestResource(resources);
}
} else {
- if (!project.getCompileSourceRoots().contains(destDirGen.getPath())) {
+ if (!project.getCompileSourceRoots().contains(
+ destDirGen.getPath())) {
getLog().info("Add compile source root : " + destDirGen);
project.addCompileSourceRoot(destDirGen.getPath());
Resource resources = new Resource();
@@ -361,24 +390,38 @@
ClassLoader loader = null;
if (extraClassPathDirectory != null) {
if (verbose) {
- getLog().info("Add extra directory in generator's classLoader : " + extraClassPathDirectory);
+ getLog().info("Add extra directory in generator's" +
+ " classLoader : " + extraClassPathDirectory);
}
- addDirectoryToUrlsList(extraClassPathDirectory, urls, urlsAsString);
+ addDirectoryToUrlsList(
+ extraClassPathDirectory,
+ urls,
+ urlsAsString
+ );
}
if (project.getProjectReferences() != null) {
- // this case is for multi-module when calling from a parent module
+ // this case is for multi-module when calling from a parent
+ // module
for (Object o : project.getProjectReferences().entrySet()) {
Entry<?, ?> entry = (Entry<?, ?>) o;
- MavenProject relatedProject = (MavenProject) entry.getValue();
+ MavenProject relatedProject =
+ (MavenProject) entry.getValue();
if (verbose) {
- getLog().info("Add project reference in generator's classLoader : '" + relatedProject.getArtifact() + "'");
+ 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);
+ addDirectoryToUrlsList(
+ relatedProject.getArtifact().getFile(),
+ urls,
+ urlsAsString
+ );
}
}
if (!project.getArtifacts().isEmpty()) {
- // this is a special case when artifacts were resolved (for example in site phase)
+ // 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");
}
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/SmartGenerateMojo.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/SmartGenerateMojo.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/SmartGenerateMojo.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -72,11 +72,11 @@
* <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.
+ * 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.
+ * Specifying the {@code writer} can be usefull when you want to use a
+ * writer for an unknown extension by any writer.
* <p/>
* Example :
* <pre>
@@ -140,7 +140,8 @@
*/
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.
+ * 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
@@ -156,13 +157,6 @@
* @since 2.0.0
*/
protected String modelType;
-// /**
-// * An extra directory to be added to the classpath.
-// *
- // * @parameter expression="${eugene.extraClassPathDirectory}"
-// * @since 2.0.0
-// */
-// protected File extraClassPathDirectory;
/**
* Properties to pass to writer.
*
@@ -184,29 +178,25 @@
* @since 2.0.0
*/
protected String fullPackagePath;
-// /**
-// * Nom du paquetage à générer (xmi input sepcific).
-// *
- // * @parameter expression="${generator.extractedPackages}" default-value="${project.groupId}.${project.artifactId}"
-// * @since 2.0.0
-// */
-// protected String extractedPackages;
/**
- * Nom du resolver a utiliser pour les transformations xmi vers model (xmi input sepcific).
+ * Nom du resolver a utiliser pour les transformations xmi vers model
+ * (xmi input sepcific).
*
* @parameter expression="${generator.resolver}" default-value="org.nuiton.util.ResourceResolver"
* @since 2.0.0
*/
protected String resolver;
/**
- * Templates à utiliser, séparés par des virgules pour les transformations depuis les models (model input sepcific).
+ * Templates à utiliser, séparés par des virgules pour les transformations
+ * depuis les models (model input sepcific).
*
* @parameter expression="${eugene.templates}"
* @since 0.50
*/
protected String templates;
/**
- * Templates à ne pas utiliser lors de la transformations des models (model input sepcific).
+ * Templates à ne pas utiliser lors de la transformations des models
+ * (model input sepcific).
*
* @parameter expression="${eugene.excludeTemplates}"
* @since 0.63
@@ -246,8 +236,8 @@
protected Settings settings;
/**
- * All available models (obtain by plexus, keys are plexus roles, values are a
- * instance of corresponding model).
+ * All available models (obtain by plexus, keys are plexus roles,
+ * values are a instance of corresponding model).
*
* @component role="org.nuiton.eugene.models.Model"
*/
@@ -271,15 +261,11 @@
*/
protected Map<String, Template<?>> modelTemplates;
/**
- * The engine to compute {@link org.nuiton.eugene.writer.ChainedFileWriter} from inputs entries.
+ * The engine to compute {@link ChainedFileWriter} from inputs entries.
*
* @component role="org.nuiton.eugene.writer.ChainedWriterEngine"
*/
protected ChainedWriterEngine engine;
-// /**
-// * class instance of the given {@link #modelType}
-// */
-// protected Class<? extends Model> modelClass;
/**
* fixed classloader
*/
@@ -287,7 +273,6 @@
@Override
protected void init() throws Exception {
-// protected boolean init() throws Exception {
modelType = modelType.trim().toLowerCase();
@@ -295,21 +280,26 @@
// pouvoir associé un nom à un type de service).
Model model = _models.get(modelType);
if (model == null) {
- throw new MojoExecutionException("No modelType named '" + modelType + "', use one of " + _models.keySet());
+ throw new MojoExecutionException(
+ "No modelType named '" + modelType + "', use one of " +
+ _models.keySet());
}
-// modelClass = model.getClass();
if (inputs.length == 0) {
- throw new MojoExecutionException("Must specify something to include using the includes property");
+ throw new MojoExecutionException(
+ "Must specify something to include using the includes " +
+ "property");
}
//FIXME-TC20091217 use a configurator in plexus ?
- // Actually we obtain a different instance of the mojo conflit with mojo and plexus :)
+ // Actually we obtain a different instance of the mojo conflit with
+ // mojo and plexus :)
engine.setConfiguration(this);
Set<ChainedFileWriter> availableWriters = engine.getAvailableWriters();
if (availableWriters.isEmpty()) {
- throw new MojoExecutionException("Could not find any writer in class-path.");
+ throw new MojoExecutionException(
+ "Could not find any writer in class-path.");
}
for (ChainedFileWriter writer : availableWriters) {
@@ -328,8 +318,6 @@
if (engine.getSelectedWriters().isEmpty()) {
return;
-// getLog().warn("No phase was detected, skip the goal.");
-// return false;
}
if (properties == null) {
@@ -340,7 +328,8 @@
// add xmi writer support
- properties.put(XmiChainedFileWriter.PROP_FULL_PACKAGE_PATH, fullPackagePath);
+ properties.put(XmiChainedFileWriter.PROP_FULL_PACKAGE_PATH,
+ fullPackagePath);
//properties.put("extractedPackages", extractedPackages);
properties.put(XmiChainedFileWriter.PROP_RESOLVER, resolver);
}
@@ -349,13 +338,14 @@
// add model writer support
- properties.put(ModelChainedFileWriter.PROP_DEFAULT_PACKAGE, defaultPackage);
- properties.put(ModelChainedFileWriter.PROP_GENERATED_PACKAGES, generatedPackages);
+ properties.put(ModelChainedFileWriter.PROP_DEFAULT_PACKAGE,
+ defaultPackage);
+ properties.put(ModelChainedFileWriter.PROP_GENERATED_PACKAGES,
+ generatedPackages);
properties.put(ModelChainedFileWriter.PROP_TEMPLATES, templates);
- properties.put(ModelChainedFileWriter.PROP_EXCLUDE_TEMPLATES, getExcludeTemplatesAsString());
+ properties.put(ModelChainedFileWriter.PROP_EXCLUDE_TEMPLATES,
+ getExcludeTemplatesAsString());
}
-
-// return true;
}
@Override
@@ -392,18 +382,24 @@
for (ChainedFileWriter writer : engine.getSelectedWriters()) {
if (skipInputList.contains(writer.getInputProtocol())) {
- getLog().info("Skip phase [" + writer.getInputProtocol() + "] as required in skipInputs configuration.");
+ getLog().info("Skip phase [" + writer.getInputProtocol() +
+ "] as required in skipInputs configuration.");
continue;
}
int size = writer.getEntries().size();
if (size == 1) {
- getLog().info("Process phase [" + writer.getInputProtocol() + "] for one entry.");
+ getLog().info(
+ "Process phase [" + writer.getInputProtocol() +
+ "] for one entry.");
} else {
- getLog().info("Process phase [" + writer.getInputProtocol() + "] for " + size + " entries.");
+ getLog().info(
+ "Process phase [" + writer.getInputProtocol() +
+ "] for " + size + " entries.");
}
if (dryRun || isVerbose()) {
for (ChainedFileWriterEntry entry : writer.getEntries()) {
- getLog().info(" entry : " + entry.getInputDirectory() + " - " + entry.getIncludePattern());
+ getLog().info(" entry : " + entry.getInputDirectory() +
+ " - " + entry.getIncludePattern());
}
if (dryRun) {
continue;
@@ -413,23 +409,21 @@
getLog().debug("Generating files and copying resources...");
}
-// try {
- writer.generate(this);
-// } catch (Exception e) {
-// throw new MojoExecutionException("could not generate for writer " + writer.getInputProtocol(), e);
-// }
+ writer.generate(this);
if ("model".equals(writer.getInputProtocol())) {
// must fix source compile roots
- File outputDir = writer.getOutputDirectory(getOutputDirectory(), isTestPhase());
+ File outputDir = writer.getOutputDirectory(
+ getOutputDirectory(), isTestPhase());
fixCompileSourceRoots(outputDir);
}
}
} finally {
- // always clear everything to avoid side-effects in goal is invoked more than once
+ // always clear everything to avoid side-effects in goal is
+ // invoked more than once
properties.clear();
engine.clear();
}
@@ -470,7 +464,7 @@
try {
return getFixedClassLoader();
} catch (MojoExecutionException e) {
- throw new IllegalStateException("could not obtain classLoader",e);
+ throw new IllegalStateException("could not obtain classLoader", e);
}
}
@@ -519,11 +513,6 @@
return modelType;
}
-// @Override
-// public Class<? extends Model> getModelClass() {
-// return modelClass;
-// }
-
@Override
public Map<String, ChainedFileWriter> getWriters() {
return writers;
@@ -545,7 +534,8 @@
}
/**
- * @return the string representation of excludesTemplates (separated by comma)
+ * @return the string representation of excludesTemplates
+ * (separated by comma)
*/
protected String getExcludeTemplatesAsString() {
String result = "";
@@ -561,7 +551,8 @@
/**
* Prepare le classLoader a utiliser dans le generateur.
* <p/>
- * Si le mojo est en phase de test {@link #testPhase} a été renseigné, target/classes est rajouté.
+ * Si le mojo est en phase de test {@link #testPhase} a été renseigné,
+ * target/classes est rajouté.
* <p/>
* Si des références à des sibling modules, ils seront rajoutés aussi.
*
@@ -577,33 +568,55 @@
ClassLoader loader;
if (testPhase) {
- File extraClassPathDirectory = new File(getProject().getBuild().getOutputDirectory());
+ File extraClassPathDirectory = new File(
+ getProject().getBuild().getOutputDirectory());
// if (verbose) {
- getLog().info("Add in generator's classLoader : " + extraClassPathDirectory);
+ getLog().info("Add in generator's classLoader : " +
+ extraClassPathDirectory);
// }
- addDirectoryToUrlsList(extraClassPathDirectory, urls, urlsAsString);
+ 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()) {
+ // 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();
+ MavenProject relatedProject =
+ (MavenProject) entry.getValue();
if (verbose) {
- getLog().info("Add project reference in generator's classLoader : '" + relatedProject.getArtifact() + "'");
+ 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);
+ //TODO il faudrait peut-etre aussi ajouter les
+ //TODO 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)
+ // 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");
+ 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);
+ addDirectoryToUrlsList(
+ a.getFile(),
+ urls,
+ urlsAsString
+ );
}
}
}
@@ -628,7 +641,8 @@
}
}
if (!urls.isEmpty()) {
- loader = new URLClassLoader(urls.toArray(new URL[urls.size()]),
+ loader = new URLClassLoader(
+ urls.toArray(new URL[urls.size()]),
loader);
}
if (getLog().isDebugEnabled()) {
@@ -648,23 +662,26 @@
}
/**
- * permet d'ajout le répertoire de génération des fichiers java dans les répertoires
- * de compilation du projet Maven.
+ * permet d'ajout le répertoire de génération des fichiers java dans
+ * les répertoires de compilation du projet Maven.
*
* @param destDirGen le repertoire a traiter
*/
protected void fixCompileSourceRoots(File destDirGen) {
- //FIXME-TC20091215 : should never have a null project, this is not normal
+ //FIXME-TC20091215 : should never have a null project, this is not
+ //FIXME-TC20091215 : normal
if (project == null) {
// no project defined, can not fix anything
- // this case could appears if we wanted to do some tests of the plugin
+ // this case could appears if we wanted to do some tests of the
+ // plugin
return;
}
//TODO-TC20091016 should use AbstractPlugin api
if (isTestPhase()) {
- if (!project.getTestCompileSourceRoots().contains(destDirGen.getPath())) {
+ if (!project.getTestCompileSourceRoots().contains(
+ destDirGen.getPath())) {
getLog().info("Add test compile source root : " + destDirGen);
project.addTestCompileSourceRoot(destDirGen.getPath());
Resource resources = new Resource();
@@ -674,7 +691,8 @@
project.addTestResource(resources);
}
} else {
- if (!project.getCompileSourceRoots().contains(destDirGen.getPath())) {
+ if (!project.getCompileSourceRoots().contains(
+ destDirGen.getPath())) {
getLog().info("Add compile source root : " + destDirGen);
project.addCompileSourceRoot(destDirGen.getPath());
Resource resources = new Resource();
@@ -685,4 +703,4 @@
}
}
}
-}
\ No newline at end of file
+}
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2Model.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -66,9 +66,11 @@
*
* <p/>
*
- * En entrée on demande des répertoires où chercher les fichiers xmi a convertir.
+ * En entrée on demande des répertoires où chercher les fichiers xmi a
+ * convertir.
* <p/>
- * En sortie on demande le répertoire ou extraire les xmi et copier les resources.
+ * En sortie on demande le répertoire ou extraire les xmi et copier les
+ * resources.
* <p/>
* Par défaut on a les valeurs suivantes :
* </p>
@@ -172,24 +174,27 @@
for (File dir : xmiResources.getInputs()) {
// recuperation des fichiers a traiter
- List<File> files = PluginHelper.getIncludedFiles(dir, includes, null);
+ List<File> files =
+ PluginHelper.getIncludedFiles(dir, includes, null);
// lancement des traitements xsl sur les fichiers trouvés
// dans le repertoire
- actionXsl(dir, files, factory, fixedClassLoader, acceptedTypesAsArray);
+ actionXsl(dir,
+ files,
+ factory,
+ fixedClassLoader,
+ acceptedTypesAsArray
+ );
}
} finally {
- getLog().info("xsl done in " + StringUtil.convertTime(System.nanoTime() - t0));
+ getLog().info("xsl done in " +
+ StringUtil.convertTime(System.nanoTime() - t0));
}
getLog().info("Copy resources files");
-// try {
- String[] excludes = getSuffixPattern("**/*");
- PluginHelper.copyFiles(xmiResources, null, excludes, overwrite);
-// } catch (IOException ex) {
-// throw new MojoExecutionException("could not copy some files for reason " + ex.getMessage(), ex);
-// }
+ String[] excludes = getSuffixPattern("**/*");
+ PluginHelper.copyFiles(xmiResources, null, excludes, overwrite);
}
@Override
@@ -200,12 +205,21 @@
@Override
protected PluginIOContext initResources() {
- File defaultIn = getFileFromBasedir("target", "generated-sources", "xmi");
- File defaultOut = getFileFromBasedir("target", "generated-sources", "models");
- File defaultTestIn = getFileFromBasedir("target", "generated-sources", "test-xmi");
- File defaultTestOut = getFileFromBasedir("target", "generated-sources", "test-models");
+ File defaultIn = getFileFromBasedir("target", "generated-sources",
+ "xmi");
+ File defaultOut = getFileFromBasedir("target", "generated-sources",
+ "models");
+ File defaultTestIn = getFileFromBasedir("target", "generated-sources",
+ "test-xmi");
+ File defaultTestOut = getFileFromBasedir("target", "generated-sources",
+ "test-models");
- xmiResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut);
+ xmiResources = initResources(
+ defaultIn,
+ defaultOut,
+ defaultTestIn,
+ defaultTestOut
+ );
return xmiResources;
}
@@ -220,22 +234,32 @@
return patterns;
}
- protected void actionXsl(File dir, List<File> files, TransformerFactory factory, ClassLoader fixedClassLoader, String[] acceptedSuffixes) throws MojoExecutionException {
+ protected void actionXsl(File dir,
+ List<File> files,
+ TransformerFactory factory,
+ ClassLoader fixedClassLoader,
+ String[] acceptedSuffixes)
+ throws MojoExecutionException {
for (File file : files) {
try {
if (getLog().isDebugEnabled()) {
getLog().debug("treate file : " + file);
}
// Prepare resolver, stylesheet
- URIResolver fileResolver = getUriResolver(file, fixedClassLoader);
+ 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 filename = FileUtil.basename(file, acceptedSuffixes).concat(".").concat(getExtension());
- String relatifPath = file.getParentFile().getAbsolutePath().substring(dir.getAbsolutePath().length());
+ String filename = FileUtil.basename(
+ file,
+ acceptedSuffixes).concat(".").concat(getExtension()
+ );
+ String relatifPath = file.getParentFile().getAbsolutePath().
+ substring(dir.getAbsolutePath().length());
File dstDir = xmiResources.getOutput();
if (!relatifPath.isEmpty()) {
dstDir = new File(dstDir, relatifPath);
@@ -252,7 +276,8 @@
}
// Create the xsl transformer and set parameters
- Transformer transformer = factory.newTransformer(new StreamSource(xsl.openStream()));
+ Transformer transformer = factory.newTransformer(
+ new StreamSource(xsl.openStream()));
transformer.setParameter("fullPackagePath", fullPackagePath);
transformer.setParameter("extraPackages", extractedPackages);
@@ -297,13 +322,15 @@
// Try to set the base using the constructor
try {
// Look for a constructor with a String parameter (base)
- Constructor<?> withBaseConstructor = clazz.getConstructor(String.class);
+ 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",
+ getLog().warn(
+ "Unable to instantiate resolver with String parameter",
eee);
}
@@ -324,7 +351,8 @@
}
} catch (Exception eee) {
- getLog().warn("Unable to instantiate resolver using the default constructor", eee);
+ getLog().warn("Unable to instantiate resolver using the default " +
+ "constructor", eee);
}
return result;
@@ -347,24 +375,38 @@
ClassLoader loader;
if (extraClassPathDirectory != null) {
if (verbose) {
- getLog().info("Add extra directory in generator's classLoader : " + extraClassPathDirectory);
+ getLog().info("Add extra directory in generator's " +
+ "classLoader : " + extraClassPathDirectory);
}
- addDirectoryToUrlsList(extraClassPathDirectory,urls,urlsAsString);
+ addDirectoryToUrlsList(
+ extraClassPathDirectory,
+ urls,
+ urlsAsString
+ );
}
if (project.getProjectReferences() != null) {
- // this case is for multi-module when calling from a parent module
+ // this case is for multi-module when calling from a parent
+ // module
for (Object o : project.getProjectReferences().entrySet()) {
Entry<?, ?> entry = (Entry<?, ?>) o;
- MavenProject relatedProject = (MavenProject) entry.getValue();
+ MavenProject relatedProject =
+ (MavenProject) entry.getValue();
if (verbose) {
- getLog().info("Add project reference in generator's classLoader : '" + relatedProject.getArtifact() + "'");
+ 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);
+ addDirectoryToUrlsList(
+ relatedProject.getArtifact().getFile(),
+ urls,
+ urlsAsString
+ );
}
}
if (!project.getArtifacts().isEmpty()) {
- // this is a special case when artifacts were resolved (for example in site phase)
+ // 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");
}
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2ObjectModel.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2ObjectModel.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2ObjectModel.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -41,7 +41,6 @@
@Override
public void doAction() throws Exception {
-// public void doAction() throws MojoExecutionException, MojoFailureException {
getLog().info("Conversion of XMI files into ObjectModel");
super.doAction();
}
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2StateModel.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2StateModel.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Xmi2StateModel.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -29,7 +29,6 @@
@Override
public void doAction() throws Exception {
-// public void doAction() throws MojoExecutionException, MojoFailureException {
getLog().info("Conversion of XMI files into StateModel");
super.doAction();
}
@@ -41,7 +40,8 @@
@Override
protected String getStyleSheet(File model) {
- //TODO when StateModel will be supported in 2.1, compute the version to resolve the correct stylesheet
+ //TODO when StateModel will be supported in 2.1, compute the version
+ //TODO to resolve the correct stylesheet
return "xmi1.2ToStateModel.xsl";
}
}
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/Zargo2Xmi.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -36,16 +36,20 @@
*/
public class Zargo2Xmi extends EugeneAbstractMojo {
- public static final String[] ZARGO_FILE_FILTER = new String[]{"**/*.zargo", "**/*.zuml"};
- public static final String[] XMI_FILE_FILTER = new String[]{"*.xmi", "**/*.xmi"};
+ public static final String[] ZARGO_FILE_FILTER =
+ new String[]{"**/*.zargo", "**/*.zuml"};
+ public static final String[] XMI_FILE_FILTER =
+ new String[]{"*.xmi", "**/*.xmi"};
/**
* Les entrées-sorties du plugin.
*
* <p/>
*
- * En entrée on demande des répertoires où chercher les fichiers zargo a convertir.
+ * En entrée on demande des répertoires où chercher les fichiers zargo a
+ * convertir.
* <p/>
- * En sortie on demande le répertoire ou extraire les xmi et copier les resources.
+ * En sortie on demande le répertoire ou extraire les xmi et copier les
+ * resources.
* <p/>
* Par défaut on a les valeurs suivantes :
* </p>
@@ -79,23 +83,16 @@
@Override
public void doAction() throws Exception {
-// public void doAction() throws MojoExecutionException, MojoFailureException {
- getLog().info("Extract zipped XMI files from zargo archive and copy resources");
+ getLog().info("Extract zipped XMI files from zargo archive and " +
+ "copy resources");
getLog().info("Extract zipped XMI files");
-// try {
- PluginHelper.expandFiles(zargoResources, ZARGO_FILE_FILTER, null, XMI_FILE_FILTER, overwrite);
-// } catch (IOException ex) {
-// throw new MojoExecutionException("could not expand files for reason " + ex.getMessage(), ex);
-// }
+ PluginHelper.expandFiles(zargoResources, ZARGO_FILE_FILTER, null,
+ XMI_FILE_FILTER, overwrite);
getLog().info("Copy resources");
-// try {
- PluginHelper.copyFiles(zargoResources, null, ZARGO_FILE_FILTER, overwrite);
-// } catch (IOException ex) {
-// throw new MojoExecutionException("could not copy some files for reason " + ex.getMessage(), ex);
-// }
-
+ PluginHelper.copyFiles(zargoResources, null, ZARGO_FILE_FILTER,
+ overwrite);
}
@Override
@@ -107,12 +104,19 @@
protected PluginIOContext initResources() {
File defaultIn = getFileFromBasedir("src", "main", "xmi");
- File defaultOut = getFileFromBasedir("target", "generated-sources", "xmi");
+ File defaultOut = getFileFromBasedir("target", "generated-sources",
+ "xmi");
File defaultTestIn = getFileFromBasedir("src", "test", "xmi");
- File defaultTestOut = getFileFromBasedir("target", "generated-sources", "test-xmi");
+ File defaultTestOut = getFileFromBasedir("target", "generated-sources",
+ "test-xmi");
- zargoResources = initResources(defaultIn, defaultOut, defaultTestIn, defaultTestOut);
+ zargoResources = initResources(
+ defaultIn,
+ defaultOut,
+ defaultTestIn,
+ defaultTestOut
+ );
return zargoResources;
}
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriter.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriter.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/BaseChainedFileWriter.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -31,7 +31,8 @@
import java.util.Set;
/**
- * Surcharge de l'implentation abstraite pour avoir le logger de la console maven.
+ * Surcharge de l'implentation abstraite pour avoir le logger de la console
+ * maven.
*
* @author tchemit
* @since 2.0.0
@@ -66,18 +67,33 @@
// log writer config
StringBuilder buffer = new StringBuilder();
- Set<Map.Entry<String, String>> set = getAuthorizedPropertyDescriptions().entrySet();
+ Set<Map.Entry<String, String>> set =
+ getAuthorizedPropertyDescriptions().entrySet();
if (set.isEmpty()) {
- buffer.append("Writer [").append(getInputProtocol()).append("]").append(" does not use any specific properties.");
+ buffer.append("Writer [");
+ buffer.append(getInputProtocol());
+ buffer.append("]");
+ buffer.append(" does not use any specific properties.");
} else {
- buffer.append("Writer [").append(getInputProtocol()).append("]").append(" use ").append(properties.size()).append(" properties :");
+ buffer.append("Writer [");
+ buffer.append(getInputProtocol());
+ buffer.append("]");
+ buffer.append(" use ");
+ buffer.append(properties.size());
+ buffer.append(" properties :");
if (getLog().isInfoEnabled()) {
for (Map.Entry<String, String> e : set) {
String key = e.getKey();
Object value = properties.get(key);
if (value != null) {
- buffer.append("\n").append(" [").append(key).append("] (").append(e.getValue()).append(") : ").append(value);
+ buffer.append("\n");
+ buffer.append(" [");
+ buffer.append(key);
+ buffer.append("] (");
+ buffer.append(e.getValue());
+ buffer.append(") : ");
+ buffer.append(value);
}
}
}
@@ -87,7 +103,8 @@
protected boolean acceptObjectModelOrStateModel(String modelType) {
modelType = modelType.trim().toLowerCase();
- return ObjectModel.NAME.equals(modelType) || StateModel.NAME.equals(modelType);
+ return ObjectModel.NAME.equals(modelType) ||
+ StateModel.NAME.equals(modelType);
}
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -83,7 +83,9 @@
@Override
public boolean acceptInclude(String include) {
- return include.startsWith("model:") || include.endsWith(".objectmodel") || include.endsWith(".statemodel");
+ return include.startsWith("model:") ||
+ include.endsWith(".objectmodel") ||
+ include.endsWith(".statemodel");
}
@Override
@@ -152,32 +154,47 @@
String reader = getReader();
try {
ClassLoader fixedClassLoader = loader;
- ModelReader<?> modelReader = (ModelReader<?>) Class.forName(reader, true, fixedClassLoader).newInstance();
- //TODO : should check that the reader is compatible with given modelType
+ ModelReader<?> modelReader = (ModelReader<?>)
+ Class.forName(reader, true,
+ fixedClassLoader).newInstance();
+ //TODO : should check that the reader is compatible with
+ //TODO : given modelType
properties.put(PROP_MODEL_READER, modelReader);
} catch (Exception eee) {
- throw new IllegalStateException("could not obtain reader " + reader, eee);
+ throw new IllegalStateException("could not obtain reader "
+ + reader, eee);
}
} else {
String modelType = configuration.getModelType();
- ModelReader<?> modelReader = configuration.getModelReaders().get(modelType);
+ ModelReader<?> modelReader =
+ configuration.getModelReaders().get(modelType);
if (modelReader == null) {
- throw new IllegalStateException("could not find a model reader for modelType : " + modelType + ", availables readers : " + configuration.getModelReaders().values());
+ throw new IllegalStateException(
+ "could not find a model reader for modelType : " +
+ modelType + ", availables readers : " +
+ configuration.getModelReaders().values());
}
properties.put(PROP_MODEL_READER, modelReader);
}
}
Properties templateProperties = new Properties();
- templateProperties.setProperty(Template.PROP_DEFAULT_PACKAGE, getDefaultPackage());
- templateProperties.setProperty(Template.PROP_OVERWRITE, String.valueOf(configuration.isOverwrite()));
- templateProperties.setProperty(Template.PROP_ENCODING, configuration.getEncoding());
- templateProperties.setProperty(Template.PROP_LAST_MODIFIED_SOURCE, String.valueOf(getModelReader().getLastModifiedSource()));
+ templateProperties.setProperty(Template.PROP_DEFAULT_PACKAGE,
+ getDefaultPackage());
+ templateProperties.setProperty(
+ Template.PROP_OVERWRITE,
+ String.valueOf(configuration.isOverwrite()));
+ templateProperties.setProperty(Template.PROP_ENCODING,
+ configuration.getEncoding());
+ templateProperties.setProperty(
+ Template.PROP_LAST_MODIFIED_SOURCE,
+ String.valueOf(getModelReader().getLastModifiedSource()));
String generatedPackages = getGeneratedPackages();
if (StringUtils.isEmpty(generatedPackages)) {
getLog().info(" generating all packages");
} else {
- templateProperties.put(Template.PROP_GENERATED_PACKAGES, generatedPackages);
+ templateProperties.put(Template.PROP_GENERATED_PACKAGES,
+ generatedPackages);
getLog().info(" generating only for packages " + generatedPackages);
}
@@ -190,14 +207,19 @@
templateName = templateName.trim();
Template<Model> template;
- template = (Template<Model>) configuration.getModelTemplates().get(templateName);
+ template = (Template<Model>)
+ configuration.getModelTemplates().get(templateName);
if (template == null) {
- getLog().warn("template [" + templateName + "] is not registred via plexus, try to load it directly");
+ getLog().warn("template [" + templateName + "] is not " +
+ "registred via plexus, try to load it directly");
try {
- template = (Template<Model>) Class.forName(templateName, true, loader).newInstance();
+ template = (Template<Model>) Class.forName(
+ templateName, true, loader).newInstance();
} catch (Exception e) {
- throw new IllegalStateException("Can't obtain template [" + templateName + "] for reason " + e.getMessage(), e);
+ throw new IllegalStateException(
+ "Can't obtain template [" + templateName +
+ "] for reason " + e.getMessage(), e);
}
} else {
getLog().info("will use the template [" + templateName + "]");
@@ -215,7 +237,10 @@
@Override
- public void generate(ChainedFileWriterConfiguration configuration, File outputDir, File inputDirectory, String includePattern) throws IOException {
+ public void generate(ChainedFileWriterConfiguration configuration,
+ File outputDir,
+ File inputDirectory,
+ String includePattern) throws IOException {
PluginIOContext ioContext = new PluginIOContext();
ioContext.setInput(inputDirectory);
@@ -226,25 +251,30 @@
List<File> modelFiles = new ArrayList<File>();
String[] includePatterns = includePattern.split(",");
- getLog().info("Generating from " + inputDirectory + " : " + includePattern);
+ getLog().info("Generating from " + inputDirectory + " : " +
+ includePattern);
for (File srcDirGen : ioContext.getInputs()) {
if (configuration.isVerbose()) {
- getLog().info("Search for " + Arrays.toString(includePatterns) + " in " + srcDirGen.getAbsolutePath());
+ getLog().info("Search for " + Arrays.toString(includePatterns)
+ + " in " + srcDirGen.getAbsolutePath());
}
- List<File> currentFiles = PluginHelper.getIncludedFiles(srcDirGen, includePatterns, null);
+ List<File> currentFiles = PluginHelper.getIncludedFiles(
+ srcDirGen, includePatterns, null);
modelFiles.addAll(currentFiles);
}
// read the model
- Model model = getModelReader().read(modelFiles.toArray(new File[modelFiles.size()]));
+ Model model = getModelReader().read(modelFiles.toArray(
+ new File[modelFiles.size()]));
// apply all templates to the model
for (Template<Model> template : getTemplatesList()) {
- getLog().info("Apply " + template.getClass().getSimpleName() + " generator");
+ getLog().info("Apply " + template.getClass().getSimpleName() +
+ " generator");
// apply template
template.applyTemplate(model, ioContext.getOutput());
@@ -254,4 +284,4 @@
}
-}
\ No newline at end of file
+}
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiChainedFileWriter.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiChainedFileWriter.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/XmiChainedFileWriter.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -20,7 +20,6 @@
*/
package org.nuiton.eugene.plugin.writer;
-import org.nuiton.eugene.models.Model;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.state.StateModel;
import org.nuiton.eugene.writer.ChainedFileWriterConfiguration;
@@ -363,4 +362,4 @@
}
-}
\ No newline at end of file
+}
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoChainedFileWriter.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoChainedFileWriter.java 2010-03-04 16:44:13 UTC (rev 834)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ZargoChainedFileWriter.java 2010-03-04 18:03:17 UTC (rev 835)
@@ -20,7 +20,6 @@
*/
package org.nuiton.eugene.plugin.writer;
-import org.nuiton.eugene.models.Model;
import org.nuiton.eugene.writer.ChainedFileWriterConfiguration;
import org.nuiton.plugin.PluginHelper;
import org.nuiton.plugin.PluginIOContext;
1
0
Author: tchemit
Date: 2010-03-04 17:44:13 +0100 (Thu, 04 Mar 2010)
New Revision: 834
Log:
Evolution #324: Ajout de la tache ant dans l'archive d'assembly
Modified:
trunk/ant-eugene-task/pom.xml
Modified: trunk/ant-eugene-task/pom.xml
===================================================================
--- trunk/ant-eugene-task/pom.xml 2010-03-04 16:17:03 UTC (rev 833)
+++ trunk/ant-eugene-task/pom.xml 2010-03-04 16:44:13 UTC (rev 834)
@@ -58,7 +58,10 @@
<properties>
<!-- extra files to include in release -->
- <redmine.releaseFiles>${redmine.libReleaseFiles}</redmine.releaseFiles>
+ <redmine.releaseFiles>
+ ${redmine.libReleaseFiles},
+ target/${project.artifactId}-${project.version}-jar-with-dependencies.jar
+ </redmine.releaseFiles>
</properties>
<profiles>
@@ -91,6 +94,7 @@
<descriptorRefs>
<descriptorRef>deps</descriptorRef>
<descriptorRef>full</descriptorRef>
+ <descriptorRef>jar-with-dependencies</descriptorRef>
</descriptorRefs>
</configuration>
</plugin>
1
0
r833 - in trunk: maven-eugene-plugin/src/site/fr/rst src/site/fr/rst
by tchemit@users.nuiton.org 04 Mar '10
by tchemit@users.nuiton.org 04 Mar '10
04 Mar '10
Author: tchemit
Date: 2010-03-04 17:17:03 +0100 (Thu, 04 Mar 2010)
New Revision: 833
Log:
update doc
Modified:
trunk/maven-eugene-plugin/src/site/fr/rst/example.rst
trunk/src/site/fr/rst/01-introduction.rst
trunk/src/site/fr/rst/02-objectmodel.rst
trunk/src/site/fr/rst/04-templates.rst
trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst
Modified: trunk/maven-eugene-plugin/src/site/fr/rst/example.rst
===================================================================
--- trunk/maven-eugene-plugin/src/site/fr/rst/example.rst 2010-03-04 14:59:15 UTC (rev 832)
+++ trunk/maven-eugene-plugin/src/site/fr/rst/example.rst 2010-03-04 16:17:03 UTC (rev 833)
@@ -20,7 +20,7 @@
Example simple
--------------
-Cet example va générer les entitées du package org.nuiton.eugene.demopackage à
+Cet exemple va générer les entitées du package org.nuiton.eugene.demopackage à
partir des fichiers zargo présents dans le répertoire src/main/xmi.
::
@@ -63,7 +63,7 @@
Example complexe
----------------
-Cet example utilise deux fichiers zargo en entrée et va les générer différemment.
+Cet exemple utilise deux fichiers zargo en entrée et va les générer différemment.
Les deux premières phases sont communes, ensuite on distingues deux executions,
une par fichier spécifiant les différents templates à utiliser pour chaque
@@ -140,4 +140,4 @@
<scope>compile</scope>
</dependency>
</dependencies>
- </plugin>
\ No newline at end of file
+ </plugin>
Modified: trunk/src/site/fr/rst/01-introduction.rst
===================================================================
--- trunk/src/site/fr/rst/01-introduction.rst 2010-03-04 14:59:15 UTC (rev 832)
+++ trunk/src/site/fr/rst/01-introduction.rst 2010-03-04 16:17:03 UTC (rev 833)
@@ -58,7 +58,7 @@
De nombreuses solutions sont disponibles sur le marché, EUGene se positionne par
-rapport à ses concurrents, comme simple d'utilisation et de mise oeuvre,
+rapport à ses concurrents, comme simple d'utilisation et de mise en oeuvre,
indépendant des outils de développement et full JAVA sans autre language à
apprendre.
Modified: trunk/src/site/fr/rst/02-objectmodel.rst
===================================================================
--- trunk/src/site/fr/rst/02-objectmodel.rst 2010-03-04 14:59:15 UTC (rev 832)
+++ trunk/src/site/fr/rst/02-objectmodel.rst 2010-03-04 16:17:03 UTC (rev 833)
@@ -43,6 +43,13 @@
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.
+Ce modèle intermédiaire garantit aussi la stabilité et pérennité d'EUGene,
+puisque qu'on se base toujours sur les modèles d'EUGene et non pas directement
+sur les modèles extérieurs (XMI) trop variants d'une version à l'autre.
+
+Si on veut supporter une nouvelle version de XMI par exemple, il convient de
+définir la feuille de style de transformation adéquate.
+
Parmi les informations extraites, on peut citer :
- Objets (classes, classes abtraites, interfaces)
@@ -88,9 +95,9 @@
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é.
+méthodes et de 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
+Les templates peuvent être de toutes sortes car elles 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
+commune aux classes et interfaces). De plus, elles peuvent indifféremment générer
du code Java / XML ou encore tout autre type de code (texte ou autre...).
Modified: trunk/src/site/fr/rst/04-templates.rst
===================================================================
--- trunk/src/site/fr/rst/04-templates.rst 2010-03-04 14:59:15 UTC (rev 832)
+++ trunk/src/site/fr/rst/04-templates.rst 2010-03-04 16:17:03 UTC (rev 833)
@@ -54,6 +54,9 @@
- `StateModelGenerator`_ : StateModel en entrée
- `JavaGenerator`_ : ObjectModel orienté Java (avec extensions) en entrée
+Note
+ Le plugin maven permet de connaître tous les transformers disponibles.
+
Implantation d'une transformation de modèle
-------------------------------------------
@@ -143,6 +146,9 @@
- `ObjectModelTransformerToJava`_ : ObjectModel en entrée, ObjectModel en sortie,
`JavaGenerator`_ en template de sortie.
+Note
+ Le plugin maven permet de connaître tous les transformers disponibles.
+
Générateur de java
------------------
@@ -212,4 +218,4 @@
.. _Model: ../eugene/apidocs/org/nuiton/eugene/models/Model.html
.. _Generator: ../eugene/apidocs/org/nuiton/eugene/AbstractGenerator.html
-.. _Ref JavaBuilder: ../eugene/apidocs/org/nuiton/eugene/java/JavaBuilder.html
\ No newline at end of file
+.. _Ref JavaBuilder: ../eugene/apidocs/org/nuiton/eugene/java/JavaBuilder.html
Modified: trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst
===================================================================
--- trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst 2010-03-04 14:59:15 UTC (rev 832)
+++ trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst 2010-03-04 16:17:03 UTC (rev 833)
@@ -32,8 +32,38 @@
- objectmodel : version simplifié du xmi pour générer de l'ObjectModel
- statemodel : version simplifié du xmi pour générer du StateModel
-TODO : explication chainage
+Un writer est défini par :
+- un type de modèle (objectmodel, statemodel)
+- un protocole d'entrée
+- un protocole de sortie
+- des ressources à traiter
+- la logique d'exécution de la tâche.
+
+Les Writers peuvent être chaînés (le protocole de sortie devient le protocole
+d'entrée du Writer suivant) et ceci de manière hiérarchisé (on doit évidemment
+conserver un ordre sur les tâches à exécuter...).
+
+Par exemple, si on a en point d'entrée un fichier zargo et en sortie on veut
+des fichiers java les étapes suivantes sont nécessaires :
+
+- extraction du fichier xmi de l'archive zargo
+- transformation xmi en un fichier objectmodel
+- application des templates et génération de fichiers java à partir de l'objetmodel
+
+Chacune de ces étapes utilise un writer :
+
+- zargo2xmi (entrée: zargo, sortie: xmi)
+- xmi2objectmodel (entrée: xmi, sortie: objectmodel)
+- objectmodel2java (entrée: objectmodel, sortie: fichier (java ou autre))
+
+Pour utiliser le moteur d'exécution des Writer, on doit lui enregistrer des
+ressources à traiter. Il trouvera les bons Writers à appeller parmis ceux
+disponibles et lancera les tâches (Writer) dans l'ordre nécessaire.
+
+Si par exemple on lui donne en entrée un fichier objectModel, il appelera
+uniquement le dernier writer (objectmodel2java).
+
ModelReader
-----------
@@ -53,7 +83,8 @@
base. Il est également possible de gérer un autre type de Model et de créer un
ModelReader qui se chargera de le remplir.
-TODO : intégration reader dans maven
+Le plugin maven permet de spécifier quel reader utiliser. Pour plus
+d'informations consulter la configuration des goals maven.
Extension
---------
@@ -91,8 +122,13 @@
parameter, attribute, classifier, ...)
- `ConstantsManagerExtension`_ : permet de gérer un cache sur les noms des constantes
- manipulés pendant une génération. TODO : more explanation about this
+ manipulés pendant une génération. L'introduction récente dans constantes de
+ génération (par exemple pour spécifier le nom d'une propriété d'un bean) nous
+ autorise désormais à utiliser aussi ces constantes dans le code qu'on génère.
+ Le calcul du nom d'une constante à partir de la proprité revient donc
+ régulièrement et est caché grâçe à cette extension.
+
.. _Templates: 04-templates.html
.. _Ref ModelReader: ../eugene/apidocs/org/nuiton/eugene/ModelReader.html
1
0
Author: tchemit
Date: 2010-03-04 15:59:15 +0100 (Thu, 04 Mar 2010)
New Revision: 832
Log:
merci scmwebeditor...
Modified:
trunk/src/site/fr/rst/01-introduction.rst
Modified: trunk/src/site/fr/rst/01-introduction.rst
===================================================================
--- trunk/src/site/fr/rst/01-introduction.rst 2010-03-04 14:37:30 UTC (rev 831)
+++ trunk/src/site/fr/rst/01-introduction.rst 2010-03-04 14:59:15 UTC (rev 832)
@@ -68,14 +68,14 @@
Comparaison par rapport aux solutions existantes du marché :
- --------- --------------------- ---------------------------- -------------- --------- -----------
++---------+---------------------+----------------------------+--------------+---------+-----------+
| | | | | | Format |
| | Générateur | Indépendance | Build | Plugin | de sortie |
- ========= ===================== ============================ ============== ========= ===========
++=========+=====================+============================+==============+=========+===========+
| EUGene | Template en java | Outils de développement | Maven/Ant | Eclipse | Tout |
- --------- --------------------- ---------------------------- -------------- --------- -----------
++---------+---------------------+----------------------------+--------------+---------+-----------+
| Acceleo | Template spécifique | Lié à la pateforme Eclipse | Pas possible | Eclipse | Tout |
- --------- --------------------- ---------------------------- -------------- --------- -----------
++---------+---------------------+----------------------------+--------------+---------+-----------+
| | Tranformation de | | | | |
| ATL | modèle en QVT | Lié à la pateforme Eclipse | Pas possible | Eclipse | Modèle |
- --------- --------------------- ---------------------------- -------------- --------- -----------
++---------+---------------------+----------------------------+--------------+---------+-----------+
1
0
Author: tchemit
Date: 2010-03-04 15:37:30 +0100 (Thu, 04 Mar 2010)
New Revision: 831
Log:
correction orthographe
Modified:
trunk/src/site/fr/rst/01-introduction.rst
Modified: trunk/src/site/fr/rst/01-introduction.rst
===================================================================
--- trunk/src/site/fr/rst/01-introduction.rst 2010-03-04 14:35:08 UTC (rev 830)
+++ trunk/src/site/fr/rst/01-introduction.rst 2010-03-04 14:37:30 UTC (rev 831)
@@ -53,12 +53,12 @@
* template de génération
* transformation de modèles
* intégration dans le build du projet
- * indépenance entre le code developpeur et généré
- * indépenance des outils de développement
+ * indépendance entre le code developpeur et le code généré
+ * indépendance des outils de développement
De nombreuses solutions sont disponibles sur le marché, EUGene se positionne par
-rapport à ses conrrurences, comme simple d'utilisation et de mise oeuvre,
+rapport à ses concurrents, comme simple d'utilisation et de mise oeuvre,
indépendant des outils de développement et full JAVA sans autre language à
apprendre.
1
0
Author: tchemit
Date: 2010-03-04 15:35:08 +0100 (Thu, 04 Mar 2010)
New Revision: 830
Log:
correction orthographe
Modified:
trunk/src/site/fr/rst/01-introduction.rst
Modified: trunk/src/site/fr/rst/01-introduction.rst
===================================================================
--- trunk/src/site/fr/rst/01-introduction.rst 2010-03-04 14:15:45 UTC (rev 829)
+++ trunk/src/site/fr/rst/01-introduction.rst 2010-03-04 14:35:08 UTC (rev 830)
@@ -23,7 +23,7 @@
Pour pouvoir réaliser des modèles (M1), il est nécessaire de définir un langage
de modèlisation qui est appellé méta-modèle (M2). Pour pouvoir réaliser des
-transformations entre les différents languages, ils est nécessaire d'avoir un
+transformations entre les différents languages, il est nécessaire d'avoir un
méta-language commun, qui est appellé méta-méta-modèle (M3). Pour ne pas avoir
un autre language au dessus du méta-méta-modèle, celui-ci doit être
auto-descriptif c'est à dire qu'il est possible de réaliser un méta-modèle
@@ -57,8 +57,8 @@
* indépenance des outils de développement
-De nombreuses solutions sont disponible sur le marché, EUGene se posistionne par
-rapport à ses corrurences, comme simple d'utilisation et de mise oeuvre,
+De nombreuses solutions sont disponibles sur le marché, EUGene se positionne par
+rapport à ses conrrurences, comme simple d'utilisation et de mise oeuvre,
indépendant des outils de développement et full JAVA sans autre language à
apprendre.
@@ -68,14 +68,14 @@
Comparaison par rapport aux solutions existantes du marché :
-+---------+---------------------+----------------------------+--------------+---------+-----------+
+ --------- --------------------- ---------------------------- -------------- --------- -----------
| | | | | | Format |
| | Générateur | Indépendance | Build | Plugin | de sortie |
-+=========+=====================+============================+==============+=========+===========+
+ ========= ===================== ============================ ============== ========= ===========
| EUGene | Template en java | Outils de développement | Maven/Ant | Eclipse | Tout |
-+---------+---------------------+----------------------------+--------------+---------+-----------+
+ --------- --------------------- ---------------------------- -------------- --------- -----------
| Acceleo | Template spécifique | Lié à la pateforme Eclipse | Pas possible | Eclipse | Tout |
-+---------+---------------------+----------------------------+--------------+---------+-----------+
+ --------- --------------------- ---------------------------- -------------- --------- -----------
| | Tranformation de | | | | |
| ATL | modèle en QVT | Lié à la pateforme Eclipse | Pas possible | Eclipse | Modèle |
-+---------+---------------------+----------------------------+--------------+---------+-----------+
+ --------- --------------------- ---------------------------- -------------- --------- -----------
1
0
Author: echatellier
Date: 2010-03-04 15:15:45 +0100 (Thu, 04 Mar 2010)
New Revision: 829
Log:
Technologie de point > Technologie de pointe
Modified:
trunk/src/site/fr/rst/01-introduction.rst
Modified: trunk/src/site/fr/rst/01-introduction.rst
===================================================================
--- trunk/src/site/fr/rst/01-introduction.rst 2010-03-03 13:40:14 UTC (rev 828)
+++ trunk/src/site/fr/rst/01-introduction.rst 2010-03-04 14:15:45 UTC (rev 829)
@@ -13,7 +13,7 @@
Qu'est ce le MDA (Model Driven Architecture)
--------------------------------------------
-EUGene s'inscrit dans les technologies de point, et tout particulièrement dans
+EUGene s'inscrit dans les technologies de pointe, et tout particulièrement dans
l'approche MDA. L'approche MDA a comme principe la conception par modèle sur le
développement des logiciels. Ce qui consiste à s'abstraire de la technique en
modèlisant le besoin, puis transformer ce modèle selon la plate-forme cible.
1
0
Author: fdesbois
Date: 2010-03-03 14:40:14 +0100 (Wed, 03 Mar 2010)
New Revision: 828
Modified:
trunk/src/site/fr/rst/02-objectmodel.rst
trunk/src/site/fr/rst/03-generation.rst
trunk/src/site/fr/rst/04-templates.rst
trunk/src/site/fr/rst/05-execution.rst
trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst
trunk/src/site/fr/rst/07-glossaire.rst
trunk/src/site/fr/rst/08-FAQ.rst
trunk/src/site/fr/rst/eugene-plan.rst
trunk/src/site/fr/rst/index.rst
trunk/src/site/site_fr.xml
Log:
Continue documentation for v2.0
Modified: trunk/src/site/fr/rst/02-objectmodel.rst
===================================================================
--- trunk/src/site/fr/rst/02-objectmodel.rst 2010-02-26 16:48:46 UTC (rev 827)
+++ trunk/src/site/fr/rst/02-objectmodel.rst 2010-03-03 13:40:14 UTC (rev 828)
@@ -7,9 +7,13 @@
:Revision: $Revision: 650 $
:Date: $Date: 2009-10-21 15:22:32 +0200 (Wed, 21 Oct 2009) $
+Note
+ Ce document ne considère pas pour le moment les évolutions apportées par
+ la version 2.0 d'EUGene.
.. contents::
+TODO : revoir cette documentation
Introduction
============
Modified: trunk/src/site/fr/rst/03-generation.rst
===================================================================
--- trunk/src/site/fr/rst/03-generation.rst 2010-02-26 16:48:46 UTC (rev 827)
+++ trunk/src/site/fr/rst/03-generation.rst 2010-03-03 13:40:14 UTC (rev 828)
@@ -20,15 +20,13 @@
Deux possibilités de génération :
-- Génération simple : template de génération
-- Génération complète : lecture de modèle + transformeur de modèle +
+- `Generation simple`_ : template de génération
+- `Generation complete`_ : lecture de modèle + transformeur de modèle +
template de génération simple (généralement unique au langage de sortie)
-Nous verrons également le cas concret de la génération de code Java.
+Nous verrons également le cas concret de la `Generation Java`_ .
-.. contents::
-
-Génération simple
+Generation simple
-----------------
EUGene nécessite en entrée du processus de génération un ou plusieurs fichiers
@@ -43,27 +41,19 @@
plusieurs générateurs (Generator) en utilisant une `syntaxe simple`_
interprété par `Nuiton-processor`_ .
-.. _ObjectModel: 02-objectmodel.html
-
-.. _Nuiton-processor: http://maven-site.nuiton.org/processor/nuiton-processor/index.html
-
-.. _syntaxe simple: 04-templates.html
-
.. image:: ../schemas/03-generation-simple.png
Par défaut EUGene manipule de l'ObjectModel résultants de formats de fichiers
connus comme les fichiers zargo, zuml ou xmi (voir `Writer`_ ) .
-.. _Writer: 06-fonctionnalites-avancees.html#Writer
-
-Génération complète
+Generation complete
-------------------
Il est possible d'utiliser un autre format de fichier que le xmi ou
l'objectmodel en entrée d'EUGene, dans ce cas il est nécessaire de convertir
ce format pour remplir l'ObjectModel mémoire. Il est ainsi possible d'utiliser
-un `Reader`_ approprié. Il est également possible d'utiliser un autre modèle
-que l'ObjectModel comme le StateModel par exemple (le Reader utilisé sera
+un `ModelReader`_ approprié. Il est également possible d'utiliser un autre modèle
+que l'ObjectModel comme le StateModel par exemple (le ModelReader utilisé sera
le StateModelReader). Comme précédemment, il est possible d'écrire des
générateurs pour interprété l'ObjectModel et le convertir en fichiers. Mais il
est également possible d'utiliser un transformeur de modèle qui se comporte
@@ -71,20 +61,18 @@
de fichiers mais sur la création d'un nouveau modèle prêt à être de nouveau
interprété par un générateur. Le contenu du transformeur n'est plus une template
de génération mais de la transformation de modèle : la conversion du modèle
-d'entrée interprété par le Reader vers un modèle de sortie plus simple à
+d'entrée interprété par le ModelReader vers un modèle de sortie plus simple à
manipuler dans un autre générateur. Cela permet principalement de concentrer
l'interprétation du modèle dans les transformeurs et d'utiliser un générateur
basique spécifique à un langage par exemple.
.. image:: ../schemas/03-generation-complete.png
-.. _Reader: 06-fonctionnalites-avancees.html#Reader
+L'ObjectModel peut être également utilisé comme modèle résultat de la
+transformation sans contenir nécessairement les spécificités du modèle
+(norme UML) mais plus celles du langage (Java par exemple).
-L'ObjectModel est également utilisé comme résultat de la transformation
-mais ne comporte plus les spécificités du modèle (norme UML) mais celles du
-langage (Java par exemple).
-
-Génération Java
+Generation Java
---------------
Nous arrivons vers le cas pratique de la génération de code Java. Ici le modèle
@@ -102,12 +90,17 @@
souhaité, comme notamment les `extensions`_ (pour Java :
ImportsManager, AnnotationManager, ...) et le builder (pour Java : JavaBuilder).
-.. _extensions: 06-fonctionnalites-avancees.html#Extension
-
Il est conseillé d'utiliser maven pour `executer`_ la génération en utilisant le
`maven-eugene-plugin`_ . La configuration du plugin permet de préciser les
différents éléments de la génération (writer, reader, model, template, ...).
-.. _executer: 05-execution.html
+.. _ObjectModel: 02-objectmodel.html
+.. _syntaxe simple: 04-templates.html#Syntaxe_dcriture_dun_Generator
+.. _Nuiton-processor: http://maven-site.nuiton.org/processor/nuiton-processor/index.html
+.. _Writer: 06-fonctionnalites-avancees.html#Writer
+.. _ModelReader: 06-fonctionnalites-avancees.html#ModelReader
+
+.. _extensions: 06-fonctionnalites-avancees.html#Extension
+.. _executer: 05-execution.html
.. _maven-eugene-plugin: ../maven-eugene-plugin/fr/index.html
\ No newline at end of file
Modified: trunk/src/site/fr/rst/04-templates.rst
===================================================================
--- trunk/src/site/fr/rst/04-templates.rst 2010-02-26 16:48:46 UTC (rev 827)
+++ trunk/src/site/fr/rst/04-templates.rst 2010-03-03 13:40:14 UTC (rev 828)
@@ -13,15 +13,13 @@
Nuiton-processor)
- Utilisation d'un Transformer (transformation de modèle écrite en Java)
-.. _Processus de generation: 03-generation.html
-
EUGene considère les Generator et les Transformer comme tout deux des templates
de génération avec comme point commun un modèle en entrée. La différence réside
à la sortie, le Generator aura la charge d'écrire des fichiers tandis que le
Transformer chargera un nouveau modèle de même type ou non.
-EUGene manipule principalement l'ObjectModel, il y a donc un existant abstrait
-pour la manipulation de ce type de modèle : ObjectModelGenerator et
+EUGene manipule principalement l' `ObjectModel`_ , il y a donc un existant
+abstrait pour la manipulation de ce type de modèle : ObjectModelGenerator et
ObjectModelTransformer.
EUGene implémente également une solution simple pour la génération de code Java.
@@ -51,10 +49,10 @@
Generator disponibles
~~~~~~~~~~~~~~~~~~~~~
-- AbstractGenerator : entrée à définir
-- ObjectModelGenerator : ObjectModel en entrée
-- StateModelGenerator : StateModel en entrée
-- JavaGenerator : ObjectModel orienté Java (avec extensions) en entrée
+- `AbstractGenerator`_ : entrée à définir
+- `ObjectModelGenerator`_ : ObjectModel en entrée
+- `StateModelGenerator`_ : StateModel en entrée
+- `JavaGenerator`_ : ObjectModel orienté Java (avec extensions) en entrée
Implantation d'une transformation de modèle
-------------------------------------------
@@ -120,6 +118,8 @@
ObjectModelBuilder
~~~~~~~~~~~~~~~~~~
+`Ref ObjectModelBuilder`_
+
Cet outil permet de remplir un ObjectModel directement depuis un Transformer.
Il s'agit bien évidemment du cas où le modèle de sortie du Transformer est
un ObjectModel. Cette classe permet de faciliter l'écriture de l'ObjectModel,
@@ -138,10 +138,10 @@
Transformer disponibles
~~~~~~~~~~~~~~~~~~~~~~~
-- Transformer : entrée et sortie à définir
-- ObjectModelTransformer : ObjectModel en entrée, sortie à définir
-- ObjectModelTransformerToJava : ObjectModel en entrée, ObjectModel en sortie,
- JavaGenerator en template de sortie.
+- `Transformer`_ : entrée et sortie à définir
+- `ObjectModelTransformer`_ : ObjectModel en entrée, sortie à définir
+- `ObjectModelTransformerToJava`_ : ObjectModel en entrée, ObjectModel en sortie,
+ `JavaGenerator`_ en template de sortie.
Générateur de java
------------------
@@ -151,11 +151,11 @@
org.nuiton.eugene.java) :
- Fichiers en entrée : xmi, objectmodel, zargo, zuml
-- Reader : ObjectModelReader
-- input Model : ObjectModel
-- output Model : ObjectModel orienté Java (avec extensions)
-- Transformer abstrait : ObjectModelTransformerToJava
-- Generator de sortie : JavaGenerator
+- `ModelReader`_ : `ObjectModelReader`_
+- input `Model`_ : ObjectModel
+- output `Model`_ : ObjectModel orienté Java (avec extensions)
+- `Transformer`_ abstrait : `ObjectModelTransformerToJava`_
+- `Generator`_ de sortie : `JavaGenerator`_
Pour chaque type de génération souhaité, il suffit donc d'hérité de
ObjectModelTransformerToJava et d'utiliser les méthodes transformFrom
@@ -167,6 +167,8 @@
JavaBuilder
~~~~~~~~~~~
+`Ref JavaBuilder`_
+
Pour faciliter l'écriture de l'ObjectModel orienté Java, le JavaBuilder est
utilisé de façon transparente car l'ObjectModelTransformerToJava propose
l'ensemble de ses méthodes directement (délégation). Ainsi, la transformation
@@ -189,4 +191,25 @@
La gestion des imports est faite automatiquement sur les types manipulés
(type d'attribut, de paramètre, retour de méthode, interface, ...). Cette
gestion utilise l'extension ImportsManagerExtension qui gère un ImportsManager
- par classifier.
\ No newline at end of file
+ par classifier.
+
+.. _Processus de generation: 03-generation.html
+.. _ObjectModel: 02-objectmodel.html
+
+.. _AbstractGenerator: ../eugene/apidocs/org/nuiton/eugene/AbstractGenerator.html
+.. _ObjectModelGenerator: ../eugene/apidocs/org/nuiton/eugene/models/object/ObjectModelGenerator.html
+.. _StateModelGenerator: ../eugene/apidocs/org/nuiton/eugene/models/state/StateModelGenerator.html
+.. _JavaGenerator: ../eugene/apidocs/org/nuiton/eugene/java/JavaGenerator.html
+
+.. _Ref ObjectModelBuilder: ../eugene/apidocs/org/nuiton/eugene/models/object/ObjectModelBuilder.html
+
+.. _Transformer: ../eugene/apidocs/org/nuiton/eugene/Transformer.html
+.. _ObjectModelTransformer: ../eugene/apidocs/org/nuiton/eugene/models/object/ObjectModelTransformer.html
+.. _ObjectModelTransformerToJava: ../eugene/apidocs/org/nuiton/eugene/java/ObjectModelTransformerToJava.html
+
+.. _ModelReader: ../eugene/apidocs/org/nuiton/eugene/ModelReader.html
+.. _ObjectModelReader: ../eugene/apidocs/org/nuiton/eugene/models/object/ObjectModeReader.html
+.. _Model: ../eugene/apidocs/org/nuiton/eugene/models/Model.html
+.. _Generator: ../eugene/apidocs/org/nuiton/eugene/AbstractGenerator.html
+
+.. _Ref JavaBuilder: ../eugene/apidocs/org/nuiton/eugene/java/JavaBuilder.html
\ No newline at end of file
Modified: trunk/src/site/fr/rst/05-execution.rst
===================================================================
--- trunk/src/site/fr/rst/05-execution.rst 2010-02-26 16:48:46 UTC (rev 827)
+++ trunk/src/site/fr/rst/05-execution.rst 2010-03-03 13:40:14 UTC (rev 828)
@@ -0,0 +1,38 @@
+Execution
+=========
+
+:Author: Florian Desbois
+:Contact: eugene-devel(a)list.nuiton.org ou eugene-users(a)list.nuiton.org
+:Revision: $Revision$
+:Date: $Date$
+
+Pour mettre en oeuvre la génération en utilisant EUGene, il est possible
+d'utiliser les principaux utilitaires de build : `Ant`_ et `Maven`_
+
+Ant
+---
+
+TODO
+
+Maven
+-----
+
+Tout d'abord il vous faut la dépendance d'EUGene pour pouvoir utiliser son
+API ::
+
+ <dependency>
+ <groupId>org.nuiton.eugene</groupId>
+ <artifactId>eugene</artifactId>
+ <version>${eugene.version}</version>
+ <scope>provided</scope>
+ </dependency>
+
+A noter que le scope provided suffit, étant donné qu'EUGene n'est utilisé
+qu'à la compilation/génération.
+
+Vous pouvez désormais étendre les Transformer et Generator désirés pour
+pouvoir générer des fichiers en utilisant le plugin maven. Voir `les exemples
+et la documentation du plugin`_ .
+
+.. _les exemples et la documentation du plugin: ../maven-eugene-plugin/fr/example.html
+
Modified: trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst
===================================================================
--- trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst 2010-02-26 16:48:46 UTC (rev 827)
+++ trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst 2010-03-03 13:40:14 UTC (rev 828)
@@ -13,21 +13,13 @@
EUGene peut être étendu sur les quatres notions de base :
- `Writer`_ : conversion fichiers vers fichiers
-- `Reader`_ : conversion fichiers vers modèle
+- `ModelReader`_ : conversion fichiers vers modèle
- Transformer : conversion modèle vers modèle (voir `Templates`_ )
- Generator : conversion modèle vers fichiers (voir `Templates`_ )
-Les `extensions`_ permettent également d'enrichir le modèle de base d'EUGene :
+Les `Extension`_ permettent également d'enrichir le modèle de base d'EUGene :
l'ObjectModel.
-.. _Templates: 04-templates.html
-
-.. _Writer: 06-fonctionnalites-avancees.html#Writer
-
-.. _Reader: 06-fonctionnalites-avancees.html#Reader
-
-.. _extensions: 06-fonctionnalites-avancees.html#Extension
-
Writer
------
@@ -42,22 +34,24 @@
TODO : explication chainage
-Reader
-------
+ModelReader
+-----------
-Le Reader permet de charger un Model à partir de fichiers. Il sert à l'execution
-d'EUGene pour lire certains fichiers d'entrée et remplir le modèle correspondant.
-Les deux Reader disponibles sont :
+`Ref ModelReader`_
-- ObjectModelReader : utilisation de digester pour lire les fichiers
+Le ModelReader permet de charger un Model à partir de fichiers. Il sert à
+l'execution d'EUGene pour lire certains fichiers d'entrée et remplir le modèle
+correspondant. Les deux ModelReader disponibles sont :
+
+- `ObjectModelReader`_ : utilisation de digester pour lire les fichiers
**objectmodel**.
-- StateModelReader : utilisation de digester pour lire les fichiers
+- `StateModelReader`_ : utilisation de digester pour lire les fichiers
**statemodel**.
Il est possible de gérer un autre format de fichier en entrée et de le manipuler
-via un nouveau Reader que vous devrez créer en héritant du Reader de base. Il
-est également possible de gérer un autre type de Model et de créer un Reader
-qui se chargera de le remplir.
+via un nouveau ModelReader que vous devrez créer en héritant du ModelReader de
+base. Il est également possible de gérer un autre type de Model et de créer un
+ModelReader qui se chargera de le remplir.
TODO : intégration reader dans maven
@@ -75,7 +69,7 @@
L'ObjectModel racine permet la récupération d'une extension avec une référence
unique. Si l'extension n'existe pas, elle sera automatiquement créer.
-Il faut utiliser pour se faire la méthode ::
+Il faut utiliser pour se faire la méthode de l' `interface ObjectModel`_ ::
<O> O getExtension(String reference, Class<O> extensionClass)
throws ClassCastException, IllegalArgumentException;
@@ -87,17 +81,35 @@
Pour Java, trois extensions ont été créés :
-- ImportsManagerExtension : associe un ImportsManager avec un ObjectModelClassifier.
- L'ImportsManager se charge d'enregistrer tous les imports nécessaires à ce
- classifier (class, interface, enum).
+- `ImportsManagerExtension`_ : associe un `ImportsManager`_ avec un
+ `ObjectModelClassifier`_ . L'ImportsManager se charge d'enregistrer tous les
+ imports nécessaires à ce classifier (class, interface, enum).
-- AnnotationsManagerExtension : associe un AnnotationsManager à un ObjectModelClassifier.
- L'AnnotationManager se charge d'enregistrer les annotations pour un classifier
- sur un ObjectModelElement (operation, parameter, attribute, classifier, ...)
+- `AnnotationsManagerExtension`_ : associe un `AnnotationsManager`_ à un
+ `ObjectModelClassifier`_ . L'AnnotationManager se charge d'enregistrer les
+ annotations pour un classifier sur un `ObjectModelElement`_ (operation,
+ parameter, attribute, classifier, ...)
-- ConstantsManagerExtension : permet de gérer un cache sur les noms des constantes
+- `ConstantsManagerExtension`_ : permet de gérer un cache sur les noms des constantes
manipulés pendant une génération. TODO : more explanation about this
+.. _Templates: 04-templates.html
+.. _Ref ModelReader: ../eugene/apidocs/org/nuiton/eugene/ModelReader.html
+.. _ObjectModelReader: ../eugene/apidocs/org/nuiton/eugene/models/object/ObjectModelReader.html
+.. _StateModelReader: ../eugene/apidocs/org/nuiton/eugene/models/state/StateModelReader.html
+.. _interface ObjectModel: ../eugene/apidocs/org/nuiton/eugene/models/object/ObjectModel.html
+.. _ImportsManagerExtension: ../eugene/apidocs/org/nuiton/eugene/java/ImportsManagerExtension.html
+.. _ImportsManager: ../eugene/apidocs/org/nuiton/eugene/java/ImportsManager.html
+.. _AnnotationsManagerExtension: ../eugene/apidocs/org/nuiton/eugene/java/AnnotationsManagerExtension.html
+.. _AnnotationsManager: ../eugene/apidocs/org/nuiton/eugene/java/AnnotationsManager.html
+.. _ConstantsManagerExtension: ../eugene/apidocs/org/nuiton/eugene/java/ConstantsManagerExtension.html
+
+.. _ObjectModelElement: ../eugene/apidocs/org/nuiton/eugene/models/object/ObjectModelElement.html
+.. _ObjectModelClassifier: ../eugene/apidocs/org/nuiton/eugene/models/object/ObjectModelClassifier.html
+
+
+
+
Modified: trunk/src/site/fr/rst/07-glossaire.rst
===================================================================
--- trunk/src/site/fr/rst/07-glossaire.rst 2010-02-26 16:48:46 UTC (rev 827)
+++ trunk/src/site/fr/rst/07-glossaire.rst 2010-03-03 13:40:14 UTC (rev 828)
@@ -1,35 +1,89 @@
Glossaire
=========
-- MDA :
- Model Driven Architecture : technique de programmation basé sur les modèles.
+MDA
+---
-- UML :
- Unified Modeling Language : langage de modélisation.
+**M**odel **D**riven **A**rchitecture : technique de programmation basé sur
+les modèles.
-- XMI :
- XML Metadata Interchange : norme XML pour le langage UML.
+Refs : `MDA`_ , `Introduction EUGene`_
-- Template :
- Classe permettant la génération de fichiers à partir d'un modèle de données.
+.. _MDA: http://fr.wikipedia.org/wiki/Model_driven_architecture
+.. _Introduction EUGene: 01-introduction.html
-- Transformer :
- Transformateur de modèle : conversion d'un modèle A en modèle B.
+UML
+---
-- Generator :
- Générateur de fichiers de sorties à partir d'un modèle d'entrée.
+**U**nified **M**odeling **L**anguage : langage de modélisation.
-- ObjectModel :
- Méta-modèle objet d'EUGene avec spécificités UML (multiplicités, héritage, ...)
+Refs : `Site officiel UML`_ , `ObjectModel EUGene`_
-- Builder :
- Constructeur de modèle, permet de créer et remplir un modèle directement en
- Java.
+.. _Site officiel UML: http://www.uml.org/
+.. _ObjectModel EUGene: 02-objectmodel.html
-- Extension :
- Extensions de modèle, permet de rajouter des fonctionnalités spécifiques à
- un modèle. Utilisé principalement dans l'ObjectModel pour y rattacher les
- spécificités au langage Java non présente par défaut.
+XMI
+---
-- Nuiton-processor :
- Librairie permettant d'interprété la syntaxe des templates.
+**X**ML **M**etadata **I**nterchange : norme XML pour le langage UML.
+
+Refs : `Site officiel XMI`_ , `ObjectModel EUGene`_
+
+.. _Site officiel XMI: http://www.omg.org/technology/documents/formal/xmi.htm
+
+Template
+--------
+
+Classe permettant la génération de fichiers à partir d'un modèle de données.
+
+Ref : `Templates EUgene`_ , `librairie Nuiton-processor`_
+
+.. _Templates EUGene: 04-templates.html
+.. _librairie Nuiton-processor: http://maven-site.nuiton.org/processor
+
+Transformer
+-----------
+
+Transformateur de modèle : conversion d'un modèle A en modèle B.
+
+Ref : `Templates EUGene`_
+
+Generator
+---------
+
+Générateur de fichiers de sorties à partir d'un modèle d'entrée.
+
+Ref : `Templates EUGene`_
+
+ObjectModel
+-----------
+
+Méta-modèle objet d'EUGene avec spécificités UML (multiplicités, héritage, ...)
+
+Refs : `ObjectModel EUGene`_
+
+Builder
+-------
+
+Constructeur de modèle, permet de créer et remplir un modèle directement en
+Java.
+
+Refs : `Fonctionnalites avancees EUGene`_
+
+.. _Fonctionnalites avancees EUGene: 06-fonctionnalites-avancees.html
+
+Extension
+---------
+
+Extensions de modèle, permet de rajouter des fonctionnalités spécifiques à
+un modèle. Utilisé principalement dans l'ObjectModel pour y rattacher les
+spécificités au langage Java non présente par défaut.
+
+Refs : `Fonctionnalites avancees EUGene`_
+
+Nuiton-processor
+----------------
+
+Librairie permettant d'interprété la syntaxe des templates.
+
+Ref : `librairie Nuiton-processor`_
Modified: trunk/src/site/fr/rst/08-FAQ.rst
===================================================================
--- trunk/src/site/fr/rst/08-FAQ.rst 2010-02-26 16:48:46 UTC (rev 827)
+++ trunk/src/site/fr/rst/08-FAQ.rst 2010-03-03 13:40:14 UTC (rev 828)
@@ -27,15 +27,30 @@
/*{generator option: parentheses = false}*/
/*{generator option: writeString = +}*/
-Il suffit ensuite d'utiliser les balises /*{ }*/ pour ajouter le corps d'une
+Il suffit ensuite d'utiliser les balises ``/*{ }*/`` pour ajouter le corps d'une
méthode ::
- setOperationBody(setValue, ""
+ setOperationBody(setValue, ""
/*{
this.value = value;
}*/
- );
+ );
Note
Il est conseillé de faire des essais pour la mise en page du fichier résultant
au même titre que pour les résultats d'un Generator.
+
+Où puis-je trouver des exemples de Transformer ou Generator ?
+=============================================================
+
+En attendant les tutoriels et une version demo, le projet ayant le plus
+d'exemples concrets sur l'utilisation d'EUGene est le projet
+`ToPIA`_ . Vous y trouverez dans le code source (module ToPIA-persistence)
+de nombreux exemples de Transformer et/ou Generator pour la génération de code
+Java (utilisation en tant que superclasse du Transformer
+ObjectModelTransformerToJava ou du Generator ObjectModelGenerator).
+Vous trouverez également quelques exemples dans les tests d'intégration du
+`maven-eugene-plugin`_ : répertoire **src/it/smart-generate**.
+
+.. _ToPIA: http://nuiton.org/projects/show/topia
+.. _maven-eugene-plugin: ../maven-eugene-plugin/fr/index.html
Modified: trunk/src/site/fr/rst/eugene-plan.rst
===================================================================
--- trunk/src/site/fr/rst/eugene-plan.rst 2010-02-26 16:48:46 UTC (rev 827)
+++ trunk/src/site/fr/rst/eugene-plan.rst 2010-03-03 13:40:14 UTC (rev 828)
@@ -35,7 +35,7 @@
- Fonctionnalités avancées
* Writer
- * Reader
+ * ModelReader
* Extension
- Glossaire
@@ -144,8 +144,8 @@
- Principe de chaînage
-Reader
-~~~~~~
+ModelReader
+~~~~~~~~~~~
Ressources : fdesbois, echatellier?
Modified: trunk/src/site/fr/rst/index.rst
===================================================================
--- trunk/src/site/fr/rst/index.rst 2010-02-26 16:48:46 UTC (rev 827)
+++ trunk/src/site/fr/rst/index.rst 2010-03-03 13:40:14 UTC (rev 828)
@@ -1,19 +1,43 @@
======
-EUGEne
+EUGene
======
-.. contents::
+**E**fficient **U**niversal **Gene**rator
+Vous trouverez dans cette documentation :
-Présentation
-------------
+- `Introduction`_ : introduction sur les principes d'EUGene
+- `ObjectModel`_ : Méta-modèle principal d'EUGene utiliser pour la génération
+- `Processus de generation`_ : Etapes de génération
+- `Templates`_ : Ecriture des templates (`Transformer`_ et `Generator`_ )
+- `Execution`_ : Execution de la génaration (via Maven ou Ant)
+- `Fonctionnalites avancees`_ : Comment étendre les fonctionnalités d'EUGene
+- `Glossaire`_ : Glossaire des termes utiliser dans EUGene
+- `FAQ`_ : Foire aux questions
+.. _Introduction: 01-introduction.html
+.. _ObjectModel: 02-objectmodel.html
+.. _Processus de generation: 03-generation.html
+.. _Templates: 04-templates.html
+.. _Execution: 05-execution.html
+.. _Fonctionnalites avancees: 06-fonctionnalites-avancees.html
+.. _Glossaire: 07-glossaire.html
+.. _Transformer: 07-glossaire.html
+.. _Generator: 07-glossaire.html
+.. _FAQ: 08-FAQ.html
+
Le projet EUGene est composé de 3 modules :
* `eugene-api`_
* `ant-eugene-task`_
* `maven-eugene-plugin`_
-.. _eugene-api: eugene/index.html
-.. _ant-eugene-task: ant-eugene-task/index.html
-.. _maven-eugene-plugin: maven-eugene-plugin/index.html
\ No newline at end of file
+.. _eugene-api: ../eugene/fr/index.html
+.. _ant-eugene-task: ../ant-eugene-task/fr/index.html
+.. _maven-eugene-plugin: ../maven-eugene-plugin/fr/index.html
+
+Plus d'infos sur le projet sur la `forge nuiton`_ .
+
+.. _forge nuiton: http://www.nuiton.org/projects/show/eugene
+
+A venir des tutoriels ainsi qu'une application demo.
\ No newline at end of file
Modified: trunk/src/site/site_fr.xml
===================================================================
--- trunk/src/site/site_fr.xml 2010-02-26 16:48:46 UTC (rev 827)
+++ trunk/src/site/site_fr.xml 2010-03-03 13:40:14 UTC (rev 828)
@@ -45,6 +45,8 @@
<item name="Nuiton-processor" href="http://maven-site.nuiton.org/processor"/>
<item name="ToPIA" href="http://maven-site.nuiton.org/topia"/>
<item name="ArgoUML" href="http://argouml.tigris.org/"/>
+ <item name="UML" href="http://www.uml.org/"/>
+ <item name="XMI" href="http://www.omg.org/technology/documents/formal/xmi.htm"/>
</menu>
<!-- TC-20100117 does not works on none primary language -->
1
0
Author: echatellier
Date: 2010-02-26 17:48:46 +0100 (Fri, 26 Feb 2010)
New Revision: 827
Modified:
trunk/ant-eugene-task/pom.xml
Log:
Add assembly for ant task (copied from eugene module, code not sure)
Modified: trunk/ant-eugene-task/pom.xml
===================================================================
--- trunk/ant-eugene-task/pom.xml 2010-02-25 18:28:22 UTC (rev 826)
+++ trunk/ant-eugene-task/pom.xml 2010-02-26 16:48:46 UTC (rev 827)
@@ -56,5 +56,49 @@
<!-- ************************************************************* -->
<packaging>jar</packaging>
+ <properties>
+ <!-- extra files to include in release -->
+ <redmine.releaseFiles>${redmine.libReleaseFiles}</redmine.releaseFiles>
+ </properties>
+
+ <profiles>
+ <!-- perform only on a release stage when using the maven-release-plugin -->
+ <profile>
+ <id>release-profile</id>
+ <activation>
+ <property>
+ <name>performRelease</name>
+ <value>true</value>
+ </property>
+ </activation>
+ <build>
+ <plugins>
+
+ <!-- launch in a release the assembly automaticly -->
+ <plugin>
+ <artifactId>maven-assembly-plugin</artifactId>
+ <executions>
+ <execution>
+ <id>create-assemblies</id>
+ <phase>verify</phase>
+ <goals>
+ <goal>single</goal>
+ </goals>
+ </execution>
+ </executions>
+ <configuration>
+ <attach>false</attach>
+ <descriptorRefs>
+ <descriptorRef>deps</descriptorRef>
+ <descriptorRef>full</descriptorRef>
+ </descriptorRefs>
+ </configuration>
+ </plugin>
+
+
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
1
0
Author: fdesbois
Date: 2010-02-25 19:28:22 +0100 (Thu, 25 Feb 2010)
New Revision: 826
Modified:
trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst
Log:
Add documentation : advanced features chapter (missing some explanations about Writer and maven integration)
Modified: trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst
===================================================================
--- trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst 2010-02-24 18:09:06 UTC (rev 825)
+++ trunk/src/site/fr/rst/06-fonctionnalites-avancees.rst 2010-02-25 18:28:22 UTC (rev 826)
@@ -0,0 +1,103 @@
+Fonctionnalités avancées
+========================
+
+:Author: Florian Desbois
+:Contact: eugene-devel(a)list.nuiton.org ou eugene-users(a)list.nuiton.org
+:Revision: $Revision$
+:Date: $Date$
+
+Ce chapitre concerne les fonctionnalités avancées d'EUGene, c'est à dire,
+comment étendre EUGene pour l'adapter à un autre modèle que l'ObjectModel
+ou comment étendre ce dernier par le biais des extensions.
+
+EUGene peut être étendu sur les quatres notions de base :
+
+- `Writer`_ : conversion fichiers vers fichiers
+- `Reader`_ : conversion fichiers vers modèle
+- Transformer : conversion modèle vers modèle (voir `Templates`_ )
+- Generator : conversion modèle vers fichiers (voir `Templates`_ )
+
+Les `extensions`_ permettent également d'enrichir le modèle de base d'EUGene :
+l'ObjectModel.
+
+.. _Templates: 04-templates.html
+
+.. _Writer: 06-fonctionnalites-avancees.html#Writer
+
+.. _Reader: 06-fonctionnalites-avancees.html#Reader
+
+.. _extensions: 06-fonctionnalites-avancees.html#Extension
+
+Writer
+------
+
+EUGene gère par défaut les formats de fichiers d'entrée suivants :
+
+- xmi : fichier standard pour le langage de modélisation UML. Les versions
+ 1.2 et 2.1 du xmi sont supportés par EUGene
+- zargo : fichier `ArgoUML`_ (xmi 1.2)
+- zuml : fichier `TopCased`_ (xmi 2.1 voir 3.0)
+- objectmodel : version simplifié du xmi pour générer de l'ObjectModel
+- statemodel : version simplifié du xmi pour générer du StateModel
+
+TODO : explication chainage
+
+Reader
+------
+
+Le Reader permet de charger un Model à partir de fichiers. Il sert à l'execution
+d'EUGene pour lire certains fichiers d'entrée et remplir le modèle correspondant.
+Les deux Reader disponibles sont :
+
+- ObjectModelReader : utilisation de digester pour lire les fichiers
+ **objectmodel**.
+- StateModelReader : utilisation de digester pour lire les fichiers
+ **statemodel**.
+
+Il est possible de gérer un autre format de fichier en entrée et de le manipuler
+via un nouveau Reader que vous devrez créer en héritant du Reader de base. Il
+est également possible de gérer un autre type de Model et de créer un Reader
+qui se chargera de le remplir.
+
+TODO : intégration reader dans maven
+
+Extension
+---------
+
+EUGene manipule majoritairement l'ObjectModel. Ce modèle fourni à 90% l'ensemble
+des fonctionnalités nécessaires à la génération de nombreux fichiers de sorties
+quelque soit le langage de programmation. Cependant certaines spécifités propres
+à ces langages bloquent l'utilisation de l'ObjectModel et mènerait le développeur
+à créer un nouveau modèle finalement très proche de l'ObjectModel existant.
+
+L'idée est donc d'étendre l'ObjectModel via des extensions pour ne pas perturber
+son but premier : fournir un ensemble de classes représentant la norme UML.
+
+L'ObjectModel racine permet la récupération d'une extension avec une référence
+unique. Si l'extension n'existe pas, elle sera automatiquement créer.
+Il faut utiliser pour se faire la méthode ::
+
+ <O> O getExtension(String reference, Class<O> extensionClass)
+ throws ClassCastException, IllegalArgumentException;
+
+Il vous suffit donc d'attacher n'importe quelle classe au modèle pour pouvoir
+la manipuler en tant qu'extension. Le but étant de pouvoir la récupérer
+à n'importe quel moment du processus de génération (reader, transformer,
+generator).
+
+Pour Java, trois extensions ont été créés :
+
+- ImportsManagerExtension : associe un ImportsManager avec un ObjectModelClassifier.
+ L'ImportsManager se charge d'enregistrer tous les imports nécessaires à ce
+ classifier (class, interface, enum).
+
+- AnnotationsManagerExtension : associe un AnnotationsManager à un ObjectModelClassifier.
+ L'AnnotationManager se charge d'enregistrer les annotations pour un classifier
+ sur un ObjectModelElement (operation, parameter, attribute, classifier, ...)
+
+- ConstantsManagerExtension : permet de gérer un cache sur les noms des constantes
+ manipulés pendant une génération. TODO : more explanation about this
+
+
+
+
1
0