Eugene-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
November 2010
- 1 participants
- 39 discussions
28 Nov '10
Author: tchemit
Date: 2010-11-28 12:22:01 +0100 (Sun, 28 Nov 2010)
New Revision: 1011
Url: http://nuiton.org/repositories/revision/eugene/1011
Log:
Evolution #1115: Make ModelReader#read throws an IOException
Evolution #1114: Sanity tests
Evolution #1113: Introduce contracts *EugeneTagValues* (*EugeneStereoTypes*) to push all constants about tagvalues (stereotypes) usable in eugene generators.
Improve the loading of model properties, now for my taste : it is perfect (I remove all colors from it, be SURE of it...)
Added:
trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java
trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/
trunk/eugene/src/test/java/org/nuiton/eugene/TestHelper.java
Modified:
trunk/ant-eugene-task/src/main/java/org/nuiton/eugene/GeneratorTask.java
trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ModelMergeTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ObjectModelGeneratorTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI12ToObjectModelTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtensionTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelDTDTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelTest.java
Modified: trunk/ant-eugene-task/src/main/java/org/nuiton/eugene/GeneratorTask.java
===================================================================
--- trunk/ant-eugene-task/src/main/java/org/nuiton/eugene/GeneratorTask.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/ant-eugene-task/src/main/java/org/nuiton/eugene/GeneratorTask.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -352,10 +352,10 @@
if ("object".equals(transformation)) {
ModelReader<ObjectModel> objectModelReader =
new ObjectModelReader();
- ObjectModel model =
- objectModelReader.read(modelFilesArray);
try {
- generator.applyTemplate(model, destDir);
+ ObjectModel model =
+ objectModelReader.read(modelFilesArray);
+ generator.applyTemplate(model, destDir);
} catch (IOException e) {
throw new BuildException(
"Can't apply template on object model", e);
@@ -365,8 +365,8 @@
else if ("state".equals(transformation)) {
ModelReader<StateModel> stateModelReader =
new StateModelReader();
- Model model = stateModelReader.read(modelFilesArray);
try {
+ Model model = stateModelReader.read(modelFilesArray);
generator.applyTemplate(model, destDir);
} catch (IOException e) {
throw new BuildException(
Added: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -0,0 +1,46 @@
+/*
+ * #%L
+ * EUGene :: EUGene
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2004 - 2010 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+package org.nuiton.eugene;
+
+import org.nuiton.eugene.java.JavaBeanTransformer;
+
+/**
+ * Defines all stereotypes managed by Eugene.
+ * <p/>
+ * In another library using eugene, please extends this contract to put your
+ * own stereotypes, to get a unique place where to find stereotypes.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.2.1
+ */
+public interface EugeneStereoTypes {
+
+ /**
+ * Stereotype for JavaBean objects.
+ *
+ * @see JavaBeanTransformer
+ */
+ String STEREOTYPE_BEAN = "bean";
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Added: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -0,0 +1,65 @@
+/*
+ * #%L
+ * EUGene :: EUGene
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2004 - 2010 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+package org.nuiton.eugene;
+
+import org.nuiton.eugene.java.JavaBeanTransformer;
+
+/**
+ * Defines all tag values managed by Eugene.
+ *
+ * In another library using eugene, please extends this contract to put your
+ * own tag values, to get a unique place where to find tag values.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.2.1
+ */
+public interface EugeneTagValues {
+
+ /**
+ * tag value to add on constants enumeration (or other incoming dev)
+ * a prefix to constant to generate.
+ */
+ String TAG_CONSTANT_PREFIX = "constantPrefix";
+
+ /**
+ * tag value to set if do not want any pcs (says PropertyChangeSupport in a generated bean).
+ * @see JavaBeanTransformer
+ */
+ String TAG_NO_PCS= "noPCS";
+
+ /**
+ * tag value to add the version of the model from outside (says in the
+ * properties file associated to the model)..
+ *
+ * @since 2.2.1
+ */
+ String TAG_VERSION = "version";
+
+ /**
+ * Tag pour specfier if i18n must be generated.
+ * @since 2.2.1
+ */
+ String TAG_I18N_PREFIX = "i18n";
+}
Property changes on: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -130,9 +130,9 @@
if (attribute instanceof ObjectModelAttribute
&& isNMultiplicity((ObjectModelAttribute) attribute)) {
if (attribute.isOrdered()) {
- result = "java.util.List";
+ result = List.class.getName();
} else {
- result = "java.util.Collection";
+ result = Collection.class.getName();
}
if (useGenerics) {
result += "<" + attribute.getType() + ">";
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -30,6 +30,7 @@
import org.nuiton.eugene.models.Model;
import java.io.File;
+import java.io.IOException;
/**
* ModelReader TODO real doc :)
@@ -83,7 +84,8 @@
*
* @param file files to read
* @return the new model builded from files
+ * @throws IOException if any IO errors while reading files
*/
- public abstract M read(File... file);
+ public abstract M read(File... file) throws IOException;
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -27,6 +27,8 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.EugeneStereoTypes;
+import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelInterface;
@@ -52,8 +54,8 @@
*
* Since version 2.2.1, it is possible to
* <ul>
- * <li>generate a simple POJO (says with no PCS support) by using the tag value {@link JavaGeneratorUtil#TAG_NO_PCS}.</li>
- * <li>generate i18n keys using the tag value {@link JavaGeneratorUtil#TAG_I18N_PREFIX}.</li>
+ * <li>generate a simple POJO (says with no PCS support) by using the tag value {@link EugeneTagValues#TAG_NO_PCS}.</li>
+ * <li>generate i18n keys using the tag value {@link EugeneTagValues#TAG_I18N_PREFIX}.</li>
* </ul>
*
* @author tchemit <chemit(a)codelutin.com>
@@ -90,7 +92,7 @@
ObjectModelClass ouputImpl = generateImpl(input, output);
- String noPCSTagValue = input.getTagValue(JavaGeneratorUtil.TAG_NO_PCS);
+ String noPCSTagValue = input.getTagValue(EugeneTagValues.TAG_NO_PCS);
boolean usePCS = StringUtils.isEmpty(noPCSTagValue) ||
!"true".equals(noPCSTagValue.trim());
@@ -558,7 +560,7 @@
}
protected boolean canGenerate(ObjectModelClass input) {
- return input.hasStereotype(JavaGeneratorUtil.STEREOTYPE_BEAN);
+ return input.hasStereotype(EugeneStereoTypes.STEREOTYPE_BEAN);
}
protected void createPropertyChangeSupport(ObjectModelClass output) {
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -24,6 +24,7 @@
*/
package org.nuiton.eugene.java;
+import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.GeneratorUtil;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
@@ -44,35 +45,7 @@
public static final String OPERATION_GETTER_BOOLEAN_PREFIX = "is";
- /** Stereotype for JavaBean objects. */
- public static final String STEREOTYPE_BEAN = "bean";
-
/**
- * tag value to add on constants enumeration (or other incoming dev)
- * a prefix to constant to generate.
- */
- public static final String TAG_CONSTANT_PREFIX = "constantPrefix";
-
- /**
- * tag value to set if do not want any pcs (says PropertyChangeSupport in a generated bean).
- * @see JavaBeanTransformer
- */
- public static final String TAG_NO_PCS= "noPCS";
-
- /**
- * tag value to add the version of the model from outside (says in the
- * properties file associated to the model)..
- *
- * @since 2.2.1
- */
- public static final String TAG_VERSION = "version";
-
- /**
- * Tag pour specfier if i18n must be generated.
- * @since 2.2.1
- */
- public static final String TAG_I18N_PREFIX = "i18n";
- /**
* dependency to add constants in interfaces via an enumeration.
*
* The literals of enumeration will be the value, and constant names will
@@ -150,6 +123,6 @@
*/
public static String getI18nPrefix(ObjectModelElement element,
ObjectModel model) {
- return findTagValue(TAG_I18N_PREFIX, element, model);
+ return findTagValue(EugeneTagValues.TAG_I18N_PREFIX, element, model);
}
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -32,7 +32,6 @@
import org.nuiton.eugene.models.object.ObjectModelInterface;
import org.nuiton.eugene.models.object.ObjectModelModifier;
-import java.util.Iterator;
import java.util.Set;
/*{generator option: parentheses = false}*/
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -29,6 +29,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.GeneratorUtil;
import org.nuiton.eugene.Template;
import org.nuiton.eugene.models.object.ObjectModel;
@@ -194,7 +195,7 @@
// look if there is a constant_prefix tag value
String prefix = JavaGeneratorUtil.findTagValue(
- JavaGeneratorUtil.TAG_CONSTANT_PREFIX,
+ EugeneTagValues.TAG_CONSTANT_PREFIX,
input,
getModel()
);
@@ -739,7 +740,7 @@
* <p/>
* If found, add all literals on {@code output} model as constants.
* <p/>
- * You can add a {@link JavaGeneratorUtil#TAG_CONSTANT_PREFIX} to your
+ * You can add a {@link EugeneTagValues#TAG_CONSTANT_PREFIX} to your
* enumeration to prefix constant names.
*
* @param input the input model
@@ -802,7 +803,7 @@
/**
* Used to initialize constant prefix depends on model tagvalue {@link
- * JavaGeneratorUtil#TAG_CONSTANT_PREFIX}. If no tagvalue found, the default
+ * EugeneTagValues#TAG_CONSTANT_PREFIX}. If no tagvalue found, the default
* value will be an empty prefix.
*/
public void initConstantPrefixFromModel() {
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -30,18 +30,18 @@
import org.apache.commons.digester.Digester;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.ModelReader;
-import org.nuiton.eugene.java.JavaGeneratorUtil;
import org.nuiton.eugene.models.object.xml.DigesterObjectModelRuleSet;
import org.nuiton.eugene.models.object.xml.ObjectModelAssociationClassImpl;
import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl;
import org.nuiton.eugene.models.object.xml.ObjectModelElementImpl;
import org.nuiton.eugene.models.object.xml.ObjectModelImpl;
import org.nuiton.eugene.models.object.xml.ObjectModelImplRef;
-import org.nuiton.eugene.models.object.xml.ObjectModelImplTagValue;
import org.nuiton.util.FileUtil;
import org.nuiton.util.RecursiveProperties;
import org.nuiton.util.StringUtil;
+import org.xml.sax.SAXException;
import java.io.File;
import java.io.FileInputStream;
@@ -49,6 +49,7 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
+import java.util.Iterator;
import java.util.List;
import java.util.Properties;
import java.util.regex.Matcher;
@@ -92,7 +93,8 @@
*/
protected Pattern propertiesPattern = Pattern
.compile("^((?:[_a-zA-Z0-9]+\\.)+(?:_?[A-Z][_a-zA-Z0-9]*\\.)+)(?:(class|attribute|operation))\\.(?:([_a-zA-Z0-9]+)\\.)?(?:(tagvalue|tagValue)?)\\.([_a-z0-9][_a-zA-Z0-9]*)?$");
- protected Pattern propertyStereotypePattern = Pattern
+
+ protected Pattern stereotypePattern = Pattern
.compile("^((?:[_a-zA-Z0-9]+\\.)+(?:_?[A-Z][_a-zA-Z0-9]*\\.)+)(?:(class|attribute|operation))\\.(?:([_a-zA-Z0-9]+)\\.)?(?:(stereotype)?)$");
/**
@@ -113,7 +115,7 @@
* stereotype ou des tag value sur les class, attribute ou operation
*/
@Override
- public ObjectModel read(File... files) {
+ public ObjectModel read(File... files) throws IOException {
setLastModifiedSource(files);
if (log.isDebugEnabled()) {
log.debug("LastModifiedSource = " + getLastModifiedSource() +
@@ -130,10 +132,11 @@
try {
digester.push(model);
model = (ObjectModel) digester.parse(file);
- } catch (Exception e) {
- if (log.isWarnEnabled()) {
- log.warn("Unable to parse ObjectModel input file : " + file, e);
- }
+ } catch (SAXException e) {
+ throw new IOException("Unable to parse ObjectModel input file : " + file, e);
+// if (log.isWarnEnabled()) {
+// log.warn("Unable to parse ObjectModel input file : " + file, e);
+// }
}
// recherche est charge le fichier propriete associe au modele
@@ -151,7 +154,7 @@
log.info("Lecture du fichier de propriete " + propFile
+ " associé au model");
}
- loadTagValues(propFile, model);
+ loadModelProperties(propFile, model);
}
}
if (log.isDebugEnabled()) {
@@ -194,22 +197,23 @@
return result;
}
- public Properties loadTagValues(File propFile, ObjectModel model) {
+ public Properties loadModelProperties(File propFile, ObjectModel model) throws IOException {
Properties prop = new RecursiveProperties();
+// try {
+ FileInputStream inStream = new FileInputStream(propFile);
try {
- FileInputStream inStream = new FileInputStream(propFile);
- try {
- prop.load(inStream);
- } finally {
- inStream.close();
- }
- } catch (IOException eee) {
- if (log.isWarnEnabled()) {
- log.warn("Impossible de lire le fichier de propriete "
- + propFile, eee);
- }
+ prop.load(inStream);
+ } finally {
+ inStream.close();
}
+// } catch (IOException eee) {
+//
+// if (log.isWarnEnabled()) {
+// log.warn("Impossible de lire le fichier de propriete "
+// + propFile, eee);
+// }
+// }
// number of sucessfull imported tag values into model
int numberImportedTagValues = 0;
@@ -223,165 +227,255 @@
for (String key : keys) {
String value = prop.getProperty(key);
+ if (log.isDebugEnabled()) {
+ log.debug("Propriete: '" + key + "' = " + value);
+ }
+
if (key.startsWith(MODEL)) {
// model tag value
- Matcher matcher = modelTagValuePattern.matcher(key);
+ boolean loaded = loadModelTagvalue(model, key, value);
- if (!matcher.find()) {
- if (log.isWarnEnabled()) {
- log.warn("Invalid model tag value [" + key + "] : only tagvalue or tagValue is allowed on model in properties");
- }
- continue;
- }
- String tag = matcher.group(2);
- ObjectModelImpl modelImpl = (ObjectModelImpl) model;
- if (tag.equals(JavaGeneratorUtil.TAG_VERSION)) {
+ if (loaded) {
- // push directly the version in the model version
- // property
- modelImpl.setVersion(value);
+ numberImportedTagValues++;
}
- if (isVerbose()) {
- log.info("import model tag value " + key + " --> " + tag + " = " + value);
- }
- modelImpl.addTagValue(tag, value);
- numberImportedTagValues++;
continue;
}
- // element tag value
- Matcher matcher = propertiesPattern.matcher(key);
+ // element tag value or stereotype
- if (log.isDebugEnabled()) {
- log.debug("Propriete: '" + key + "'");
- }
+ if (key.contains(STEREOTYPE)) {
- if (!matcher.find()) {
+ // stereotype property
- // try with the stereotype
- matcher = propertyStereotypePattern.matcher(key);
+ boolean loaded = loadStereotype(model, key, value);
- if (!matcher.find()) {
+ if (loaded) {
+ numberImportedTagValues++;
+ }
- if (log.isWarnEnabled()) {
- log.warn("Invalid tag value [" + key + "] : syntax is not correct.");
- }
- continue;
- }
+ continue;
+
}
- String fqn = matcher.group(1);
- fqn = StringUtil.substring(fqn, 0, -1); // remove ended
- // .
- // target is class, attribute or operation
- String target = matcher.group(2);
- String targetName = matcher.group(3);
- // type is stereotype or tagvalue
- String type = matcher.group(4).toLowerCase();
+ // tag value property
- String tag;
+ boolean loaded = loadTagValue(model, key, value);
- if (STEREOTYPE.equals(type)) {
-
- // using a stereotype means nothing after the type
- tag = null;
- } else {
- tag = matcher.group(5);
+ if (loaded) {
+ numberImportedTagValues++;
}
+ }
+ if (log.isInfoEnabled()) {
+ log.info(numberImportedTagValues + " tag values were succesfull imported from " + propFile);
+ }
+ int nbFailed = prop.size() - numberImportedTagValues;
+ if (nbFailed > 0 && isVerbose()) {
+ log.info(nbFailed + " tag values failed to be imported from " + propFile);
+ }
+ return prop;
+ }
- if (log.isDebugEnabled()) {
- log.debug("Propriete: '" + key + "' => "
- + "fqn:" + fqn + " target:" + target
- + " targetName:" + targetName
- + " type:" + type + " tag:" + tag);
+ public boolean loadModelTagvalue(ObjectModel model, String key, String value) {
+ Matcher matcher = modelTagValuePattern.matcher(key);
+
+ if (!matcher.find()) {
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid model tag value [" + key + "] : only tagvalue or tagValue is allowed on model in properties");
}
+ return false;
+ }
+ String tag = matcher.group(2);
+ ObjectModelImpl modelImpl = (ObjectModelImpl) model;
+ if (tag.equals(EugeneTagValues.TAG_VERSION)) {
- ObjectModelClassifier omc = model.getClassifier(fqn);
- if (omc == null) {
- if (log.isWarnEnabled()) {
- log.warn("Invalid tag value [" + key +
- "] : Could not find classifier for " + fqn);
- }
- continue;
+ // push directly the version in the model version
+ // property
+ modelImpl.setVersion(value);
+ }
+ if (isVerbose()) {
+ log.info("import model tag value " + key + " --> " + tag + " = " + value);
+ }
+ modelImpl.addTagValue(tag, value);
+ return true;
+ }
+
+ public boolean loadStereotype(ObjectModel model, String key, String value) {
+ Matcher matcher = stereotypePattern.matcher(key);
+
+ if (!matcher.find()) {
+
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid stereotype [" + key + "] : syntax is not correct.");
}
+ return false;
+ }
- //todo tchemit 2010-11-25 : what does it mean ? every thing extends ObjectModelClassifierImpl
- if (!(omc instanceof ObjectModelClassifierImpl)) {
- // TODO il faudra avoir des methodes d'acces en Set sur l'interface pour eviter ce message
+ String fqn = matcher.group(1);
+ fqn = StringUtil.substring(fqn, 0, -1); // remove ended
+ // .
+ // target is class, attribute or operation
+ String target = matcher.group(2);
+ String targetName = matcher.group(3);
+
+ // type is stereotype or tagvalue
+ String type = matcher.group(4).toLowerCase();
+
+ if (log.isDebugEnabled()) {
+ log.debug("Propriete: '" + key + "' => "
+ + "fqn:" + fqn + " target:" + target
+ + " targetName:" + targetName
+ + " type:" + type);
+ }
+
+ ObjectModelClassifier omc = getClassifier(model, STEREOTYPE, key, fqn);
+ if (omc == null) {
+ return false;
+ }
+
+ List<ObjectModelElement> elems = getObjectElements(omc, STEREOTYPE, key, fqn, target, targetName);
+
+ if (elems == null) {
+ return false;
+ }
+
+ for (ObjectModelElement elem1 : elems) {
+ if (elem1 == null) {
if (log.isWarnEnabled()) {
- log.warn("Can't add properties to model, " +
- "it's not an " +
- "ObjectModelClassifierImpl : " +
- omc.getQualifiedName());
+ log.warn("Invalid stereotype [" + key + "] : Element '" + targetName + "' of type '" + target + "' on classifier '" + fqn + "' is null.");
}
continue;
}
+ ObjectModelElementImpl elem = (ObjectModelElementImpl) elem1;
- List<ObjectModelElement> elems = new ArrayList<ObjectModelElement>();
- if (CLASS.equals(target)) {
- elems.add(omc);
- } else if (ATTRIBUTE.equals(target)) {
+ // pour les stereotypes
+ ObjectModelImplRef stereotype = new ObjectModelImplRef();
+ stereotype.setName(value);
+ elem.addStereotype(stereotype);
+ }
- ObjectModelAttribute attr =
- getAttribute((ObjectModelClass) omc, targetName);
- elems.add(attr);
+ if (isVerbose()) {
+ log.info("import stereotype " + key + " --> " + fqn + ":" + target + ":" + targetName + ":" + type + " = " + value);
+ }
- } else if (OPERATION.equals(target)) {
- elems.addAll(omc.getOperations(targetName));
+ return true;
+ }
+
+ private boolean loadTagValue(ObjectModel model, String key, String value) {
+ Matcher matcher = propertiesPattern.matcher(key);
+
+ if (!matcher.find()) {
+
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid tag value [" + key + "] : syntax is not correct.");
}
+ return false;
+ }
- if (elems.isEmpty()) {
- if (log.isWarnEnabled()) {
- log.warn("Invalid tag value [" + key + "] : Could not find any element '" + targetName + "' of type '" + target + "' on classifier '" + fqn + "'.");
- }
+ String fqn = matcher.group(1);
+ fqn = StringUtil.substring(fqn, 0, -1); // remove ended
+ // .
+ // target is class, attribute or operation
+ String target = matcher.group(2);
+ String targetName = matcher.group(3);
+ // type is stereotype or tagvalue
+ String type = matcher.group(4).toLowerCase();
+
+ String tag = matcher.group(5);
+
+ if (log.isDebugEnabled()) {
+ log.debug("Propriete: '" + key + "' => "
+ + "fqn:" + fqn + " target:" + target
+ + " targetName:" + targetName
+ + " type:" + type + " tag:" + tag);
+ }
+
+ ObjectModelClassifier omc = getClassifier(model, TAGVALUE, key, fqn);
+ if (omc == null) {
+ return false;
+ }
+
+ List<ObjectModelElement> elements =
+ getObjectElements(omc, TAGVALUE, key, fqn, target, targetName);
+
+ if (elements == null) {
+ return false;
+ }
+
+ for (ObjectModelElement element : elements) {
+
+ if (log.isDebugEnabled()) {
+ log.debug("add tagValue " + tag
+ + ", value:" + value
+ + " to element:" + element);
}
- for (Object elem1 : elems) {
- if (elem1 == null) {
- if (log.isWarnEnabled()) {
- log.warn("Invalid tag value [" + key + "] : Element '" + targetName + "' of type '" + target + "' on classifier '" + fqn + "' is null.");
- }
- continue;
- }
- ObjectModelElementImpl elem =
- (ObjectModelElementImpl) elem1;
- if (STEREOTYPE.equals(type)) {
- // pour les stereotypes
- ObjectModelImplRef stereotype = new ObjectModelImplRef();
- stereotype.setName(value);
- elem.addStereotype(stereotype);
- continue;
- }
+ ((ObjectModelElementImpl) element).addTagValue(tag, value);
- if (TAGVALUE.equals(type)) {
- // pour les tagvalues
- ObjectModelImplTagValue tagvalue =
- new ObjectModelImplTagValue();
- tagvalue.setName(tag);
- tagvalue.setValue(value);
- if (log.isDebugEnabled()) {
- log.debug("tagValue:" + tagvalue
- + ", tag:" + tag
- + ", value:" + value
- + ", element:" + elem);
- }
- elem.addTagValue(tagvalue);
+ }
+ if (isVerbose()) {
+ log.info("import tag value " + key + " --> " + fqn + ":" + target + ":" + targetName + ":" + type + ":" + tag + " = " + value);
+ }
+ return true;
+ }
- }
+ protected ObjectModelClassifier getClassifier(ObjectModel model, String type, String key, String fqn) {
+ ObjectModelClassifier omc = model.getClassifier(fqn);
+ if (omc == null) {
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid " + type + " [" + key +
+ "] : Could not find classifier for " + fqn);
}
- if (isVerbose()) {
- log.info("import tag value " + key + " --> " + fqn + ":" + target + ":" + targetName + ":" + type + ":" + tag+" = " + value);
+ return null;
+ }
+
+ //todo tchemit 2010-11-25 : what does it mean ? every thing extends ObjectModelClassifierImpl
+ if (!(omc instanceof ObjectModelClassifierImpl)) {
+ // TODO il faudra avoir des methodes d'acces en Set sur l'interface pour eviter ce message
+ if (log.isWarnEnabled()) {
+ log.warn("Can't add properties to model, " +
+ "it's not an " +
+ "ObjectModelClassifierImpl : " +
+ omc.getQualifiedName());
}
- numberImportedTagValues++;
+ return null;
}
- if (log.isInfoEnabled()) {
- log.info(numberImportedTagValues + " tag values were succesfull imported from " + propFile);
+ return omc;
+ }
+
+ protected List<ObjectModelElement> getObjectElements(ObjectModelClassifier omc, String type, String key, String fqn, String target, String targetName) {
+ List<ObjectModelElement> elems = new ArrayList<ObjectModelElement>();
+ if (CLASS.equals(target)) {
+ elems.add(omc);
+ } else if (ATTRIBUTE.equals(target)) {
+
+ ObjectModelAttribute attr =
+ getAttribute((ObjectModelClass) omc, targetName);
+ elems.add(attr);
+
+ } else if (OPERATION.equals(target)) {
+ elems.addAll(omc.getOperations(targetName));
}
- int nbFailed = prop.size() - numberImportedTagValues;
- if (nbFailed > 0 && isVerbose()) {
- log.info(nbFailed + " tag values failed to be imported from " + propFile);
+
+ if (elems.isEmpty()) {
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid " + type + " [" + key + "] : Could not find any element '" + targetName + "' of type '" + target + "' on classifier '" + fqn + "'.");
+ }
+ return null;
}
- return prop;
+
+ Iterator<ObjectModelElement> itr = elems.iterator();
+ while (itr.hasNext()) {
+ ObjectModelElement element = itr.next();
+ if (element == null) {
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid " + type + " [" + key + "] : Element '" + targetName + "' of type '" + target + "' on classifier '" + fqn + "' is null.");
+ }
+ itr.remove();
+ }
+ }
+
+ return elems;
}
}
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -36,20 +36,14 @@
import static org.junit.Assert.assertEquals;
-/**
- *
- * @author fdesbois
- */
+/** @author fdesbois */
public class GeneratorUtilTest {
private static Log log = LogFactory.getLog(GeneratorUtilTest.class);
- public GeneratorUtilTest() {
- }
-
@Test
public void testGetOperationParametersListName() {
- log.info("getOperationParametersListName");
+ log.debug("getOperationParametersListName");
ObjectModelOperationImpl op = new ObjectModelOperationImpl();
@@ -76,7 +70,7 @@
@Test
public void testGetOperationParametersListDeclaration() {
- log.info("getOperationParametersListDeclaration");
+ log.debug("getOperationParametersListDeclaration");
ObjectModelOperationImpl op = new ObjectModelOperationImpl();
@@ -104,12 +98,10 @@
}
- /**
- * Test of getSimpleName method, of class GeneratorUtil.
- */
+ /** Test of getSimpleName method, of class GeneratorUtil. */
@Test
public void testGetSimpleName() {
- log.info("getSimpleName");
+ log.debug("getSimpleName");
String str = "List";
String expResult = "List";
@@ -142,7 +134,7 @@
assertEquals(expResult, result);
str = "java.util.Set<java.util.Collection<java.util.Collection<java.util.Collection" +
- "<java.lang.String>>>>";
+ "<java.lang.String>>>>";
expResult = "Set<Collection<Collection<Collection<String>>>>";
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
@@ -209,7 +201,7 @@
*/
@Test
public void testGetSimpleNameAndRemoveGenericsDefinition() {
- log.info("getSimpleName");
+ log.debug("getSimpleName");
String str = "List";
String expResult = "List";
@@ -242,7 +234,7 @@
assertEquals(expResult, result);
str = "java.util.Set<java.util.Collection<java.util.Collection<java.util.Collection" +
- "<java.lang.String>>>>";
+ "<java.lang.String>>>>";
expResult = "Set<Collection<Collection<Collection<String>>>>";
result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
@@ -304,12 +296,10 @@
}
- /**
- * Test of removeGenericDefinition method, of class GeneratorUtil.
- */
+ /** Test of removeGenericDefinition method, of class GeneratorUtil. */
@Test
public void testRemoveGenericDefinition() {
- log.info("removeGenericDefinition");
+ log.debug("removeGenericDefinition");
String str = "List";
String expResult = "List";
@@ -415,7 +405,7 @@
assertEquals(2, results.size());
str = "java.util.Set<java.util.Collection<java.util.Collection<java.util.Collection" +
- "<java.lang.String>>>>";
+ "<java.lang.String>>>>";
results = GeneratorUtil.getTypesList(str);
log.info(str + " -> " + results);
assertEquals(3, results.size());
@@ -439,12 +429,12 @@
results = GeneratorUtil.getTypesList(str);
log.info(str + " -> " + results);
assertEquals(4, results.size());
-
+
str = "java.util.List<java.util.Map<java.util.Date, java.lang.Integer>>";
results = GeneratorUtil.getTypesList(str);
log.info(str + " -> " + results);
assertEquals(4, results.size());
-
+
str = "java.util.TreeMap<java.util.ArrayList<java.util.Date>, java.util.SortedSet<java.lang.Number, java.lang.Double>>";
results = GeneratorUtil.getTypesList(str);
log.info(str + " -> " + results);
Added: trunk/eugene/src/test/java/org/nuiton/eugene/TestHelper.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/TestHelper.java (rev 0)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/TestHelper.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -0,0 +1,69 @@
+/*
+ * #%L
+ * EUGene :: EUGene
+ *
+ * $Id$
+ * $HeadURL$
+ * %%
+ * Copyright (C) 2004 - 2010 CodeLutin
+ * %%
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation, either version 3 of the
+ * License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Lesser Public License for more details.
+ *
+ * You should have received a copy of the GNU General Lesser Public
+ * License along with this program. If not, see
+ * <http://www.gnu.org/licenses/lgpl-3.0.html>.
+ * #L%
+ */
+package org.nuiton.eugene;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Ignore;
+
+import java.io.File;
+
+/**
+ * Helper for all eugene tests.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.2.1
+ */
+@Ignore
+// this is not a test :)
+public class TestHelper {
+
+ private static final Log log = LogFactory.getLog(TestHelper.class);
+
+ protected static File testBasedir;
+
+ protected static File targetdir;
+
+ protected static File dirDatabase;
+
+ public static File getTestWorkdir() {
+ if (testBasedir == null) {
+ String base = System.getProperty("java.io.tmpdir");
+ if (base == null || base.isEmpty()) {
+ base = new File("").getAbsolutePath();
+ }
+ testBasedir = new File(base);
+ log.info("basedir for test " + testBasedir);
+ }
+ return testBasedir;
+ }
+
+ public static File getTestBasedir(Class<?> testClass) {
+ File dir = getTestWorkdir();
+ File result = new File(dir, testClass.getName());
+ return result;
+ }
+
+}
Property changes on: trunk/eugene/src/test/java/org/nuiton/eugene/TestHelper.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision
Added: svn:eol-style
+ native
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -25,48 +25,35 @@
package org.nuiton.eugene.java;
-import java.util.List;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.junit.Test;
-import static org.junit.Assert.*;
import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
import org.nuiton.eugene.models.object.xml.ObjectModelImpl;
+import java.util.List;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+
/**
* ImportsManagerExtensionTest
- *
+ * <p/>
* Created: 2 nov. 2009
*
* @author fdesbois
* @version $Revision$
- *
- * Mise a jour: $Date$
- * par : */
+ * <p/>
+ * Mise a jour: $Date$
+ * par :
+ */
public class ImportsManagerExtensionTest {
- public ImportsManagerExtensionTest() {
- }
- @BeforeClass
- public static void setUpClass() throws Exception {
- }
+ private static final Log log =
+ LogFactory.getLog(ImportsManagerExtensionTest.class);
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
- @Before
- public void setUp() {
- }
-
- @After
- public void tearDown() {
- }
-
/**
* Test of getManager method, of class ImportsManagerExtension.
* Prerequisite : Existing ObjectModel containing a classifier
@@ -75,7 +62,7 @@
*/
@Test
public void testGetManager() {
- System.out.println("getManager");
+ log.debug("getManager");
ImportsManagerExtension managers = new ImportsManagerExtension();
@@ -101,7 +88,7 @@
*/
@Test
public void testGetImports() {
- System.out.println("getImports");
+ log.debug("getImports");
ImportsManagerExtension managers = new ImportsManagerExtension();
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerTest.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerTest.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -25,87 +25,87 @@
package org.nuiton.eugene.java;
+import junit.framework.TestCase;
+
import java.io.Serializable;
import java.util.List;
-import junit.framework.TestCase;
-
public class ImportsManagerTest extends TestCase {
- private ImportsManager mgr;
+ private ImportsManager mgr;
- @Override
- protected void setUp() throws Exception {
- mgr = new ImportsManager();
- }
+ @Override
+ protected void setUp() throws Exception {
+ mgr = new ImportsManager();
+ }
- public void testAddImport() throws Exception {
- assertTrue(mgr.addImport("org.nuiton.eugene.Toto"));
- assertTrue(mgr.addImport("org.nuiton.eugene.Toto")); //Repeat to test acceptance
- assertTrue(mgr.addImport("org.nuiton.eugene.Tutu"));
- assertFalse(mgr.addImport("org.chorem.eugene.Tutu")); //Conflict, package differs
+ public void testAddImport() throws Exception {
+ assertTrue(mgr.addImport("org.nuiton.eugene.Toto"));
+ assertTrue(mgr.addImport("org.nuiton.eugene.Toto")); //Repeat to test acceptance
+ assertTrue(mgr.addImport("org.nuiton.eugene.Tutu"));
+ assertFalse(mgr.addImport("org.chorem.eugene.Tutu")); //Conflict, package differs
- assertTrue(mgr.addImport("void"));
- assertTrue(mgr.addImport("boolean"));
- assertTrue(mgr.addImport("Byte"));
- assertTrue(mgr.addImport("java.lang.Toto"));
- assertFalse(mgr.addImport("java.lang.sub.Toto"));
+ assertTrue(mgr.addImport("void"));
+ assertTrue(mgr.addImport("boolean"));
+ assertTrue(mgr.addImport("Byte"));
+ assertTrue(mgr.addImport("java.lang.Toto"));
+ assertFalse(mgr.addImport("java.lang.sub.Toto"));
- assertTrue(mgr.addImport(Serializable.class));
- assertFalse(mgr.addImport("org.nuiton.eugene.Serializable"));
- }
+ assertTrue(mgr.addImport(Serializable.class));
+ assertFalse(mgr.addImport("org.nuiton.eugene.Serializable"));
+ }
- public void testGetType() throws Exception {
- assertEquals("Toto", mgr.getType("org.nuiton.eugene.Toto"));
- assertEquals("Toto", mgr.getType("org.nuiton.eugene.Toto")); //Repeat to test acceptance
- assertEquals("Tutu", mgr.getType("org.nuiton.eugene.Tutu"));
- assertEquals("org.chorem.eugene.Tutu", mgr.getType("org.chorem.eugene.Tutu")); //Conflict, package differs
+ public void testGetType() throws Exception {
+ assertEquals("Toto", mgr.getType("org.nuiton.eugene.Toto"));
+ assertEquals("Toto", mgr.getType("org.nuiton.eugene.Toto")); //Repeat to test acceptance
+ assertEquals("Tutu", mgr.getType("org.nuiton.eugene.Tutu"));
+ assertEquals("org.chorem.eugene.Tutu", mgr.getType("org.chorem.eugene.Tutu")); //Conflict, package differs
- assertEquals("void", mgr.getType("void"));
- assertEquals("boolean", mgr.getType("boolean"));
- assertEquals("Byte", mgr.getType("Byte"));
- assertEquals("Toto", mgr.getType("java.lang.Toto"));
- assertEquals("java.lang.sub.Toto", mgr.getType("java.lang.sub.Toto"));
- }
+ assertEquals("void", mgr.getType("void"));
+ assertEquals("boolean", mgr.getType("boolean"));
+ assertEquals("Byte", mgr.getType("Byte"));
+ assertEquals("Toto", mgr.getType("java.lang.Toto"));
+ assertEquals("java.lang.sub.Toto", mgr.getType("java.lang.sub.Toto"));
+ }
- public void testGetImports() throws Exception {
- assertTrue(mgr.addImport("org.nuiton.eugene.Toto"));
- assertTrue(mgr.addImport("org.nuiton.eugene.Tutu"));
- assertTrue(mgr.addImport("org.nuiton.eugene.subpackage.Tata"));
- List<String> imports = mgr.getImports("org.nuiton.eugene");
- assertEquals(1, imports.size());
- assertEquals("org.nuiton.eugene.subpackage.Tata", imports.get(0));
+ public void testGetImports() throws Exception {
+ assertTrue(mgr.addImport("org.nuiton.eugene.Toto"));
+ assertTrue(mgr.addImport("org.nuiton.eugene.Tutu"));
+ assertTrue(mgr.addImport("org.nuiton.eugene.subpackage.Tata"));
+ List<String> imports = mgr.getImports("org.nuiton.eugene");
+ assertEquals(1, imports.size());
+ assertEquals("org.nuiton.eugene.subpackage.Tata", imports.get(0));
- imports = mgr.getImports("org.nuiton");
- assertEquals(3, imports.size());
- // Check using alphabetic sort
- assertEquals("org.nuiton.eugene.Toto", imports.get(0));
- assertEquals("org.nuiton.eugene.Tutu", imports.get(1));
- assertEquals("org.nuiton.eugene.subpackage.Tata", imports.get(2));
+ imports = mgr.getImports("org.nuiton");
+ assertEquals(3, imports.size());
+ // Check using alphabetic sort
+ assertEquals("org.nuiton.eugene.Toto", imports.get(0));
+ assertEquals("org.nuiton.eugene.Tutu", imports.get(1));
+ assertEquals("org.nuiton.eugene.subpackage.Tata", imports.get(2));
- imports = mgr.getImports("org.chorem");
- assertEquals(3, imports.size());
+ imports = mgr.getImports("org.chorem");
+ assertEquals(3, imports.size());
- imports = mgr.getImports("org.nuiton.eugene.subpackage");
- assertEquals(2, imports.size());
- assertEquals("org.nuiton.eugene.Toto", imports.get(0));
- assertEquals("org.nuiton.eugene.Tutu", imports.get(1));
+ imports = mgr.getImports("org.nuiton.eugene.subpackage");
+ assertEquals(2, imports.size());
+ assertEquals("org.nuiton.eugene.Toto", imports.get(0));
+ assertEquals("org.nuiton.eugene.Tutu", imports.get(1));
- assertTrue(mgr.addImport("java.lang.String"));
- imports = mgr.getImports("org.nuiton.eugene.subpackage");
- assertEquals(2, imports.size());
- assertEquals("org.nuiton.eugene.Toto", imports.get(0));
- assertEquals("org.nuiton.eugene.Tutu", imports.get(1));
+ assertTrue(mgr.addImport("java.lang.String"));
+ imports = mgr.getImports("org.nuiton.eugene.subpackage");
+ assertEquals(2, imports.size());
+ assertEquals("org.nuiton.eugene.Toto", imports.get(0));
+ assertEquals("org.nuiton.eugene.Tutu", imports.get(1));
- assertTrue(mgr.addImport("void"));
- assertTrue(mgr.addImport("boolean"));
- assertTrue(mgr.addImport("Byte"));
- assertTrue(mgr.addImport("java.lang.Toto"));
- assertFalse(mgr.addImport("java.lang.sub.Titi")); // Read as started, import is refused
- assertTrue(mgr.addImport("org.nuiton.eugene.Tutu")); //Already present, must not reject
- imports = mgr.getImports("org.nuiton.eugene.subpackage");
- assertEquals(2, imports.size());
+ assertTrue(mgr.addImport("void"));
+ assertTrue(mgr.addImport("boolean"));
+ assertTrue(mgr.addImport("Byte"));
+ assertTrue(mgr.addImport("java.lang.Toto"));
+ assertFalse(mgr.addImport("java.lang.sub.Titi")); // Read as started, import is refused
+ assertTrue(mgr.addImport("org.nuiton.eugene.Tutu")); //Already present, must not reject
+ imports = mgr.getImports("org.nuiton.eugene.subpackage");
+ assertEquals(2, imports.size());
- }
+ }
}
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -25,15 +25,11 @@
package org.nuiton.eugene.java;
-import java.util.List;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.junit.Test;
import org.nuiton.eugene.GeneratorUtilTest;
import org.nuiton.eugene.models.object.ObjectModel;
-import static org.junit.Assert.*;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
@@ -42,47 +38,40 @@
import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl;
import org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest;
+import java.util.List;
+
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertNotSame;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
/**
* JavaBuilderTest
- *
+ * <p/>
* Created: 29 oct. 2009
*
* @author fdesbois
* @version $Revision$
- *
- * Mise a jour: $Date$
- * par : */
+ * <p/>
+ * Mise a jour: $Date$
+ * par :
+ */
public class JavaBuilderTest {
- public JavaBuilderTest() {
- }
+ private static final Log log = LogFactory.getLog(JavaBuilderTest.class);
- @BeforeClass
- public static void setUpClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
- @Before
- public void setUp() {
- }
-
- @After
- public void tearDown() {
- }
-
/**
* Test of getModel.
* No test needed : model created in modelBuilder instanciated in
* constructor (ObjectModelBuilder).
- *
- * @see ObjectModelBuilderTest#testGetModel()
+ *
+ * @see ObjectModelBuilderTest#testGetModel()
*/
@Test
public void testGetModel() {
- System.out.println("getModel");
+ log.debug("getModel");
JavaBuilder builder = new JavaBuilder("TestModel");
@@ -95,11 +84,12 @@
* - Add a simple type to import.
* - Add a type to import with generic (List of Category) : two imports are added.
* NOTE : Use of ImportsManager addImport() method and GeneratorUtil getTypesList() method.
+ *
* @see GeneratorUtilTest#testGetTypesList()
*/
@Test
public void testAddImport() {
- System.out.println("addImport");
+ log.debug("addImport");
JavaBuilder builder = new JavaBuilder("TestModel");
ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
@@ -118,11 +108,12 @@
/**
* Test of createClass method, of class JavaBuilder.
* No test needed : call of createClass in ObjectModelBuilder
+ *
* @see ObjectModelBuilderTest#testCreateClass()
*/
@Test
public void testCreateClass() {
- System.out.println("createClass");
+ log.debug("createClass");
JavaBuilder builder = new JavaBuilder("TestModel");
@@ -136,7 +127,7 @@
*/
@Test
public void testCreateAbstractClass() {
- System.out.println("createAbstractClass");
+ log.debug("createAbstractClass");
JavaBuilder builder = new JavaBuilder("TestModel");
ObjectModelClass clazz = builder.createAbstractClass("Person", "org.chorem.bonzoms");
@@ -147,11 +138,12 @@
* Test of setSuperClass method, of class JavaBuilder.
* Only one superclass can be set.
* Check imports on superclass qualified name
+ *
* @see ObjectModelBuilderTest#testAddSuperclass()
*/
@Test
public void testSetSuperClass() {
- System.out.println("setSuperClass");
+ log.debug("setSuperClass");
JavaBuilder builder = new JavaBuilder("TestModel");
ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms");
@@ -171,22 +163,23 @@
List<String> imports = ext.getImports(clazz);
assertEquals(0, imports.size());
}
-
+
/**
* Test of addInterface method, of class JavaBuilder.
* Check imports on adding interface : imports added on interfaceQualifiedName
+ *
* @see ObjectModelBuilderTest#testAddInterface()
*/
@Test
public void testAddInterface() {
- System.out.println("addInterface");
+ log.debug("addInterface");
JavaBuilder builder = new JavaBuilder("TestModel");
ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
String interfaceQualifiedName = "java.io.Serializable";
builder.addInterface(classifier, interfaceQualifiedName);
-
+
// Check imports
ImportsManagerExtension ext = builder.getModel().getExtension(
ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class);
@@ -203,13 +196,13 @@
*/
@Test
public void testAddConstant() {
- System.out.println("addConstant");
+ log.debug("addConstant");
JavaBuilder builder = new JavaBuilder("TestModel");
ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
ObjectModelAttribute constant = builder.addConstant(classifier, "GENDER_MALE", "boolean", "true",
- ObjectModelModifier.PUBLIC);
+ ObjectModelModifier.PUBLIC);
assertTrue(constant.isFinal());
assertTrue(constant.isStatic());
@@ -218,21 +211,22 @@
/**
* Test of addAttribute method, of class JavaBuilder.
* Check imports on adding attribute : imports added on type and value.
+ *
* @see ObjectModelBuilderTest#testAddAttribute()
*/
@Test
public void testAddAttribute() {
- System.out.println("addAttribute");
+ log.debug("addAttribute");
JavaBuilder builder = new JavaBuilder("TestModel");
ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
builder.addAttribute(classifier, "firstName", "java.lang.String", "",
- ObjectModelModifier.PUBLIC);
+ ObjectModelModifier.PUBLIC);
builder.addAttribute(classifier, "roles", "java.util.List<org.chorem.bonzoms.Role>",
- "new ArrayList<Role>()",
- ObjectModelModifier.PRIVATE, ObjectModelModifier.STATIC);
+ "new ArrayList<Role>()",
+ ObjectModelModifier.PRIVATE, ObjectModelModifier.STATIC);
// ANO#474 : manage manually imports for defaultValue
builder.addImport(classifier, "java.util.ArrayList");
@@ -242,7 +236,7 @@
ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class);
List<String> imports = ext.getImports(classifier);
- // no imports for org.chorem.bonzoms.Role and java.lang.String
+ // no imports for org.chorem.bonzoms.Role and java.lang.String
assertEquals(2, imports.size());
assertTrue(imports.contains("java.util.ArrayList"));
assertTrue(imports.contains("java.util.List"));
@@ -255,11 +249,11 @@
*/
@Test
public void testAddAttributeObjectModelClassifierObjectModelAttribute() {
- System.out.println("addAttribute");
+ log.debug("addAttribute");
JavaBuilder builder = new JavaBuilder("modelName");
ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl();
- attribute.setName("name");
+ attribute.setName("name");
attribute.setType("java.lang.String");
attribute.setVisibility("public");
attribute.setStatic(false);
@@ -281,7 +275,7 @@
*/
@Test
public void testAddConstructor() {
- System.out.println("addConstructor");
+ log.debug("addConstructor");
JavaBuilder builder = new JavaBuilder("modelName");
ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms");
@@ -296,22 +290,23 @@
/**
* Test of addOperation method, of class JavaBuilder.
* Check imports on adding operation : returnType of the operation
+ *
* @see ObjectModelBuilderTest#testAddOperation()
*/
@Test
public void testAddOperation() {
- System.out.println("addOperation");
+ log.debug("addOperation");
JavaBuilder builder = new JavaBuilder("modelName");
ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
ObjectModelOperation result = builder.addOperation(classifier,
- "methodName", "java.util.List<java.lang.String>", ObjectModelModifier.PUBLIC);
-
+ "methodName", "java.util.List<java.lang.String>", ObjectModelModifier.PUBLIC);
+
result = builder.addOperation(classifier,
"addPropertyChangeListener", null,
- ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT);
+ ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT);
// Check imports
ImportsManagerExtension ext = builder.getModel().getExtension(
@@ -325,18 +320,19 @@
/**
* Test of addParameter method, of class JavaBuilder.
* Check imports on adding parameter : type of the parameter
+ *
* @see ObjectModelBuilderTest#testAddParameter()
*/
@Test
public void testAddParameter() {
- System.out.println("addParameter");
+ log.debug("addParameter");
JavaBuilder builder = new JavaBuilder("modelName");
ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String",
- ObjectModelModifier.PUBLIC);
+ ObjectModelModifier.PUBLIC);
builder.addParameter(operation, "java.lang.String", "name");
@@ -352,18 +348,19 @@
/**
* Test of addException method, of class JavaBuilder.
* Check imports on adding exception : exception name
+ *
* @see ObjectModelBuilderTest#testAddException()
*/
@Test
public void testAddException() {
- System.out.println("addException");
+ log.debug("addException");
JavaBuilder builder = new JavaBuilder("modelName");
ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String",
- ObjectModelModifier.PUBLIC);
+ ObjectModelModifier.PUBLIC);
builder.addException(operation, "java.lang.IllegalArgumentException");
@@ -378,24 +375,25 @@
/**
* Test of setOperationBody method, of class JavaBuilder.
* No body code for an abstract operation : throw an IllegalArgumentException
+ *
* @see ObjectModelBuilderTest#testSetOperationBody()
*/
@Test
public void testSetOperationBody() {
- System.out.println("setOperationBody");
+ log.debug("setOperationBody");
JavaBuilder builder = new JavaBuilder("modelName");
ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String",
- ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT);
+ ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT);
try {
builder.setOperationBody(operation, "this.name = name");
} catch (Exception eee) {
assertEquals(IllegalArgumentException.class, eee.getClass());
- System.out.println("expected exception : " + eee.getMessage());
+ log.debug("expected exception : " + eee.getMessage());
}
}
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ModelMergeTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ModelMergeTest.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ModelMergeTest.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -25,17 +25,16 @@
package org.nuiton.eugene.models.object;
-import java.io.File;
-import java.net.URISyntaxException;
-import java.net.URL;
-import java.util.Collection;
-
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.junit.Assert;
import org.junit.Test;
import org.nuiton.util.Resource;
+import java.io.File;
+import java.net.URL;
+import java.util.Collection;
+
/**
* ModelMergeTest.
* <p/>
@@ -46,48 +45,46 @@
*/
public class ModelMergeTest {
- /**
- * Logger
- */
+ /** Logger. */
private static final Log log = LogFactory.getLog(ModelMergeTest.class);
@Test
- public void testMerge1() throws URISyntaxException {
+ public void testMerge1() throws Exception {
parcourirModel(genModel(1), 4);
}
@Test
- public void testMerge2() throws URISyntaxException {
+ public void testMerge2() throws Exception {
parcourirModel(genModel(2), 4);
}
@Test
- public void testMerge3() throws URISyntaxException {
+ public void testMerge3() throws Exception {
parcourirModel(genModel(3), 4);
}
@Test
- public void testMerge4() throws URISyntaxException {
+ public void testMerge4() throws Exception {
parcourirModel(genModel(4), 4);
}
@Test
- public void testMerge5() throws URISyntaxException {
+ public void testMerge5() throws Exception {
parcourirModel(genModel(5), 4);
}
@Test
- public void testMerge6() throws URISyntaxException {
+ public void testMerge6() throws Exception {
parcourirModel(genModel(6), 4);
}
- protected ObjectModel genModel(int num) throws URISyntaxException {
+ protected ObjectModel genModel(int num) throws Exception {
if (log.isDebugEnabled()) {
log.debug("\n\n============================================\n\t\ttestMerge" + num + "\n============================================");
}
// ObjectModelGenerator generator = new ObjectModelGenerator();
File[] files = new File[num];
- for (int j = 1; j < (num + 1); j++) {
+ for (int j = 1; j < num + 1; j++) {
URL url = Resource.getURL("models/objectmodel/security" + j + ".objectmodel");
files[j - 1] = new File(url.toURI());
}
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ObjectModelGeneratorTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ObjectModelGeneratorTest.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ObjectModelGeneratorTest.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -25,11 +25,7 @@
package org.nuiton.eugene.models.object;
-import java.util.ArrayList;
-import java.util.List;
-
import junit.framework.Assert;
-
import org.junit.Test;
import org.nuiton.eugene.Template;
import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
@@ -37,27 +33,28 @@
/**
* Test des fonctions de ObjectModelGenerator.
- *
+ *
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : */
+ * <p/>
+ * Last update : $Date$
+ * By :
+ */
public class ObjectModelGeneratorTest {
@Test
public void testCanGenerate() {
-
+
ObjectModelGenerator generator = new ObjectModelGenerator();
-
+
// test with null generated list
Assert.assertTrue(generator.canGenerateElement(new ObjectModelElementImpl()));
Assert.assertTrue(generator.canGenerateElement(new ObjectModelClassImpl()));
-
+
// List<String> generatedPackages = new ArrayList<String>();
// generatedPackages.add("org.nuiton.eugene");
-
- generator.setProperty(Template.PROP_GENERATED_PACKAGES , "org.nuiton.eugene");
+
+ generator.setProperty(Template.PROP_GENERATED_PACKAGES, "org.nuiton.eugene");
// generator.setGeneratedPackages(generatedPackages);
// Still true
@@ -65,41 +62,41 @@
// become false
boolean b = generator.canGenerateElement(new ObjectModelClassImpl());
Assert.assertFalse(b);
-
+
ObjectModelClassImpl testClass = new ObjectModelClassImpl();
testClass.setPackage("org.nuiton.eugene");
Assert.assertTrue(generator.canGenerateElement(testClass));
-
+
testClass.setPackage("org.nuiton");
Assert.assertFalse(generator.canGenerateElement(testClass));
-
+
testClass.setPackage("org.nuiton.eugene.entities");
Assert.assertTrue(generator.canGenerateElement(testClass));
-
+
testClass.setPackage("org.nuiton.eugene2");
Assert.assertFalse(generator.canGenerateElement(testClass));
-
+
testClass.setPackage("org.nuiton.eugene2.entities");
Assert.assertFalse(generator.canGenerateElement(testClass));
-
+
// test avec les generators recursifs
// sans faire de set sur le fils
ObjectModelGenerator childGenerator = new ObjectModelGenerator(generator);
-
+
testClass.setPackage("org.nuiton.eugene");
Assert.assertTrue(childGenerator.canGenerateElement(testClass));
-
+
testClass.setPackage("org.nuiton");
Assert.assertFalse(childGenerator.canGenerateElement(testClass));
-
+
testClass.setPackage("org.nuiton.eugene.entities");
Assert.assertTrue(childGenerator.canGenerateElement(testClass));
-
+
testClass.setPackage("org.nuiton.eugene2");
Assert.assertFalse(childGenerator.canGenerateElement(testClass));
-
+
testClass.setPackage("org.nuiton.eugene2.entities");
Assert.assertFalse(childGenerator.canGenerateElement(testClass));
-
+
}
}
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI12ToObjectModelTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI12ToObjectModelTest.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI12ToObjectModelTest.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -25,47 +25,54 @@
package org.nuiton.eugene.models.object;
-import java.io.File;
-import java.io.FileOutputStream;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.net.URL;
+import org.junit.Assert;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.nuiton.eugene.TestHelper;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.Resource;
+import org.nuiton.util.ResourceResolver;
-import java.util.List;
import javax.xml.transform.Transformer;
import javax.xml.transform.TransformerException;
import javax.xml.transform.TransformerFactory;
import javax.xml.transform.stream.StreamResult;
import javax.xml.transform.stream.StreamSource;
+import java.io.File;
+import java.io.FileOutputStream;
+import java.io.IOException;
+import java.net.URL;
+import java.util.List;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.nuiton.util.Resource;
-import org.nuiton.util.ResourceResolver;
-
/**
* Test de la feuille de style "xmi1.2ToObjectModel.xsl"
* sur l'exemple isis-fish.xmi
*
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : */
+ * <p/>
+ * Last update : $Date$
+ * By :
+ */
public class XMI12ToObjectModelTest {
- protected File destinationDirectory;
+ protected static File destinationDirectory;
- @Before
- public void setUp() {
- destinationDirectory = new File("target", "xmi");
- destinationDirectory.mkdirs();
+ @BeforeClass
+ public static void beforeTest() throws IOException {
+ destinationDirectory = TestHelper.getTestBasedir(XMI12ToObjectModelTest.class);
+ FileUtil.createDirectoryIfNecessary(destinationDirectory);
}
+// @Before
+// public void setUp() {
+// destinationDirectory = new File("target", "xmi");
+// destinationDirectory.mkdirs();
+// }
+
/**
* Apply XSLT Transformation.
- *
+ *
* @param xmiFile
* @param modelFile
* @return transformed file
@@ -96,11 +103,12 @@
/**
* Load model into memory.
- *
+ *
* @param modelFile
* @return object model
+ * @throws IOException
*/
- protected ObjectModel loadModel(File modelFile) {
+ protected ObjectModel loadModel(File modelFile) throws IOException {
// ObjectModelGenerator generator = new ObjectModelGenerator();
ObjectModelReader reader = new ObjectModelReader();
ObjectModel model = reader.read(modelFile);
@@ -114,7 +122,7 @@
/**
* Apply XSL stylesheet on a topcased model.
* And make test on it.
- *
+ *
* @throws Exception
*/
@Test
@@ -135,7 +143,7 @@
/**
* Apply XSL stylesheet on a topcased model.
* And make test on it.
- *
+ *
* @throws Exception
*/
@Test
@@ -147,9 +155,9 @@
File objectModelFile = transformXMI(xmiFile, "topiatest.objectmodel");
ObjectModel model = loadModel(objectModelFile);
-
+
// Test for model version
- Assert.assertEquals("1.2",model.getVersion());
+ Assert.assertEquals("1.2", model.getVersion());
Assert.assertNotNull(model);
Assert.assertEquals("TopiaTest", model.getName());
@@ -176,7 +184,7 @@
/**
* Apply XSL stylesheet on an Argouml model.
* And make test on it.
- *
+ *
* @throws Exception
*/
@Test
@@ -201,7 +209,7 @@
}
}
- Assert.assertEquals(4,nbDependencies);
+ Assert.assertEquals(4, nbDependencies);
}
/**
@@ -227,7 +235,7 @@
for (ObjectModelEnumeration enumeration : model.getEnumerations()) {
// 1 seule énumeration avec 3 literals et 2 opérations
Assert.assertNotNull(enumeration.getQualifiedName());
- Assert.assertEquals(3,enumeration.getLiterals().size());
+ Assert.assertEquals(3, enumeration.getLiterals().size());
Assert.assertEquals(2, enumeration.getOperations().size());
}
}
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -25,11 +25,18 @@
package org.nuiton.eugene.models.object;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertFalse;
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
+import org.junit.BeforeClass;
+import org.junit.Test;
+import org.nuiton.eugene.TestHelper;
+import org.nuiton.util.FileUtil;
+import org.nuiton.util.Resource;
+import org.nuiton.util.ResourceResolver;
+import javax.xml.transform.Transformer;
+import javax.xml.transform.TransformerException;
+import javax.xml.transform.TransformerFactory;
+import javax.xml.transform.stream.StreamResult;
+import javax.xml.transform.stream.StreamSource;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
@@ -38,40 +45,41 @@
import java.util.ArrayList;
import java.util.List;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerException;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
-import org.junit.Before;
-import org.junit.Test;
-import org.nuiton.util.Resource;
-import org.nuiton.util.ResourceResolver;
-
/**
* Test de la feuille de style "xmi2.1ToObjectModel.xsl"
* sur l'exemple TestXMI21.uml
*
* @author chatellier
* @version $Revision$
- *
- * Last update : $Date$
- * By : */
+ * <p/>
+ * Last update : $Date$
+ * By :
+ */
public class XMI21ToObjectModelTest {
- protected File destinationDirectory;
+ protected static File destinationDirectory;
- @Before
- public void setUp() {
- destinationDirectory = new File("target", "xmi");
- destinationDirectory.mkdirs();
+ @BeforeClass
+ public static void beforeTest() throws IOException {
+ destinationDirectory = TestHelper.getTestBasedir(XMI21ToObjectModelTest.class);
+ FileUtil.createDirectoryIfNecessary(destinationDirectory);
}
+// @Before
+// public void setUp() {
+// destinationDirectory = new File("target", "xmi");
+// destinationDirectory.mkdirs();
+// }
+
/**
* Apply XSLT Transformation.
- *
+ *
* @param xmiFile
* @return transformed file
* @throws IOException
@@ -104,11 +112,11 @@
/**
* Load model into memory.
- *
+ *
* @param modelFile
* @return object model
*/
- protected ObjectModel loadModel(File modelFile) {
+ protected ObjectModel loadModel(File modelFile) throws IOException {
ObjectModelReader reader = new ObjectModelReader();
ObjectModel model = reader.read(modelFile);
return model;
@@ -120,12 +128,11 @@
/**
* Apply xslt on xmi model, and load it.
- *
+ *
* @param modelName model to load
- *
- * @throws URISyntaxException
- * @throws TransformerException
- * @throws IOException
+ * @throws URISyntaxException
+ * @throws TransformerException
+ * @throws IOException
*/
protected ObjectModel xmiToObjectModel(String modelName) throws URISyntaxException, IOException, TransformerException {
File xmiFile = new File(Resource.getURL("xmi/2.1/" + modelName + ".uml")
@@ -136,11 +143,11 @@
ObjectModel model = loadModel(objectModelFile);
return model;
}
-
+
/**
* Apply XSL stylesheet on a topcased model.
* And make test on it.
- *
+ *
* @throws URISyntaxException
* @throws IOException
* @throws TransformerException
@@ -178,7 +185,7 @@
/**
* Apply XSL stylesheet on a topcased model.
* And make test on it.
- *
+ *
* @throws URISyntaxException
* @throws IOException
* @throws TransformerException
@@ -192,7 +199,7 @@
assertNotNull(model);
assertEquals("org::sharengo::s4a::storage::http::vpod", model.getName());
assertEquals(4, model.getClassifiers().size());
-
+
// ClassB
ObjectModelClass clazzVpodMappingDao = model.getClass("daos.VpodMappingDao");
assertNotNull(clazzVpodMappingDao);
@@ -204,11 +211,11 @@
opFindByVpodIdParams.addAll(opFindByVpodId.get(0).getParameters());
assertEquals("String", opFindByVpodIdParams.get(0).getType());
}
-
+
/**
* Apply XSL stylesheet on a topcased model.
* And make test on it.
- *
+ *
* @throws URISyntaxException
* @throws IOException
* @throws TransformerException
@@ -232,7 +239,7 @@
ObjectModelAttribute attrDefinition = clazzLinkEntity.getAttribute("target");
assertNotNull(attrDefinition);
assertTrue(attrDefinition.hasStereotype("Embedded"));
-
+
// LinkEntity
ObjectModelClass clazzLinkSrv = model.getClass("org.sharengo.utils.container.link.services.LinkSrv");
assertNotNull(clazzLinkSrv);
@@ -248,12 +255,12 @@
ObjectModel model = xmiToObjectModel("cmsCore");
assertNotNull(model);
-
+
// There was a problem with sub package
ObjectModelClass clazzFacetViewSrv = model.getClass("org.sharengo.cms.core.services.facet.FacetViewSrv");
assertNotNull(clazzFacetViewSrv);
assertEquals(11, clazzFacetViewSrv.getOperations().size());
-
+
// Test attribute type FQN
ObjectModelClass clazzContentDefSearchDto = model.getClass("org.sharengo.cms.core.dtos.ContentDefSearchDto");
assertNotNull(clazzContentDefSearchDto);
@@ -277,7 +284,7 @@
/**
* Apply XSL stylesheet on a topcased model.
* And make test on embedded primitive type
- *
+ *
* @throws URISyntaxException
* @throws IOException
* @throws TransformerException
@@ -290,7 +297,7 @@
assertNotNull(model);
assertEquals("XMITest21", model.getName());
-
+
// ClassB
ObjectModelClass clazzB = model.getClass("org.nuiton.eugene.test21.ClassB");
assertNotNull(clazzB);
@@ -308,13 +315,13 @@
ObjectModelAttribute attrFormula = clazzC.getAttribute("formula");
assertNotNull(attrFormula);
assertEquals("org.codelutin.types.Formula", attrFormula.getType());
-
+
}
/**
* Apply XSL stylesheet on a topcased model.
* And make test on embedded primitive type
- *
+ *
* @throws URISyntaxException
* @throws IOException
* @throws TransformerException
@@ -430,19 +437,19 @@
}
private ObjectModelParameter findParameter(ObjectModelOperation op, String name) {
- for (ObjectModelParameter param : op.getParameters()) {
- if (name.equals(param.getName())) {
- return param;
- }
- }
- return null;
+ for (ObjectModelParameter param : op.getParameters()) {
+ if (name.equals(param.getName())) {
+ return param;
+ }
+ }
+ return null;
}
/**
* Apply XSL stylesheet on a topcased model.
* And make test on embedded primitive type
- *
+ *
* @throws URISyntaxException
* @throws IOException
* @throws TransformerException
@@ -461,12 +468,12 @@
assertNotNull(strings);
assertEquals("String", strings.getType());
assertTrue(strings.isStatic());
- assertEquals("azerty",strings.getDefaultValue());
+ assertEquals("azerty", strings.getDefaultValue());
// static operation
ObjectModelClass classD = model.getClass("org.nuiton.eugene.test21.ClassD");
assertNotNull(classD);
- List<ObjectModelOperation> operations = (List<ObjectModelOperation>)classD.getOperations("getInstance");
+ List<ObjectModelOperation> operations = (List<ObjectModelOperation>) classD.getOperations("getInstance");
assertEquals(operations.size(), 1);
assertTrue(operations.get(0).isStatic());
}
@@ -474,7 +481,7 @@
/**
* Apply XSL stylesheet on a topcased model.
* And make test on embedded primitive type
- *
+ *
* @throws URISyntaxException
* @throws IOException
* @throws TransformerException
@@ -515,10 +522,10 @@
// OuterClass
ObjectModelClass outer = model.getClass("org.nuiton.eugene.test21.OuterClass");
- List<ObjectModelClassifier> inners = (List<ObjectModelClassifier>)outer.getInnerClassifiers();
+ List<ObjectModelClassifier> inners = (List<ObjectModelClassifier>) outer.getInnerClassifiers();
assertNotNull(inners);
assertEquals(inners.size(), 1);
-
+
// InnerClass
ObjectModelClass inner = (ObjectModelClass) inners.get(0);
assertNotNull(inner);
@@ -565,7 +572,7 @@
ObjectModelClass clazzB = model.getClass("org.nuiton.eugene.test21.ClassB");
assertNotNull(clazzB);
assertEquals("This is some documentation\non multiple lines !\n\nVery hard to do !", clazzB.getDocumentation());
-
+
}
}
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtensionTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtensionTest.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtensionTest.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -26,45 +26,27 @@
package org.nuiton.eugene.models.object.xml;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.junit.Test;
import org.nuiton.eugene.models.object.ObjectModelInterface;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
/**
* ExternalCacheExtensionTest
- *
+ * <p/>
* Created: 2 nov. 2009
*
* @author fdesbois
* @version $Revision$
- *
- * Mise a jour: $Date$
- * par : */
+ */
public class ExternalCacheExtensionTest {
- public ExternalCacheExtensionTest() {
- }
+ private static final Log log =
+ LogFactory.getLog(ExternalCacheExtensionTest.class);
- @BeforeClass
- public static void setUpClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
- @Before
- public void setUp() {
- }
-
- @After
- public void tearDown() {
- }
-
/**
* Test of getCache method, of class ExternalCacheExtension.
* Prerequisite : Existing model
@@ -73,7 +55,7 @@
*/
@Test
public void testGetCache() {
- System.out.println("getCache");
+ log.debug("getCache");
ObjectModelImpl model = new ObjectModelImpl();
model.setName("TestModel");
@@ -83,12 +65,12 @@
// Creation if not exist
ExternalCacheExtension cache =
- model.getExtension(ExternalCacheExtension.OBJECTMODEL_EXTENSION, ExternalCacheExtension.class);
+ model.getExtension(ExternalCacheExtension.OBJECTMODEL_EXTENSION, ExternalCacheExtension.class);
ObjectModelInterface interfacez =
cache.getCache(refInterface, ObjectModelInterfaceImpl.class);
- assertNotNull(interfacez);
+ assertNotNull(interfacez);
ObjectModelInterface interfacez2 =
cache.getCache(refInterface, ObjectModelInterfaceImpl.class);
@@ -104,8 +86,8 @@
*/
@Test
public void testAddClassifierToCache() {
- System.out.println("addClassifierToCache");
-
+ log.debug("addClassifierToCache");
+
ObjectModelImpl model = new ObjectModelImpl();
model.setName("TestModel");
@@ -115,7 +97,7 @@
ObjectModelClassifierImpl classifier = new ObjectModelInterfaceImpl();
ExternalCacheExtension cache =
- model.getExtension(ExternalCacheExtension.OBJECTMODEL_EXTENSION, ExternalCacheExtension.class);
+ model.getExtension(ExternalCacheExtension.OBJECTMODEL_EXTENSION, ExternalCacheExtension.class);
cache.addClassifierToCache(refInterface, classifier);
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -26,48 +26,41 @@
package org.nuiton.eugene.models.object.xml;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Test;
+import org.nuiton.eugene.models.object.ObjectModel;
+import org.nuiton.eugene.models.object.ObjectModelAssociationClass;
+import org.nuiton.eugene.models.object.ObjectModelAttribute;
+import org.nuiton.eugene.models.object.ObjectModelBuilder;
+import org.nuiton.eugene.models.object.ObjectModelClass;
+import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.object.ObjectModelModifier;
+import org.nuiton.eugene.models.object.ObjectModelOperation;
+import org.nuiton.eugene.models.object.ObjectModelParameter;
+
import java.util.Iterator;
import java.util.List;
import java.util.Set;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
-import org.junit.Test;
-import org.nuiton.eugene.models.object.*;
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertFalse;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
/**
* ObjectModelBuilder
- *
+ * <p/>
* Created: 3 nov. 2009
*
* @author fdesbois
* @version $Revision$
- *
- * Mise a jour: $Date$
- * par : */
+ */
public class ObjectModelBuilderTest {
- public ObjectModelBuilderTest() {
- }
+ private static final Log log =
+ LogFactory.getLog(ObjectModelBuilderTest.class);
- @BeforeClass
- public static void setUpClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
- @Before
- public void setUp() {
- }
-
- @After
- public void tearDown() {
- }
-
/**
* Test of getModel method, of class ObjectModelBuilder.
* Prerequisite : instanciation of ObjectModelBuilder.
@@ -75,10 +68,10 @@
*/
@Test
public void testGetModel() {
- System.out.println("getModel");
+ log.debug("getModel");
ObjectModelBuilder builder = new ObjectModelBuilder("TestModel");
-
+
assertNotNull(builder.getModel());
assertEquals("TestModel", builder.getModel().getName());
}
@@ -91,17 +84,17 @@
*/
@Test
public void testAddTagValue() {
- System.out.println("addTagValue");
+ log.debug("addTagValue");
ObjectModelBuilder builder = new ObjectModelBuilder("TestModel");
builder.addTagValue("fr.ifremer.isisfish.types.Month",
- "fr.ifremer.isisfish.types.hibernate.MonthType");
+ "fr.ifremer.isisfish.types.hibernate.MonthType");
// model.tagvalue.fr.ifremer.isisfish.types.Month=fr.ifremer.isisfish.types.hibernate.MonthType
ObjectModel model = builder.getModel();
assertEquals("fr.ifremer.isisfish.types.hibernate.MonthType",
- model.getTagValue("fr.ifremer.isisfish.types.Month"));
+ model.getTagValue("fr.ifremer.isisfish.types.Month"));
// fr.isisfish.entities.Population.attribute.name.tagvalue.pk=topiaId
ObjectModelClass clazz = builder.createClass("Population", "fr.isisfish.entities");
@@ -118,7 +111,7 @@
*/
@Test
public void testCreateClass() {
- System.out.println("createClass");
+ log.debug("createClass");
ObjectModelBuilder builder = new ObjectModelBuilder("TestModel");
@@ -130,12 +123,10 @@
assertEquals("org.chorem.bonzoms.Person", clazz.getQualifiedName());
}
- /**
- * Test of createInterface method, of class ObjectModelBuilder.
- */
+ /** Test of createInterface method, of class ObjectModelBuilder. */
//@Test
public void testCreateInterface() {
- System.out.println("createInterface");
+ log.debug("createInterface");
}
/**
@@ -145,11 +136,11 @@
*/
@Test
public void testAddAttributeWithoutDefaultValue() {
- System.out.println("addAttribute");
+ log.debug("addAttribute");
ObjectModelBuilder builder = new ObjectModelBuilder("TestModel");
ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
- ObjectModelAttribute attribute = builder.addAttribute(classifier, "firstName", "java.lang.String");
+ ObjectModelAttribute attribute = builder.addAttribute(classifier, "firstName", "java.lang.String");
assertEquals("", attribute.getDefaultValue());
}
@@ -161,13 +152,13 @@
*/
@Test
public void testAddAttribute() {
- System.out.println("addAttribute");
+ log.debug("addAttribute");
ObjectModelBuilder builder = new ObjectModelBuilder("TestModel");
ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
ObjectModelAttribute attribute = builder.addAttribute(classifier, "firstName", "java.lang.String", "",
- ObjectModelModifier.PUBLIC);
+ ObjectModelModifier.PUBLIC);
assertNotNull(attribute);
assertEquals("firstName", attribute.getName());
@@ -178,8 +169,8 @@
assertFalse(attribute.isStatic());
attribute = builder.addAttribute(classifier, "roles", "java.lang.List<org.chorem.bonzoms.Role>",
- "new java.lang.ArrayList<org.chorem.bonzoms.Role>()",
- ObjectModelModifier.PRIVATE, ObjectModelModifier.STATIC);
+ "new java.lang.ArrayList<org.chorem.bonzoms.Role>()",
+ ObjectModelModifier.PRIVATE, ObjectModelModifier.STATIC);
assertEquals("new java.lang.ArrayList<org.chorem.bonzoms.Role>()", attribute.getDefaultValue());
assertTrue(attribute.isStatic());
@@ -193,13 +184,13 @@
*/
@Test
public void testAddOperation() {
- System.out.println("addOperation");
+ log.debug("addOperation");
ObjectModelBuilder builder = new ObjectModelBuilder("TestModel");
ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
ObjectModelOperation result = builder.addOperation(classifier,
- "methodName", "java.util.List<java.lang.String>", ObjectModelModifier.PUBLIC);
+ "methodName", "java.util.List<java.lang.String>", ObjectModelModifier.PUBLIC);
assertNotNull(result);
assertEquals(result.getName(), "methodName");
assertEquals(result.getReturnType(), "java.util.List<java.lang.String>");
@@ -207,7 +198,7 @@
assertFalse(result.isAbstract());
result = builder.addOperation(classifier, "addPropertyChangeListener", "void",
- ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT);
+ ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT);
assertTrue(result.isAbstract());
}
@@ -218,14 +209,14 @@
*/
@Test
public void testSetOperationBody() {
- System.out.println("setOperationBody");
+ log.debug("setOperationBody");
ObjectModelBuilder builder = new ObjectModelBuilder("modelName");
ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String",
- ObjectModelModifier.PUBLIC);
+ ObjectModelModifier.PUBLIC);
builder.setOperationBody(operation, "this.name = name");
assertNotNull(operation.getBodyCode());
@@ -240,7 +231,7 @@
*/
@Test
public void testAddInterface() {
- System.out.println("addInterface");
+ log.debug("addInterface");
ObjectModelBuilder builder = new ObjectModelBuilder("TestModel");
@@ -261,7 +252,7 @@
*/
@Test
public void testAddSuperclass() {
- System.out.println("addSuperclass");
+ log.debug("addSuperclass");
ObjectModelBuilder builder = new ObjectModelBuilder("TestModel");
ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms");
@@ -279,21 +270,21 @@
*/
@Test
public void testAddParameter() {
- System.out.println("addParameter");
+ log.debug("addParameter");
ObjectModelBuilder builder = new ObjectModelBuilder("modelName");
ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String",
- ObjectModelModifier.PUBLIC);
+ ObjectModelModifier.PUBLIC);
ObjectModelParameter param = builder.addParameter(operation, "java.lang.String", "name");
assertNotNull(param);
assertEquals(param.getName(), "name");
assertEquals(param.getType(), "java.lang.String");
- List<ObjectModelParameter> listParams = (List<ObjectModelParameter>)operation.getParameters();
+ List<ObjectModelParameter> listParams = (List<ObjectModelParameter>) operation.getParameters();
ObjectModelParameter param1 = listParams.get(0);
assertEquals(param1, param);
}
@@ -305,14 +296,14 @@
*/
@Test
public void testAddException() {
- System.out.println("addException");
+ log.debug("addException");
ObjectModelBuilder builder = new ObjectModelBuilder("modelName");
ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String",
- ObjectModelModifier.PUBLIC);
+ ObjectModelModifier.PUBLIC);
builder.addException(operation, "java.lang.IllegalArgumentException");
Set<String> exceptions = operation.getExceptions();
@@ -323,12 +314,10 @@
assertEquals(it.next(), "java.lang.IllegalArgumentException");
}
- /**
- * Test of setDocumentation method, of class ObjectModelBuilder.
- */
+ /** Test of setDocumentation method, of class ObjectModelBuilder. */
//@Test
public void testSetDocumentation() {
- System.out.println("setDocumentation");
+ log.debug("setDocumentation");
}
/**
@@ -338,7 +327,7 @@
*/
@Test
public void testAddAssociation() {
- System.out.println("addAssociation");
+ log.debug("addAssociation");
ObjectModelBuilder builder = new ObjectModelBuilder("TestModel");
@@ -347,7 +336,7 @@
ObjectModelClass classB = builder.createClass("Vote", "org.chorem.pollen.business.persistence");
ObjectModelAttribute assoc = builder.addAssociation(classA, classB, "poll", 1, 1,
- ObjectModelModifier.COMPOSITE, ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED);
+ ObjectModelModifier.COMPOSITE, ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED);
assertNotNull(assoc);
assertTrue(assoc.isNavigable());
@@ -368,7 +357,7 @@
*/
@Test
public void testAddReverseAssociation() {
- System.out.println("addReverseAssociation");
+ log.debug("addReverseAssociation");
ObjectModelBuilder builder = new ObjectModelBuilder("TestModel");
@@ -377,7 +366,7 @@
ObjectModelClass classB = builder.createClass("Vote", "org.chorem.pollen.business.persistence");
ObjectModelAttribute assocA = builder.addAssociation(classA, classB, "poll", 1, 1,
- ObjectModelModifier.COMPOSITE, ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED);
+ ObjectModelModifier.COMPOSITE, ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED);
ObjectModelAttribute assocB = builder.addReverseAssociation(assocA, "vote", 0, -1);
@@ -393,8 +382,8 @@
*/
@Test
public void testCreateAssociationClass() {
- System.out.println("createAssociationClass");
-
+ log.debug("createAssociationClass");
+
ObjectModelBuilder builder = new ObjectModelBuilder("TestModel");
ObjectModelClass classA = builder.createClass("Vote", "org.chorem.pollen.business.persistence");
@@ -402,13 +391,13 @@
ObjectModelClass classB = builder.createClass("Choice", "org.chorem.pollen.business.persistence");
ObjectModelAttribute assocA = builder.addAssociation(classA, classB, "vote", 0, -1,
- ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED);
+ ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED);
ObjectModelAttribute assocB = builder.addReverseAssociation(assocA, "choice", 1, -1,
- ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED);
+ ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED);
ObjectModelAssociationClass assocClass = builder.createAssociationClass("VoteToChoice",
- "org.chorem.pollen.business.persistence", assocA, assocB);
+ "org.chorem.pollen.business.persistence", assocA, assocB);
List<ObjectModelClassifier> classifiers = assocClass.getParticipantsClassifiers();
@@ -417,12 +406,10 @@
assertTrue(classifiers.contains(classB));
}
- /**
- * Test of addStereotype method, of class ObjectModelBuilder.
- */
+ /** Test of addStereotype method, of class ObjectModelBuilder. */
@Test
public void testAddStereotype() {
- System.out.println("addStereotype");
+ log.debug("addStereotype");
ObjectModelBuilder builder = new ObjectModelBuilder("TestModel");
@@ -433,7 +420,7 @@
builder.addStereotype(classA, "entity");
assertEquals(1, classA.getStereotypes().size());
-
+
}
}
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTest.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTest.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -27,41 +27,17 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.junit.After;
-import org.junit.AfterClass;
-import org.junit.Before;
-import org.junit.BeforeClass;
import org.junit.Test;
import org.nuiton.eugene.java.ImportsManagerExtension;
-import static org.junit.Assert.*;
-/**
- *
- * @author fdesbois
- */
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+
+/** @author fdesbois */
public class ObjectModelImplTest {
private static final Log log = LogFactory.getLog(ObjectModelImplTest.class);
- public ObjectModelImplTest() {
- }
-
- @BeforeClass
- public static void setUpClass() throws Exception {
- }
-
- @AfterClass
- public static void tearDownClass() throws Exception {
- }
-
- @Before
- public void setUp() {
- }
-
- @After
- public void tearDown() {
- }
-
// /**
// * Test of setName method, of class ObjectModelImpl.
// */
@@ -364,8 +340,8 @@
*/
@Test
public void testGetExtension() {
- System.out.println("getExtension");
-
+ log.debug("getExtension");
+
ObjectModelImpl model = new ObjectModelImpl();
model.setName("TestModel");
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelDTDTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelDTDTest.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelDTDTest.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -25,16 +25,6 @@
package org.nuiton.eugene.models.state;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.net.URISyntaxException;
-import java.net.URL;
-
-import javax.xml.parsers.ParserConfigurationException;
-import javax.xml.parsers.SAXParser;
-import javax.xml.parsers.SAXParserFactory;
-
import org.junit.Test;
import org.nuiton.util.Resource;
import org.xml.sax.EntityResolver;
@@ -43,53 +33,62 @@
import org.xml.sax.XMLReader;
import org.xml.sax.helpers.DefaultHandler;
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.net.URISyntaxException;
+import java.net.URL;
+
/**
* StateModelTest.java
*
* @author chatellier
* @version $Revision$
- * <p/>
- * Last update : $Date$
- * By : */
+ * <p/>
+ * Last update : $Date$
+ * By :
+ */
public class StateModelDTDTest {
/**
* Test la validation des DTD sur les modeles XML.
- * @throws SAXException
- * @throws ParserConfigurationException
- * @throws IOException
- * @throws URISyntaxException
- *
- * FIXME this test doesn't valid anything
+ *
+ * @throws SAXException
+ * @throws ParserConfigurationException
+ * @throws IOException
+ * @throws URISyntaxException FIXME this test doesn't valid anything
*/
@Test
public void testCorrectStateModel() throws ParserConfigurationException, SAXException, IOException, URISyntaxException {
-
+
File[] testFiles = {
new File(Resource.getURL("models/statemodel/project.statemodel").toURI()),
new File(Resource.getURL("models/statemodel/contact.statemodel").toURI())
};
- for( File file : testFiles) {
- SAXParserFactory factory = SAXParserFactory.newInstance();
+ for (File file : testFiles) {
+ SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
factory.setNamespaceAware(true);
SAXParser parser = factory.newSAXParser();
// --- Set Input source
InputSource source = new InputSource(new FileInputStream(file));
-
+
// --- parse
XMLReader reader = parser.getXMLReader();
reader.setContentHandler(new DefaultHandler());
reader.setErrorHandler(new DefaultHandler());
- reader.setEntityResolver( new EntityResolver() {
+ reader.setEntityResolver(new EntityResolver() {
@Override
public InputSource resolveEntity(String publicId, String systemId)
throws SAXException, IOException {
-
+
String dtd = systemId.substring(systemId.lastIndexOf("/"));
-
+
URL url = Resource.getURL("dtd/" + dtd);
InputSource source;
try {
@@ -97,11 +96,11 @@
} catch (URISyntaxException e) {
throw new SAXException(e);
}
-
+
return source;
}
});
- reader.parse(source);
+ reader.parse(source);
}
}
}
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelTest.java 2010-11-28 01:01:44 UTC (rev 1010)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelTest.java 2010-11-28 11:22:01 UTC (rev 1011)
@@ -25,25 +25,26 @@
package org.nuiton.eugene.models.state;
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+import org.nuiton.util.Resource;
+
import java.io.File;
import java.net.URISyntaxException;
import java.util.Collection;
import java.util.List;
import java.util.Map;
-import org.junit.Assert;
-import org.junit.Before;
-import org.junit.Test;
-import org.nuiton.util.Resource;
-
/**
* StateModelTest.java
*
* @author chatellier
* @version $Revision$
- * <p/>
- * Last update : $Date$
- * By : */
+ * <p/>
+ * Last update : $Date$
+ * By :
+ */
public class StateModelTest {
/** model */
1
0
r1010 - trunk/eugene/src/main/java/org/nuiton/eugene/models/object
by tchemit@users.nuiton.org 28 Nov '10
by tchemit@users.nuiton.org 28 Nov '10
28 Nov '10
Author: tchemit
Date: 2010-11-28 02:01:44 +0100 (Sun, 28 Nov 2010)
New Revision: 1010
Url: http://nuiton.org/repositories/revision/eugene/1010
Log:
fix tag value importing with stereotype
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2010-11-28 00:29:07 UTC (rev 1009)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2010-11-28 01:01:44 UTC (rev 1010)
@@ -91,7 +91,9 @@
* fr.isisfish.entities.Population.operation.getRegion.tagvalue.pk=...
*/
protected Pattern propertiesPattern = Pattern
- .compile("^((?:[_a-zA-Z0-9]+\\.)+(?:_?[A-Z][_a-zA-Z0-9]*\\.)+)(?:(class|attribute|operation))\\.(?:([_a-zA-Z0-9]+)\\.)?(?:(stereotype|tagvalue|tagValue)?)\\.([_a-z0-9][_a-zA-Z0-9]*)?$");
+ .compile("^((?:[_a-zA-Z0-9]+\\.)+(?:_?[A-Z][_a-zA-Z0-9]*\\.)+)(?:(class|attribute|operation))\\.(?:([_a-zA-Z0-9]+)\\.)?(?:(tagvalue|tagValue)?)\\.([_a-z0-9][_a-zA-Z0-9]*)?$");
+ protected Pattern propertyStereotypePattern = Pattern
+ .compile("^((?:[_a-zA-Z0-9]+\\.)+(?:_?[A-Z][_a-zA-Z0-9]*\\.)+)(?:(class|attribute|operation))\\.(?:([_a-zA-Z0-9]+)\\.)?(?:(stereotype)?)$");
/**
* Pattern to define tag values authorized at model level in the model
@@ -242,7 +244,7 @@
modelImpl.setVersion(value);
}
if (isVerbose()) {
- log.info("import model tag value " + key);
+ log.info("import model tag value " + key + " --> " + tag + " = " + value);
}
modelImpl.addTagValue(tag, value);
numberImportedTagValues++;
@@ -257,10 +259,17 @@
}
if (!matcher.find()) {
- if (log.isWarnEnabled()) {
- log.warn("Invalid tag value [" + key + "] : syntax is not correct.");
+
+ // try with the stereotype
+ matcher = propertyStereotypePattern.matcher(key);
+
+ if (!matcher.find()) {
+
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid tag value [" + key + "] : syntax is not correct.");
+ }
+ continue;
}
- continue;
}
String fqn = matcher.group(1);
@@ -271,8 +280,17 @@
String targetName = matcher.group(3);
// type is stereotype or tagvalue
String type = matcher.group(4).toLowerCase();
- String tag = matcher.group(5);
+ String tag;
+
+ if (STEREOTYPE.equals(type)) {
+
+ // using a stereotype means nothing after the type
+ tag = null;
+ } else {
+ tag = matcher.group(5);
+ }
+
if (log.isDebugEnabled()) {
log.debug("Propriete: '" + key + "' => "
+ "fqn:" + fqn + " target:" + target
1
0
28 Nov '10
Author: tchemit
Date: 2010-11-28 01:29:07 +0100 (Sun, 28 Nov 2010)
New Revision: 1009
Url: http://nuiton.org/repositories/revision/eugene/1009
Log:
delete unused directory
Removed:
trunk/maven-eugene-plugin/src/main/resources/META-INF/
1
0
Author: tchemit
Date: 2010-11-28 01:28:56 +0100 (Sun, 28 Nov 2010)
New Revision: 1008
Url: http://nuiton.org/repositories/revision/eugene/1008
Log:
Evolution #1111: Update objectmodel xsd
Modified:
trunk/eugene/src/main/resources/xsd/objectmodel.xsd
Modified: trunk/eugene/src/main/resources/xsd/objectmodel.xsd
===================================================================
--- trunk/eugene/src/main/resources/xsd/objectmodel.xsd 2010-11-28 00:28:37 UTC (rev 1007)
+++ trunk/eugene/src/main/resources/xsd/objectmodel.xsd 2010-11-28 00:28:56 UTC (rev 1008)
@@ -58,13 +58,21 @@
<xsd:sequence>
<xsd:element name="attribute" type="attribute" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
+ <xsd:attribute name="extern" type="xsd:boolean" use="optional"/>
+ <xsd:attribute name="abstract" type="xsd:boolean" use="optional"/>
</xsd:extension>
</xsd:complexContent>
</xsd:complexType>
<xsd:complexType name="associationClass">
<xsd:complexContent>
- <xsd:extension base="classifier"/>
+ <xsd:extension base="classifier">
+ <xsd:sequence>
+ <xsd:element name="attribute" type="attribute" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="participant" type="participant" minOccurs="0" maxOccurs="unbounded"/>
+ </xsd:sequence>
+ <xsd:attribute name="abstract" type="xsd:boolean" use="optional"/>
+ </xsd:extension>
</xsd:complexContent>
</xsd:complexType>
@@ -76,6 +84,7 @@
<xsd:complexType name="superclass">
<xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="discriminator" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="superinterface">
@@ -85,6 +94,7 @@
<xsd:complexType name="attribute">
<xsd:sequence>
<xsd:element name="tagValue" type="tagValue" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="stereotype" type="stereotype" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="optional"/>
<xsd:attribute name="visibility" type="xsd:string" use="optional"/>
@@ -97,10 +107,13 @@
<xsd:attribute name="navigable" type="xsd:boolean" use="optional"/>
<xsd:attribute name="ordering" type="xsd:string" use="optional"/>
<xsd:attribute name="defaultValue" type="xsd:string" use="optional"/>
+ <xsd:attribute name="associationClassName" type="xsd:string" use="optional"/>
+
</xsd:complexType>
<xsd:complexType name="operation">
<xsd:sequence>
+ <xsd:element name="stereotype" type="stereotype" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="parameter" type="parameter" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="returnParameter" type="returnParameter" minOccurs="1" maxOccurs="1"/>
<xsd:element name="exceptionParameter" type="exceptionParameter" minOccurs="0" maxOccurs="unbounded"/>
@@ -124,6 +137,11 @@
<xsd:attribute name="type" type="xsd:string" use="required"/>
</xsd:complexType>
+ <xsd:complexType name="participant">
+ <xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="attribute" type="xsd:string" use="required"/>
+ </xsd:complexType>
+
<xsd:complexType name="enumeration">
<xsd:complexContent>
<xsd:extension base="classifier">
1
0
Author: tchemit
Date: 2010-11-28 01:28:37 +0100 (Sun, 28 Nov 2010)
New Revision: 1007
Url: http://nuiton.org/repositories/revision/eugene/1007
Log:
add faq to update objectmodel
Modified:
trunk/src/site/rst/08-FAQ.rst
Modified: trunk/src/site/rst/08-FAQ.rst
===================================================================
--- trunk/src/site/rst/08-FAQ.rst 2010-11-28 00:28:23 UTC (rev 1006)
+++ trunk/src/site/rst/08-FAQ.rst 2010-11-28 00:28:37 UTC (rev 1007)
@@ -39,6 +39,12 @@
The diagrams are not converted, you have to create them agein from the classes
doing drag&drop.
+Howto update object model ?
+===========================
+
+When updating obecject model, think to update also the associated xsd to
+generate always a valid xml object model files.
+
How to write Transformer's methods ?
====================================
1
0
r1006 - trunk/eugene/src/main/java/org/nuiton/eugene/models/object
by tchemit@users.nuiton.org 28 Nov '10
by tchemit@users.nuiton.org 28 Nov '10
28 Nov '10
Author: tchemit
Date: 2010-11-28 01:28:23 +0100 (Sun, 28 Nov 2010)
New Revision: 1006
Url: http://nuiton.org/repositories/revision/eugene/1006
Log:
let the tag-value as before accepting all model tag values
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2010-11-27 23:26:43 UTC (rev 1005)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2010-11-28 00:28:23 UTC (rev 1006)
@@ -99,8 +99,8 @@
*
* @since 2.2.1
*/
- protected Pattern modelTagValuePattern = Pattern
- .compile("^model\\.(?:(tagvalue|tagValue)?)\\.((?:[_a-zA-Z0-9]+)(?:\\.[_a-zA-Z0-9]+)*)$");
+ protected Pattern modelTagValuePattern = Pattern.compile(
+ "^model\\.(?:(tagvalue|tagValue)?)\\.((?:.+))$");
public static final String MODEL = "model";
1
0
27 Nov '10
Author: tchemit
Date: 2010-11-28 00:26:43 +0100 (Sun, 28 Nov 2010)
New Revision: 1005
Url: http://nuiton.org/repositories/revision/eugene/1005
Log:
Evolution #1110: Expose dtd and xsd of objectmodel on site
Evolution #1111: Update objectmodel xsd
Modified:
trunk/eugene/src/main/resources/xsd/objectmodel.xsd
trunk/eugene/src/main/xsl/xmi1.2ToObjectModel.xsl
trunk/eugene/src/main/xsl/xmi2.1ToObjectModel.xsl
Modified: trunk/eugene/src/main/resources/xsd/objectmodel.xsd
===================================================================
--- trunk/eugene/src/main/resources/xsd/objectmodel.xsd 2010-11-27 22:09:33 UTC (rev 1004)
+++ trunk/eugene/src/main/resources/xsd/objectmodel.xsd 2010-11-27 23:26:43 UTC (rev 1005)
@@ -35,6 +35,7 @@
<xsd:element name="enumeration" type="enumeration"/>
</xsd:choice>
<xsd:attribute name="name" type="xsd:string" use="required"/>
+ <xsd:attribute name="version" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="classifier">
@@ -48,6 +49,7 @@
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="package" type="xsd:string" use="required"/>
+ <xsd:attribute name="extern" type="xsd:boolean" use="optional"/>
</xsd:complexType>
<xsd:complexType name="class">
@@ -94,6 +96,7 @@
<xsd:attribute name="maxMultiplicity" type="xsd:integer" use="optional"/>
<xsd:attribute name="navigable" type="xsd:boolean" use="optional"/>
<xsd:attribute name="ordering" type="xsd:string" use="optional"/>
+ <xsd:attribute name="defaultValue" type="xsd:string" use="optional"/>
</xsd:complexType>
<xsd:complexType name="operation">
@@ -101,6 +104,7 @@
<xsd:element name="parameter" type="parameter" minOccurs="0" maxOccurs="unbounded"/>
<xsd:element name="returnParameter" type="returnParameter" minOccurs="1" maxOccurs="1"/>
<xsd:element name="exceptionParameter" type="exceptionParameter" minOccurs="0" maxOccurs="unbounded"/>
+ <xsd:element name="tagValue" type="tagValue" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
<xsd:attribute name="name" type="xsd:string" use="required"/>
<xsd:attribute name="visibility" type="xsd:string" use="optional"/>
Modified: trunk/eugene/src/main/xsl/xmi1.2ToObjectModel.xsl
===================================================================
--- trunk/eugene/src/main/xsl/xmi1.2ToObjectModel.xsl 2010-11-27 22:09:33 UTC (rev 1004)
+++ trunk/eugene/src/main/xsl/xmi1.2ToObjectModel.xsl 2010-11-27 23:26:43 UTC (rev 1005)
@@ -25,13 +25,15 @@
-->
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:xalan="http://xml.apache.org/xslt"
xmlns:extensions="http://www.codelutin.com/XSLTExtensions"
xmlns:redirect="http://xml.apache.org/xalan/redirect"
extension-element-prefixes="extensions redirect"
- xmlns="http://www.codelutin.org/eugene/objectModel"
+ xmlns="http://nuiton.org/eugene/objectModel/v1"
xmlns:packageValidator="xalan://org.nuiton.eugene.PackageValidator"
- xmlns:UML="org.omg.xmi.namespace.UML" xmlns:UML2="org.omg.xmi.namespace.UML2">
+ xmlns:UML="org.omg.xmi.namespace.UML"
+ xmlns:UML2="org.omg.xmi.namespace.UML2">
<xsl:output method="xml"
encoding="UTF-8"
@@ -53,12 +55,13 @@
<xsl:template match="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement">
<xsl:element name="objectModel">
+ <xsl:attribute name="xsi:schemaLocation">http://nuiton.org/eugene/objectModel/v1 http://maven-site.nuiton.org/eugene/xsd/v1/objectmodel.xsd</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="../@name"/>
</xsl:attribute>
<!-- ajout de l'attribut version disponible dans les taggedValue -->
- <xsl:attribute name="version">
+ <xsl:attribute name="version" xsi:nill="">
<xsl:variable name="versionTagId">
<xsl:value-of select="/XMI/XMI.content/UML:Model/UML:Namespace.ownedElement/UML:TagDefinition[@name='version']/(a)xmi.id"/>
</xsl:variable>
Modified: trunk/eugene/src/main/xsl/xmi2.1ToObjectModel.xsl
===================================================================
--- trunk/eugene/src/main/xsl/xmi2.1ToObjectModel.xsl 2010-11-27 22:09:33 UTC (rev 1004)
+++ trunk/eugene/src/main/xsl/xmi2.1ToObjectModel.xsl 2010-11-27 23:26:43 UTC (rev 1005)
@@ -25,11 +25,13 @@
-->
<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:xalan="http://xml.apache.org/xslt"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xmlns:xalan="http://xml.apache.org/xslt"
xmlns:extensions="http://www.codelutin.com/XSLTExtensions"
xmlns:redirect="http://xml.apache.org/xalan/redirect"
extension-element-prefixes="extensions redirect"
- xmlns="http://www.codelutin.org/eugene/objectModel"
+ xmlns="http://nuiton.org/eugene/objectModel/v1"
xmlns:packageValidator="xalan://org.nuiton.eugene.PackageValidator"
xmlns:xmi="http://schema.omg.org/spec/XMI/2.1" xmlns:uml="http://www.eclipse.org/uml2/2.1.0/UML">
@@ -49,6 +51,7 @@
<xsl:template match="uml:Model">
<xsl:element name="objectModel">
+ <xsl:attribute name="xsi:schemaLocation">http://nuiton.org/eugene/objectModel/v1 http://maven-site.nuiton.org/eugene/xsd/v1/objectmodel.xsd</xsl:attribute>
<xsl:attribute name="name">
<xsl:value-of select="@name" />
</xsl:attribute>
1
0
Author: tchemit
Date: 2010-11-27 23:09:33 +0100 (Sat, 27 Nov 2010)
New Revision: 1004
Url: http://nuiton.org/repositories/revision/eugene/1004
Log:
Evolution #1110: Expose dtd and xsd of objectmodel on site
Fix objectmodel xsd (add targetNamespace attribute)
Modified:
trunk/eugene/src/main/resources/xsd/objectmodel.xsd
trunk/pom.xml
Modified: trunk/eugene/src/main/resources/xsd/objectmodel.xsd
===================================================================
--- trunk/eugene/src/main/resources/xsd/objectmodel.xsd 2010-11-27 17:50:05 UTC (rev 1003)
+++ trunk/eugene/src/main/resources/xsd/objectmodel.xsd 2010-11-27 22:09:33 UTC (rev 1004)
@@ -1,4 +1,4 @@
-<?xml version="1.0"?>
+<?xml version="1.0" encoding="UTF-8"?>
<!--
#%L
EUGene :: EUGene
@@ -24,7 +24,7 @@
#L%
-->
-<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
+<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://nuiton.org/eugene/objectModel/v1">
<xsd:complexType name="objectModel" mixed="true">
<xsd:choice minOccurs="0" maxOccurs="unbounded">
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-11-27 17:50:05 UTC (rev 1003)
+++ trunk/pom.xml 2010-11-27 22:09:33 UTC (rev 1004)
@@ -389,6 +389,14 @@
<build>
+ <extensions>
+ <extension>
+ <groupId>org.apache.maven.wagon</groupId>
+ <artifactId>wagon-ssh-external</artifactId>
+ <version>1.0-beta-7</version>
+ </extension>
+
+ </extensions>
<pluginManagement>
<plugins>
@@ -444,4 +452,50 @@
<url>http://www.nuiton.org/repositories/browse/eugene/trunk</url>
</scm>
+ <profiles>
+ <profile>
+ <id>reporting</id>
+ <activation>
+ <property>
+ <name>performRelease</name>
+ <value>true</value>
+ </property>
+ </activation>
+
+ <build>
+ <plugins>
+ <plugin>
+ <!-- copy object model xsd to site -->
+ <artifactId>maven-antrun-plugin</artifactId>
+ <executions>
+
+ <execution>
+ <id>xsd-to-site</id>
+ <phase>pre-site</phase>
+ <configuration>
+ <tasks>
+ <copy todir="target/site/xsd/v1" verbose="${maven.verbose}"
+ failonerror="false" overwrite="true">
+ <fileset dir="${basedir}/eugene/src/main/resources/xsd">
+ <include name="**/*.xsd"/>
+ </fileset>
+ </copy>
+ <copy todir="target/site/dtd/v1" verbose="${maven.verbose}"
+ failonerror="false" overwrite="true">
+ <fileset dir="${basedir}/eugene/src/main/resources/dtd">
+ <include name="**/*.dtd"/>
+ </fileset>
+ </copy>
+ </tasks>
+ </configuration>
+ <goals>
+ <goal>run</goal>
+ </goals>
+ </execution>
+ </executions>
+ </plugin>
+ </plugins>
+ </build>
+ </profile>
+ </profiles>
</project>
1
0
r1003 - in trunk: eugene/src/main/java/org/nuiton/eugene eugene/src/main/java/org/nuiton/eugene/models/object maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer
by tchemit@users.nuiton.org 27 Nov '10
by tchemit@users.nuiton.org 27 Nov '10
27 Nov '10
Author: tchemit
Date: 2010-11-27 18:50:05 +0100 (Sat, 27 Nov 2010)
New Revision: 1003
Url: http://nuiton.org/repositories/revision/eugene/1003
Log:
Evolution #1109: Add verbose flag in ModelReader (used after with eugene.verbose maven pom properties in the plugin)
fix tag values import (when using tagValue)
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2010-11-27 15:55:17 UTC (rev 1002)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2010-11-27 17:50:05 UTC (rev 1003)
@@ -47,6 +47,16 @@
/** date de derniere modification de la source la plus recente */
protected long lastModifiedSource;
+ protected boolean verbose;
+
+ public boolean isVerbose() {
+ return verbose;
+ }
+
+ public void setVerbose(boolean verbose) {
+ this.verbose = verbose;
+ }
+
protected void setLastModifiedSource(File... files) {
for (File file : files) {
if (file.lastModified() > getLastModifiedSource()) {
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2010-11-27 15:55:17 UTC (rev 1002)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2010-11-27 17:50:05 UTC (rev 1003)
@@ -26,16 +26,7 @@
package org.nuiton.eugene.models.object;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Enumeration;
-import java.util.List;
-import java.util.Properties;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.digester.Digester;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -52,9 +43,20 @@
import org.nuiton.util.RecursiveProperties;
import org.nuiton.util.StringUtil;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.Collections;
+import java.util.List;
+import java.util.Properties;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
/**
* To read object model files into an memory object model.
- *
+ * <p/>
* Created: 26 oct. 2009
*
* @author fdesbois <fdesbois(a)codelutin.com>
@@ -65,7 +67,7 @@
private static final Log log = LogFactory.getLog(ObjectModelReader.class);
- public static final String TAGVALUE = "tagvalue";
+ public static final String TAGVALUE = "tagvalue";
public static final String STEREOTYPE = "stereotype";
@@ -78,7 +80,7 @@
/**
* Pattern to define tag values authorized at classifier level in the model
* properties file.
- *
+ * <p/>
* L'expression réguliere match les chaines de type
* <package.ClassName>.<class|attribute|operation>.[name].<stereotype|tagvalue>.[tag]
* fr.isisfish.entities.Population.class.stereotype=entity
@@ -89,7 +91,7 @@
* fr.isisfish.entities.Population.operation.getRegion.tagvalue.pk=...
*/
protected Pattern propertiesPattern = Pattern
- .compile("((?:[_a-zA-Z0-9]+\\.)+(?:_?[A-Z][_a-zA-Z0-9]*\\.)+)(?:(class|attribute|operation))\\.(?:([_a-zA-Z0-9]+)\\.)?(?:(stereotype|tagvalue|tagValue)?)\\.([_a-z0-9][_a-zA-Z0-9]*)?");
+ .compile("^((?:[_a-zA-Z0-9]+\\.)+(?:_?[A-Z][_a-zA-Z0-9]*\\.)+)(?:(class|attribute|operation))\\.(?:([_a-zA-Z0-9]+)\\.)?(?:(stereotype|tagvalue|tagValue)?)\\.([_a-z0-9][_a-zA-Z0-9]*)?$");
/**
* Pattern to define tag values authorized at model level in the model
@@ -98,15 +100,15 @@
* @since 2.2.1
*/
protected Pattern modelTagValuePattern = Pattern
- .compile("^model\\.(?:(tagvalue|tagValue)?)\\.((?:[_a-zA-Z0-9]+)(?:\\.[_a-zA-Z0-9]+)*)$");
+ .compile("^model\\.(?:(tagvalue|tagValue)?)\\.((?:[_a-zA-Z0-9]+)(?:\\.[_a-zA-Z0-9]+)*)$");
public static final String MODEL = "model";
/**
* @param files les noms des fichiers existant contenant du XML représentant
- * des ObjectModel. Il est automatiquement recherche un fichier de
- * propriété associé a ce fichier pour pouvoir ajouter des
- * stereotype ou des tag value sur les class, attribute ou operation
+ * des ObjectModel. Il est automatiquement recherche un fichier de
+ * propriété associé a ce fichier pour pouvoir ajouter des
+ * stereotype ou des tag value sur les class, attribute ou operation
*/
@Override
public ObjectModel read(File... files) {
@@ -140,14 +142,14 @@
if (!propFile.exists()) {
if (log.isInfoEnabled()) {
log.info("Pas de fichier de propriete " + propFile
- + " associé au model");
+ + " associé au model");
}
} else {
if (log.isInfoEnabled()) {
log.info("Lecture du fichier de propriete " + propFile
- + " associé au model");
+ + " associé au model");
}
- loadModelPropertiesFile(propFile, model);
+ loadTagValues(propFile, model);
}
}
if (log.isDebugEnabled()) {
@@ -164,22 +166,22 @@
* attributes if needed.
*
* @param clazz where the attribute need to be find
- * @param name attribute name to find
+ * @param name attribute name to find
* @return the attribute found or null
*/
protected ObjectModelAttribute getAttribute(ObjectModelClass clazz,
String name) {
- ObjectModelAttribute result = clazz.getAttribute(name);
+ ObjectModelAttribute result = clazz.getAttribute(name);
// Ano #619 : FD-2010-05-17 : Specific case for Association class :
// check on participant attributes
if (result == null && clazz instanceof ObjectModelAssociationClassImpl) {
if (log.isDebugEnabled()) {
log.debug("Attribute " + name + " not found from " +
- clazz.getQualifiedName() +" association class. " +
- "Will check participants...");
+ clazz.getQualifiedName() + " association class. " +
+ "Will check participants...");
}
- ObjectModelAssociationClass assoc = (ObjectModelAssociationClass)clazz;
+ ObjectModelAssociationClass assoc = (ObjectModelAssociationClass) clazz;
for (ObjectModelAttribute participant : assoc.getParticipantsAttributes()) {
if (participant.getName().equals(name)) {
result = participant;
@@ -190,7 +192,8 @@
return result;
}
- public Properties loadModelPropertiesFile(File propFile, ObjectModel model) {
+ public Properties loadTagValues(File propFile, ObjectModel model) {
+
Properties prop = new RecursiveProperties();
try {
FileInputStream inStream = new FileInputStream(propFile);
@@ -205,9 +208,17 @@
+ propFile, eee);
}
}
- // on ajoute les proprietes du fichier associe au model
- for (Enumeration<Object> e = prop.keys(); e.hasMoreElements();) {
- String key = (String) e.nextElement();
+
+ // number of sucessfull imported tag values into model
+ int numberImportedTagValues = 0;
+
+ // get all the tagvalues keys and sort them
+ List<String> keys = new ArrayList<String>();
+ CollectionUtils.addAll(keys, prop.keys());
+ Collections.sort(keys);
+
+ // for each tag value try to import in in model
+ for (String key : keys) {
String value = prop.getProperty(key);
if (key.startsWith(MODEL)) {
@@ -223,15 +234,6 @@
continue;
}
String tag = matcher.group(2);
-// if (!key.startsWith("model.tagvalue.") ||
-// !key.startsWith("model.tagValue.")) {
-// if (log.isWarnEnabled()) {
-// log.warn("Invalid tag value [" + key + "] : only tagvalue or tagValue is allowed on model in properties");
-// }
-// continue;
-// }
-// String tag = key.substring("model.tagvalue.".length());
-
ObjectModelImpl modelImpl = (ObjectModelImpl) model;
if (tag.equals(JavaGeneratorUtil.TAG_VERSION)) {
@@ -239,7 +241,11 @@
// property
modelImpl.setVersion(value);
}
+ if (isVerbose()) {
+ log.info("import model tag value " + key);
+ }
modelImpl.addTagValue(tag, value);
+ numberImportedTagValues++;
continue;
}
@@ -264,7 +270,7 @@
String target = matcher.group(2);
String targetName = matcher.group(3);
// type is stereotype or tagvalue
- String type = matcher.group(4);
+ String type = matcher.group(4).toLowerCase();
String tag = matcher.group(5);
if (log.isDebugEnabled()) {
@@ -346,8 +352,18 @@
}
}
+ if (isVerbose()) {
+ log.info("import tag value " + key + " --> " + fqn + ":" + target + ":" + targetName + ":" + type + ":" + tag+" = " + value);
+ }
+ numberImportedTagValues++;
}
-
+ if (log.isInfoEnabled()) {
+ log.info(numberImportedTagValues + " tag values were succesfull imported from " + propFile);
+ }
+ int nbFailed = prop.size() - numberImportedTagValues;
+ if (nbFailed > 0 && isVerbose()) {
+ log.info(nbFailed + " tag values failed to be imported from " + propFile);
+ }
return prop;
}
}
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-11-27 15:55:17 UTC (rev 1002)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java 2010-11-27 17:50:05 UTC (rev 1003)
@@ -282,6 +282,8 @@
if (configuration.isVerbose()) {
getLog().info("Will read " + filesToRead.length + " model(s).");
}
+
+ getModelReader().setVerbose(configuration.isVerbose());
// read memory model from all files models
Model model = getModelReader().read(filesToRead);
1
0
r1002 - in trunk: eugene/src/main/java/org/nuiton/eugene eugene/src/main/java/org/nuiton/eugene/java eugene/src/main/java/org/nuiton/eugene/models/object eugene/src/main/java/org/nuiton/eugene/writer maven-eugene-plugin/src/it/smart-generate/generators/src/main/java/org/nuiton/eugene/test/generator
by tchemit@users.nuiton.org 27 Nov '10
by tchemit@users.nuiton.org 27 Nov '10
27 Nov '10
Author: tchemit
Date: 2010-11-27 16:55:17 +0100 (Sat, 27 Nov 2010)
New Revision: 1002
Url: http://nuiton.org/repositories/revision/eugene/1002
Log:
- Anomalie #1105: Clone classifier is not correct and can't work...
- Anomalie #1106: Transformer api is not correct (can not use the previous transformer in the applyTemplate method)
- Evolution #1107: Improve MetaTransformer api
- improve @author on my files
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/AbstractMetaTransformer.java
trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/AnnotationsManager.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/AnnotationsManagerExtension.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilder.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/it/smart-generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/AbstractMetaTransformer.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/AbstractMetaTransformer.java 2010-11-26 17:24:18 UTC (rev 1001)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/AbstractMetaTransformer.java 2010-11-27 15:55:17 UTC (rev 1002)
@@ -25,26 +25,25 @@
package org.nuiton.eugene;
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.nuiton.eugene.models.Model;
import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
/**
* Abstract meta transformer which contains some templates to apply to an
* incoming model.
- *
+ * <p/>
* Using the {@link #getExcludeTemplates()} to restrict use of some templates.
- *
+ * <p/>
* Created: 20 déc. 2009
*
+ * @author tchemit <chemit(a)codelutin.com>
* @param <M> type of Model
- *
- * @author Tony Chemit <chemit(a)codelutin.com>
* @since 2.0.0
*/
public abstract class AbstractMetaTransformer<M extends Model> extends AbstractGenerator<M> {
@@ -52,30 +51,132 @@
private static final Log log =
LogFactory.getLog(AbstractMetaTransformer.class);
- private final Class<? extends Template<M>>[] transformers;
+ /**
+ * Transformers to apply before using templates.
+ * <p/>
+ * It will replace each time the input model by the generated output model.
+ *
+ * @since 2.2.1
+ */
+ protected Class<? extends Transformer<M, M>>[] transformerTypes;
+ /**
+ * Templates to apply to the model.
+ *
+ * @since 2.2.1, replace the old transformers field.
+ */
+ protected Class<? extends Template<M>>[] templateTypes;
+
+ protected AbstractMetaTransformer() {
+ }
+
+ /**
+ * @param templateTypes templates to apply on model
+ * @deprecated since 2.2.1, prefer use the default constructor, the invoke
+ * setters {@link #setTemplateTypes(Class[])} and
+ * {@link #setTransformerTypes(Class[])}.
+ */
+ @Deprecated
public AbstractMetaTransformer(
- Class<? extends Template<M>>... transformers) {
- this.transformers = transformers;
+ Class<? extends Template<M>>... templateTypes) {
+ this.templateTypes = templateTypes;
}
+ /**
+ * Validates the incoming given {@code model}.
+ *
+ * <b>Note :</b> If model is not valid, then nothing will be apply on the model
+ * (no transformer nor templates) in the {@link #applyTemplate(Model, File)}.
+ *
+ * @param model the incoming model to validate
+ * @return {@code true} if model is valid, {@code false} otherwise.
+ */
protected abstract boolean validateModel(M model);
+ public Class<? extends Transformer<M, M>>[] getTransformerTypes() {
+ return transformerTypes;
+ }
+
+ public Class<? extends Template<M>>[] getTemplateTypes() {
+ return templateTypes;
+ }
+
+ public void setTransformerTypes(Class<? extends Transformer<M, M>>... transformerTypes) {
+ this.transformerTypes = transformerTypes;
+ }
+
+ public void setTemplateTypes(Class<? extends Template<M>>... templateTypes) {
+ this.templateTypes = templateTypes;
+ }
+
@Override
public void applyTemplate(M model, File destDir) throws IOException {
boolean isValid = validateModel(model);
if (!isValid) {
- //On n'empeche pas la génération si le modèle n'est pas valide
-
+ // Can not generate is model is not valid
return;
}
- List<Template<M>> templates = getTemplates();
+ // obtain transformers instances
+ List<Transformer<M, M>> transformers =
+ getInstances(getTransformerTypes());
+ // transforme model to obtain the final model used by templates
+ M currentModel = applyTransformers(model, transformers);
+
+ // obtains templates instances
+ List<Template<M>> templates = getInstances(getTemplateTypes());
+
+ // apply templates to model
+ applyTemplates(currentModel, templates, destDir);
+ }
+
+ /**
+ * given an incoming {@code model}, chain transformations of the mode
+ * using the given {@code transformers}.
+ *
+ * Will aplly the transformers in the order given by the list, using as
+ * incoming model to a transformer the last (or incoming for the first transformer)
+ * model.
+ *
+ * @param model incoming model to transform
+ * @param transformers list of transformers to apply to the model
+ * @return the final transformed model
+ * @since 2.2.1
+ */
+ protected M applyTransformers(M model,
+ List<? extends Transformer<M, M>> transformers) {
+ M currentModel = model;
+ for (Transformer<M, M> template : transformers) {
+ if (log.isDebugEnabled()) {
+ log.debug("call transformer : " +
+ template.getClass().getSimpleName());
+ }
+ // transform from the current model
+ template.transform(currentModel);
+
+ // current model become the transformed model
+ currentModel = template.getOutputModel();
+ }
+ return currentModel;
+ }
+
+ /**
+ * Generates to the given {@code destination directory} using the given
+ * templates on the incoming given {@code model}.
+ *
+ * @param model the incoming model to be used by templates
+ * @param templates templates to apply the incoming model
+ * @param destDir the destination directory where to generate
+ * @throws IOException if any IO errors while generating files
+ * @since 2.2.1
+ */
+ protected void applyTemplates(M model,
+ List<? extends Template<M>> templates,
+ File destDir) throws IOException {
for (Template<M> template : templates) {
- // log
if (log.isDebugEnabled()) {
log.debug("call template : " +
template.getClass().getSimpleName());
@@ -84,9 +185,57 @@
}
}
+ protected <T extends Template<M>> List<T> getInstances(Class<? extends T>[] types) {
+ List<T> result = new ArrayList<T>();
+ if (types != null) {
+ for (Class<? extends T> generatorClass : types) {
+ T generator;
+ if (getExcludeTemplates().contains(generatorClass.getName())) {
+
+ // exclude generator
+ if (log.isInfoEnabled()) {
+ log.info("exclude generator " + generatorClass);
+ }
+ continue;
+ }
+
+ // instanciate the template
+ try {
+ generator = generatorClass.newInstance();
+
+ // init template
+ generator.setConfiguration(getConfiguration());
+
+ if (generator instanceof AbstractGenerator) {
+ ((AbstractGenerator) generator).setParent(this);
+ }
+// if (generator instanceof Transformer) {
+// generator.setProperties(properties);
+// }
+
+ // will use it
+ result.add(generator);
+ } catch (Exception e) {
+
+ if (log.isErrorEnabled()) {
+ log.error("Could not instanciate template " +
+ generatorClass, e);
+ }
+ throw new RuntimeException(e);
+ }
+ }
+ }
+ return result;
+ }
+
+ /**
+ * @return the instances of templates to apply to the model.
+ * @deprecated since 2.2.1, prefer use the {@link #getInstances(Class[])}
+ */
+ @Deprecated
protected List<Template<M>> getTemplates() {
List<Template<M>> result = new ArrayList<Template<M>>();
- for (Class<? extends Template<M>> generatorClass : getTransformers()) {
+ for (Class<? extends Template<M>> generatorClass : templateTypes) {
Template<M> generator;
if (getExcludeTemplates().contains(generatorClass.getName())) {
// exclude generator
@@ -101,7 +250,7 @@
// init template
generator.setConfiguration(getConfiguration());
-
+
if (generator instanceof AbstractGenerator) {
((AbstractGenerator<M>) generator).setParent(this);
}
@@ -122,7 +271,12 @@
return result;
}
+ /**
+ * @return the template types to apply
+ * @deprecated since 2.2.1, use the method {@link #getTemplateTypes()} instead.
+ */
+ @Deprecated
public Class<? extends Template<M>>[] getTransformers() {
- return transformers;
+ return templateTypes;
}
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2010-11-26 17:24:18 UTC (rev 1001)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2010-11-27 15:55:17 UTC (rev 1002)
@@ -28,6 +28,9 @@
import java.io.File;
import java.io.IOException;
import java.util.Properties;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
import org.nuiton.eugene.models.Model;
/**
@@ -42,6 +45,9 @@
public abstract class Transformer<I extends Model, O extends Model>
extends Template<I> {
+ /** Logger */
+ private static final Log log = LogFactory.getLog(Transformer.class);
+
/**
* Output generator, to generate files from Output model.
*
@@ -80,7 +86,10 @@
*/
protected void init(I model) {
this.model = model;
- previousTransformer = initPreviousTransformer();
+ // tchemit 2010-11-26 : this is not the good place to init a previous
+ // transformer : once coming here, we lost our chance to use the previousTransformer
+// previousTransformer = initPreviousTransformer();
+
outputTemplate = initOutputTemplate();
// build output template configuration
@@ -92,7 +101,7 @@
new DefaultTemplateConfiguration(properties);
// push back to outputPropertie the all configuration
- //FIXME tchemit 20100516 Should rethink this...
+ //FIXME tchemit 2010-05-16 Should rethink this...
outputProperties = properties;
outputTemplate.setConfiguration(outconfig);
@@ -168,16 +177,27 @@
*/
@Override
public void applyTemplate(I model, File destDir) throws IOException {
- // previous transformation
+
+ // init previous transformer
+ previousTransformer = initPreviousTransformer();
+
+ // previous transformation
if (previousTransformer != null) {
+
+ if (isVerbose()) {
+ log.info("Use previousTransformer " + previousTransformer);
+ }
// transformation only, no application of next template
previousTransformer.transform(model);
- // current transformation
+
+ // current transformation from the ouput model of previous transformer
transform(previousTransformer.getOutputModel());
} else {
- // current transformation
+
+ // current transformation directly from the incoming model
transform(model);
}
+
// after template application
getOutputTemplate().applyTemplate(getOutputModel(), destDir);
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/AnnotationsManager.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/AnnotationsManager.java 2010-11-26 17:24:18 UTC (rev 1001)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/AnnotationsManager.java 2010-11-27 15:55:17 UTC (rev 1002)
@@ -37,7 +37,7 @@
* <p/>
* Created: 17 déc. 2009
*
- * @author Tony Chemit <chemit(a)codelutin.com> Copyright Code Lutin
+ * @author tchemit <chemit(a)codelutin.com>
* @version $Revision$
* <p/>
* Mise a jour: $Date$ par :
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/AnnotationsManagerExtension.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/AnnotationsManagerExtension.java 2010-11-26 17:24:18 UTC (rev 1001)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/AnnotationsManagerExtension.java 2010-11-27 15:55:17 UTC (rev 1002)
@@ -36,7 +36,7 @@
/**
* Created: 17 déc. 2009
*
- * @author Tony Chemit <chemit(a)codelutin.com> Copyright Code Lutin
+ * @author tchemit <chemit(a)codelutin.com>
* @version $Revision$
* <p/>
* Mise a jour: $Date$ par :
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2010-11-26 17:24:18 UTC (rev 1001)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2010-11-27 15:55:17 UTC (rev 1002)
@@ -25,6 +25,7 @@
package org.nuiton.eugene.java;
+import org.apache.commons.collections.CollectionUtils;
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
@@ -369,6 +370,17 @@
}
/**
+ * Adds a navigable flag to the given {@code attribute}.
+ *
+ * @param attribute the attribute on which the navigable flag will be setted
+ * @param navigable the navigable flag to set
+ * @since 2.2.1
+ */
+ public void setNavigable(ObjectModelAttribute attribute, boolean navigable) {
+ builder.setNavigable(attribute, navigable);
+ }
+
+ /**
* Adds a comment to the given {@code element}.
*
* @param element the element on which the comment will be added.
@@ -451,9 +463,7 @@
addException(outputOperation, exception);
}
- for (Map.Entry<String, String> tagValue : source.getTagValues().entrySet()) {
- addTagValue(destination, tagValue.getKey(), tagValue.getValue());
- }
+ cloneTagValues(source, outputOperation);
return outputOperation;
}
@@ -474,7 +484,13 @@
ObjectModelClassifier destination,
boolean cloneDocumentation,
ObjectModelModifier... modifiers) {
- ObjectModelOperation outputOperation = cloneOperationSignature(source, destination, cloneDocumentation, modifiers);
+ ObjectModelOperation outputOperation = cloneOperationSignature(
+ source,
+ destination,
+ cloneDocumentation,
+ modifiers
+ );
+
setOperationBody(outputOperation, source.getBodyCode());
return outputOperation;
}
@@ -498,9 +514,7 @@
source.getName(), source.getType(),
source.getDefaultValue(), modifiers);
- for (Map.Entry<String, String> tagValue : source.getTagValues().entrySet()) {
- addTagValue(outputAttribute, tagValue.getKey(), tagValue.getValue());
- }
+ cloneTagValues(source, outputAttribute);
if (cloneDocumentation) {
setDocumentation(outputAttribute, source.getDocumentation());
@@ -512,9 +526,41 @@
setMinMultiplicity(outputAttribute, source.getMinMultiplicity());
setMaxMultiplicity(outputAttribute, source.getMaxMultiplicity());
+ setNavigable(outputAttribute,source.isNavigable());
return outputAttribute;
}
+
+ /**
+ * Copy all tag values fro the given {@code source} to the given
+ * {@code destination}.
+ *
+ * @param source the source element
+ * @param destination the destination element
+ * @since 2.2.1
+ */
+ protected void cloneTagValues(ObjectModelElement source,
+ ObjectModelElement destination) {
+ Map<String, String> tags = source.getTagValues();
+ for (Map.Entry<String, String> entry : tags.entrySet()) {
+ addTagValue(destination,entry.getKey(),entry.getValue());
+ }
+ }
+
+ /**
+ *
+ * @param source
+ * @param destination
+ * @since 2.2.1
+ */
+ protected void cloneStereotypes(ObjectModelClassifier source,
+ ObjectModelClassifier destination) {
+
+ Collection<String> stereotypes = source.getStereotypes();
+ for (String stereotype : stereotypes) {
+ addStereotype(destination,stereotype);
+ }
+ }
/**
* copy attributes, interfaces declartion and operation of a given classifier
@@ -526,14 +572,41 @@
* @link {@link #cloneClassifier(ObjectModelClassifier, boolean)}
*
* @param source the classifier to clone from the source model
- * @param destination
+ * @param destination where to clone the given source one
* @param copyDocumentation flag to add documentation if some found in model
* @since 2.1.2
+ * @deprecated since 2.2.1, prefer use the {@link #cloneClass(ObjectModelClass, boolean)} method
*/
+ @Deprecated
protected void copyClassifier(ObjectModelClassifier source,
ObjectModelClassifier destination,
boolean copyDocumentation) {
-
+
+ cloneClassifier(source, destination, copyDocumentation);
+ }
+
+ /**
+ * copy attributes, interfaces declartion and operation of a given classifier
+ * into another classifier.
+ *
+ * class-specific, enumeration-specific and interface-specific features
+ * of the given classifier <strong>will not</strong> be present in the clone.
+ * To copy those specific elements, use
+ * @link {@link #cloneClassifier(ObjectModelClassifier, boolean)}
+ *
+ * @param source the classifier to clone from the source model
+ * @param destination where to clone the given source one
+ * @param copyDocumentation flag to add documentation if some found in model
+ * @since 2.2.1
+ */
+ protected void cloneClassifier(ObjectModelClassifier source,
+ ObjectModelClassifier destination,
+ boolean copyDocumentation) {
+
+ cloneTagValues(source, destination);
+
+ cloneStereotypes(source, destination);
+
for (ObjectModelAttribute attribute : source.getAttributes()) {
cloneAttribute(attribute, destination, copyDocumentation);
}
@@ -547,6 +620,7 @@
}
}
+
/**
* creates a clone of the given {@code source} class in the output model
* and clones attributes, inheritence declarations and operations into the
@@ -559,9 +633,10 @@
*/
public ObjectModelClass cloneClass(ObjectModelClass source,
boolean cloneDocumentation) {
- ObjectModelClass outputClass = createClass(source.getName(),
- source.getPackageName());
- copyClassifier(source, outputClass, cloneDocumentation);
+ ObjectModelClass outputClass =
+ createClass(source.getName(), source.getPackageName());
+
+ cloneClassifier(source, outputClass, cloneDocumentation);
if (source.getSuperclasses().size() > 1) {
log.warn(source.getQualifiedName() + " has multiple inheritence, some of them will be ignored");
@@ -573,13 +648,15 @@
// TODO 20100812 bleny is there something to do with discriminator for superClass ?
}
- for (ObjectModelClassifier innerClassifier : source.getInnerClassifiers()) {
- ObjectModelClassifier innerClassifierClone = cloneClassifier(innerClassifier, cloneDocumentation);
- addInnerClassifier(outputClass,
- ObjectModelType.OBJECT_MODEL_CLASSIFIER,
- innerClassifierClone.getName());
+ if (!CollectionUtils.isEmpty(source.getInnerClassifiers())) {
+ for (ObjectModelClassifier classifier : source.getInnerClassifiers()) {
+ ObjectModelClassifier innerClassifierClone =
+ cloneClassifier(classifier, cloneDocumentation);
+ addInnerClassifier(outputClass,
+ ObjectModelType.OBJECT_MODEL_CLASSIFIER,
+ innerClassifierClone.getName());
+ }
}
-
return outputClass;
}
@@ -595,9 +672,10 @@
*/
public ObjectModelInterface cloneInterface(ObjectModelInterface source,
boolean cloneDocumentation) {
- ObjectModelInterface outputInterface = createInterface(source.getName(), source.getPackageName());
+ ObjectModelInterface outputInterface =
+ createInterface(source.getName(), source.getPackageName());
- copyClassifier(source, outputInterface, cloneDocumentation);
+ cloneClassifier(source, outputInterface, cloneDocumentation);
// nothing more to do. copyClassifier already done the job
return outputInterface;
@@ -618,7 +696,7 @@
ObjectModelEnumeration outputEnumeration =
createEnumeration(source.getName(), source.getPackageName());
- copyClassifier(source, outputEnumeration, cloneDocumentation);
+ cloneClassifier(source, outputEnumeration, cloneDocumentation);
for (String literal : source.getLiterals()) {
addLiteral(outputEnumeration, literal);
@@ -759,7 +837,7 @@
addI18n(buffer, i18nPrefix, Introspector.decapitalize(input.getName()));
boolean useI18n = false;
for (ObjectModelAttribute attr : input.getAttributes()) {
- //TC-20100225 only treate navigable relations
+ //tchemit-20100225 only treate navigable relations
if (attr.isNavigable()) {
useI18n=true;
addI18n(buffer,
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilder.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilder.java 2010-11-26 17:24:18 UTC (rev 1001)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilder.java 2010-11-27 15:55:17 UTC (rev 1002)
@@ -686,4 +686,17 @@
impl.setMaxMultiplicity(multiplicity);
}
+
+ /**
+ * Set the navigable flag of an attribute in the model.
+ *
+ * @param attribute where the navigable flag will be setted
+ * @param navigable navigable flag value to set
+ * @since 2.2.1
+ */
+ public void setNavigable(ObjectModelAttribute attribute,
+ boolean navigable) {
+ ObjectModelAttributeImpl impl = (ObjectModelAttributeImpl) attribute;
+ impl.setNavigable(navigable);
+ }
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterEntry.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterEntry.java 2010-11-26 17:24:18 UTC (rev 1001)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedFileWriterEntry.java 2010-11-27 15:55:17 UTC (rev 1002)
@@ -32,7 +32,7 @@
* <p/>
* Created: 04 mars. 2010
*
- * @author Tony Chemit <chemit(a)codelutin.com> Copyright Code Lutin
+ * @author tchemit <chemit(a)codelutin.com>
* @version $Revision$
* @since 2.0.0
*/
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedWriterEngine.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedWriterEngine.java 2010-11-26 17:24:18 UTC (rev 1001)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/writer/ChainedWriterEngine.java 2010-11-27 15:55:17 UTC (rev 1002)
@@ -40,7 +40,7 @@
* <p/>
* Created: 17 déc. 2009
*
- * @author Tony Chemit <chemit(a)codelutin.com> Copyright Code Lutin
+ * @author tchemit <chemit(a)codelutin.com>
* @version $Revision$
* @since 2.0.0
*/
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/writer/DefaultChainedWriterEngine.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/writer/DefaultChainedWriterEngine.java 2010-11-26 17:24:18 UTC (rev 1001)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/writer/DefaultChainedWriterEngine.java 2010-11-27 15:55:17 UTC (rev 1002)
@@ -48,7 +48,7 @@
* <p/>
* Created: 17 déc. 2009
*
- * @author Tony Chemit <chemit(a)codelutin.com> Copyright Code Lutin
+ * @author tchemit <chemit(a)codelutin.com>
* @version $Id$
* @plexus.component role="org.nuiton.eugene.writer.ChainedWriterEngine" role-hint="default"
* @since 2.0.0
Modified: trunk/maven-eugene-plugin/src/it/smart-generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java
===================================================================
--- trunk/maven-eugene-plugin/src/it/smart-generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java 2010-11-26 17:24:18 UTC (rev 1001)
+++ trunk/maven-eugene-plugin/src/it/smart-generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java 2010-11-27 15:55:17 UTC (rev 1002)
@@ -46,7 +46,7 @@
*
* Created: 17 avril 2009
*
-* @author tony Chemit <chemit(a)codelutin.com>
+* @author tchemit <chemit(a)codelutin.com>
* @version $Revision$
*
* Mise a jour: $Date$
1
0