Eugene-commits
Threads by month
- ----- 2026 -----
- June
- May
- April
- March
- February
- January
- ----- 2025 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2010 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2009 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2008 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2007 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2006 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2005 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2004 -----
- December
- November
- October
- September
- August
- 1738 discussions
Author: sletellier
Date: 2010-12-23 11:15:33 +0100 (Thu, 23 Dec 2010)
New Revision: 1025
Url: http://nuiton.org/repositories/revision/eugene/1025
Log:
Pass to i18n and nuiton-utils to release version
Modified:
trunk/pom.xml
Modified: trunk/pom.xml
===================================================================
--- trunk/pom.xml 2010-12-15 08:25:43 UTC (rev 1024)
+++ trunk/pom.xml 2010-12-23 10:15:33 UTC (rev 1025)
@@ -379,8 +379,8 @@
<projectId>eugene</projectId>
<processorPluginVersion>1.0.4</processorPluginVersion>
- <nuitonUtilsVersion>1.5.2-SNAPSHOT</nuitonUtilsVersion>
- <nuitonI18nVersion>2.0</nuitonI18nVersion>
+ <nuitonUtilsVersion>1.5.2</nuitonUtilsVersion>
+ <nuitonI18nVersion>2.0.1</nuitonI18nVersion>
<!--Multilanguage maven-site -->
<locales>en,fr</locales>
1
0
Author: tchemit
Date: 2010-12-15 09:25:43 +0100 (Wed, 15 Dec 2010)
New Revision: 1024
Url: http://nuiton.org/repositories/revision/eugene/1024
Log:
remove apache license on settings.xml
Modified:
trunk/maven-eugene-plugin/src/it/settings.xml
Modified: trunk/maven-eugene-plugin/src/it/settings.xml
===================================================================
--- trunk/maven-eugene-plugin/src/it/settings.xml 2010-12-11 19:56:37 UTC (rev 1023)
+++ trunk/maven-eugene-plugin/src/it/settings.xml 2010-12-15 08:25:43 UTC (rev 1024)
@@ -24,26 +24,6 @@
#L%
-->
-
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements. See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership. The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License. You may obtain a copy of the License at
-
- http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied. See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-
<settings>
<profiles>
1
0
r1023 - in trunk: eugene/src/main/java/org/nuiton/eugene eugene/src/main/java/org/nuiton/eugene/models/object eugene/src/test/java/org/nuiton/eugene maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer
by tchemit@users.nuiton.org 11 Dec '10
by tchemit@users.nuiton.org 11 Dec '10
11 Dec '10
Author: tchemit
Date: 2010-12-11 20:56:37 +0100 (Sat, 11 Dec 2010)
New Revision: 1023
Url: http://nuiton.org/repositories/revision/eugene/1023
Log:
improve use of ModelPropertiesProvider
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java
trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/SmartGenerateMojo.java
trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2010-12-11 17:01:02 UTC (rev 1022)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2010-12-11 19:56:37 UTC (rev 1023)
@@ -1,3 +1,27 @@
+/*
+ * #%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;
@@ -52,9 +76,30 @@
}
/**
+ * Obtain a new store of tag values and stereotypes.
+ *
+ * @param providers the list of providers to use in the store
+ * @param verbose a verbose flag
+ * @return the aggregate store of all atomic one detected in the class-path
+ */
+ public static ModelPropertiesProvider newStore(Iterable<ModelPropertiesProvider> providers,
+ boolean verbose) {
+
+ ModelPropertiesProvider store = new AggregateModelPropertiesProvider(providers);
+ store.setVerbose(verbose || log.isDebugEnabled());
+ try {
+ store.init();
+ } catch (Exception e) {
+ throw new RuntimeException("Could not init store of tag values and stereotypes", e);
+ }
+ return store;
+ }
+
+ /**
* The Eugene provider of tag values and stereotypes.
*
* @author tchemit <chemit(a)codelutin.com>
+ * @plexus.component role="org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider" role-hint="eugene"
* @since 2.3
*/
public static class EugeneModelPropertiesProvider extends ModelPropertiesProvider {
@@ -77,16 +122,25 @@
protected ClassLoader loader;
+ private Iterable<ModelPropertiesProvider> providers;
+
public AggregateModelPropertiesProvider(ClassLoader loader) {
this.loader = loader;
}
+ public AggregateModelPropertiesProvider(Iterable<ModelPropertiesProvider> providers) {
+ this.providers = providers;
+ }
+
@Override
public void init() throws Exception {
- ServiceLoader<ModelPropertiesProvider> loader;
- loader = ServiceLoader.load(ModelPropertiesProvider.class,
- this.loader);
- for (ModelPropertiesProvider provider : loader) {
+
+ if (providers == null) {
+
+ providers = ServiceLoader.load(ModelPropertiesProvider.class, loader);
+ }
+
+ for (ModelPropertiesProvider provider : providers) {
if (isVerbose()) {
log.info("Will init model properties provider " + provider);
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2010-12-11 17:01:02 UTC (rev 1022)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2010-12-11 19:56:37 UTC (rev 1023)
@@ -37,9 +37,9 @@
* <p/>
* Created: 26 oct. 2009
*
+ * @param <M> Model to create from reading input files
* @author fdesbois <fdesbois(a)codelutin.com>
* @version $Id$
- * @param <M> Model to create from reading input files
*/
public abstract class ModelReader<M extends Model> {
@@ -65,11 +65,11 @@
protected boolean strictLoading;
/**
- * The classloader to use to obtain {@link ModelPropertiesUtil.ModelPropertiesProvider}.
+ * The provider of safe tag values and stereotypes.
*
* @since 2.3
*/
- protected ClassLoader loader;
+ protected ModelPropertiesUtil.ModelPropertiesProvider modelPropertiesProvider;
public boolean isVerbose() {
return verbose;
@@ -87,14 +87,6 @@
this.strictLoading = strictLoading;
}
- public ClassLoader getLoader() {
- return loader;
- }
-
- public void setLoader(ClassLoader loader) {
- this.loader = loader;
- }
-
protected void setLastModifiedSource(File... files) {
for (File file : files) {
if (file.lastModified() > getLastModifiedSource()) {
@@ -123,4 +115,21 @@
*/
public abstract M read(File... file) throws IOException;
+ /**
+ * @return the provider of controled tagvalues and stereotypes.
+ * @since 2.3
+ */
+ public ModelPropertiesUtil.ModelPropertiesProvider getModelPropertiesProvider() {
+ return modelPropertiesProvider;
+ }
+
+ /**
+ * Sets the provider of tag values and stereotypes availables.
+ *
+ * @param modelPropertiesProvider the provider to use
+ * @since 2.3
+ */
+ public void setModelPropertiesProvider(ModelPropertiesUtil.ModelPropertiesProvider modelPropertiesProvider) {
+ this.modelPropertiesProvider = modelPropertiesProvider;
+ }
}
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-12-11 17:01:02 UTC (rev 1022)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2010-12-11 19:56:37 UTC (rev 1023)
@@ -109,8 +109,6 @@
public static final String MODEL = "model";
- ModelPropertiesUtil.ModelPropertiesProvider propertiesProvider;
-
/**
* @param files les noms des fichiers existant contenant du XML représentant
* des ObjectModel. Il est automatiquement recherche un fichier de
@@ -125,6 +123,13 @@
" for files " + Arrays.toString(files));
}
+ if (modelPropertiesProvider == null) {
+ if (log.isWarnEnabled()) {
+ log.warn("No properties provider filled, will instanciate a new default one");
+ }
+ setModelPropertiesProvider(ModelPropertiesUtil.newStore(getClass().getClassLoader(), false));
+ }
+
ObjectModel model = new ObjectModelImpl();
// Digester parser configuration
@@ -200,11 +205,9 @@
return result;
}
- public Properties loadModelProperties(File propFile, ObjectModel model) throws IOException {
+ public Properties loadModelProperties(File propFile,
+ ObjectModel model) throws IOException {
- // init ModelProperties store
- propertiesProvider = ModelPropertiesUtil.newStore(getLoader(), isVerbose());
-
Properties prop = new RecursiveProperties();
// try {
FileInputStream inStream = new FileInputStream(propFile);
@@ -288,14 +291,14 @@
}
String tag = matcher.group(2);
- boolean safe = propertiesProvider.containsTagValue(tag);
+ boolean safe = modelPropertiesProvider.containsTagValue(tag);
if (!safe) {
if (log.isWarnEnabled()) {
log.warn("Invalid model tag value [" + key + "] : the tagvalue '" + tag + "' is unkown.");
}
} else {
- safe = propertiesProvider.acceptTagValue(tag, ObjectModel.class);
+ safe = modelPropertiesProvider.acceptTagValue(tag, ObjectModel.class);
if (!safe) {
@@ -347,7 +350,7 @@
// target real type
Class<?> targetType = getTargetType(target);
- boolean safe = propertiesProvider.containsStereotype(value);
+ boolean safe = modelPropertiesProvider.containsStereotype(value);
if (!safe) {
@@ -357,7 +360,7 @@
}
} else {
- safe = propertiesProvider.acceptStereotype(value, targetType);
+ safe = modelPropertiesProvider.acceptStereotype(value, targetType);
if (!safe) {
@@ -451,7 +454,7 @@
+ " type:" + type + " tag:" + tag);
}
- boolean safe = propertiesProvider.containsTagValue(tag);
+ boolean safe = modelPropertiesProvider.containsTagValue(tag);
if (!safe) {
@@ -461,7 +464,7 @@
}
} else {
- safe = propertiesProvider.acceptTagValue(tag, targetType);
+ safe = modelPropertiesProvider.acceptTagValue(tag, targetType);
if (!safe) {
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java 2010-12-11 17:01:02 UTC (rev 1022)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java 2010-12-11 19:56:37 UTC (rev 1023)
@@ -1,3 +1,27 @@
+/*
+ * #%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.junit.Assert;
Modified: trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/SmartGenerateMojo.java
===================================================================
--- trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/SmartGenerateMojo.java 2010-12-11 17:01:02 UTC (rev 1022)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/SmartGenerateMojo.java 2010-12-11 19:56:37 UTC (rev 1023)
@@ -32,6 +32,7 @@
import org.apache.maven.project.MavenProject;
import org.apache.maven.settings.Settings;
import org.nuiton.eugene.DefaultTemplateConfiguration;
+import org.nuiton.eugene.ModelPropertiesUtil;
import org.nuiton.eugene.ModelReader;
import org.nuiton.eugene.Template;
import org.nuiton.eugene.models.Model;
@@ -261,7 +262,7 @@
* @since 1.0.0-rc-8
*/
protected String generatedPackages;
-
+
/**
* List of package to extract from xmi to models. (model input specific).
* <p/>
@@ -320,6 +321,14 @@
protected Map<String, Template<?>> modelTemplates;
/**
+ * All available model properties providers introspects via plexus
+ *
+ * @component role="org.nuiton.eugene.ModelPropertiesUtil$ModelPropertiesProvider"
+ * @since 2.3
+ */
+ protected Map<String, ModelPropertiesUtil.ModelPropertiesProvider> modelPropertiesProviders;
+
+ /**
* The engine to compute {@link ChainedFileWriter} from inputs entries.
*
* @component role="org.nuiton.eugene.writer.ChainedWriterEngine"
@@ -421,6 +430,8 @@
properties.put(ModelChainedFileWriter.PROP_TEMPLATES, templates);
properties.put(ModelChainedFileWriter.PROP_EXCLUDE_TEMPLATES,
getExcludeTemplatesAsString());
+ properties.put(ModelChainedFileWriter.PROP_MODEL_PROPERTIES_PROVIDER,
+ getModelPropertiesProvider());
DefaultTemplateConfiguration configuration =
new DefaultTemplateConfiguration();
@@ -500,7 +511,7 @@
// launch generation
writer.generate(this, data);
-
+
String message = reportGeneratedFiles(writer, t0);
getLog().info(message);
@@ -838,4 +849,28 @@
}
}
}
+
+ protected ModelPropertiesUtil.ModelPropertiesProvider getModelPropertiesProvider() throws MojoExecutionException {
+
+ ModelPropertiesUtil.ModelPropertiesProvider provider;
+
+ if (modelPropertiesProviders == null ||
+ modelPropertiesProviders.isEmpty() ||
+ isTestPhase()) {
+
+ // could not find any model properties via plexus
+ // try to obtain them by ServiceLoader
+
+ provider = ModelPropertiesUtil.newStore(
+ getFixedClassLoader(),
+ verbose
+ );
+ } else {
+ provider = ModelPropertiesUtil.newStore(
+ modelPropertiesProviders.values(),
+ verbose
+ );
+ }
+ return provider;
+ }
}
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-12-11 17:01:02 UTC (rev 1022)
+++ trunk/maven-eugene-plugin/src/main/java/org/nuiton/eugene/plugin/writer/ModelChainedFileWriter.java 2010-12-11 19:56:37 UTC (rev 1023)
@@ -27,6 +27,7 @@
import org.apache.commons.lang.StringUtils;
import org.nuiton.eugene.DefaultTemplateConfiguration;
+import org.nuiton.eugene.ModelPropertiesUtil;
import org.nuiton.eugene.ModelReader;
import org.nuiton.eugene.Template;
import org.nuiton.eugene.TemplateConfiguration;
@@ -63,6 +64,8 @@
public static final String PROP_MODEL_READER = "modelReader";
+ public static final String PROP_MODEL_PROPERTIES_PROVIDER = "modelPropertiesProvider";
+
public static final String PROP_READER = "reader";
public static final String PROP_TEMPLATE_CONFIGURATION = "templateConfiguration";
@@ -76,7 +79,8 @@
PROP_MODEL_READER, "modelReader",
PROP_GENERATED_PACKAGES, "generatedPackages",
PROP_DEFAULT_PACKAGE, "defaultPackage",
- PROP_TEMPLATE_CONFIGURATION, "templateConfiguration"
+ PROP_TEMPLATE_CONFIGURATION, "templateConfiguration",
+ PROP_MODEL_PROPERTIES_PROVIDER, "modelPropertiesProvider"
);
}
@@ -162,12 +166,17 @@
return getProperty(PROP_READER, String.class);
}
+ protected ModelPropertiesUtil.ModelPropertiesProvider getModelPropertiesProvider() {
+ return getProperty(PROP_MODEL_PROPERTIES_PROVIDER, ModelPropertiesUtil.ModelPropertiesProvider .class);
+ }
+
@Override
protected void initWriter(ChainedFileWriterConfiguration configuration) {
super.initWriter(configuration);
// obtain a reader
- ClassLoader loader = configuration.getClassLoader();
+ ClassLoader classLoader = configuration.getClassLoader();
+ ClassLoader loader = classLoader;
if (getModelReader() == null) {
if (getReader() != null) {
@@ -201,13 +210,23 @@
boolean verbose = configuration.isVerbose();
+ // gets the provider of safe tag values and stereotypes
+ ModelPropertiesUtil.ModelPropertiesProvider propertiesProvider =
+ getModelPropertiesProvider();
+
+ // affect it to the model reader
+ getModelReader().setModelPropertiesProvider(propertiesProvider);
+
+ // set the verbose level of the model reader
+ getModelReader().setVerbose(verbose);
+
Properties templateProperties = new Properties();
templateProperties.put(Template.PROP_DEFAULT_PACKAGE, getDefaultPackage());
templateProperties.put(Template.PROP_ENCODING, configuration.getEncoding());
templateProperties.put(Template.PROP_VERBOSE, verbose);
templateProperties.put(Template.PROP_OVERWRITE, configuration.isOverwrite());
- templateProperties.put(Template.PROP_CLASS_LOADER, configuration.getClassLoader());
+ templateProperties.put(Template.PROP_CLASS_LOADER, loader);
templateProperties.put(Template.PROP_EXCLUDE_TEMPLATES, configuration.getProperties().get(PROP_EXCLUDE_TEMPLATES));
String generatedPackages = getGeneratedPackages();
@@ -280,9 +299,8 @@
getLog().info("Will read " + filesToRead.length + " model(s).");
}
- getModelReader().setVerbose(configuration.isVerbose());
- getModelReader().setLoader(configuration.getClassLoader());
+
// read memory model from all files models
Model model = getModelReader().read(filesToRead);
1
0
r1022 - in trunk/eugene/src/main/java/org/nuiton/eugene: . models/object/xml
by tchemit@users.nuiton.org 11 Dec '10
by tchemit@users.nuiton.org 11 Dec '10
11 Dec '10
Author: tchemit
Date: 2010-12-11 18:01:02 +0100 (Sat, 11 Dec 2010)
New Revision: 1022
Url: http://nuiton.org/repositories/revision/eugene/1022
Log:
Evolution #1147: Add ordered stereotype on attribute + improve some codes
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java
trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java 2010-11-29 13:16:08 UTC (rev 1021)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java 2010-12-11 17:01:02 UTC (rev 1022)
@@ -58,4 +58,14 @@
*/
@StereotypeDefinition(target = ObjectModelAttribute.class)
String STEREOTYPE_INDEXED = "indexed";
+
+ /**
+ * Stéréotype pour les attributs à ordonner.
+ *
+ * @see GeneratorUtil#hasOrderedStereotype(ObjectModelAttribute)
+ * @since 2.3
+ */
+ @StereotypeDefinition(target = ObjectModelAttribute.class)
+ String STEREOTYPE_ORDERED = "ordered";
+
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2010-11-29 13:16:08 UTC (rev 1021)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2010-12-11 17:01:02 UTC (rev 1022)
@@ -751,20 +751,33 @@
* @param attribute attribute to test
* @return {@code true} if stereotype was found, {@code false otherwise}
* @see EugeneStereoTypes#STEREOTYPE_INDEXED
- * @since 2.5
+ * @since 2.3
*/
public static boolean hasIndexedStereotype(ObjectModelAttribute attribute) {
return attribute.hasStereotype(EugeneStereoTypes.STEREOTYPE_INDEXED);
}
/**
+ * Check if the given attribute has the
+ * {@link EugeneStereoTypes#STEREOTYPE_ORDERED} stereotype.
+ *
+ * @param attribute attribute to test
+ * @return {@code true} if stereotype was found, {@code false otherwise}
+ * @see EugeneStereoTypes#STEREOTYPE_ORDERED
+ * @since 2.3
+ */
+ public static boolean hasOrderedStereotype(ObjectModelAttribute attribute) {
+ return attribute.hasStereotype(EugeneStereoTypes.STEREOTYPE_ORDERED);
+ }
+
+ /**
* Obtain the value of the {@link EugeneTagValues#TAG_DOCUMENTATION}
* tag value on the given model.
*
* @param model model to seek
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see EugeneTagValues#TAG_DOCUMENTATION
- * @since 2.5
+ * @since 2.3
*/
public static String getDocumentationTagValue(ObjectModel model) {
String value = findTagValue(EugeneTagValues.TAG_DOCUMENTATION, null, model);
@@ -778,7 +791,7 @@
* @param element element to seek
* @return the none empty value of the found tag value or {@code null} if not found nor empty.
* @see EugeneTagValues#TAG_DOCUMENTATION
- * @since 2.5
+ * @since 2.3
*/
public static String getDocumentationTagValue(ObjectModelElement element) {
String value = findTagValue(EugeneTagValues.TAG_DOCUMENTATION, element, null);
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java 2010-11-29 13:16:08 UTC (rev 1021)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java 2010-12-11 17:01:02 UTC (rev 1022)
@@ -25,6 +25,8 @@
package org.nuiton.eugene.models.object.xml;
+import org.apache.commons.lang.StringUtils;
+import org.nuiton.eugene.EugeneStereoTypes;
import org.nuiton.eugene.GeneratorUtil;
import org.nuiton.eugene.java.JavaGeneratorUtil;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
@@ -44,6 +46,12 @@
public class ObjectModelAttributeImpl extends ObjectModelParameterImpl
implements ObjectModelAttribute {
+ public static final String ATTRIBUTE_TYPE_AGGREGATE = "aggregate";
+
+ public static final String ATTRIBUTE_TYPE_SHARED = "shared";
+
+ public static final String ATTRIBUTE_TYPE_COMPOSITE = "composite";
+
protected String reverseAttributeName;
protected int reverseMaxMultiplicity = -1;
protected String associationType;
@@ -101,7 +109,8 @@
*/
@Override
public boolean isAggregate() {
- return "aggregate".equals(associationType) || "shared".equals(associationType);
+ return ATTRIBUTE_TYPE_AGGREGATE.equals(associationType) ||
+ ATTRIBUTE_TYPE_SHARED.equals(associationType);
}
/**
@@ -112,7 +121,7 @@
*/
@Override
public boolean isComposite() {
- return "composite".equals(associationType);
+ return ATTRIBUTE_TYPE_COMPOSITE.equals(associationType);
}
@Override
@@ -168,7 +177,7 @@
@Override
public String getReverseAttributeName() {
- if (reverseAttributeName == null || "".equals(reverseAttributeName)) {
+ if (StringUtils.isEmpty(reverseAttributeName)) {
reverseAttributeName = GeneratorUtil
.toLowerCaseFirstLetter(getDeclaringElement().getName());
}
@@ -177,7 +186,7 @@
@Override
public String getName() {
- if ((name == null || "".equals(name)) && getClassifier() != null) {
+ if (StringUtils.isEmpty(name) && getClassifier() != null) {
name = GeneratorUtil.toLowerCaseFirstLetter(getClassifier()
.getName());
}
@@ -238,6 +247,14 @@
return navigable;
}
+ @Override
+ public ObjectModelImplRef addStereotype(ObjectModelImplRef stereotype) {
+ String stereotypeName = stereotype.getName();
+ if (EugeneStereoTypes.STEREOTYPE_ORDERED.equals(stereotypeName)) {
+ setOrdered(true);
+ }
+ return super.addStereotype(stereotype);
+ }
/**
* FIXME tchemit 2010-11-28 Why the ordered flag may be indexed ? This is two distinct concepts ?
*/
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java 2010-11-29 13:16:08 UTC (rev 1021)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java 2010-12-11 17:01:02 UTC (rev 1022)
@@ -203,6 +203,10 @@
public void addTagValue(String tagValue, String value) {
String oldValue = getTagValue(tagValue);
if (StringUtils.isNotEmpty(oldValue)) {
+ if (oldValue.equals(value)) {
+ // same tag value do not replace it
+ return;
+ }
log.warn("Replace tagValue '" + tagValue + "' (old:" + oldValue + ", new: " + value + ")");
}
tagValues.put(tagValue, value);
1
0
r1021 - trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml
by tchemit@users.nuiton.org 29 Nov '10
by tchemit@users.nuiton.org 29 Nov '10
29 Nov '10
Author: tchemit
Date: 2010-11-29 14:16:08 +0100 (Mon, 29 Nov 2010)
New Revision: 1021
Url: http://nuiton.org/repositories/revision/eugene/1021
Log:
do not log change of model tag value when value is the same
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java 2010-11-29 13:07:18 UTC (rev 1020)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java 2010-11-29 13:16:08 UTC (rev 1021)
@@ -514,7 +514,7 @@
*/
public void addTagValue(String tagValue, String value) {
String oldValue = getTagValue(tagValue);
- if (StringUtils.isNotEmpty(oldValue)) {
+ if (StringUtils.isNotEmpty(oldValue) && !oldValue.equals(value)) {
if (log.isWarnEnabled()) {
log.warn("Replace tagValue '" + tagValue + "' (old:" +
oldValue + ", new: " + value + ")");
1
0
Author: tchemit
Date: 2010-11-29 14:07:18 +0100 (Mon, 29 Nov 2010)
New Revision: 1020
Url: http://nuiton.org/repositories/revision/eugene/1020
Log:
Evolution #1119: Move all java extension to package extension
Implements check on tag values and stereotypes in ObjectModelReader
clean tests
Added:
trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/AnnotationsManager.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/AnnotationsManagerExtension.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/CodesManager.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/CodesManagerExtension.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ConstantsManager.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ConstantsManagerExtension.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ImportsManager.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ImportsManagerExtension.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/package-info.java
trunk/eugene/src/test/java/org/nuiton/eugene/java/extension/
trunk/eugene/src/test/java/org/nuiton/eugene/java/extension/ImportsManagerExtensionTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/java/extension/ImportsManagerTest.java
Removed:
trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerTest.java
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java
trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.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/CodesManager.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/CodesManagerExtension.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/ConstantsManager.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/ConstantsManagerExtension.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManager.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManagerExtension.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java
trunk/eugene/src/main/java/org/nuiton/eugene/java/package-info.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java
trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.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/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/ModelPropertiesUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2010-11-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -28,7 +28,7 @@
/**
* Obtain a new store of tag values and stereotypes.
*
- * @param loader the classloader to use (if none given will use the one of the current thread)
+ * @param loader the classloader to use (if none given will use the one of the current thread)
* @param verbose a verbose flag
* @return the aggregate store of all atomic one detected in the class-path
*/
@@ -256,6 +256,56 @@
return result;
}
+ public boolean containsTagValue(String tagValueName) {
+ boolean b = tagValueStore.containsKey(tagValueName);
+ return b;
+ }
+
+ public boolean containsStereotype(String stereotypeName) {
+ boolean b = stereotypeStore.containsKey(stereotypeName);
+ return b;
+ }
+
+ public boolean acceptTagValue(String tagValueName, Class<?> type) {
+ if (!containsTagValue(tagValueName)) {
+
+ // unknown
+ return false;
+ }
+
+ Class<?>[] tagValueTarget = getTagValueTarget(tagValueName);
+
+ for (Class<?> target : tagValueTarget) {
+ if (target.equals(type) || target.isAssignableFrom(type)) {
+
+ // found one accepting target
+ return true;
+ }
+ }
+
+ // no target found
+ return false;
+ }
+
+ public boolean acceptStereotype(String stereotypeName, Class<?> type) {
+ if (!containsStereotype(stereotypeName)) {
+
+ // unknown
+ return false;
+ }
+
+ Class<?>[] tagValueTarget = getStereotypeTarget(stereotypeName);
+ for (Class<?> target : tagValueTarget) {
+ if (target.equals(type) || target.isAssignableFrom(type)) {
+
+ // found one accepting target
+ return true;
+ }
+ }
+
+ // no target found
+ return false;
+ }
}
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2010-11-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -45,13 +45,30 @@
private static final Log log = LogFactory.getLog(ModelReader.class);
- /** date de derniere modification de la source la plus recente */
+ /** Date of the las modification of any source files. */
protected long lastModifiedSource;
- /** @since 2.3 */
+ /**
+ * A verbose flag to see more things.
+ *
+ * @since 2.3
+ */
protected boolean verbose;
- /** @since 2.3 */
+ /**
+ * A flag to load only safe things.
+ * <p/>
+ * Usefull to have a safe loading of a model and his properties file.
+ *
+ * @since 2.3
+ */
+ protected boolean strictLoading;
+
+ /**
+ * The classloader to use to obtain {@link ModelPropertiesUtil.ModelPropertiesProvider}.
+ *
+ * @since 2.3
+ */
protected ClassLoader loader;
public boolean isVerbose() {
@@ -62,6 +79,14 @@
this.verbose = verbose;
}
+ public boolean isStrictLoading() {
+ return strictLoading;
+ }
+
+ public void setStrictLoading(boolean strictLoading) {
+ this.strictLoading = strictLoading;
+ }
+
public ClassLoader getLoader() {
return loader;
}
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-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/AnnotationsManager.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -39,10 +39,10 @@
*
* @author tchemit <chemit(a)codelutin.com>
* @version $Revision$
- * <p/>
- * Mise a jour: $Date$ par :
- * * @since 2.0.0
+ * @since 2.0.0
+ * @deprecated since 2.3, use now the class {@link org.nuiton.eugene.java.extension.AnnotationsManager}
*/
+@Deprecated
public class AnnotationsManager {
private static final String[] EMPTY_STRING_ARRAY = new String[]{};
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-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/AnnotationsManagerExtension.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -38,9 +38,9 @@
*
* @author tchemit <chemit(a)codelutin.com>
* @version $Revision$
- * <p/>
- * Mise a jour: $Date$ par :
- * */
+ * @deprecated since 2.3, use now the class {@link org.nuiton.eugene.java.extension.AnnotationsManagerExtension}
+ */
+@Deprecated
public class AnnotationsManagerExtension {
private static final Log log = LogFactory.getLog(AnnotationsManagerExtension.class);
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/CodesManager.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/CodesManager.java 2010-11-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/CodesManager.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -34,7 +34,9 @@
*
* @author tchemit <chemit(a)codelutin.com>
* @since 2.0.2
+ * @deprecated since 2.3, use now the class {@link org.nuiton.eugene.java.extension.CodesManager}
*/
+@Deprecated
public class CodesManager {
private static final String EMPTY_STRING = "";
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/CodesManagerExtension.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/CodesManagerExtension.java 2010-11-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/CodesManagerExtension.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -38,7 +38,9 @@
* @author tchemit <chemit(a)codelutin.com>
* @see CodesManager
* @since 2.0.2
+ * @deprecated since 2.3, use now the class {@link org.nuiton.eugene.java.extension.CodesManagerExtension}
*/
+@Deprecated
public class CodesManagerExtension {
private static final Log log = LogFactory.getLog(CodesManagerExtension.class);
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/ConstantsManager.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/ConstantsManager.java 2010-11-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ConstantsManager.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -34,8 +34,10 @@
* Manager of constant names.
*
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.3
+ * @since ?
+ * @deprecated since 2.3, use now the class {@link org.nuiton.eugene.java.extension.ConstantsManager}
*/
+@Deprecated
public class ConstantsManager {
/**
* cache of constant name (values) for property name (keys)
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/ConstantsManagerExtension.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/ConstantsManagerExtension.java 2010-11-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ConstantsManagerExtension.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -27,8 +27,10 @@
/**
* @author tchemit <chemit(a)codelutin.com>
- * @since 2.3
+ * @since ?
+ * @deprecated since 2.3, use now the class {@link org.nuiton.eugene.java.extension.ConstantsManagerExtension}
*/
+@Deprecated
public class ConstantsManagerExtension {
/**
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManager.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManager.java 2010-11-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManager.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -41,9 +41,10 @@
* @author thimel, chemit
* @version $Revision$
- * Mise a jour: $Date$ par :
- * * @since 2.0.0
+ * @since 2.0.0
+ * @deprecated since 2.3, use now the class {@link org.nuiton.eugene.java.extension.ImportsManager}
*/
+@Deprecated
public class ImportsManager {
private static Set<String> primitiveTypes;
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManagerExtension.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManagerExtension.java 2010-11-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManagerExtension.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -43,8 +43,9 @@
*
* Extension for ObjectModel to manage imports for all classifiers in the model.
*
- * Mise a jour: $Date$
- * par : */
+ * @deprecated since 2.3, use now the class {@link org.nuiton.eugene.java.extension.ImportsManagerExtension}
+ * */
+@Deprecated
public class ImportsManagerExtension {
private static final Log log = LogFactory.getLog(ImportsManagerExtension.class);
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2010-11-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -28,6 +28,13 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.nuiton.eugene.GeneratorUtil;
+import org.nuiton.eugene.java.extension.AnnotationsManager;
+import org.nuiton.eugene.java.extension.AnnotationsManagerExtension;
+import org.nuiton.eugene.java.extension.CodesManager;
+import org.nuiton.eugene.java.extension.CodesManagerExtension;
+import org.nuiton.eugene.java.extension.ConstantsManagerExtension;
+import org.nuiton.eugene.java.extension.ImportsManager;
+import org.nuiton.eugene.java.extension.ImportsManagerExtension;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelBuilder;
import org.nuiton.eugene.models.object.ObjectModelClass;
@@ -116,7 +123,7 @@
public void addSuperclass(ObjectModelClass clazz, String superclassQualifiedName)
throws UnsupportedOperationException {
throw new UnsupportedOperationException("This operation can't be used" +
- " to generate Java, use setSuperClass method instead");
+ " to generate Java, use setSuperClass method instead");
}
/**
@@ -163,10 +170,10 @@
String name,
String type) {
return addAttribute(classifier,
- name,
- type,
- "",
- ObjectModelModifier.PROTECTED
+ name,
+ type,
+ "",
+ ObjectModelModifier.PROTECTED
);
}
@@ -201,7 +208,7 @@
String type,
String name) {
addImport((ObjectModelClassifier) operation.getDeclaringElement(),
- type);
+ type);
return super.addParameter(operation, type, name);
}
@@ -214,7 +221,7 @@
@Override
public void addException(ObjectModelOperation operation, String exception) {
addImport((ObjectModelClassifier) operation.getDeclaringElement(),
- exception);
+ exception);
super.addException(operation, exception);
}
@@ -277,7 +284,7 @@
manager.addImport(oneType);
if (log.isDebugEnabled()) {
log.debug("Add import for : " + classifier.getQualifiedName() +
- " _ import: " + oneType);
+ " _ import: " + oneType);
}
}
}
@@ -302,7 +309,7 @@
manager.addAnnotation(element, annotation);
if (log.isDebugEnabled()) {
log.debug("Add annotation for <" + classifier.getQualifiedName() +
- ":" + element.getName() + "> : " + annotation);
+ ":" + element.getName() + "> : " + annotation);
}
}
@@ -345,16 +352,16 @@
if (!visibility.isVisibility()) {
throw new IllegalArgumentException(
"Illegal visibility type : " + visibility.name() +
- " for " + classifier.getQualifiedName());
+ " for " + classifier.getQualifiedName());
}
return addAttribute(classifier,
- name,
- type,
- value,
- visibility,
- ObjectModelModifier.STATIC,
- ObjectModelModifier.FINAL
+ name,
+ type,
+ value,
+ visibility,
+ ObjectModelModifier.STATIC,
+ ObjectModelModifier.FINAL
);
}
@@ -378,7 +385,7 @@
manager.addCode(operation, code);
if (log.isDebugEnabled()) {
log.debug("Add code for <" + classifier.getQualifiedName() +
- ":" + operation.getName() + "> : " + code);
+ ":" + operation.getName() + "> : " + code);
}
}
@@ -397,7 +404,7 @@
String result = constantsManagerExtension.getConstantName(propertyName);
if (log.isDebugEnabled()) {
log.debug("get constant name for <" + propertyName + "> : " +
- result);
+ result);
}
return result;
}
@@ -494,8 +501,8 @@
if (!visibility.isVisibility()) {
throw new IllegalArgumentException(
"Illegal visibility type : " + visibility.name() +
- " for " + classifier.getQualifiedName());
+ " for " + classifier.getQualifiedName());
}
- return addOperation(classifier, classifier.getName(), null, visibility);
+ return addOperation(classifier, classifier.getName(), null, visibility);
}
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2010-11-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -37,7 +37,8 @@
import org.apache.commons.logging.LogFactory;
import org.nuiton.eugene.GeneratorUtil;
import org.nuiton.eugene.models.object.*;
-import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl;
+import org.nuiton.eugene.java.extension.ImportsManagerExtension;
+import org.nuiton.eugene.java.extension.AnnotationsManagerExtension;
/*{generator option: parentheses = true}*/
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-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -32,6 +32,7 @@
import org.nuiton.eugene.EugeneTagValues;
import org.nuiton.eugene.GeneratorUtil;
import org.nuiton.eugene.Template;
+import org.nuiton.eugene.java.extension.ImportsManager;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/AnnotationsManager.java (from rev 1012, trunk/eugene/src/main/java/org/nuiton/eugene/java/AnnotationsManager.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/AnnotationsManager.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/AnnotationsManager.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -0,0 +1,88 @@
+/*
+ * #%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.java.extension;
+
+import org.nuiton.eugene.models.object.ObjectModelElement;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * To manage annotations for any {@link ObjectModelElement} of a classifier.
+ * <p/>
+ * Created: 17 déc. 2009
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @version $Revision$
+ * @since 2.0.0
+ */
+public class AnnotationsManager {
+
+ private static final String[] EMPTY_STRING_ARRAY = new String[]{};
+
+ protected Map<ObjectModelElement, List<String>> annotations;
+
+ /**
+ * Add the {@code annotation} for the given {@code element} of
+ * the classifier.
+ *
+ * @param element the element where to register the annotation
+ * @param annotation the annotation to register
+ */
+ public void addAnnotation(ObjectModelElement element, String annotation) {
+ Map<ObjectModelElement, List<String>> map = getAnnotations();
+ List<String> list = map.get(element);
+ if (list == null) {
+ list = new ArrayList<String>();
+ map.put(element, list);
+ }
+ list.add(annotation);
+ }
+
+ /**
+ * Obtain the array of annotations registred for a given element of
+ * the classifier.
+ *
+ * @param element the element where to search for annotations
+ * @return the annotations for the element (empty arry if none found
+ */
+ public String[] getAnnotations(ObjectModelElement element) {
+ Map<ObjectModelElement, List<String>> map = getAnnotations();
+ List<String> list = map.get(element);
+ return list == null ? EMPTY_STRING_ARRAY :
+ list.toArray(new String[list.size()]);
+ }
+
+ protected Map<ObjectModelElement, List<String>> getAnnotations() {
+ if (annotations == null) {
+ annotations = new HashMap<ObjectModelElement, List<String>>();
+ }
+ return annotations;
+ }
+
+}
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/AnnotationsManagerExtension.java (from rev 1012, trunk/eugene/src/main/java/org/nuiton/eugene/java/AnnotationsManagerExtension.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/AnnotationsManagerExtension.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/AnnotationsManagerExtension.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -0,0 +1,109 @@
+/*
+ * #%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.java.extension;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.object.ObjectModelElement;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Created: 17 déc. 2009
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @version $Revision$
+ */
+public class AnnotationsManagerExtension {
+
+ private static final Log log = LogFactory.getLog(AnnotationsManagerExtension.class);
+
+ /**
+ * Extension static used to identify AnnotationsManagerExtension in
+ * ObjectModel.
+ */
+ public static final String OBJECTMODEL_EXTENSION = "annotations";
+
+ /**
+ * Map of AnotationsManager with key equals to the classifier qualified
+ * name associated to the AnotationsManager
+ */
+ protected Map<String, AnnotationsManager> managers;
+
+ private static final String[] EMPTY_STRING_ARRAY = new String[]{};
+
+ /**
+ * Get the registred annotations for the given {@code element} in the
+ * given {@code classifier}.
+ *
+ * <b>Note:</b> The method always returns a {@code none null} value, but
+ * an empty array when no annotation when no annotation found for the
+ * element.
+ *
+ * @param classifier the classifier where is the element
+ * @param element the element on which searching annotations
+ * @return the array of annotation registred or an empty array if none.
+ */
+ public String[] getAnnotations(ObjectModelClassifier classifier,
+ ObjectModelElement element) {
+ AnnotationsManager annotationsManager = getManager(classifier);
+ String[] result = null;
+ if (annotationsManager != null) {
+ result = annotationsManager.getAnnotations(element);
+ }
+ return result == null ? EMPTY_STRING_ARRAY : result;
+ }
+
+ /**
+ * Get the AnotationsManager associated to the classifier. If not exist,
+ * it will be created.
+ *
+ * @param classifier reference for the AnotationsManager
+ * @return the annotationsManager associated to the classifier (never null)
+ */
+ public AnnotationsManager getManager(ObjectModelClassifier classifier) {
+ Map<String, AnnotationsManager> managers = getManagers();
+ String fqn = classifier.getQualifiedName();
+ AnnotationsManager manager = managers.get(fqn);
+ if (manager == null) {
+ manager = new AnnotationsManager();
+ managers.put(fqn, manager);
+ if (log.isDebugEnabled()) {
+ log.debug("Add new annotationsManager for : " + fqn);
+ }
+ }
+ return manager;
+ }
+
+ protected Map<String, AnnotationsManager> getManagers() {
+ if (managers == null) {
+ managers = new HashMap<String, AnnotationsManager>();
+ }
+ return managers;
+ }
+}
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/CodesManager.java (from rev 1010, trunk/eugene/src/main/java/org/nuiton/eugene/java/CodesManager.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/CodesManager.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/CodesManager.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -0,0 +1,81 @@
+/*
+ * #%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.java.extension;
+
+import org.nuiton.eugene.models.object.ObjectModelOperation;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * To manage some verbatim code to inject in operations.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.0.2
+ */
+public class CodesManager {
+
+ private static final String EMPTY_STRING = "";
+
+ /** store of codes associated to operations */
+ protected Map<ObjectModelOperation, StringBuilder> codes;
+
+ /**
+ * Add the {@code annotation} for the given {@code element} of
+ * the classifier.
+ *
+ * @param operation the operation on which add the code
+ * @param code the code to add
+ */
+ public void addCode(ObjectModelOperation operation, String code) {
+ Map<ObjectModelOperation, StringBuilder> map = getCodes();
+
+ StringBuilder buffer = map.get(operation);
+ if (buffer == null) {
+ buffer = new StringBuilder();
+ map.put(operation, buffer);
+ }
+ buffer.append('\n').append(code);
+ }
+
+ /**
+ * Obtain the codes registred for a given operation of the classifier.
+ *
+ * @param operation the operation where to search for code
+ * @return the code for the operation (empty if none found)
+ */
+ public String getCode(ObjectModelOperation operation) {
+ Map<ObjectModelOperation, StringBuilder> map = getCodes();
+ StringBuilder buffer = map.get(operation);
+ return buffer == null ? EMPTY_STRING : buffer.toString();
+ }
+
+ protected Map<ObjectModelOperation, StringBuilder> getCodes() {
+ if (codes == null) {
+ codes = new HashMap<ObjectModelOperation, StringBuilder>();
+ }
+ return codes;
+ }
+}
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/CodesManagerExtension.java (from rev 1010, trunk/eugene/src/main/java/org/nuiton/eugene/java/CodesManagerExtension.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/CodesManagerExtension.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/CodesManagerExtension.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -0,0 +1,113 @@
+/*
+ * #%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.java.extension;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.object.ObjectModelOperation;
+
+import java.util.HashMap;
+import java.util.Map;
+
+/**
+ * Object model extensions to manage verbatim code to attzach to operations.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @see CodesManager
+ * @since 2.0.2
+ */
+public class CodesManagerExtension {
+
+ private static final Log log = LogFactory.getLog(CodesManagerExtension.class);
+
+ /** Extension static used to identify CodesManagerExtension in ObjectModel */
+ public static final String OBJECTMODEL_EXTENSION = "codes";
+
+ /**
+ * Map of CodesManager with key equals to the classifier qualified name
+ * associated to the CodesManager
+ */
+ protected Map<String, CodesManager> managers;
+
+ /**
+ * Add the {@code code} for the given {@code operation} of the
+ * given {@code classifier}.
+ *
+ * @param classifier the classifier container of the operation
+ * @param operation the operation on which to add the code
+ * @param code the code to add for the operation
+ */
+ public void addcode(ObjectModelClassifier classifier,
+ ObjectModelOperation operation,
+ String code) {
+ CodesManager codesManager = getManager(classifier);
+ codesManager.addCode(operation, code);
+ }
+
+ /**
+ * Get body code for a operation of the given classifier.
+ * <p/>
+ * The CodesManager must be defined in the model.
+ *
+ * @param classifier reference for the codes
+ * @param operation the operation to seek
+ * @return the body code of the method
+ */
+ public String getCode(ObjectModelClassifier classifier,
+ ObjectModelOperation operation) {
+ CodesManager manager = getManager(classifier);
+ return manager.getCode(operation);
+ }
+
+ /**
+ * Get the CodesManager associated to the classifier.
+ * <p/>
+ * <b>Note:</b> If not exist, it will be created.
+ *
+ * @param classifier reference for the ImportsManager
+ * @return the codesManager associated to the classifier (never null)
+ */
+ public CodesManager getManager(ObjectModelClassifier classifier) {
+ Map<String, CodesManager> managers = getManagers();
+ String fqn = classifier.getQualifiedName();
+ CodesManager manager = managers.get(fqn);
+ if (manager == null) {
+ manager = new CodesManager();
+ managers.put(fqn, manager);
+ if (log.isDebugEnabled()) {
+ log.debug("Add new codesManager for : " + fqn);
+ }
+ }
+ return manager;
+ }
+
+ protected Map<String, CodesManager> getManagers() {
+ if (managers == null) {
+ managers = new HashMap<String, CodesManager>();
+ }
+ return managers;
+ }
+}
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ConstantsManager.java (from rev 1012, trunk/eugene/src/main/java/org/nuiton/eugene/java/ConstantsManager.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ConstantsManager.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ConstantsManager.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -0,0 +1,70 @@
+/*
+ * #%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.java.extension;
+
+import org.nuiton.eugene.GeneratorUtil;
+
+import java.util.Map;
+import java.util.TreeMap;
+
+/**
+ * Manager of constant names.
+ *
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since ?
+ */
+public class ConstantsManager {
+ /**
+ * cache of constant name (values) for property name (keys)
+ */
+ protected Map<String, String> nameToConstant;
+
+ /**
+ * Obtain a constant nmae from a property name and store it in cache
+ * the first time it had to build it.
+ *
+ * @param propertyName the propertyName to convert
+ * @return the equivalent constant name
+ */
+ public String getConstantName(String propertyName) {
+ Map<String, String> map = getNameToConstant();
+ if (map.containsKey(propertyName)) {
+ return map.get(propertyName);
+ }
+ // convert propertyName to constant name
+ String constantName =
+ GeneratorUtil.convertVariableNameToConstantName(propertyName);
+ map.put(propertyName,constantName);
+ return constantName;
+ }
+
+ protected Map<String, String> getNameToConstant() {
+ if (nameToConstant == null) {
+ nameToConstant = new TreeMap<String, String>();
+ }
+ return nameToConstant;
+ }
+}
\ No newline at end of file
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ConstantsManagerExtension.java (from rev 1012, trunk/eugene/src/main/java/org/nuiton/eugene/java/ConstantsManagerExtension.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ConstantsManagerExtension.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ConstantsManagerExtension.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -0,0 +1,55 @@
+/*
+ * #%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.java.extension;
+
+/**
+ * @author tchemit <chemit(a)codelutin.com>
+ * @since 2.3
+ */
+public class ConstantsManagerExtension {
+
+ /**
+ * Extension static used to identify {@code ConstantsManagerExtension} in
+ * ObjectModel
+ */
+ public static final String OBJECTMODEL_EXTENSION = "constants";
+
+ /**
+ * the unique manager to use
+ */
+ protected ConstantsManager manager = new ConstantsManager();
+
+ /**
+ * Obtain a constant nmae from a property name and store it in cache
+ * the first time it had to build it.
+ *
+ * @param propertyName the propertyName to convert
+ * @return the equivalent constant name
+ */
+ public String getConstantName(String propertyName) {
+ return manager.getConstantName(propertyName);
+ }
+}
\ No newline at end of file
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ImportsManager.java (from rev 1012, trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManager.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ImportsManager.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ImportsManager.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -0,0 +1,186 @@
+/*
+ * #%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.java.extension;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+
+/**
+ * Class used in generators that allows to manage easily imports. A first-pass
+ * allow to register imports, and in a second-pass, returns the type to use in
+ * generated code.
+ *
+ * @author thimel, chemit
+ * @version $Revision$
+ *
+ * @since 2.0.0
+ */
+public class ImportsManager {
+
+ private static Set<String> primitiveTypes;
+
+ static {
+ primitiveTypes = new HashSet<String>();
+
+ primitiveTypes.add("byte");
+ primitiveTypes.add("Byte");
+ primitiveTypes.add("short");
+ primitiveTypes.add("Short");
+ primitiveTypes.add("int");
+ primitiveTypes.add("Integer");
+ primitiveTypes.add("long");
+ primitiveTypes.add("Long");
+ primitiveTypes.add("float");
+ primitiveTypes.add("Float");
+ primitiveTypes.add("double");
+ primitiveTypes.add("Double");
+
+ primitiveTypes.add("char");
+ primitiveTypes.add("Char");
+ primitiveTypes.add("String");
+
+ primitiveTypes.add("boolean");
+ primitiveTypes.add("Boolean");
+
+ primitiveTypes.add("void");
+
+ }
+ private Map<String, String> imports = new HashMap<String, String>();
+ private State state = State.FILLING;
+
+ /**
+ * From the given class, add it to the imports list.
+ * @param clazz the class to import
+ * @return true if import add was successful
+ * @see ImportsManager#addImport(String)
+ */
+ public boolean addImport(Class<?> clazz) {
+ return addImport(clazz.getName());
+ }
+
+ /**
+ * From the given fqn (fully qualified name), add it to the imports list.
+ * If there is a conflict adding this import, will return false.
+ * If reading of the imports has started, this method will return false,
+ * unless type does not need to be imported.
+ * @param fqn the fully qualified name to import
+ * @return true if import add was successful
+ */
+ public boolean addImport(String fqn) {
+ // if no package don't include it
+ if (!fqn.contains(".")) {
+ return true;
+ }
+
+ // Exclude java.lang classes
+ if (fqn == null || fqn.trim().isEmpty() ||
+ fqn.startsWith("java.lang.") && fqn.lastIndexOf(".") == 9) {
+ return true;
+ }
+ // Exclude primitive types
+ if (primitiveTypes.contains(fqn)) {
+ return true;
+ }
+ // Reject generics
+ if (fqn.contains("<") || fqn.contains(">")) {
+ return false;
+ }
+ String name = fqn.substring(fqn.lastIndexOf(".") + 1);
+ String inPlaceFqn = imports.get(name);
+ if (inPlaceFqn == null) {
+ // Someone has started to read imports, impossible to add some more
+ if (state == State.READING) {
+ return false;
+ } else {
+ imports.put(name, fqn);
+ return true;
+ }
+ }
+ // if fqn is not the same, return false. Otherwise, no need to override.
+ return inPlaceFqn.equals(fqn);
+ }
+
+ /**
+ * Accorging to the already added types, returns the type to write in file.
+ * If there is a conflict, returns the fully qualified name, otherwise
+ * returns the simple name
+ * @param fqn the fully qualified name to add
+ * @return the fqn or simple name according to in-place imports
+ */
+ public String getType(String fqn) {
+ boolean importResult = addImport(fqn);
+ if (!importResult) {
+ // There is a conflict, do not use simple name
+ return fqn;
+ } else {
+ // No conflict, use simple name
+ int packageEndIndex = fqn.lastIndexOf(".");
+ if (packageEndIndex == -1) {
+ return fqn;
+ } else {
+ return fqn.substring(packageEndIndex + 1);
+ }
+ }
+ }
+
+ /**
+ * List the imports. This method will remove the useless imports according
+ * to the given packageName (no need to import a class in the same package)
+ * @param packageName the current package name (to avoid useless imports)
+ * @return the imports alphabeticaly sorted
+ */
+ public List<String> getImports(String packageName) {
+ state = State.READING;
+ List<String> result = new ArrayList<String>();
+ for (String fqn : imports.values()) {
+ if (!(fqn.lastIndexOf(".") == packageName.length() &&
+ fqn.startsWith(packageName + "."))) {
+ result.add(fqn);
+ }
+ }
+ Collections.sort(result);
+ return result;
+ }
+
+ /**
+ * Method to reset imports list. If imports has been listed, it becomes back
+ * possible to add imports.
+ */
+ public void clearImports() {
+ imports.clear();
+ state = State.FILLING;
+ }
+
+ private enum State {
+
+ FILLING, READING
+ }
+}
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ImportsManagerExtension.java (from rev 1012, trunk/eugene/src/main/java/org/nuiton/eugene/java/ImportsManagerExtension.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ImportsManagerExtension.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/ImportsManagerExtension.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -0,0 +1,98 @@
+/*
+ * #%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.java.extension;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.models.object.ObjectModelClassifier;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * ImportsManagerExtension
+ *
+ * Created: 2 nov. 2009
+ *
+ * @author fdesbois
+ * @version $Revision$
+ *
+ * Extension for ObjectModel to manage imports for all classifiers in the model.
+ */
+public class ImportsManagerExtension {
+
+ private static final Log log = LogFactory.getLog(ImportsManagerExtension.class);
+
+ /**
+ * Extension static used to identify ImportsManagerExtension in ObjectModel
+ */
+ public static final String OBJECTMODEL_EXTENSION = "imports";
+
+ /**
+ * Map of ImportsManager with key equals to the classifier qualified name associated to
+ * the ImportsManager
+ */
+ protected Map<String, ImportsManager> managers;
+
+ /**
+ * Get the ImportsManager associated to the classifier. If not exist, it will be created.
+ *
+ * @param classifier reference for the ImportsManager
+ * @return the importsManager associated to the classifier (never null)
+ */
+ public ImportsManager getManager(ObjectModelClassifier classifier) {
+ Map<String, ImportsManager> managers = getManagers();
+ String fqn = classifier.getQualifiedName();
+ ImportsManager manager = managers.get(fqn);
+ if (manager == null) {
+ manager = new ImportsManager();
+ managers.put(fqn, manager);
+ if (log.isDebugEnabled()) {
+ log.debug("Add new importsManager for : " + fqn);
+ }
+ }
+ return manager;
+ }
+
+ /**
+ * Get imports for a classifier. The ImportsManager must be defined in the model.
+ *
+ * @param classifier reference for the imports
+ * @return a List of String which contains all imports for the classifier
+ */
+ public List<String> getImports(ObjectModelClassifier classifier) {
+ ImportsManager manager = getManager(classifier);
+ return manager.getImports(classifier.getPackageName());
+ }
+
+ protected Map<String, ImportsManager> getManagers() {
+ if (managers == null) {
+ managers = new HashMap<String, ImportsManager>();
+ }
+ return managers;
+ }
+}
Copied: trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/package-info.java (from rev 1012, trunk/eugene/src/main/java/org/nuiton/eugene/java/package-info.java)
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/package-info.java (rev 0)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/extension/package-info.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -0,0 +1,40 @@
+/*
+ * #%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%
+ */
+
+/**
+ * Eugene java extension package : all specific extension for Java generation.
+ * <ul>
+ * <li>Annotations extension : to add some annotation on elements of a object model.</li>
+ * <li>Imports extension : to deal smartly with imports of code to generate.</li>
+ * <li>Constants extension : to deal with constants in java generators.</li>
+ * <li>codes extension : to add smartly some codes to operations.</li>
+ * </ul>
+ * @see AnnotationsManager
+ * @see ImportsManager
+ * @see ConstantsManager
+ * @see CodesManager
+ */
+package org.nuiton.eugene.java.extension;
+
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/package-info.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/java/package-info.java 2010-11-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/java/package-info.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -26,10 +26,10 @@
/**
* Eugene java package : all specific class for Java generation.
* <pre>
- * - ObjectModel Extensions : {@link org.nuiton.eugene.java.AnnotationsManager } and {@link org.nuiton.eugene.java.ImportsManager }
- * - Builder : {@link org.nuiton.eugene.java.JavaBuilder } used to fill an ObjectModel in a Java way
- * - Transformer : {@link org.nuiton.eugene.java.ObjectModelTransformerToJava } used to transform an xmi ObjectModel to a java one
- * - Generator : {@link org.nuiton.eugene.java.JavaGenerator } is a template used to write java files (processed by Nuiton-processor)
+ * - ObjectModel Extensions : which are in package extension
+ * - Builder : {@link JavaBuilder } used to fill an ObjectModel in a Java way
+ * - Transformer : {@link ObjectModelTransformerToJava } used to transform an xmi ObjectModel to a java one
+ * - Generator : {@link JavaGenerator } is a template used to write java files (processed by Nuiton-processor)
* </pre>
*/
package org.nuiton.eugene.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-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -148,12 +148,12 @@
String name = FileUtil.basename(file, "." + ext);
File propFile = new File(dir, name + ".properties");
if (!propFile.exists()) {
- if (log.isInfoEnabled()) {
+ if (isVerbose()) {
log.info("Pas de fichier de propriete " + propFile
+ " associé au model");
}
} else {
- if (log.isInfoEnabled()) {
+ if (isVerbose()) {
log.info("Lecture du fichier de propriete " + propFile
+ " associé au model");
}
@@ -288,16 +288,30 @@
}
String tag = matcher.group(2);
- Class<?>[] targets = propertiesProvider.getTagValueTarget(tag);
- if (targets == null) {
+ boolean safe = propertiesProvider.containsTagValue(tag);
- // unknown tag value, can not use it
+ if (!safe) {
if (log.isWarnEnabled()) {
- log.warn("Invalid model tag value [" + key + "] : the tagvalue is unkown.");
+ log.warn("Invalid model tag value [" + key + "] : the tagvalue '" + tag + "' is unkown.");
}
-// return false;
+ } else {
+ safe = propertiesProvider.acceptTagValue(tag, ObjectModel.class);
+
+ if (!safe) {
+
+ // the tag value can not be apply of model
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid model tag value [" + key + "] : this tagvalue '" + tag + "' can not be apply on the model.");
+ }
+ }
}
+ if (!safe && isStrictLoading()) {
+
+ // in strict loading do not accept unsafe tags
+ return false;
+ }
+
ObjectModelImpl modelImpl = (ObjectModelImpl) model;
if (tag.equals(EugeneTagValues.TAG_VERSION)) {
@@ -306,7 +320,7 @@
modelImpl.setVersion(value);
}
if (isVerbose()) {
- log.info("import model tag value " + key + " --> " + tag + " = " + value);
+ log.info("model tag value imported " + key + " --> " + tag + " = " + value);
}
modelImpl.addTagValue(tag, value);
return true;
@@ -324,15 +338,42 @@
}
String fqn = matcher.group(1);
- fqn = StringUtil.substring(fqn, 0, -1); // remove ended
- // .
+ 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
+ // type is stereotype
String type = matcher.group(4).toLowerCase();
+ // target real type
+ Class<?> targetType = getTargetType(target);
+ boolean safe = propertiesProvider.containsStereotype(value);
+
+ if (!safe) {
+
+ // stereotype unkown
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid stereotype [" + key + "] : this stereotype '" + value + "' is unkown.");
+ }
+ } else {
+
+ safe = propertiesProvider.acceptStereotype(value, targetType);
+
+ if (!safe) {
+
+ // the stereotype can not be apply of the given target
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid stereotype [" + key + "] : this stereotype '" + value + "' can not be apply on " + target + ".");
+ }
+ }
+ }
+
+ if (!safe && isStrictLoading()) {
+
+ // in strict loading do not accept unsafe stereotypes
+ return false;
+ }
+
if (log.isDebugEnabled()) {
log.debug("Propriete: '" + key + "' => "
+ "fqn:" + fqn + " target:" + target
@@ -342,22 +383,27 @@
ObjectModelClassifier omc = getClassifier(model, STEREOTYPE, key, fqn);
if (omc == null) {
+
+ // classifier not found
return false;
}
List<ObjectModelElement> elems = getObjectElements(omc, STEREOTYPE, key, fqn, target, targetName);
if (elems == null) {
+
+ // no element to apply
return false;
}
for (ObjectModelElement elem1 : elems) {
- if (elem1 == null) {
- if (log.isWarnEnabled()) {
- log.warn("Invalid stereotype [" + key + "] : Element '" + targetName + "' of type '" + target + "' on classifier '" + fqn + "' is null.");
- }
- continue;
- }
+ //TODO tchemit 2010-11-29 uncomment this if there is some proble, but I don't see why there would be...
+// if (elem1 == null) {
+// if (log.isWarnEnabled()) {
+// log.warn("Invalid stereotype [" + key + "] : Element '" + targetName + "' of type '" + target + "' on classifier '" + fqn + "' is null.");
+// }
+// continue;
+// }
ObjectModelElementImpl elem = (ObjectModelElementImpl) elem1;
// pour les stereotypes
@@ -367,7 +413,7 @@
}
if (isVerbose()) {
- log.info("import stereotype " + key + " --> " + fqn + ":" + target + ":" + targetName + ":" + type + " = " + value);
+ log.info("stereotype imported " + key + " --> " + fqn + ":" + target + ":" + targetName + ":" + type + " = " + value);
}
return true;
@@ -389,11 +435,14 @@
// .
// target is class, attribute or operation
String target = matcher.group(2);
+ // name of the target (can be null on class)
String targetName = matcher.group(3);
- // type is stereotype or tagvalue
+ // type is tagvalue
String type = matcher.group(4).toLowerCase();
-
+ // name of the tag value
String tag = matcher.group(5);
+ // target real type
+ Class<?> targetType = getTargetType(target);
if (log.isDebugEnabled()) {
log.debug("Propriete: '" + key + "' => "
@@ -402,8 +451,37 @@
+ " type:" + type + " tag:" + tag);
}
+ boolean safe = propertiesProvider.containsTagValue(tag);
+
+ if (!safe) {
+
+ // unkown tag value
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid tag value [" + key + "] : this tagvalue '" + tag + "' is unkown.");
+ }
+ } else {
+
+ safe = propertiesProvider.acceptTagValue(tag, targetType);
+
+ if (!safe) {
+
+ // the tag value can not be apply of model
+ if (log.isWarnEnabled()) {
+ log.warn("Invalid tag value [" + key + "] : this tagvalue '" + tag + "' can not be apply on the given type '" + target + "'.");
+ }
+ }
+ }
+
+ if (!safe && isStrictLoading()) {
+
+ // in strict loading do not accept unsafe tags
+ return false;
+ }
+
ObjectModelClassifier omc = getClassifier(model, TAGVALUE, key, fqn);
if (omc == null) {
+
+ // classifier not found
return false;
}
@@ -411,6 +489,8 @@
getObjectElements(omc, TAGVALUE, key, fqn, target, targetName);
if (elements == null) {
+
+ // no elements to apply
return false;
}
@@ -425,11 +505,26 @@
}
if (isVerbose()) {
- log.info("import tag value " + key + " --> " + fqn + ":" + target + ":" + targetName + ":" + type + ":" + tag + " = " + value);
+ log.info("tag value imported " + key + " --> " + fqn + ":" + target + ":" + targetName + ":" + type + ":" + tag + " = " + value);
}
return true;
}
+ protected Class<?> getTargetType(String target) {
+ Class<?> result = null;
+ if (ATTRIBUTE.equals(target)) {
+ return ObjectModelAttribute.class;
+ }
+ if (OPERATION.equals(target)) {
+ return ObjectModelOperation.class;
+ }
+ if (CLASS.equals(target)) {
+ return ObjectModelClassifier.class;
+ }
+
+ return result;
+ }
+
protected ObjectModelClassifier getClassifier(ObjectModel model, String type, String key, String fqn) {
ObjectModelClassifier omc = model.getClassifier(fqn);
if (omc == null) {
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java 2010-11-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -5,7 +5,11 @@
import org.junit.Test;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
+import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import org.nuiton.eugene.models.object.ObjectModelEnumeration;
+import org.nuiton.eugene.models.object.ObjectModelInterface;
+import org.nuiton.eugene.models.object.ObjectModelOperation;
/**
* To test {@link ModelPropertiesUtil.EugeneModelPropertiesProvider}.
@@ -24,35 +28,113 @@
}
@Test
- public void testGetTagValueTarget() throws Exception {
- testTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX, ObjectModel.class, ObjectModelClassifier.class);
- testTagValue(EugeneTagValues.TAG_I18N_PREFIX, ObjectModel.class, ObjectModelClassifier.class);
- testTagValue(EugeneTagValues.TAG_NO_PCS, ObjectModel.class, ObjectModelClassifier.class);
- testTagValue(EugeneTagValues.TAG_VERSION, ObjectModel.class);
+ public void getTagValueTarget() throws Exception {
+ getTagValueTarget(EugeneTagValues.TAG_CONSTANT_PREFIX, ObjectModel.class, ObjectModelClassifier.class);
+ getTagValueTarget(EugeneTagValues.TAG_I18N_PREFIX, ObjectModel.class, ObjectModelClassifier.class);
+ getTagValueTarget(EugeneTagValues.TAG_NO_PCS, ObjectModel.class, ObjectModelClassifier.class);
+ getTagValueTarget(EugeneTagValues.TAG_VERSION, ObjectModel.class);
}
@Test
- public void testGetStereotypeTarget() throws Exception {
+ public void containsTagValue() throws Exception {
+ containsTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX, true);
+ containsTagValue(EugeneTagValues.TAG_I18N_PREFIX, true);
+ containsTagValue(EugeneTagValues.TAG_NO_PCS, true);
+ containsTagValue(EugeneTagValues.TAG_VERSION, true);
- testStereotype(EugeneStereoTypes.STEREOTYPE_BEAN, ObjectModelClassifier.class);
- testStereotype(EugeneStereoTypes.STEREOTYPE_INDEXED, ObjectModelAttribute.class);
+ long l = System.nanoTime();
+ containsTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX + l, false);
+ containsTagValue(EugeneTagValues.TAG_I18N_PREFIX + l, false);
+ containsTagValue(EugeneTagValues.TAG_NO_PCS + l, false);
+ containsTagValue(EugeneTagValues.TAG_VERSION + l, false);
}
@Test
- public void testGetStore() throws Exception {
+ public void acceptTagValue() throws Exception {
+ acceptTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX, true, ObjectModel.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class);
+ acceptTagValue(EugeneTagValues.TAG_I18N_PREFIX, true, ObjectModel.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class);
+ acceptTagValue(EugeneTagValues.TAG_NO_PCS, true, ObjectModel.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class);
+ acceptTagValue(EugeneTagValues.TAG_VERSION, true, ObjectModel.class);
+
+ acceptTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX, false, ObjectModelOperation.class, ObjectModelAttribute.class);
+ acceptTagValue(EugeneTagValues.TAG_I18N_PREFIX, false, ObjectModelOperation.class, ObjectModelAttribute.class);
+ acceptTagValue(EugeneTagValues.TAG_NO_PCS, false, ObjectModelOperation.class, ObjectModelAttribute.class);
+ acceptTagValue(EugeneTagValues.TAG_VERSION, false, ObjectModelClassifier.class, ObjectModelOperation.class, ObjectModelAttribute.class);
+
+ long l = System.nanoTime();
+ acceptTagValue(EugeneTagValues.TAG_CONSTANT_PREFIX + l, false, ObjectModelOperation.class, ObjectModelAttribute.class);
+ acceptTagValue(EugeneTagValues.TAG_I18N_PREFIX + l, false, ObjectModelOperation.class, ObjectModelAttribute.class);
+ acceptTagValue(EugeneTagValues.TAG_NO_PCS + l, false, ObjectModelOperation.class, ObjectModelAttribute.class);
+ acceptTagValue(EugeneTagValues.TAG_VERSION + l, false, ObjectModelClassifier.class, ObjectModelOperation.class, ObjectModelAttribute.class);
}
- protected void testStereotype(String name, Class<?>... expected) {
- Class<?>[] classes = provider.getStereotypeTarget(name);
+ @Test
+ public void getStereotypeTarget() throws Exception {
+
+ getStereotypeTarget(EugeneStereoTypes.STEREOTYPE_BEAN, ObjectModelClassifier.class);
+ getStereotypeTarget(EugeneStereoTypes.STEREOTYPE_INDEXED, ObjectModelAttribute.class);
+ }
+
+ @Test
+ public void containsStereotype() throws Exception {
+ containsStereotype(EugeneStereoTypes.STEREOTYPE_INDEXED, true);
+ containsStereotype(EugeneStereoTypes.STEREOTYPE_BEAN, true);
+
+ long l = System.nanoTime();
+ containsStereotype(EugeneStereoTypes.STEREOTYPE_INDEXED + l, false);
+ containsStereotype(EugeneStereoTypes.STEREOTYPE_BEAN + l, false);
+ }
+
+ @Test
+ public void acceptStereotype() throws Exception {
+
+ acceptStereotype(EugeneStereoTypes.STEREOTYPE_BEAN, true, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class, ObjectModelInterface.class);
+ acceptStereotype(EugeneStereoTypes.STEREOTYPE_INDEXED, true, ObjectModelAttribute.class);
+
+ acceptStereotype(EugeneStereoTypes.STEREOTYPE_BEAN, false, ObjectModel.class, ObjectModelOperation.class);
+ acceptStereotype(EugeneStereoTypes.STEREOTYPE_INDEXED, false, ObjectModel.class, ObjectModelOperation.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class, ObjectModelInterface.class);
+
+ long l = System.nanoTime();
+ acceptStereotype(EugeneStereoTypes.STEREOTYPE_BEAN + l, false, ObjectModel.class, ObjectModelOperation.class);
+ acceptStereotype(EugeneStereoTypes.STEREOTYPE_INDEXED + l, false, ObjectModel.class, ObjectModelOperation.class, ObjectModelClassifier.class, ObjectModelClass.class, ObjectModelEnumeration.class, ObjectModelInterface.class);
+
+ }
+
+ protected void getTagValueTarget(String name, Class<?>... expected) {
+ Class<?>[] classes = provider.getTagValueTarget(name);
Assert.assertNotNull("Could not find target for " + name, classes);
Assert.assertEquals("Should have " + expected.length + " targets for " + name + " but had " + classes.length, classes.length, expected.length);
Assert.assertArrayEquals(expected, classes);
}
- protected void testTagValue(String name, Class<?>... expected) {
- Class<?>[] classes = provider.getTagValueTarget(name);
+ protected void containsTagValue(String name, boolean expected) {
+ boolean classes = provider.containsTagValue(name);
+ Assert.assertEquals(expected, classes);
+ }
+
+ protected void acceptTagValue(String name, boolean expected, Class<?>... types) {
+ for (Class<?> type : types) {
+ boolean actual = provider.acceptTagValue(name, type);
+ Assert.assertEquals(expected, actual);
+ }
+ }
+
+ protected void getStereotypeTarget(String name, Class<?>... expected) {
+ Class<?>[] classes = provider.getStereotypeTarget(name);
Assert.assertNotNull("Could not find target for " + name, classes);
Assert.assertEquals("Should have " + expected.length + " targets for " + name + " but had " + classes.length, classes.length, expected.length);
Assert.assertArrayEquals(expected, classes);
}
+
+ protected void containsStereotype(String name, boolean expected) {
+ boolean classes = provider.containsStereotype(name);
+ Assert.assertEquals(expected, classes);
+ }
+
+ protected void acceptStereotype(String name, boolean expected, Class<?>... types) {
+ for (Class<?> type : types) {
+ boolean actual = provider.acceptStereotype(name, type);
+ Assert.assertEquals(expected, actual);
+ }
+ }
}
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java 2010-11-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -28,14 +28,13 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
import org.junit.Test;
import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl;
import org.nuiton.eugene.models.object.xml.ObjectModelParameterImpl;
import java.util.Set;
-import static org.junit.Assert.assertEquals;
-
/** @author fdesbois */
public class GeneratorUtilTest {
@@ -49,7 +48,7 @@
// Without any params
String result = GeneratorUtil.getOperationParametersListName(op);
- assertEquals("", result);
+ Assert.assertEquals("", result);
// With one param
ObjectModelParameterImpl param1 = new ObjectModelParameterImpl();
@@ -57,7 +56,7 @@
op.addParameter(param1);
result = GeneratorUtil.getOperationParametersListName(op);
- assertEquals("param1", result);
+ Assert.assertEquals("param1", result);
// With two params
ObjectModelParameterImpl param2 = new ObjectModelParameterImpl();
@@ -65,7 +64,7 @@
op.addParameter(param2);
result = GeneratorUtil.getOperationParametersListName(op);
- assertEquals("param1, param2", result);
+ Assert.assertEquals("param1, param2", result);
}
@Test
@@ -76,7 +75,7 @@
// Without any params
String result = GeneratorUtil.getOperationParametersListDeclaration(op);
- assertEquals("", result);
+ Assert.assertEquals("", result);
// With one param
ObjectModelParameterImpl param1 = new ObjectModelParameterImpl();
@@ -85,7 +84,7 @@
op.addParameter(param1);
result = GeneratorUtil.getOperationParametersListDeclaration(op);
- assertEquals("String param1", result);
+ Assert.assertEquals("String param1", result);
// With two params
ObjectModelParameterImpl param2 = new ObjectModelParameterImpl();
@@ -94,7 +93,7 @@
op.addParameter(param2);
result = GeneratorUtil.getOperationParametersListDeclaration(op);
- assertEquals("String param1, Date param2", result);
+ Assert.assertEquals("String param1, Date param2", result);
}
@@ -107,92 +106,92 @@
String expResult = "List";
String result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.util.Regex";
expResult = "Regex";
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "<T> java.util.List<T>";
expResult = "<T> List<T>";
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.util.List<? extends org.chorem.bonzoms.Bonzoms>";
expResult = "List<? extends Bonzoms>";
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.util.List<org.chorem.jtimer.Jtimer>";
expResult = "List<Jtimer>";
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.util.Set<java.util.Collection<java.util.Collection<java.util.Collection" +
"<java.lang.String>>>>";
expResult = "Set<Collection<Collection<Collection<String>>>>";
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.util.Map<org.chorem.jtimer.Jtimer, java.util.Collection<java.lang.String>>";
expResult = "Map<Jtimer, Collection<String>>";
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "new java.util.HashMap<org.chorem.jtimer.Jtimer, T extends java.lang.String>()";
expResult = "new HashMap<Jtimer, T extends String>()";
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "Class<O>";
expResult = "Class<O>";
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "2.0";
expResult = "2.0";
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "\"eric.chatellier\"";
expResult = "\"eric.chatellier\"";
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "<T extends org.nuiton.topia.TopiaEntity, D extends org.nuiton.topia.TopiaDAO<? super T>> D";
expResult = "<T extends TopiaEntity, D extends TopiaDAO<? super T>> D";
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "Object...";
expResult = "Object...";
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "Class<A>...";
expResult = "Class<A>...";
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.lang.Class<A>...";
expResult = "Class<A>...";
result = GeneratorUtil.getSimpleName(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
}
/**
@@ -207,92 +206,92 @@
String expResult = "List";
String result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.util.Regex";
expResult = "Regex";
result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "<T> java.util.List<T>";
expResult = "List<T>";
result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.util.List<? extends org.chorem.bonzoms.Bonzoms>";
expResult = "List<? extends Bonzoms>";
result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.util.List<org.chorem.jtimer.Jtimer>";
expResult = "List<Jtimer>";
result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.util.Set<java.util.Collection<java.util.Collection<java.util.Collection" +
"<java.lang.String>>>>";
expResult = "Set<Collection<Collection<Collection<String>>>>";
result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.util.Map<org.chorem.jtimer.Jtimer, java.util.Collection<java.lang.String>>";
expResult = "Map<Jtimer, Collection<String>>";
result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "new java.util.HashMap<org.chorem.jtimer.Jtimer, T extends java.lang.String>()";
expResult = "new HashMap<Jtimer, T extends String>()";
result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "Class<O>";
expResult = "Class<O>";
result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "2.0";
expResult = "2.0";
result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "\"eric.chatellier\"";
expResult = "\"eric.chatellier\"";
result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "<T extends org.nuiton.topia.TopiaEntity, D extends org.nuiton.topia.TopiaDAO<? super T>> D";
expResult = "D";
result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "Object...";
expResult = "Object...";
result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "Class<A>...";
expResult = "Class<A>...";
result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.lang.Class<A>...";
expResult = "Class<A>...";
result = GeneratorUtil.getSimpleName(str, true);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
}
@@ -305,81 +304,81 @@
String expResult = "List";
String result = GeneratorUtil.removeGenericDefinition(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.util.Regex";
expResult = "java.util.Regex";
result = GeneratorUtil.removeGenericDefinition(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "<T> java.util.List<T>";
expResult = "java.util.List<T>";
result = GeneratorUtil.removeGenericDefinition(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = " <T> java.util.List<T> ";
expResult = "java.util.List<T>";
result = GeneratorUtil.removeGenericDefinition(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.util.List<? extends org.chorem.bonzoms.Bonzoms>";
expResult = "java.util.List<? extends org.chorem.bonzoms.Bonzoms>";
result = GeneratorUtil.removeGenericDefinition(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.util.List<org.chorem.jtimer.Jtimer>";
expResult = "java.util.List<org.chorem.jtimer.Jtimer>";
result = GeneratorUtil.removeGenericDefinition(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "Class<O>";
expResult = "Class<O>";
result = GeneratorUtil.removeGenericDefinition(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "2.0";
expResult = "2.0";
result = GeneratorUtil.removeGenericDefinition(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "\"eric.chatellier\"";
expResult = "\"eric.chatellier\"";
result = GeneratorUtil.removeGenericDefinition(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "<T extends org.nuiton.topia.TopiaEntity, D extends org.nuiton.topia.TopiaDAO<? super T>> D";
expResult = "D";
result = GeneratorUtil.removeGenericDefinition(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "Object...";
expResult = "Object...";
result = GeneratorUtil.removeGenericDefinition(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "Class<A>...";
expResult = "Class<A>...";
result = GeneratorUtil.removeGenericDefinition(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
str = "java.lang.Class<A>...";
expResult = "java.lang.Class<A>...";
result = GeneratorUtil.removeGenericDefinition(str);
log.info(str + " -> " + result);
- assertEquals(expResult, result);
+ Assert.assertEquals(expResult, result);
}
@Test
@@ -387,58 +386,58 @@
String str = "List";
Set<String> results = GeneratorUtil.getTypesList(str);
log.info(str + " -> " + results);
- assertEquals(1, results.size());
+ Assert.assertEquals(1, results.size());
str = "java.util.Regex";
results = GeneratorUtil.getTypesList(str);
log.info(str + " -> " + results);
- assertEquals(1, results.size());
+ Assert.assertEquals(1, results.size());
str = "java.util.List<? extends org.chorem.bonzoms.Bonzoms>";
results = GeneratorUtil.getTypesList(str);
log.info(str + " -> " + results);
- assertEquals(2, results.size());
+ Assert.assertEquals(2, results.size());
str = "java.util.List<org.chorem.jtimer.Jtimer>";
results = GeneratorUtil.getTypesList(str);
log.info(str + " -> " + results);
- assertEquals(2, results.size());
+ Assert.assertEquals(2, results.size());
str = "java.util.Set<java.util.Collection<java.util.Collection<java.util.Collection" +
"<java.lang.String>>>>";
results = GeneratorUtil.getTypesList(str);
log.info(str + " -> " + results);
- assertEquals(3, results.size());
+ Assert.assertEquals(3, results.size());
str = "java.util.Map<org.chorem.jtimer.Jtimer, java.util.Collection<java.lang.String>>";
results = GeneratorUtil.getTypesList(str);
log.info(str + " -> " + results);
- assertEquals(4, results.size());
+ Assert.assertEquals(4, results.size());
str = "new java.util.HashMap<org.chorem.jtimer.Jtimer, T extends java.lang.String>()";
results = GeneratorUtil.getTypesList(str);
log.info(str + " -> " + results);
- assertEquals(3, results.size());
+ Assert.assertEquals(3, results.size());
str = "java.util.Map<org.chorem.jtimer.Jtimer, java.util.Collection<String>>";
results = GeneratorUtil.getTypesList(str);
log.info(str + " -> " + results);
- assertEquals(4, results.size());
+ Assert.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());
+ Assert.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());
+ Assert.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);
- assertEquals(6, results.size());
+ Assert.assertEquals(6, results.size());
// str = "<T extends org.nuiton.topia.TopiaEntity> T";
// results = GeneratorUtil.getTypesList(str);
Deleted: trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java 2010-11-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -1,112 +0,0 @@
-/*
- * #%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.java;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.junit.Test;
-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$
- * <p/>
- * Mise a jour: $Date$
- * par :
- */
-public class ImportsManagerExtensionTest {
-
-
- private static final Log log =
- LogFactory.getLog(ImportsManagerExtensionTest.class);
-
- /**
- * Test of getManager method, of class ImportsManagerExtension.
- * Prerequisite : Existing ObjectModel containing a classifier
- * - Get an import Manager for a classifier
- * - Test unique : one ImportsManager by classifier
- */
- @Test
- public void testGetManager() {
- log.debug("getManager");
-
- ImportsManagerExtension managers = new ImportsManagerExtension();
-
- ObjectModelImpl model = new ObjectModelImpl();
- model.setName("TestModel");
-
- ObjectModelClassImpl clazz = new ObjectModelClassImpl();
- clazz.setName("Person");
- clazz.setPackage("org.chorem.bonzoms");
- model.addClass(clazz);
-
- ImportsManager manager = managers.getManager(clazz);
- assertNotNull(manager);
-
- ImportsManager manager2 = managers.getManager(clazz);
- assertEquals(manager, manager2);
- }
-
- /**
- * Test of getImports method, of class ImportsManagerExtension.
- * Prerequisite : Existing ObjectModel containing a classifier, imports set for this classifier
- * - Get imports for an existing classifier with its ImportsManager
- */
- @Test
- public void testGetImports() {
- log.debug("getImports");
-
- ImportsManagerExtension managers = new ImportsManagerExtension();
-
- ObjectModelImpl model = new ObjectModelImpl();
- model.setName("TestModel");
-
- ObjectModelClassImpl clazz = new ObjectModelClassImpl();
- clazz.setName("Person");
- clazz.setPackage("org.chorem.bonzoms");
- model.addClass(clazz);
-
- ImportsManager manager = managers.getManager(clazz);
- manager.addImport("java.util.List");
-
- List<String> imports = managers.getImports(clazz);
- assertNotNull(imports);
- assertEquals(imports.size(), 1);
- assertEquals(imports.get(0), "java.util.List");
- }
-
-}
Deleted: trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerTest.java 2010-11-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerTest.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -1,111 +0,0 @@
-/*
- * #%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.java;
-
-import junit.framework.TestCase;
-
-import java.io.Serializable;
-import java.util.List;
-
-public class ImportsManagerTest extends TestCase {
-
- private ImportsManager mgr;
-
- @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
-
- 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"));
- }
-
- 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"));
- }
-
- 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.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));
-
- 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());
-
- }
-
-}
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-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -27,8 +27,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
import org.junit.Test;
import org.nuiton.eugene.GeneratorUtilTest;
+import org.nuiton.eugene.java.extension.ImportsManagerExtension;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
@@ -40,13 +42,6 @@
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/>
@@ -75,7 +70,8 @@
JavaBuilder builder = new JavaBuilder("TestModel");
- builder.getModel();
+ ObjectModel model = builder.getModel();
+ Assert.assertNotNull(model);
}
/**
@@ -102,7 +98,7 @@
String type = "java.util.List<org.chorem.cash.Category>"; // type add : 2 imports added
builder.addImport(classifier, type);
- assertEquals(3, importsExtension.getImports(classifier).size());
+ Assert.assertEquals(3, importsExtension.getImports(classifier).size());
}
/**
@@ -117,7 +113,10 @@
JavaBuilder builder = new JavaBuilder("TestModel");
- builder.createClass("Person", "org.chorem.bonzoms");
+ ObjectModelClass modelClass = builder.createClass("Person", "org.chorem.bonzoms");
+ Assert.assertNotNull(modelClass);
+ Assert.assertEquals("Person",modelClass.getName());
+ Assert.assertEquals("org.chorem.bonzoms",modelClass.getPackageName());
}
/**
@@ -131,7 +130,10 @@
JavaBuilder builder = new JavaBuilder("TestModel");
ObjectModelClass clazz = builder.createAbstractClass("Person", "org.chorem.bonzoms");
- assertTrue(clazz.isAbstract());
+ Assert.assertNotNull(clazz);
+ Assert.assertEquals("Person",clazz.getName());
+ Assert.assertEquals("org.chorem.bonzoms",clazz.getPackageName());
+ Assert.assertTrue(clazz.isAbstract());
}
/**
@@ -154,14 +156,14 @@
superclassQualifiedName = "org.chorem.bonzoms.NamedElement";
builder.setSuperClass(clazz, superclassQualifiedName);
- assertEquals(1, clazz.getSuperclasses().size());
+ Assert.assertEquals(1, clazz.getSuperclasses().size());
// Check imports
ImportsManagerExtension ext = builder.getModel().getExtension(
ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class);
List<String> imports = ext.getImports(clazz);
- assertEquals(0, imports.size());
+ Assert.assertEquals(0, imports.size());
}
/**
@@ -185,8 +187,8 @@
ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class);
List<String> imports = ext.getImports(classifier);
- assertEquals(1, imports.size());
- assertTrue(imports.contains("java.io.Serializable"));
+ Assert.assertEquals(1, imports.size());
+ Assert.assertTrue(imports.contains("java.io.Serializable"));
}
/**
@@ -204,8 +206,8 @@
ObjectModelAttribute constant = builder.addConstant(classifier, "GENDER_MALE", "boolean", "true",
ObjectModelModifier.PUBLIC);
- assertTrue(constant.isFinal());
- assertTrue(constant.isStatic());
+ Assert.assertTrue(constant.isFinal());
+ Assert.assertTrue(constant.isStatic());
}
/**
@@ -237,9 +239,9 @@
List<String> imports = ext.getImports(classifier);
// 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"));
+ Assert.assertEquals(2, imports.size());
+ Assert.assertTrue(imports.contains("java.util.ArrayList"));
+ Assert.assertTrue(imports.contains("java.util.List"));
}
/**
@@ -264,7 +266,7 @@
ObjectModelAttribute result = builder.addAttribute(classifier, attribute);
- assertNotSame(attribute, result);
+ Assert.assertNotSame(attribute, result);
}
/**
@@ -281,10 +283,10 @@
ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms");
ObjectModelOperation operation = builder.addConstructor(clazz, ObjectModelModifier.PUBLIC);
- assertNotNull(operation);
- assertEquals(operation.getName(), "Person");
- assertNull(operation.getReturnParameter());
- assertFalse(operation.isAbstract());
+ Assert.assertNotNull(operation);
+ Assert.assertEquals(operation.getName(), "Person");
+ Assert.assertNull(operation.getReturnParameter());
+ Assert.assertFalse(operation.isAbstract());
}
/**
@@ -313,8 +315,8 @@
ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class);
List<String> imports = ext.getImports(classifier);
- assertEquals(1, imports.size());
- assertTrue(imports.contains("java.util.List"));
+ Assert.assertEquals(1, imports.size());
+ Assert.assertTrue(imports.contains("java.util.List"));
}
/**
@@ -341,7 +343,7 @@
ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class);
List<String> imports = ext.getImports(classifier);
- assertEquals(0, imports.size());
+ Assert.assertEquals(0, imports.size());
}
@@ -369,7 +371,7 @@
ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class);
List<String> imports = ext.getImports(classifier);
- assertEquals(0, imports.size());
+ Assert.assertEquals(0, imports.size());
}
/**
@@ -378,7 +380,7 @@
*
* @see ObjectModelBuilderTest#testSetOperationBody()
*/
- @Test
+ @Test(expected = IllegalArgumentException.class)
public void testSetOperationBody() {
log.debug("setOperationBody");
@@ -389,12 +391,9 @@
ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String",
ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT);
- try {
- builder.setOperationBody(operation, "this.name = name");
- } catch (Exception eee) {
- assertEquals(IllegalArgumentException.class, eee.getClass());
- log.debug("expected exception : " + eee.getMessage());
- }
+
+ builder.setOperationBody(operation, "this.name = name");
+
}
}
Copied: trunk/eugene/src/test/java/org/nuiton/eugene/java/extension/ImportsManagerExtensionTest.java (from rev 1012, trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerExtensionTest.java)
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/java/extension/ImportsManagerExtensionTest.java (rev 0)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/java/extension/ImportsManagerExtensionTest.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -0,0 +1,107 @@
+/*
+ * #%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.java.extension;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
+import org.junit.Test;
+import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl;
+import org.nuiton.eugene.models.object.xml.ObjectModelImpl;
+
+import java.util.List;
+
+
+/**
+ * ImportsManagerExtensionTest
+ * <p/>
+ * Created: 2 nov. 2009
+ *
+ * @author fdesbois
+ * @version $Revision$
+ */
+public class ImportsManagerExtensionTest {
+
+
+ private static final Log log =
+ LogFactory.getLog(ImportsManagerExtensionTest.class);
+
+ /**
+ * Test of getManager method, of class ImportsManagerExtension.
+ * Prerequisite : Existing ObjectModel containing a classifier
+ * - Get an import Manager for a classifier
+ * - Test unique : one ImportsManager by classifier
+ */
+ @Test
+ public void testGetManager() {
+ log.debug("getManager");
+
+ ImportsManagerExtension managers = new ImportsManagerExtension();
+
+ ObjectModelImpl model = new ObjectModelImpl();
+ model.setName("TestModel");
+
+ ObjectModelClassImpl clazz = new ObjectModelClassImpl();
+ clazz.setName("Person");
+ clazz.setPackage("org.chorem.bonzoms");
+ model.addClass(clazz);
+
+ ImportsManager manager = managers.getManager(clazz);
+ Assert.assertNotNull(manager);
+
+ ImportsManager manager2 = managers.getManager(clazz);
+ Assert.assertEquals(manager, manager2);
+ }
+
+ /**
+ * Test of getImports method, of class ImportsManagerExtension.
+ * Prerequisite : Existing ObjectModel containing a classifier, imports set for this classifier
+ * - Get imports for an existing classifier with its ImportsManager
+ */
+ @Test
+ public void testGetImports() {
+ log.debug("getImports");
+
+ ImportsManagerExtension managers = new ImportsManagerExtension();
+
+ ObjectModelImpl model = new ObjectModelImpl();
+ model.setName("TestModel");
+
+ ObjectModelClassImpl clazz = new ObjectModelClassImpl();
+ clazz.setName("Person");
+ clazz.setPackage("org.chorem.bonzoms");
+ model.addClass(clazz);
+
+ ImportsManager manager = managers.getManager(clazz);
+ manager.addImport("java.util.List");
+
+ List<String> imports = managers.getImports(clazz);
+ Assert.assertNotNull(imports);
+ Assert.assertEquals(imports.size(), 1);
+ Assert.assertEquals(imports.get(0), "java.util.List");
+ }
+
+}
Property changes on: trunk/eugene/src/test/java/org/nuiton/eugene/java/extension/ImportsManagerExtensionTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Copied: trunk/eugene/src/test/java/org/nuiton/eugene/java/extension/ImportsManagerTest.java (from rev 1012, trunk/eugene/src/test/java/org/nuiton/eugene/java/ImportsManagerTest.java)
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/java/extension/ImportsManagerTest.java (rev 0)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/java/extension/ImportsManagerTest.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -0,0 +1,116 @@
+/*
+ * #%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.java.extension;
+
+import org.junit.Assert;
+import org.junit.Before;
+import org.junit.Test;
+
+import java.io.Serializable;
+import java.util.List;
+
+public class ImportsManagerTest {
+
+ private ImportsManager mgr;
+
+ @Before
+ public void setUp() throws Exception {
+ mgr = new ImportsManager();
+ }
+
+ @Test
+ public void testAddImport() throws Exception {
+ Assert.assertTrue(mgr.addImport("org.nuiton.eugene.Toto"));
+ Assert.assertTrue(mgr.addImport("org.nuiton.eugene.Toto")); //Repeat to test acceptance
+ Assert.assertTrue(mgr.addImport("org.nuiton.eugene.Tutu"));
+ Assert.assertFalse(mgr.addImport("org.chorem.eugene.Tutu")); //Conflict, package differs
+
+ Assert.assertTrue(mgr.addImport("void"));
+ Assert.assertTrue(mgr.addImport("boolean"));
+ Assert.assertTrue(mgr.addImport("Byte"));
+ Assert.assertTrue(mgr.addImport("java.lang.Toto"));
+ Assert.assertFalse(mgr.addImport("java.lang.sub.Toto"));
+
+ Assert.assertTrue(mgr.addImport(Serializable.class));
+ Assert.assertFalse(mgr.addImport("org.nuiton.eugene.Serializable"));
+ }
+
+ @Test
+ public void testGetType() throws Exception {
+ Assert.assertEquals("Toto", mgr.getType("org.nuiton.eugene.Toto"));
+ Assert.assertEquals("Toto", mgr.getType("org.nuiton.eugene.Toto")); //Repeat to test acceptance
+ Assert.assertEquals("Tutu", mgr.getType("org.nuiton.eugene.Tutu"));
+ Assert.assertEquals("org.chorem.eugene.Tutu", mgr.getType("org.chorem.eugene.Tutu")); //Conflict, package differs
+
+ Assert.assertEquals("void", mgr.getType("void"));
+ Assert.assertEquals("boolean", mgr.getType("boolean"));
+ Assert.assertEquals("Byte", mgr.getType("Byte"));
+ Assert.assertEquals("Toto", mgr.getType("java.lang.Toto"));
+ Assert.assertEquals("java.lang.sub.Toto", mgr.getType("java.lang.sub.Toto"));
+ }
+
+ @Test
+ public void testGetImports() throws Exception {
+ Assert.assertTrue(mgr.addImport("org.nuiton.eugene.Toto"));
+ Assert.assertTrue(mgr.addImport("org.nuiton.eugene.Tutu"));
+ Assert.assertTrue(mgr.addImport("org.nuiton.eugene.subpackage.Tata"));
+ List<String> imports = mgr.getImports("org.nuiton.eugene");
+ Assert.assertEquals(1, imports.size());
+ Assert.assertEquals("org.nuiton.eugene.subpackage.Tata", imports.get(0));
+
+ imports = mgr.getImports("org.nuiton");
+ Assert.assertEquals(3, imports.size());
+ // Check using alphabetic sort
+ Assert.assertEquals("org.nuiton.eugene.Toto", imports.get(0));
+ Assert.assertEquals("org.nuiton.eugene.Tutu", imports.get(1));
+ Assert.assertEquals("org.nuiton.eugene.subpackage.Tata", imports.get(2));
+
+ imports = mgr.getImports("org.chorem");
+ Assert.assertEquals(3, imports.size());
+
+ imports = mgr.getImports("org.nuiton.eugene.subpackage");
+ Assert.assertEquals(2, imports.size());
+ Assert.assertEquals("org.nuiton.eugene.Toto", imports.get(0));
+ Assert.assertEquals("org.nuiton.eugene.Tutu", imports.get(1));
+
+ Assert.assertTrue(mgr.addImport("java.lang.String"));
+ imports = mgr.getImports("org.nuiton.eugene.subpackage");
+ Assert.assertEquals(2, imports.size());
+ Assert.assertEquals("org.nuiton.eugene.Toto", imports.get(0));
+ Assert.assertEquals("org.nuiton.eugene.Tutu", imports.get(1));
+
+ Assert.assertTrue(mgr.addImport("void"));
+ Assert.assertTrue(mgr.addImport("boolean"));
+ Assert.assertTrue(mgr.addImport("Byte"));
+ Assert.assertTrue(mgr.addImport("java.lang.Toto"));
+ Assert.assertFalse(mgr.addImport("java.lang.sub.Titi")); // Read as started, import is refused
+ Assert.assertTrue(mgr.addImport("org.nuiton.eugene.Tutu")); //Already present, must not reject
+ imports = mgr.getImports("org.nuiton.eugene.subpackage");
+ Assert.assertEquals(2, imports.size());
+
+ }
+
+}
Property changes on: trunk/eugene/src/test/java/org/nuiton/eugene/java/extension/ImportsManagerTest.java
___________________________________________________________________
Added: svn:keywords
+ Author Date Id Revision HeadURL
Added: svn:mergeinfo
+ /branches/1.0.1-Javabuilder/eugene/src/test/java/org/nuiton/eugene/ImportsManagerTest.java:641-651
/branches/1.1.0-Javabuilder/eugene/src/test/java/org/nuiton/eugene/ImportsManagerTest.java:652-681
/branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/ImportsManagerTest.java:682-754
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-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -28,6 +28,7 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
import org.junit.Test;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAssociationClass;
@@ -43,11 +44,6 @@
import java.util.List;
import java.util.Set;
-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/>
@@ -72,8 +68,8 @@
ObjectModelBuilder builder = new ObjectModelBuilder("TestModel");
- assertNotNull(builder.getModel());
- assertEquals("TestModel", builder.getModel().getName());
+ Assert.assertNotNull(builder.getModel());
+ Assert.assertEquals("TestModel", builder.getModel().getName());
}
/**
@@ -93,7 +89,7 @@
// model.tagvalue.fr.ifremer.isisfish.types.Month=fr.ifremer.isisfish.types.hibernate.MonthType
ObjectModel model = builder.getModel();
- assertEquals("fr.ifremer.isisfish.types.hibernate.MonthType",
+ Assert.assertEquals("fr.ifremer.isisfish.types.hibernate.MonthType",
model.getTagValue("fr.ifremer.isisfish.types.Month"));
// fr.isisfish.entities.Population.attribute.name.tagvalue.pk=topiaId
@@ -101,7 +97,7 @@
ObjectModelAttribute attr = builder.addAttribute(clazz, "name", "java.lang.String");
builder.addTagValue(attr, "pk", "topiaId");
- assertEquals("topiaId", attr.getTagValue("pk"));
+ Assert.assertEquals("topiaId", attr.getTagValue("pk"));
}
/**
@@ -117,10 +113,10 @@
ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms");
- assertNotNull(clazz);
- assertEquals("Person", clazz.getName());
- assertEquals("org.chorem.bonzoms", clazz.getPackageName());
- assertEquals("org.chorem.bonzoms.Person", clazz.getQualifiedName());
+ Assert.assertNotNull(clazz);
+ Assert.assertEquals("Person", clazz.getName());
+ Assert.assertEquals("org.chorem.bonzoms", clazz.getPackageName());
+ Assert.assertEquals("org.chorem.bonzoms.Person", clazz.getQualifiedName());
}
/** Test of createInterface method, of class ObjectModelBuilder. */
@@ -141,7 +137,7 @@
ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms");
ObjectModelAttribute attribute = builder.addAttribute(classifier, "firstName", "java.lang.String");
- assertEquals("", attribute.getDefaultValue());
+ Assert.assertEquals("", attribute.getDefaultValue());
}
/**
@@ -160,20 +156,20 @@
ObjectModelAttribute attribute = builder.addAttribute(classifier, "firstName", "java.lang.String", "",
ObjectModelModifier.PUBLIC);
- assertNotNull(attribute);
- assertEquals("firstName", attribute.getName());
- assertEquals("java.lang.String", attribute.getType());
- assertEquals("public", attribute.getVisibility());
- assertEquals("", attribute.getDefaultValue());
- assertFalse(attribute.isFinal());
- assertFalse(attribute.isStatic());
+ Assert.assertNotNull(attribute);
+ Assert.assertEquals("firstName", attribute.getName());
+ Assert.assertEquals("java.lang.String", attribute.getType());
+ Assert.assertEquals("public", attribute.getVisibility());
+ Assert.assertEquals("", attribute.getDefaultValue());
+ Assert.assertFalse(attribute.isFinal());
+ Assert.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);
- assertEquals("new java.lang.ArrayList<org.chorem.bonzoms.Role>()", attribute.getDefaultValue());
- assertTrue(attribute.isStatic());
+ Assert.assertEquals("new java.lang.ArrayList<org.chorem.bonzoms.Role>()", attribute.getDefaultValue());
+ Assert.assertTrue(attribute.isStatic());
}
/**
@@ -191,15 +187,15 @@
ObjectModelOperation result = builder.addOperation(classifier,
"methodName", "java.util.List<java.lang.String>", ObjectModelModifier.PUBLIC);
- assertNotNull(result);
- assertEquals(result.getName(), "methodName");
- assertEquals(result.getReturnType(), "java.util.List<java.lang.String>");
- assertEquals(result.getVisibility(), "public");
- assertFalse(result.isAbstract());
+ Assert.assertNotNull(result);
+ Assert.assertEquals(result.getName(), "methodName");
+ Assert.assertEquals(result.getReturnType(), "java.util.List<java.lang.String>");
+ Assert.assertEquals(result.getVisibility(), "public");
+ Assert.assertFalse(result.isAbstract());
result = builder.addOperation(classifier, "addPropertyChangeListener", "void",
ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT);
- assertTrue(result.isAbstract());
+ Assert.assertTrue(result.isAbstract());
}
/**
@@ -219,8 +215,8 @@
ObjectModelModifier.PUBLIC);
builder.setOperationBody(operation, "this.name = name");
- assertNotNull(operation.getBodyCode());
- assertEquals(operation.getBodyCode(), "this.name = name");
+ Assert.assertNotNull(operation.getBodyCode());
+ Assert.assertEquals(operation.getBodyCode(), "this.name = name");
}
/**
@@ -240,8 +236,8 @@
String interfaceQualifiedName = "java.io.Serializable";
builder.addInterface(classifier, interfaceQualifiedName);
- assertNotNull(classifier.getInterfaces());
- assertEquals(classifier.getInterfaces().size(), 1);
+ Assert.assertNotNull(classifier.getInterfaces());
+ Assert.assertEquals(classifier.getInterfaces().size(), 1);
}
/**
@@ -260,7 +256,7 @@
String superclassQualifiedName = "org.chorem.bonzoms.Party";
builder.addSuperclass(clazz, superclassQualifiedName);
- assertEquals(1, clazz.getSuperclasses().size());
+ Assert.assertEquals(1, clazz.getSuperclasses().size());
}
/**
@@ -280,13 +276,13 @@
ObjectModelModifier.PUBLIC);
ObjectModelParameter param = builder.addParameter(operation, "java.lang.String", "name");
- assertNotNull(param);
- assertEquals(param.getName(), "name");
- assertEquals(param.getType(), "java.lang.String");
+ Assert.assertNotNull(param);
+ Assert.assertEquals(param.getName(), "name");
+ Assert.assertEquals(param.getType(), "java.lang.String");
List<ObjectModelParameter> listParams = (List<ObjectModelParameter>) operation.getParameters();
ObjectModelParameter param1 = listParams.get(0);
- assertEquals(param1, param);
+ Assert.assertEquals(param1, param);
}
/**
@@ -307,11 +303,11 @@
builder.addException(operation, "java.lang.IllegalArgumentException");
Set<String> exceptions = operation.getExceptions();
- assertNotNull(exceptions);
- assertEquals(exceptions.size(), 1);
+ Assert.assertNotNull(exceptions);
+ Assert.assertEquals(exceptions.size(), 1);
Iterator<String> it = exceptions.iterator();
- assertNotNull(it.hasNext());
- assertEquals(it.next(), "java.lang.IllegalArgumentException");
+ Assert.assertNotNull(it.hasNext());
+ Assert.assertEquals(it.next(), "java.lang.IllegalArgumentException");
}
/** Test of setDocumentation method, of class ObjectModelBuilder. */
@@ -338,14 +334,14 @@
ObjectModelAttribute assoc = builder.addAssociation(classA, classB, "poll", 1, 1,
ObjectModelModifier.COMPOSITE, ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED);
- assertNotNull(assoc);
- assertTrue(assoc.isNavigable());
- assertTrue(assoc.isComposite());
- assertTrue(assoc.isOrdered());
- assertEquals("poll", assoc.getName());
- assertEquals(1, assoc.getMinMultiplicity());
- assertEquals(1, assoc.getMaxMultiplicity());
- assertEquals("org.chorem.pollen.business.persistence.Vote", assoc.getType());
+ Assert.assertNotNull(assoc);
+ Assert.assertTrue(assoc.isNavigable());
+ Assert.assertTrue(assoc.isComposite());
+ Assert.assertTrue(assoc.isOrdered());
+ Assert.assertEquals("poll", assoc.getName());
+ Assert.assertEquals(1, assoc.getMinMultiplicity());
+ Assert.assertEquals(1, assoc.getMaxMultiplicity());
+ Assert.assertEquals("org.chorem.pollen.business.persistence.Vote", assoc.getType());
}
@@ -370,8 +366,8 @@
ObjectModelAttribute assocB = builder.addReverseAssociation(assocA, "vote", 0, -1);
- assertEquals(assocA, assocB.getReverseAttribute());
- assertEquals(assocB, assocA.getReverseAttribute());
+ Assert.assertEquals(assocA, assocB.getReverseAttribute());
+ Assert.assertEquals(assocB, assocA.getReverseAttribute());
}
/**
@@ -401,9 +397,9 @@
List<ObjectModelClassifier> classifiers = assocClass.getParticipantsClassifiers();
- assertEquals(2, classifiers.size());
- assertTrue(classifiers.contains(classA));
- assertTrue(classifiers.contains(classB));
+ Assert.assertEquals(2, classifiers.size());
+ Assert.assertTrue(classifiers.contains(classA));
+ Assert.assertTrue(classifiers.contains(classB));
}
/** Test of addStereotype method, of class ObjectModelBuilder. */
@@ -415,11 +411,11 @@
ObjectModelClass classA = builder.createClass("Vote", "org.chorem.pollen.business.persistence");
- assertEquals(0, classA.getStereotypes().size());
+ Assert.assertEquals(0, classA.getStereotypes().size());
builder.addStereotype(classA, "entity");
- assertEquals(1, classA.getStereotypes().size());
+ Assert.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-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelImplTest.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -27,12 +27,10 @@
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.junit.Assert;
import org.junit.Test;
-import org.nuiton.eugene.java.ImportsManagerExtension;
+import org.nuiton.eugene.java.extension.ImportsManagerExtension;
-import static org.junit.Assert.assertEquals;
-import static org.junit.Assert.assertNotNull;
-
/** @author fdesbois */
public class ObjectModelImplTest {
@@ -349,12 +347,12 @@
ImportsManagerExtension result =
model.getExtension(ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class);
- assertNotNull(result);
+ Assert.assertNotNull(result);
ImportsManagerExtension result2 =
model.getExtension(ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class);
- assertEquals(result, result2);
+ Assert.assertEquals(result, result2);
}
}
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-29 09:24:24 UTC (rev 1019)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/models/state/StateModelDTDTest.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -76,31 +76,36 @@
SAXParser parser = factory.newSAXParser();
// --- Set Input source
- InputSource source = new InputSource(new FileInputStream(file));
+ FileInputStream stream = new FileInputStream(file);
- // --- parse
- XMLReader reader = parser.getXMLReader();
- reader.setContentHandler(new DefaultHandler());
- reader.setErrorHandler(new DefaultHandler());
- reader.setEntityResolver(new EntityResolver() {
- @Override
- public InputSource resolveEntity(String publicId, String systemId)
- throws SAXException, IOException {
+ try {
+ InputSource source = new InputSource(stream);
+ // --- parse
+ XMLReader reader = parser.getXMLReader();
+ reader.setContentHandler(new DefaultHandler());
+ reader.setErrorHandler(new DefaultHandler());
+ reader.setEntityResolver(new EntityResolver() {
+ @Override
+ public InputSource resolveEntity(String publicId, String systemId)
+ throws SAXException, IOException {
- String dtd = systemId.substring(systemId.lastIndexOf("/"));
+ String dtd = systemId.substring(systemId.lastIndexOf("/"));
- URL url = Resource.getURL("dtd/" + dtd);
- InputSource source;
- try {
- source = new InputSource(new FileInputStream(new File(url.toURI())));
- } catch (URISyntaxException e) {
- throw new SAXException(e);
+ URL url = Resource.getURL("dtd/" + dtd);
+ InputSource source;
+ try {
+ source = new InputSource(new FileInputStream(new File(url.toURI())));
+ } catch (URISyntaxException e) {
+ throw new SAXException(e);
+ }
+
+ return source;
}
-
- return source;
- }
- });
- reader.parse(source);
+ });
+ reader.parse(source);
+ } finally {
+ stream.close();
+ }
}
}
}
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-29 09:24:24 UTC (rev 1019)
+++ trunk/maven-eugene-plugin/src/it/smart-generate/generators/src/main/java/org/nuiton/eugene/test/generator/BeanGenerator.java 2010-11-29 13:07:18 UTC (rev 1020)
@@ -75,7 +75,6 @@
import org.apache.commons.logging.LogFactory;
import org.nuiton.eugene.models.object.ObjectModelGenerator;
import org.nuiton.eugene.GeneratorUtil;
-import org.nuiton.eugene.java.ImportsManager;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClass;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
@@ -83,6 +82,8 @@
import org.nuiton.eugene.models.object.ObjectModelInterface;
import org.nuiton.eugene.models.object.ObjectModelOperation;
import org.nuiton.eugene.models.object.ObjectModelParameter;
+import org.nuiton.eugene.java.extension.ImportsManagerExtension;
+import org.nuiton.eugene.java.extension.ImportsManager;
/**
* DTO generator
@@ -632,7 +633,7 @@
* @param attributes list of attributes for the generation (may be not empty)
* @param imports the ImportsManager used to generate the header imports of the DTO
* @return the same list of attributes in parameter with attributes from entities dependencies
- * @see org.nuiton.eugene.java.ImportsManager
+ * @see org.nuiton.eugene.java.extension.ImportsManager
* @see org.nuiton.eugene.models.object.ObjectModelDependency
*/
private List<ObjectModelAttribute> setAttributesForDTO(ObjectModelClass clazz,
1
0
r1019 - in trunk/eugene/src: main/java/org/nuiton/eugene main/java/org/nuiton/eugene/models/object/xml test/java/org/nuiton/eugene/models/object
by tchemit@users.nuiton.org 29 Nov '10
by tchemit@users.nuiton.org 29 Nov '10
29 Nov '10
Author: tchemit
Date: 2010-11-29 10:24:24 +0100 (Mon, 29 Nov 2010)
New Revision: 1019
Url: http://nuiton.org/repositories/revision/eugene/1019
Log:
add documentation tag value + clean model impl (remove all the oldy commented code)
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java
trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelInterfaceImpl.java
trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java 2010-11-29 08:55:47 UTC (rev 1018)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java 2010-11-29 09:24:24 UTC (rev 1019)
@@ -63,6 +63,19 @@
* <p/>
* You can globaly use it on the complete model or to a specific classifier.
*
+ * @see GeneratorUtil#getDocumentationTagValue(ObjectModel)
+ * @see GeneratorUtil#getDocumentationTagValue(ObjectModelElement)
+ * @since 2.5
+ */
+ @TagValueDefinition(target = {ObjectModel.class, ObjectModelElement.class})
+ String TAG_DOCUMENTATION = "documentation";
+
+ /**
+ * Tag value to add on constants enumeration (or other incoming dev)
+ * a prefix to constant to generate.
+ * <p/>
+ * You can globaly use it on the complete model or to a specific classifier.
+ *
* @see JavaGeneratorUtil#getConstantPrefixTagValue(ObjectModel, ObjectModelClassifier)
* @since 2.3
*/
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2010-11-29 08:55:47 UTC (rev 1018)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/GeneratorUtil.java 2010-11-29 09:24:24 UTC (rev 1019)
@@ -576,7 +576,7 @@
/**
* Suppress packageName from a fullQualifiedName, even if it contains
* List, Map or other generics.
- *
+ * <p/>
* See JUnit test for matching expressions.
*
* @param str FullQualifiedName for an attribute type (for exemple)
@@ -590,7 +590,7 @@
/**
* Suppress packageName from a fullQualifiedName, even if it contains List,
* Map or other generics.
- *
+ * <p/>
* See JUnit test for matching expressions.
*
* @param str fullQualifiedName for an attribute type (for exemple)
@@ -751,9 +751,38 @@
* @param attribute attribute to test
* @return {@code true} if stereotype was found, {@code false otherwise}
* @see EugeneStereoTypes#STEREOTYPE_INDEXED
+ * @since 2.5
*/
public static boolean hasIndexedStereotype(ObjectModelAttribute attribute) {
return attribute.hasStereotype(EugeneStereoTypes.STEREOTYPE_INDEXED);
}
+ /**
+ * Obtain the value of the {@link EugeneTagValues#TAG_DOCUMENTATION}
+ * tag value on the given model.
+ *
+ * @param model model to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see EugeneTagValues#TAG_DOCUMENTATION
+ * @since 2.5
+ */
+ public static String getDocumentationTagValue(ObjectModel model) {
+ String value = findTagValue(EugeneTagValues.TAG_DOCUMENTATION, null, model);
+ return value;
+ }
+
+ /**
+ * Obtain the value of the {@link EugeneTagValues#TAG_DOCUMENTATION}
+ * tag value on the given element.
+ *
+ * @param element element to seek
+ * @return the none empty value of the found tag value or {@code null} if not found nor empty.
+ * @see EugeneTagValues#TAG_DOCUMENTATION
+ * @since 2.5
+ */
+ public static String getDocumentationTagValue(ObjectModelElement element) {
+ String value = findTagValue(EugeneTagValues.TAG_DOCUMENTATION, element, null);
+ return value;
+ }
+
} // GeneratorUtil
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java 2010-11-29 08:55:47 UTC (rev 1018)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java 2010-11-29 09:24:24 UTC (rev 1019)
@@ -102,7 +102,7 @@
ObjectModelImplSuperClassRef ref = (ObjectModelImplSuperClassRef) superclassesRef;
if (log.isDebugEnabled()) {
- log.debug("Superclass ref for " + this.getQualifiedName() + " : " + ref.getName());
+ log.debug("Superclass ref for " + getQualifiedName() + " : " + ref.getName());
}
ObjectModelClass superclass = objectModelImpl.getClass(ref.getName());
@@ -114,7 +114,7 @@
}
if (log.isDebugEnabled()) {
- log.debug("Superclass for " + this.getQualifiedName() + " : " + superclass.getQualifiedName());
+ log.debug("Superclass for " + getQualifiedName() + " : " + superclass.getQualifiedName());
}
superclasses.add(superclass);
@@ -192,11 +192,6 @@
return abstractz;
}
-// @Override
-// public boolean isInner() {
-// return inner;
-// }
-
@Override
public Collection<ObjectModelOperation> getAllOtherOperations(
boolean distinct) {
@@ -267,28 +262,4 @@
return result.toString();
}
-// /**
-// * Returns whether this classifier is a class or not
-// *
-// * @see ObjectModelClass
-// *
-// * @return a boolean indicating whether this classifier is a class or not.
-// */
-// @Override
-// public boolean isClass() {
-// return true;
-// }
-//
-// /**
-// * Returns whether this classifier is an interface or not
-// *
-// * @see ObjectModelInterface
-// *
-// * @return a boolean indicating whether this classifier is an interface or
-// * not.
-// */
-// @Override
-// public boolean isInterface() {
-// return false;
-// }
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java 2010-11-29 08:55:47 UTC (rev 1018)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java 2010-11-29 09:24:24 UTC (rev 1019)
@@ -28,6 +28,7 @@
import org.apache.commons.lang.StringUtils;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
+import org.nuiton.eugene.GeneratorUtil;
import org.nuiton.eugene.models.object.ObjectModelElement;
import java.util.ArrayList;
@@ -144,8 +145,13 @@
@Override
public String getDocumentation() {
- if (documentation == null && hasTagValue("documentation")) {
- return getTagValue("documentation");
+// if (documentation == null && hasTagValue("documentation")) {
+ if (documentation == null) {
+ String doc = GeneratorUtil.getDocumentationTagValue(this);
+ if (StringUtils.isNotEmpty(doc)) {
+ documentation = doc;
+ }
+// return getTagValue("documentation");
}
return documentation;
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java 2010-11-29 08:55:47 UTC (rev 1018)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java 2010-11-29 09:24:24 UTC (rev 1019)
@@ -48,23 +48,6 @@
*/
private Collection<ObjectModelImplRef> literalRefs = new ArrayList<ObjectModelImplRef>();
-// /**
-// * Collection of operations objectModel
-// */
-// private Collection<ObjectModelOperation> operations = new ArrayList<ObjectModelOperation>();
-
-// /**
-// * Package name from objectModel file, loaded with Digester
-// */
-// private String packageName;
-
-// public void setPackage(String packageName) {
-// this.packageName = packageName;
-// }
-//
-// public String getPackage() {
-// return this.packageName;
-// }
/**
* Add a literal to the ObjectModelEnumeration from Digester
* @param ref corresponding to a Literal value
@@ -73,26 +56,6 @@
literalRefs.add(ref);
}
-// /**
-// * Add an operation to the ObjectModelEnumeration from Digester
-// * @param operation
-// */
-// public void addOperation(ObjectModelOperationImpl operation) {
-// operation.postInit();
-// operation.setDeclaringElement(this);
-// operations.add(operation);
-// }
-//
-// @Override
-// public String getPackageName() {
-// return this.packageName;
-// }
-//
-// @Override
-// public String getQualifiedName() {
-// return this.packageName+"."+this.getName();
-// }
-
@Override
public Collection<String> getLiterals() {
Collection<String> results = new ArrayList<String>();
@@ -102,9 +65,4 @@
return results;
}
-// @Override
-// public Collection<ObjectModelOperation> getOperations() {
-// return operations;
-// }
-
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelInterfaceImpl.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelInterfaceImpl.java 2010-11-29 08:55:47 UTC (rev 1018)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelInterfaceImpl.java 2010-11-29 09:24:24 UTC (rev 1019)
@@ -56,27 +56,4 @@
}
return result.toString();
}
-
-// /**
-// * Returns whether this classifier is a class or not
-// *
-// * @see ObjectModelClass
-// *
-// * @return a boolean indicating whether this classifier is a class or not.
-// */
-// public boolean isClass() {
-// return false;
-// }
-//
-// /**
-// * Returns whether this classifier is an interface or not
-// *
-// * @see ObjectModelInterface
-// *
-// * @return a boolean indicating whether this classifier is an interface or
-// * not.
-// */
-// public boolean isInterface() {
-// return true;
-// }
}
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-29 08:55:47 UTC (rev 1018)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java 2010-11-29 09:24:24 UTC (rev 1019)
@@ -27,6 +27,7 @@
import org.junit.BeforeClass;
import org.junit.Test;
+import org.nuiton.eugene.GeneratorUtil;
import org.nuiton.eugene.TestHelper;
import org.nuiton.util.FileUtil;
import org.nuiton.util.Resource;
@@ -546,7 +547,7 @@
assertNotNull(model);
assertEquals("XMITest21", model.getName());
- assertEquals("model doc!", model.getTagValue("documentation"));
+ assertEquals("model doc!", GeneratorUtil.getDocumentationTagValue(model));
// ClassC
ObjectModelClass clazzC = model.getClass("org.nuiton.eugene.test21.ClassC");
1
0
r1018 - in trunk/eugene/src/main/java/org/nuiton/eugene: . models/object
by tchemit@users.nuiton.org 29 Nov '10
by tchemit@users.nuiton.org 29 Nov '10
29 Nov '10
Author: tchemit
Date: 2010-11-29 09:55:47 +0100 (Mon, 29 Nov 2010)
New Revision: 1018
Url: http://nuiton.org/repositories/revision/eugene/1018
Log:
can configure log level of model properties loader + do not still block unknown tag value, still a couple of unsafe one...
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java
trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2010-11-28 23:55:31 UTC (rev 1017)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2010-11-29 08:55:47 UTC (rev 1018)
@@ -25,26 +25,24 @@
/** Logger. */
private static final Log log = LogFactory.getLog(ModelPropertiesUtil.class);
- /** the shared store of known tag values and stereotypes. */
- public static ModelPropertiesProvider store;
+ /**
+ * Obtain a new store of tag values and stereotypes.
+ *
+ * @param loader the classloader to use (if none given will use the one of the current thread)
+ * @param verbose a verbose flag
+ * @return the aggregate store of all atomic one detected in the class-path
+ */
+ public static ModelPropertiesProvider newStore(ClassLoader loader,
+ boolean verbose) {
- public static Class<?>[] getTagValueTarget(String tagValueName) {
- return getStore().getTagValueTarget(tagValueName);
- }
-
- public static Class<?>[] getStereotypeTarget(String tagValueName) {
- return getStore().getStereotypeTarget(tagValueName);
- }
-
- public static ModelPropertiesProvider initStore(ClassLoader loader) {
-
if (loader == null) {
// use the current thread loader
loader = Thread.currentThread().getContextClassLoader();
}
- store = new AggregateModelPropertiesProvider(loader);
+ ModelPropertiesProvider store = new AggregateModelPropertiesProvider(loader);
+ store.setVerbose(verbose || log.isDebugEnabled());
try {
store.init();
} catch (Exception e) {
@@ -53,14 +51,6 @@
return store;
}
- public static ModelPropertiesProvider getStore() {
- if (store == null) {
-
- store = initStore(null);
- }
- return store;
- }
-
/**
* The Eugene provider of tag values and stereotypes.
*
@@ -97,9 +87,10 @@
loader = ServiceLoader.load(ModelPropertiesProvider.class,
this.loader);
for (ModelPropertiesProvider provider : loader) {
- if (log.isInfoEnabled()) {
+ if (isVerbose()) {
log.info("Will init model properties provider " + provider);
}
+ provider.setVerbose(isVerbose());
provider.init();
getStereotypeStore().putAll(provider.getStereotypeStore());
getTagValueStore().putAll(provider.getTagValueStore());
@@ -176,15 +167,25 @@
protected Map<String, TagValueDefinition> tagValueStore;
+ protected boolean verbose;
+
protected ModelPropertiesProvider() {
stereotypeStore = new TreeMap<String, StereotypeDefinition>();
tagValueStore = new TreeMap<String, TagValueDefinition>();
}
+ public boolean isVerbose() {
+ return verbose;
+ }
+
+ public void setVerbose(boolean verbose) {
+ this.verbose = verbose;
+ }
+
public abstract void init() throws Exception;
protected void scanStereotypeClass(Class<?> holder) throws IllegalAccessException {
- if (log.isInfoEnabled()) {
+ if (isVerbose()) {
log.info("Will scan " + holder.getName() + " to search some stereotype definitions...");
}
Field[] fields = holder.getDeclaredFields();
@@ -196,7 +197,7 @@
if (stereotypeDefinition != null) {
String fieldName = field.getName();
String stereotypeName = (String) field.get(null);
- if (log.isInfoEnabled()) {
+ if (isVerbose()) {
log.info("Detected stereotype definition [" + fieldName + ":" + stereotypeName + "] : " + Arrays.toString(stereotypeDefinition.target()));
}
stereotypeStore.put(stereotypeName, stereotypeDefinition);
@@ -205,7 +206,7 @@
}
protected void scanTagValueClass(Class<?> holder) throws IllegalAccessException {
- if (log.isInfoEnabled()) {
+ if (isVerbose()) {
log.info("Will scan " + holder.getName() + " to search some tag value definitions...");
}
Field[] fields = holder.getDeclaredFields();
@@ -216,7 +217,7 @@
if (tagValueDefinition != null) {
String fieldName = field.getName();
String tagValueName = (String) field.get(null);
- if (log.isInfoEnabled()) {
+ if (isVerbose()) {
log.info("Detected tag value definition [" + fieldName + ":" + tagValueName + "] : " + Arrays.toString(tagValueDefinition.target()));
}
tagValueStore.put(tagValueName, tagValueDefinition);
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 23:55:31 UTC (rev 1017)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelReader.java 2010-11-29 08:55:47 UTC (rev 1018)
@@ -109,6 +109,8 @@
public static final String MODEL = "model";
+ ModelPropertiesUtil.ModelPropertiesProvider propertiesProvider;
+
/**
* @param files les noms des fichiers existant contenant du XML représentant
* des ObjectModel. Il est automatiquement recherche un fichier de
@@ -201,8 +203,8 @@
public Properties loadModelProperties(File propFile, ObjectModel model) throws IOException {
// init ModelProperties store
- ModelPropertiesUtil.initStore(getLoader());
-
+ propertiesProvider = ModelPropertiesUtil.newStore(getLoader(), isVerbose());
+
Properties prop = new RecursiveProperties();
// try {
FileInputStream inStream = new FileInputStream(propFile);
@@ -286,14 +288,14 @@
}
String tag = matcher.group(2);
- Class<?>[] targets = ModelPropertiesUtil.getTagValueTarget(tag);
+ Class<?>[] targets = propertiesProvider.getTagValueTarget(tag);
if (targets == null) {
// unknown tag value, can not use it
if (log.isWarnEnabled()) {
log.warn("Invalid model tag value [" + key + "] : the tagvalue is unkown.");
}
- return false;
+// return false;
}
ObjectModelImpl modelImpl = (ObjectModelImpl) model;
1
0
28 Nov '10
Author: tchemit
Date: 2010-11-29 00:55:31 +0100 (Mon, 29 Nov 2010)
New Revision: 1017
Url: http://nuiton.org/repositories/revision/eugene/1017
Log:
let init moethod be public (for tests) + optimize imports
Modified:
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/ModelPropertiesUtil.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java 2010-11-28 23:49:23 UTC (rev 1016)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/EugeneStereoTypes.java 2010-11-28 23:55:31 UTC (rev 1017)
@@ -29,6 +29,8 @@
import org.nuiton.eugene.models.object.ObjectModelAttribute;
import org.nuiton.eugene.models.object.ObjectModelClassifier;
+import static org.nuiton.eugene.ModelPropertiesUtil.StereotypeDefinition;
+
/**
* Defines all stereotypes managed by Eugene.
* <p/>
@@ -46,7 +48,7 @@
* @see JavaBeanTransformer
* @see JavaGeneratorUtil#hasBeanStereotype(ObjectModelClassifier)
*/
- @ModelPropertiesUtil.StereotypeDefinition(target = ObjectModelClassifier.class)
+ @StereotypeDefinition(target = ObjectModelClassifier.class)
String STEREOTYPE_BEAN = "bean";
/**
@@ -54,6 +56,6 @@
*
* @see GeneratorUtil#hasIndexedStereotype(ObjectModelAttribute)
*/
- @ModelPropertiesUtil.StereotypeDefinition(target = ObjectModelAttribute.class)
+ @StereotypeDefinition(target = ObjectModelAttribute.class)
String STEREOTYPE_INDEXED = "indexed";
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java 2010-11-28 23:49:23 UTC (rev 1016)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/EugeneTagValues.java 2010-11-28 23:55:31 UTC (rev 1017)
@@ -31,6 +31,7 @@
import org.nuiton.eugene.models.object.ObjectModelElement;
import org.nuiton.eugene.models.object.ObjectModelReader;
+import static org.nuiton.eugene.ModelPropertiesUtil.TagValueDefinition;
/**
* Defines all tag values managed by Eugene.
* <p/>
@@ -53,7 +54,7 @@
* @see ObjectModelReader#loadModelTagValue(ObjectModel, String, String)
* @since 2.3
*/
- @ModelPropertiesUtil.TagValueDefinition(target = {ObjectModel.class})
+ @TagValueDefinition(target = {ObjectModel.class})
String TAG_VERSION = "version";
/**
@@ -65,7 +66,7 @@
* @see JavaGeneratorUtil#getConstantPrefixTagValue(ObjectModel, ObjectModelClassifier)
* @since 2.3
*/
- @ModelPropertiesUtil.TagValueDefinition(target = {ObjectModel.class, ObjectModelClassifier.class})
+ @TagValueDefinition(target = {ObjectModel.class, ObjectModelClassifier.class})
String TAG_CONSTANT_PREFIX = "constantPrefix";
/**
@@ -77,7 +78,7 @@
* @see JavaGeneratorUtil#getNoPCSTagValue(ObjectModel, ObjectModelClassifier)
* @since 2.3
*/
- @ModelPropertiesUtil.TagValueDefinition(target = {ObjectModel.class, ObjectModelClassifier.class})
+ @TagValueDefinition(target = {ObjectModel.class, ObjectModelClassifier.class})
String TAG_NO_PCS = "noPCS";
/**
@@ -88,6 +89,6 @@
* @see JavaGeneratorUtil#getI18nPrefixTagValue(ObjectModelElement, ObjectModel)
* @since 2.3
*/
- @ModelPropertiesUtil.TagValueDefinition(target = {ObjectModel.class, ObjectModelClassifier.class})
+ @TagValueDefinition(target = {ObjectModel.class, ObjectModelClassifier.class})
String TAG_I18N_PREFIX = "i18n";
}
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2010-11-28 23:49:23 UTC (rev 1016)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2010-11-28 23:55:31 UTC (rev 1017)
@@ -70,7 +70,7 @@
public static class EugeneModelPropertiesProvider extends ModelPropertiesProvider {
@Override
- protected void init() throws IllegalAccessException {
+ public void init() throws IllegalAccessException {
scanStereotypeClass(EugeneStereoTypes.class);
scanTagValueClass(EugeneTagValues.class);
}
@@ -92,7 +92,7 @@
}
@Override
- protected void init() throws Exception {
+ public void init() throws Exception {
ServiceLoader<ModelPropertiesProvider> loader;
loader = ServiceLoader.load(ModelPropertiesProvider.class,
this.loader);
@@ -181,7 +181,7 @@
tagValueStore = new TreeMap<String, TagValueDefinition>();
}
- protected abstract void init() throws Exception;
+ public abstract void init() throws Exception;
protected void scanStereotypeClass(Class<?> holder) throws IllegalAccessException {
if (log.isInfoEnabled()) {
1
0
r1016 - in trunk/eugene/src: main/java/org/nuiton/eugene test/java/org/nuiton/eugene
by tchemit@users.nuiton.org 28 Nov '10
by tchemit@users.nuiton.org 28 Nov '10
28 Nov '10
Author: tchemit
Date: 2010-11-29 00:49:23 +0100 (Mon, 29 Nov 2010)
New Revision: 1016
Url: http://nuiton.org/repositories/revision/eugene/1016
Log:
add since + fix test
Modified:
trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java
trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java
trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2010-11-28 23:16:57 UTC (rev 1015)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelPropertiesUtil.java 2010-11-28 23:49:23 UTC (rev 1016)
@@ -85,7 +85,7 @@
*/
public static class AggregateModelPropertiesProvider extends ModelPropertiesProvider {
- ClassLoader loader;
+ protected ClassLoader loader;
public AggregateModelPropertiesProvider(ClassLoader loader) {
this.loader = loader;
@@ -94,7 +94,8 @@
@Override
protected void init() throws Exception {
ServiceLoader<ModelPropertiesProvider> loader;
- loader = ServiceLoader.load(ModelPropertiesProvider.class, this.loader);
+ loader = ServiceLoader.load(ModelPropertiesProvider.class,
+ this.loader);
for (ModelPropertiesProvider provider : loader) {
if (log.isInfoEnabled()) {
log.info("Will init model properties provider " + provider);
Modified: trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java
===================================================================
--- trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2010-11-28 23:16:57 UTC (rev 1015)
+++ trunk/eugene/src/main/java/org/nuiton/eugene/ModelReader.java 2010-11-28 23:49:23 UTC (rev 1016)
@@ -48,8 +48,10 @@
/** date de derniere modification de la source la plus recente */
protected long lastModifiedSource;
+ /** @since 2.3 */
protected boolean verbose;
-
+
+ /** @since 2.3 */
protected ClassLoader loader;
public boolean isVerbose() {
@@ -82,9 +84,7 @@
}
}
- /**
- * @return the last modified file source (says the newer incoming file)
- */
+ /** @return the last modified file source (says the newer incoming file) */
public long getLastModifiedSource() {
return lastModifiedSource;
}
Modified: trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java
===================================================================
--- trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java 2010-11-28 23:16:57 UTC (rev 1015)
+++ trunk/eugene/src/test/java/org/nuiton/eugene/EugeneModelPropertiesProviderTest.java 2010-11-28 23:49:23 UTC (rev 1016)
@@ -1,7 +1,7 @@
package org.nuiton.eugene;
import org.junit.Assert;
-import org.junit.BeforeClass;
+import org.junit.Before;
import org.junit.Test;
import org.nuiton.eugene.models.object.ObjectModel;
import org.nuiton.eugene.models.object.ObjectModelAttribute;
@@ -17,9 +17,10 @@
protected ModelPropertiesUtil.ModelPropertiesProvider provider;
- @BeforeClass
- public void setUp() {
+ @Before
+ public void setUp() throws Exception {
provider = new ModelPropertiesUtil.EugeneModelPropertiesProvider();
+ provider.init();
}
@Test
1
0