r1152 - in trunk: . eugene eugene/src/main/java/org/nuiton/eugene eugene/src/main/java/org/nuiton/eugene/java eugene/src/main/java/org/nuiton/eugene/models/object eugene/src/main/java/org/nuiton/eugene/models/object/validator eugene/src/main/java/org/nuiton/eugene/models/object/xml eugene/src/main/java/org/nuiton/eugene/models/state eugene/src/main/java/org/nuiton/eugene/models/state/xml eugene/src/test/java/org/nuiton/eugene eugene/src/test/java/org/nuiton/eugene/java eugene/src/test/java/
Author: athimel Date: 2012-06-01 12:51:04 +0200 (Fri, 01 Jun 2012) New Revision: 1152 Url: http://nuiton.org/repositories/revision/eugene/1152 Log: fixes #107 Remove attributes from the ObjectModel(Attr|Op|Class|Iface|Param) when based on an ObjectModelModifier. ObjectModelModifier in splitter in two enum and used as a contract. Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelJavaModifier.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelUMLModifier.java Modified: trunk/eugene/pom.xml trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.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/JavaGeneratorUtil.java trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilder.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelModifier.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/NameBasedValidator.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtension.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAssociationClassImpl.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/ObjectModelClassImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.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/ObjectModelImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelInterfaceImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelParameterImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModel.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelReader.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelComplexeStateImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateImpl.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/ObjectModelGeneratorTest.java trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java trunk/pom.xml Modified: trunk/eugene/pom.xml =================================================================== --- trunk/eugene/pom.xml 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/pom.xml 2012-06-01 10:51:04 UTC (rev 1152) @@ -52,6 +52,11 @@ </dependency> <dependency> + <groupId>com.google.guava</groupId> + <artifactId>guava</artifactId> + </dependency> + + <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-digester3</artifactId> </dependency> Modified: trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/Transformer.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,14 +25,14 @@ package org.nuiton.eugene; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.models.Model; + import java.io.File; import java.io.IOException; import java.util.Properties; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.models.Model; - /** * Transformer * Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBeanTransformer.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -28,7 +28,11 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.EugeneTagValues; -import org.nuiton.eugene.models.object.*; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.ObjectModelJavaModifier; +import org.nuiton.eugene.models.object.ObjectModelOperation; import java.beans.PropertyChangeListener; import java.beans.PropertyChangeSupport; @@ -188,7 +192,7 @@ constantName, String.class, "\"" + attrName + "\"", - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); } @@ -332,7 +336,7 @@ attrName, attrType, "", - ObjectModelModifier.PROTECTED + ObjectModelJavaModifier.PROTECTED ); } @@ -344,7 +348,7 @@ operations, ouput, true, - ObjectModelModifier.ABSTRACT + ObjectModelJavaModifier.ABSTRACT ); } @@ -373,7 +377,7 @@ output, getJavaBeanMethodName(methodPrefix , attrName), attrType, - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); setOperationBody(getter, "" /*{ @@ -390,7 +394,7 @@ output, getJavaBeanMethodName("get", attrName), attrType, - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); addParameter(getChild, "int", "index"); setOperationBody(getChild, "" @@ -410,7 +414,7 @@ output, getJavaBeanMethodName("add", attrName), "void", - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); addParameter(addChild, attrType, attrName); @@ -439,7 +443,7 @@ output, getJavaBeanMethodName("addAll", attrName), "void", - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); addParameter(addAllChild, "java.util.Collection<" + attrType + ">", attrName); @@ -468,7 +472,7 @@ output, getJavaBeanMethodName("remove", attrName), "boolean", - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); addParameter(operation, attrType, attrName); String methodName = getJavaBeanMethodName("get", attrName); @@ -506,7 +510,7 @@ output, getJavaBeanMethodName("removeAll", attrName), "boolean", - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); addParameter(operation, "java.util.Collection<" + attrType + ">", attrName); StringBuilder buffer = new StringBuilder(); @@ -544,7 +548,7 @@ output, getJavaBeanMethodName("contains", attrName), "boolean", - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); addParameter(operation, attrType, attrName); StringBuilder buffer = new StringBuilder(); @@ -573,7 +577,7 @@ output, getJavaBeanMethodName("containsAll", attrName), "boolean", - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); addParameter(operation, "java.util.Collection<" + attrType + ">", attrName); StringBuilder buffer = new StringBuilder(); @@ -602,7 +606,7 @@ output, getJavaBeanMethodName("set", attrName), "void", - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); addParameter(operation, attrType, attrName); @@ -628,7 +632,7 @@ ObjectModelOperation getChild = addOperation( output, "getChild", "<T> T", - ObjectModelModifier.PROTECTED + ObjectModelJavaModifier.PROTECTED ); addParameter(getChild, "java.util.Collection<T>", "childs"); addParameter(getChild, "int", "index"); @@ -662,7 +666,7 @@ JavaGeneratorUtil.SERIAL_VERSION_UID, "long", serialVersionUID + "L", - ObjectModelModifier.PRIVATE + ObjectModelJavaModifier.PRIVATE ); } @@ -716,7 +720,7 @@ JavaGeneratorUtil.SERIAL_VERSION_UID, "long", "1L", - ObjectModelModifier.PRIVATE + ObjectModelJavaModifier.PRIVATE ); return resultClassImpl; } @@ -727,8 +731,8 @@ "pcs", PropertyChangeSupport.class, "new PropertyChangeSupport(this)", - ObjectModelModifier.PROTECTED, - ObjectModelModifier.FINAL + ObjectModelJavaModifier.PROTECTED, + ObjectModelJavaModifier.FINAL ); // Add PropertyListener @@ -738,7 +742,7 @@ operation = addOperation(output, "addPropertyChangeListener", "void", - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); addParameter(operation, PropertyChangeListener.class, "listener"); setOperationBody(operation, "" @@ -750,7 +754,7 @@ operation = addOperation(output, "addPropertyChangeListener", "void", - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); addParameter(operation, String.class, "propertyName"); addParameter(operation, PropertyChangeListener.class, "listener"); @@ -763,7 +767,7 @@ operation = addOperation(output, "removePropertyChangeListener", "void", - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); addParameter(operation, PropertyChangeListener.class, "listener"); setOperationBody(operation, "" @@ -775,7 +779,7 @@ operation = addOperation(output, "removePropertyChangeListener", "void", - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); addParameter(operation, String.class, "propertyName"); addParameter(operation, PropertyChangeListener.class, "listener"); @@ -788,7 +792,7 @@ operation = addOperation(output, "firePropertyChange", "void", - ObjectModelModifier.PROTECTED + ObjectModelJavaModifier.PROTECTED ); addParameter(operation, String.class, "propertyName"); addParameter(operation, Object.class, "oldValue"); @@ -802,7 +806,7 @@ operation = addOperation(output, "firePropertyChange", "void", - ObjectModelModifier.PROTECTED + ObjectModelJavaModifier.PROTECTED ); addParameter(operation, String.class, "propertyName"); addParameter(operation, Object.class, "newValue"); Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -41,6 +41,7 @@ import org.nuiton.eugene.models.object.ObjectModelClassifier; import org.nuiton.eugene.models.object.ObjectModelElement; import org.nuiton.eugene.models.object.ObjectModelEnumeration; +import org.nuiton.eugene.models.object.ObjectModelJavaModifier; import org.nuiton.eugene.models.object.ObjectModelModifier; import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.eugene.models.object.ObjectModelParameter; @@ -173,7 +174,7 @@ name, type, "", - ObjectModelModifier.PROTECTED + ObjectModelJavaModifier.PROTECTED ); } @@ -252,7 +253,7 @@ */ public ObjectModelClass createAbstractClass(String name, String packageName) { - return createClass(name, packageName, ObjectModelModifier.ABSTRACT); + return createClass(name, packageName, ObjectModelJavaModifier.ABSTRACT); } /** @@ -351,7 +352,7 @@ throws IllegalArgumentException { if (!visibility.isVisibility()) { throw new IllegalArgumentException( - "Illegal visibility type : " + visibility.name() + + "Illegal visibility type : " + visibility.toString() + " for " + classifier.getQualifiedName()); } @@ -360,8 +361,8 @@ type, value, visibility, - ObjectModelModifier.STATIC, - ObjectModelModifier.FINAL + ObjectModelJavaModifier.STATIC, + ObjectModelJavaModifier.FINAL ); } @@ -423,23 +424,15 @@ Set<ObjectModelModifier> modifiers = new HashSet<ObjectModelModifier>(); if (attribute.isStatic()) { - modifiers.add(ObjectModelModifier.STATIC); + modifiers.add(ObjectModelJavaModifier.STATIC); } if (attribute.isFinal()) { - modifiers.add(ObjectModelModifier.FINAL); + modifiers.add(ObjectModelJavaModifier.FINAL); } if (attribute.isTransient()) { - modifiers.add(ObjectModelModifier.TRANSIENT); + modifiers.add(ObjectModelJavaModifier.TRANSIENT); } - if (attribute.getVisibility().equals("public")) { - modifiers.add(ObjectModelModifier.PUBLIC); - } else if (attribute.getVisibility().equals("protected")) { - modifiers.add(ObjectModelModifier.PROTECTED); - } else if (attribute.getVisibility().equals("private")) { - modifiers.add(ObjectModelModifier.PRIVATE); - } else if (attribute.getVisibility().equals("")) { - modifiers.add(ObjectModelModifier.PACKAGE); - } + modifiers.add(ObjectModelJavaModifier.fromVisibility(attribute.getVisibility())); return addAttribute( classifier, @@ -462,7 +455,7 @@ ObjectModelModifier... modifiers) { ObjectModelOperationImpl operation = (ObjectModelOperationImpl) addOperation(classifier, null, null, modifiers); - if (Arrays.asList(modifiers).contains(ObjectModelModifier.STATIC)) { + if (Arrays.asList(modifiers).contains(ObjectModelJavaModifier.STATIC)) { operation.setStatic(true); } return operation; @@ -503,7 +496,7 @@ if (!visibility.isVisibility()) { throw new IllegalArgumentException( - "Illegal visibility type : " + visibility.name() + + "Illegal visibility type : " + visibility.toString() + " for " + classifier.getQualifiedName()); } 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 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGenerator.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,6 +25,23 @@ package org.nuiton.eugene.java; +import org.apache.commons.collections.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.GeneratorUtil; +import org.nuiton.eugene.java.extension.AnnotationsManagerExtension; +import org.nuiton.eugene.java.extension.ImportsManagerExtension; +import org.nuiton.eugene.models.object.ObjectModelAttribute; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.ObjectModelElement; +import org.nuiton.eugene.models.object.ObjectModelEnumeration; +import org.nuiton.eugene.models.object.ObjectModelGenerator; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelParameter; + import java.io.File; import java.io.IOException; import java.io.Writer; @@ -34,16 +51,7 @@ import java.util.List; import java.util.Set; -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.GeneratorUtil; -import org.nuiton.eugene.models.object.*; -import org.nuiton.eugene.java.extension.ImportsManagerExtension; -import org.nuiton.eugene.java.extension.AnnotationsManagerExtension; - /*{generator option: parentheses = true}*/ /*{generator option: writeString = output.write}*/ Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaGeneratorUtil.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -31,6 +31,7 @@ import org.nuiton.eugene.models.object.ObjectModel; import org.nuiton.eugene.models.object.ObjectModelClassifier; import org.nuiton.eugene.models.object.ObjectModelElement; +import org.nuiton.eugene.models.object.ObjectModelJavaModifier; import org.nuiton.eugene.models.object.ObjectModelModifier; import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.eugene.models.object.ObjectModelParameter; @@ -85,7 +86,7 @@ // compute visibility modifer String visibility = op.getVisibility(); ObjectModelModifier modifier = - ObjectModelModifier.toValue(visibility); + ObjectModelJavaModifier.fromVisibility(visibility); int length = extraModifiers.length; if (length == 0) { Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaInterfaceTransformer.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -30,7 +30,7 @@ import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.models.object.ObjectModelAttribute; import org.nuiton.eugene.models.object.ObjectModelInterface; -import org.nuiton.eugene.models.object.ObjectModelModifier; +import org.nuiton.eugene.models.object.ObjectModelJavaModifier; import java.util.Set; @@ -110,7 +110,7 @@ constantName, attr.getType(), attr.getDefaultValue(), - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); } Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -33,12 +33,29 @@ import org.nuiton.eugene.GeneratorUtil; import org.nuiton.eugene.Template; import org.nuiton.eugene.java.extension.ImportsManager; -import org.nuiton.eugene.models.object.*; +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.ObjectModelDependency; +import org.nuiton.eugene.models.object.ObjectModelElement; +import org.nuiton.eugene.models.object.ObjectModelEnumeration; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.ObjectModelJavaModifier; +import org.nuiton.eugene.models.object.ObjectModelModifier; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelParameter; +import org.nuiton.eugene.models.object.ObjectModelTransformer; +import org.nuiton.eugene.models.object.ObjectModelType; import org.nuiton.i18n.I18n; import java.beans.Introspector; import java.net.URL; -import java.util.*; +import java.util.Collection; +import java.util.Collections; +import java.util.HashSet; +import java.util.Map; +import java.util.Set; /** * Created: 28 oct. 2009 @@ -481,7 +498,7 @@ // add body only if operation is not abstract boolean opAbstract = false; for (ObjectModelModifier modifier : modifiers) { - if (modifier == ObjectModelModifier.ABSTRACT) { + if (modifier == ObjectModelJavaModifier.ABSTRACT) { opAbstract = true; break; } @@ -780,7 +797,7 @@ constantName, String.class, "\"" + literal + "\"", - ObjectModelModifier.PUBLIC + ObjectModelJavaModifier.PUBLIC ); constantNames.add(constantName); } @@ -831,7 +848,7 @@ String i18nPrefix) { ObjectModelOperation block = - addBlock(output, ObjectModelModifier.STATIC); + addBlock(output, ObjectModelJavaModifier.STATIC); StringBuilder buffer = new StringBuilder(300); addImport(output, I18n.class); Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModel.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -26,11 +26,11 @@ package org.nuiton.eugene.models.object; +import org.nuiton.eugene.models.Model; + import java.util.Collection; import java.util.List; -import org.nuiton.eugene.models.Model; - /** * Abstraction for the root node of object model trees. * This an entry point for browsing a model tree. This object offers Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilder.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilder.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilder.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -147,19 +147,20 @@ ObjectModelModifier... modifiers) throws IllegalArgumentException { - for (ObjectModelModifier modifier : modifiers) { - switch (modifier) { - case ABSTRACT: - clazz.setAbstract(true); - break; - case STATIC: - clazz.setStatic(true); - break; - default: - throw new IllegalArgumentException( - "Unsupported modifier type '" + modifier.name() + "'"); - } - } + clazz.addModifier(modifiers); +// for (ObjectModelModifier modifier : modifiers) { +// switch (modifier) { +// case ABSTRACT: +// clazz.setAbstract(true); +// break; +// case STATIC: +// clazz.setStatic(true); +// break; +// default: +// throw new IllegalArgumentException( +// "Unsupported modifier type '" + modifier.name() + "'"); +// } +// } } /** @@ -235,32 +236,33 @@ attribute.setType(type); attribute.setDefaultValue(value); - for (ObjectModelModifier modifier : modifiers) { - if (modifier.isVisibility()) { - attribute.setVisibility(modifier.toString()); - } else { - switch (modifier) { - case STATIC: - attribute.setStatic(true); - break; - case FINAL: - attribute.setFinal(true); - break; - case ORDERED: - attribute.setOrdering(modifier.toString()); - break; - case UNIQUE: - attribute.setUnique(true); - break; - case TRANSIENT: - attribute.setTransient(true); - break; - default: - throw new IllegalArgumentException( - "Unsupported modifier type '" + modifier.name() + "'"); - } - } - } + attribute.addModifier(modifiers); +// for (ObjectModelModifier modifier : modifiers) { +// if (modifier.isVisibility()) { +// attribute.setVisibility(modifier.toString()); +// } else { +// switch (modifier) { +// case STATIC: +// attribute.setStatic(true); +// break; +// case FINAL: +// attribute.setFinal(true); +// break; +// case ORDERED: +// attribute.setOrdering(modifier.toString()); +// break; +// case UNIQUE: +// attribute.setUnique(true); +// break; +// case TRANSIENT: +// attribute.setTransient(true); +// break; +// default: +// throw new IllegalArgumentException( +// "Unsupported modifier type '" + modifier.name() + "'"); +// } +// } +// } ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl) classifier; classifierImpl.addAttribute(attribute); @@ -298,32 +300,33 @@ attribute.setMaxMultiplicity(maxMultiplicity); attribute.setType(classifierB.getQualifiedName()); - for (ObjectModelModifier modifier : modifiers) { - - if (modifier.isVisibility()) { - attribute.setVisibility(modifier.toString()); - } else if (modifier.isAssociationType()) { - attribute.setAssociationType(modifier.toString()); - } else { - switch (modifier) { - case ORDERED: - attribute.setOrdering(modifier.toString()); - break; - case UNIQUE: - attribute.setUnique(true); - break; - case STATIC: - attribute.setStatic(true); - break; - case NAVIGABLE: - attribute.setNavigable(true); - break; - default: - throw new IllegalArgumentException( - "Unsupported modifier type '" + modifier.name() + "'"); - } - } - } + attribute.addModifier(modifiers); +// for (ObjectModelModifier modifier : modifiers) { +// +// if (modifier.isVisibility()) { +// attribute.setVisibility(modifier.toString()); +// } else if (modifier.isAssociationType()) { +// attribute.setAssociationType(modifier.toString()); +// } else { +// switch (modifier) { +// case ORDERED: +// attribute.setOrdering(modifier.toString()); +// break; +// case UNIQUE: +// attribute.setUnique(true); +// break; +// case STATIC: +// attribute.setStatic(true); +// break; +// case NAVIGABLE: +// attribute.setNavigable(true); +// break; +// default: +// throw new IllegalArgumentException( +// "Unsupported modifier type '" + modifier.name() + "'"); +// } +// } +// } ObjectModelClassifierImpl impl = (ObjectModelClassifierImpl) classifierA; impl.addAttribute(attribute); return attribute; @@ -458,22 +461,23 @@ result.setReturnParameter(returnParameter); } - for (ObjectModelModifier modifier : modifiers) { - if (modifier.isVisibility()) { - result.setVisibility(modifier.toString()); - } else { - switch (modifier) { - case STATIC: - result.setStatic(true); - break; - case ABSTRACT: - result.setAbstract(true); - break; - default: - throw new IllegalArgumentException("Unsupported modifier type '" + modifier.name() + "'"); - } - } - } + result.addModifier(modifiers); +// for (ObjectModelModifier modifier : modifiers) { +// if (modifier.isVisibility()) { +// result.setVisibility(modifier.toString()); +// } else { +// switch (modifier) { +// case STATIC: +// result.setStatic(true); +// break; +// case ABSTRACT: +// result.setAbstract(true); +// break; +// default: +// throw new IllegalArgumentException("Unsupported modifier type '" + modifier.name() + "'"); +// } +// } +// } ((ObjectModelClassifierImpl) classifier).addOperation(result); return result; Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelJavaModifier.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelJavaModifier.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelJavaModifier.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -0,0 +1,71 @@ +package org.nuiton.eugene.models.object; + +import com.google.common.collect.ImmutableSet; + +import java.util.Set; + +/** + * Enum that represents Java possible modifiers + * + * @author Arnaud Thimel <thimel@codelutin.com> + * @since 2.4.3 + */ +public enum ObjectModelJavaModifier implements ObjectModelModifier { + + STATIC, + FINAL, + ABSTRACT, + TRANSIENT, + + PUBLIC, + PROTECTED, + PRIVATE, + PACKAGE, + + VOLATILE, + SYNCHRONIZED, + NATIVE, + STRICTFP; + + public static final Set<? extends ObjectModelModifier> visibilityModifiers = + ImmutableSet.of(PUBLIC, PROTECTED, PRIVATE, PACKAGE); + + @Override + public boolean isVisibility() { + return visibilityModifiers.contains(this); + } + + @Override + public boolean isAssociationType() { + return false; + } + + @Override + public String getName() { + return name(); + } + + @Override + public String toString() { + String result = name().toLowerCase(); + if (PACKAGE.equals(this)) { + result = ""; + } + return result; + } + + public static ObjectModelJavaModifier fromVisibility(String name) { + if (name.equals(PUBLIC.toString())) { + return PUBLIC; + } else if (name.equals(PRIVATE.toString())) { + return PRIVATE; + } else if (name.equals(PROTECTED.toString())) { + return PROTECTED; + } else if (name.equals(PACKAGE.toString())) { + return PACKAGE; + } else { + return null; + } + } + +} Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelModifier.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelModifier.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelModifier.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -27,7 +27,7 @@ package org.nuiton.eugene.models.object; /** - * ObjectModelModifier + * Modifiers that can be used * * Created: 3 nov. 2009 * @@ -36,62 +36,39 @@ * * Mise a jour: $Date$ * par : */ -public enum ObjectModelModifier { +public interface ObjectModelModifier { - STATIC("static"), - FINAL("final"), - ABSTRACT("abstract"), - TRANSIENT("transient"), - - PUBLIC("public"), - PROTECTED("protected"), - PRIVATE("private"), - PACKAGE(""), + // Still present only for backward compatibility. Please use ObjectModelJavaModifier.* + @Deprecated public static final ObjectModelModifier STATIC = ObjectModelJavaModifier.STATIC; + @Deprecated public static final ObjectModelModifier FINAL = ObjectModelJavaModifier.FINAL; + @Deprecated public static final ObjectModelModifier ABSTRACT = ObjectModelJavaModifier.ABSTRACT; + @Deprecated public static final ObjectModelModifier TRANSIENT = ObjectModelJavaModifier.TRANSIENT; + @Deprecated public static final ObjectModelModifier PUBLIC = ObjectModelJavaModifier.PUBLIC; + @Deprecated public static final ObjectModelModifier PROTECTED = ObjectModelJavaModifier.PROTECTED; + @Deprecated public static final ObjectModelModifier PRIVATE = ObjectModelJavaModifier.PRIVATE; + @Deprecated public static final ObjectModelModifier PACKAGE = ObjectModelJavaModifier.PACKAGE; - AGGREGATE("aggregate"), - COMPOSITE("composite"), - UNIQUE("unique"), + // Still present only for backward compatibility. Please use ObjectModelUMLModifier.* + @Deprecated public static final ObjectModelModifier AGGREGATE = ObjectModelUMLModifier.AGGREGATE; + @Deprecated public static final ObjectModelModifier COMPOSITE = ObjectModelUMLModifier.COMPOSITE; + @Deprecated public static final ObjectModelModifier UNIQUE = ObjectModelUMLModifier.UNIQUE; + @Deprecated public static final ObjectModelModifier ORDERED = ObjectModelUMLModifier.ORDERED; + @Deprecated public static final ObjectModelModifier NAVIGABLE = ObjectModelUMLModifier.NAVIGABLE; - ORDERED("ordered"), - NAVIGABLE("navigable"); + /** + * @return true is the current ObjectModelModifier is a Java visibility + */ + boolean isVisibility(); - private String stringValue; + /** + * @return true is the current ObjectModelModifier is an UML association + * type + */ + boolean isAssociationType(); - ObjectModelModifier(String stringValue) { - this.stringValue = stringValue; - } + /** + * @return the name of the constant. This refers to Enum.name(). + */ + String getName(); - public boolean isVisibility() { - return this == PUBLIC || - this == PROTECTED || - this == PRIVATE || - this == PACKAGE; - } - - public boolean isAssociationType() { - return this == AGGREGATE || - this == COMPOSITE; - } - - @Override - public String toString() { - return stringValue; - } - - public static ObjectModelModifier toValue(String name) { - if (name.equals(PUBLIC.toString())) { - return PUBLIC; - } else if (name.equals(PRIVATE.toString())) { - return PRIVATE; - } else if (name.equals(PROTECTED.toString())) { - return PROTECTED; - } else if (name.equals(PACKAGE.toString())) { - return PACKAGE; - } else { - return null; - } - } - - - } Added: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelUMLModifier.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelUMLModifier.java (rev 0) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelUMLModifier.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -0,0 +1,40 @@ +package org.nuiton.eugene.models.object; + +import com.google.common.collect.ImmutableSet; + +import java.util.Set; + +/** + * Enum that represents UML modifiers. + * + * @author Arnaud Thimel <thimel@codelutin.com> + * @since 2.4.3 + */ +public enum ObjectModelUMLModifier implements ObjectModelModifier { + + AGGREGATE, + COMPOSITE, + UNIQUE, + + ORDERED, + NAVIGABLE; + + public static final Set<ObjectModelUMLModifier> associationTypes = + ImmutableSet.of(AGGREGATE, COMPOSITE); + + @Override + public boolean isVisibility() { + return false; + } + + @Override + public boolean isAssociationType() { + return associationTypes.contains(this); + } + + @Override + public String getName() { + return name(); + } + +} Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/NameBasedValidator.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/NameBasedValidator.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/validator/NameBasedValidator.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,11 +25,11 @@ package org.nuiton.eugene.models.object.validator; +import org.nuiton.eugene.models.object.ObjectModel; + import java.util.HashMap; import java.util.Map; -import org.nuiton.eugene.models.object.ObjectModel; - /** * NameBasedValidator. * Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtension.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtension.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ExternalCacheExtension.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,12 +25,13 @@ package org.nuiton.eugene.models.object.xml; -import java.util.HashMap; -import java.util.Map; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.GeneratorUtil; +import java.util.HashMap; +import java.util.Map; + /** * ExternalCacheExtension * Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAssociationClassImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAssociationClassImpl.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAssociationClassImpl.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,10 +25,6 @@ package org.nuiton.eugene.models.object.xml; -import java.util.ArrayList; -import java.util.Collection; -import java.util.List; - import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.models.object.ObjectModelAssociationClass; @@ -36,6 +32,10 @@ import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelClassifier; +import java.util.ArrayList; +import java.util.Collection; +import java.util.List; + /** * ObjectModelAssociationClassImpl.java * 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 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelAttributeImpl.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,6 +25,9 @@ package org.nuiton.eugene.models.object.xml; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Iterables; +import com.google.common.collect.Sets; import org.apache.commons.lang3.StringUtils; import org.nuiton.eugene.EugeneStereoTypes; import org.nuiton.eugene.GeneratorUtil; @@ -32,7 +35,12 @@ 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.ObjectModelJavaModifier; +import org.nuiton.eugene.models.object.ObjectModelModifier; +import org.nuiton.eugene.models.object.ObjectModelUMLModifier; +import java.util.Set; + /** * ObjectModelAttributeImpl. * @@ -52,18 +60,17 @@ public static final String ATTRIBUTE_TYPE_COMPOSITE = "composite"; + public static final ObjectModelJavaModifier DEFAULT_VISIBILITY = ObjectModelJavaModifier.PROTECTED; + protected String reverseAttributeName; protected int reverseMaxMultiplicity = -1; - protected String associationType; - protected String visibility = "protected"; protected ObjectModelClassifier reference; protected String associationClassName; - protected boolean isStatic; - protected boolean isFinal; - protected boolean isTransient; - protected boolean navigable = true; + private static Set<ObjectModelModifier> authorizedModifiers; + public ObjectModelAttributeImpl() { + addModifier(ObjectModelUMLModifier.NAVIGABLE); // Navigable by default } public void postInit() { @@ -79,7 +86,14 @@ } public void setAssociationType(String associationType) { - this.associationType = associationType; + removeModifiers(ObjectModelUMLModifier.associationTypes); + if (ATTRIBUTE_TYPE_SHARED.equals(associationType) || ATTRIBUTE_TYPE_AGGREGATE.equals(associationType)) { + addModifier(ObjectModelUMLModifier.AGGREGATE); + } else if (ATTRIBUTE_TYPE_COMPOSITE.equals(associationType)) { + addModifier(ObjectModelUMLModifier.COMPOSITE); + } else { + throw new IllegalArgumentException("Unexpected association type: " + associationType); + } } public void setReverseMaxMultiplicity(int reverseMaxMultiplicity) { @@ -87,25 +101,57 @@ } public void setVisibility(String visibility) { - this.visibility = visibility; + ObjectModelModifier modifier = ObjectModelJavaModifier.fromVisibility(visibility); + removeModifiers(ObjectModelJavaModifier.visibilityModifiers); + if (modifier == null) { + modifier = DEFAULT_VISIBILITY; // default visibility + } + addModifier(modifier); } public void setFinal(boolean isFinal) { - this.isFinal = isFinal; + addOrRemoveModifier(ObjectModelJavaModifier.FINAL, isFinal); } public void setTransient(boolean isTransient) { - this.isTransient = isTransient; + addOrRemoveModifier(ObjectModelJavaModifier.TRANSIENT, isTransient); } public void setStatic(boolean isStatic) { - this.isStatic = isStatic; + super.setStatic(isStatic); } + @Override + protected Set<ObjectModelModifier> getAuthorizedModifiers() { + if (authorizedModifiers == null) { + // http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.3.1 + // static final transient volatile + Set<ObjectModelModifier> modifiers = Sets.newHashSet( + (ObjectModelModifier)ObjectModelJavaModifier.STATIC, // Force cast because of generics limitation + ObjectModelJavaModifier.FINAL, + ObjectModelJavaModifier.TRANSIENT, + ObjectModelJavaModifier.VOLATILE, + ObjectModelUMLModifier.AGGREGATE, + ObjectModelUMLModifier.COMPOSITE, + ObjectModelUMLModifier.NAVIGABLE, + ObjectModelUMLModifier.ORDERED, + ObjectModelUMLModifier.UNIQUE + ); + Iterables.addAll(modifiers, ObjectModelJavaModifier.visibilityModifiers); + authorizedModifiers = ImmutableSet.copyOf(modifiers); + } + return authorizedModifiers; + } + public void setNavigable(boolean navigable) { - this.navigable = navigable; + addOrRemoveModifier(ObjectModelUMLModifier.NAVIGABLE, navigable); } + @Override + public void setUnique(boolean isUnique) { + super.setUnique(isUnique); + } + /** * Returns whether this attribute is an aggregate or not. * @@ -114,8 +160,7 @@ */ @Override public boolean isAggregate() { - return ATTRIBUTE_TYPE_AGGREGATE.equals(associationType) || - ATTRIBUTE_TYPE_SHARED.equals(associationType); + return modifiers.contains(ObjectModelUMLModifier.AGGREGATE); } /** @@ -126,11 +171,19 @@ */ @Override public boolean isComposite() { - return ATTRIBUTE_TYPE_COMPOSITE.equals(associationType); + return modifiers.contains(ObjectModelUMLModifier.COMPOSITE); } @Override public String getVisibility() { + String visibility = DEFAULT_VISIBILITY.toString(); // default + if (modifiers.contains(ObjectModelJavaModifier.PUBLIC)) { + visibility = ObjectModelJavaModifier.PUBLIC.toString(); + } else if (modifiers.contains(ObjectModelJavaModifier.PRIVATE)) { + visibility = ObjectModelJavaModifier.PRIVATE.toString(); + } if (modifiers.contains(ObjectModelJavaModifier.PACKAGE)) { + visibility = ObjectModelJavaModifier.PACKAGE.toString(); + } return visibility; } @@ -228,32 +281,22 @@ } /** - * Returns whether this attribute is static or not. - * - * @return a boolean indicating whether this attribute is static or not. - */ - @Override - public boolean isStatic() { - return isStatic; - } - - /** * Returns whether this attribute is final or not. * * @return a boolean indicating whether this attribute is final or not. */ @Override public boolean isFinal() { - return isFinal; + return modifiers.contains(ObjectModelJavaModifier.FINAL); } public boolean isTransient() { - return isTransient; + return modifiers.contains(ObjectModelJavaModifier.TRANSIENT); } @Override public boolean isNavigable() { - return navigable; + return modifiers.contains(ObjectModelUMLModifier.NAVIGABLE); } @Override @@ -264,6 +307,7 @@ } 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/ObjectModelClassImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,6 +25,17 @@ package org.nuiton.eugene.models.object.xml; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Sets; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +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.ObjectModelJavaModifier; +import org.nuiton.eugene.models.object.ObjectModelModifier; +import org.nuiton.eugene.models.object.ObjectModelOperation; + import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; @@ -33,14 +44,8 @@ import java.util.LinkedList; import java.util.List; import java.util.Map; +import java.util.Set; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -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.ObjectModelOperation; - /** * ObjectModelClassImpl. * @@ -59,11 +64,28 @@ protected List<ObjectModelImplRef> superclassesRefs = new ArrayList<ObjectModelImplRef>(); protected List<ObjectModelClass> specialisations; protected List<ObjectModelClassifier> innerClasses; - protected boolean abstractz; + private static Set<ObjectModelModifier> authorizedModifiers; + public ObjectModelClassImpl() { } + @Override + protected Set<ObjectModelModifier> getAuthorizedModifiers() { + if (authorizedModifiers == null) { + // http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.1.1 + // public protected private abstract static final strictfp + Set<ObjectModelModifier> modifiers = Sets.newHashSet( + (ObjectModelModifier)ObjectModelJavaModifier.ABSTRACT, // Force cast because of generics limitation + ObjectModelJavaModifier.STATIC, + ObjectModelJavaModifier.FINAL, + ObjectModelJavaModifier.STRICTFP); + modifiers.addAll(ObjectModelJavaModifier.visibilityModifiers); + authorizedModifiers = ImmutableSet.copyOf(modifiers); + } + return authorizedModifiers; + } + public void clearSuperclasses() { superclasses = null; superclassesRefs.clear(); @@ -91,7 +113,7 @@ public void setAbstract(boolean abstractz) { - this.abstractz = abstractz; + addOrRemoveModifier(ObjectModelJavaModifier.ABSTRACT, abstractz); } @Override @@ -189,7 +211,7 @@ */ @Override public boolean isAbstract() { - return abstractz; + return modifiers.contains(ObjectModelJavaModifier.ABSTRACT); } @Override Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassifierImpl.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,9 +25,21 @@ package org.nuiton.eugene.models.object.xml; -import org.nuiton.eugene.models.object.*; +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.ObjectModelDependency; +import org.nuiton.eugene.models.object.ObjectModelEnumeration; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.ObjectModelOperation; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.HashSet; +import java.util.LinkedList; +import java.util.List; +import java.util.Map; /** * ObjectModelClassifierImpl. 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 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelElementImpl.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,17 +25,22 @@ package org.nuiton.eugene.models.object.xml; +import com.google.common.collect.Iterables; import org.apache.commons.lang3.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 org.nuiton.eugene.models.object.ObjectModelJavaModifier; +import org.nuiton.eugene.models.object.ObjectModelModifier; import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; +import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Set; /** * ObjectModelElementImpl. @@ -47,7 +52,7 @@ * Last update : $Date$ * By : */ -public class ObjectModelElementImpl implements ObjectModelElement { +public abstract class ObjectModelElementImpl implements ObjectModelElement { /** logger */ private static final Log log = LogFactory.getLog(ObjectModelElementImpl.class); @@ -58,8 +63,6 @@ protected String name; - protected boolean isStatic; - protected String documentation; protected List<String> stereotypes; @@ -68,10 +71,13 @@ protected List<String> comments; + protected Set<ObjectModelModifier> modifiers; + public ObjectModelElementImpl() { tagValues = new HashMap<String, String>(); stereotypes = new ArrayList<String>(); comments = new ArrayList<String>(); + modifiers = new HashSet<ObjectModelModifier>(); } /** @param objectModelImpl the objectModelImpl */ @@ -125,8 +131,41 @@ return tagValue; } + protected void addOrRemoveModifier(ObjectModelModifier modifier, boolean add) { + if (add) { + addModifier(modifier); + } else { + removeModifier(modifier); + } + } + + public void addModifier(ObjectModelModifier ... modifiers) { + if (modifiers == null || (modifiers.length == 1 && modifiers[0] == null)) { + throw new IllegalArgumentException("Modifier is null"); + } + for (ObjectModelModifier modifier : modifiers) { + if (getAuthorizedModifiers().contains(modifier)) { + this.modifiers.add(modifier); + } else { + throw new UnsupportedOperationException("Forbidden modifier: " + modifier.getName()); + } + } + } + + protected void removeModifiers(Iterable<? extends ObjectModelModifier> modifiers) { + removeModifier(Iterables.toArray(modifiers, ObjectModelModifier.class)); + } + + protected void removeModifier(ObjectModelModifier ... modifiers) { + for (ObjectModelModifier modifier : modifiers) { + this.modifiers.remove(modifier); + } + } + + protected abstract Set<ObjectModelModifier> getAuthorizedModifiers(); + public void setStatic(boolean isStatic) { - this.isStatic = isStatic; + addOrRemoveModifier(ObjectModelJavaModifier.STATIC, isStatic); } public void addComment(String comment) { @@ -214,7 +253,7 @@ @Override public boolean isStatic() { - return isStatic; + return modifiers.contains(ObjectModelJavaModifier.STATIC); } @Override 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 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelEnumerationImpl.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,11 +25,14 @@ package org.nuiton.eugene.models.object.xml; +import com.google.common.collect.ImmutableSet; +import org.nuiton.eugene.models.object.ObjectModelEnumeration; +import org.nuiton.eugene.models.object.ObjectModelModifier; + import java.util.ArrayList; import java.util.Collection; +import java.util.Set; -import org.nuiton.eugene.models.object.ObjectModelEnumeration; - /** * ObjectModelEnumerationImpl. * @@ -56,7 +59,18 @@ literalRefs.add(ref); } + private static Set<ObjectModelModifier> authorizedModifiers; + @Override + protected Set<ObjectModelModifier> getAuthorizedModifiers() { + if (authorizedModifiers == null) { + // Nothing special ? + authorizedModifiers = ImmutableSet.of(); + } + return authorizedModifiers; + } + + @Override public Collection<String> getLiterals() { Collection<String> results = new ArrayList<String>(); for (ObjectModelImplRef ref : literalRefs) { 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 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelImpl.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,13 +25,6 @@ package org.nuiton.eugene.models.object.xml; -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - import org.apache.commons.lang3.StringUtils; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -42,6 +35,13 @@ import org.nuiton.eugene.models.object.ObjectModelEnumeration; import org.nuiton.eugene.models.object.ObjectModelInterface; +import java.util.ArrayList; +import java.util.Collection; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + /** * Implementation class for the root node abstraction of object model trees. * This an entry point for browsing a model tree. This object offers as well 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 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelInterfaceImpl.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,11 +25,16 @@ package org.nuiton.eugene.models.object.xml; -import java.util.Iterator; - +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Sets; import org.nuiton.eugene.models.object.ObjectModelClassifier; import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.ObjectModelJavaModifier; +import org.nuiton.eugene.models.object.ObjectModelModifier; +import java.util.Iterator; +import java.util.Set; + /** * ObjectModelInterfaceImpl.java * @@ -43,7 +48,24 @@ * by : */ public class ObjectModelInterfaceImpl extends ObjectModelClassifierImpl implements ObjectModelInterface { + private static Set<ObjectModelModifier> authorizedModifiers; + @Override + protected Set<ObjectModelModifier> getAuthorizedModifiers() { + if (authorizedModifiers == null) { + // http://docs.oracle.com/javase/specs/jls/se7/html/jls-9.html#jls-9.1.1 + // public protected private abstract static strictfp + Set<ObjectModelModifier> modifiers = Sets.newHashSet( + (ObjectModelModifier)ObjectModelJavaModifier.ABSTRACT, // Force cast because of generics limitation + ObjectModelJavaModifier.STATIC, + ObjectModelJavaModifier.STRICTFP); + modifiers.addAll(ObjectModelJavaModifier.visibilityModifiers); + authorizedModifiers = ImmutableSet.copyOf(modifiers); + } + return authorizedModifiers; + } + + @Override public String toString() { StringBuffer result = new StringBuffer(); result.append("interface ").append(getQualifiedName()).append(" "); Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelOperationImpl.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,6 +25,13 @@ package org.nuiton.eugene.models.object.xml; +import com.google.common.collect.ImmutableSet; +import com.google.common.collect.Sets; +import org.nuiton.eugene.models.object.ObjectModelJavaModifier; +import org.nuiton.eugene.models.object.ObjectModelModifier; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelParameter; + import java.util.ArrayList; import java.util.Collection; import java.util.HashSet; @@ -32,9 +39,6 @@ import java.util.List; import java.util.Set; -import org.nuiton.eugene.models.object.ObjectModelOperation; -import org.nuiton.eugene.models.object.ObjectModelParameter; - /** * ObjectModelOperationImpl.java * @@ -48,23 +52,42 @@ public class ObjectModelOperationImpl extends ObjectModelElementImpl implements ObjectModelOperation { + public static final ObjectModelJavaModifier DEFAULT_VISIBILITY = ObjectModelJavaModifier.PUBLIC; + protected ObjectModelParameter returnParameter; - protected String visibility = "public"; - protected String transactionLevel = "supports"; - protected boolean abstractz; - protected List<ObjectModelParameter> parameters = new ArrayList<ObjectModelParameter>(); protected Set<String> exceptions = new HashSet<String>(); protected String bodyCode = ""; + private static Set<ObjectModelModifier> authorizedModifiers; + public ObjectModelOperationImpl() { } + @Override + protected Set<ObjectModelModifier> getAuthorizedModifiers() { + if (authorizedModifiers == null) { + // http://docs.oracle.com/javase/specs/jls/se7/html/jls-8.html#jls-8.4.3 + // Annotation public protected private abstract + // static final synchronized native strictfp + Set<ObjectModelModifier> modifiers = Sets.newHashSet( + (ObjectModelModifier)ObjectModelJavaModifier.ABSTRACT, // Force cast because of generics limitation + ObjectModelJavaModifier.STATIC, + ObjectModelJavaModifier.FINAL, + ObjectModelJavaModifier.SYNCHRONIZED, + ObjectModelJavaModifier.NATIVE, + ObjectModelJavaModifier.STRICTFP); + modifiers.addAll(ObjectModelJavaModifier.visibilityModifiers); + authorizedModifiers = ImmutableSet.copyOf(modifiers); + } + return authorizedModifiers; + } + public String toString() { return getName() + "(" + parameters + ")" + "<<" + getStereotypes() + ">> throws " + exceptions + " tagvalue: " + getTagValues(); @@ -104,11 +127,16 @@ } public void setVisibility(String visibility) { - this.visibility = visibility; + ObjectModelModifier modifier = ObjectModelJavaModifier.fromVisibility(visibility); + removeModifiers(ObjectModelJavaModifier.visibilityModifiers); + if (modifier == null) { + modifier = DEFAULT_VISIBILITY; // default visibility + } + addModifier(modifier); } public void setAbstract(boolean abstractz) { - this.abstractz = abstractz; + addOrRemoveModifier(ObjectModelJavaModifier.ABSTRACT, abstractz); } public void setReturnParameter(ObjectModelParameterImpl returnParameter) { @@ -146,6 +174,14 @@ @Override public String getVisibility() { + String visibility = DEFAULT_VISIBILITY.toString(); // default + if (modifiers.contains(ObjectModelJavaModifier.PRIVATE)) { + visibility = ObjectModelJavaModifier.PRIVATE.toString(); + } else if (modifiers.contains(ObjectModelJavaModifier.PROTECTED)) { + visibility = ObjectModelJavaModifier.PROTECTED.toString(); + } if (modifiers.contains(ObjectModelJavaModifier.PACKAGE)) { + visibility = ObjectModelJavaModifier.PACKAGE.toString(); + } return visibility; } @@ -156,7 +192,7 @@ */ @Override public boolean isAbstract() { - return abstractz; + return modifiers.contains(ObjectModelJavaModifier.ABSTRACT); } @Override Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelParameterImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelParameterImpl.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelParameterImpl.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,8 +25,13 @@ package org.nuiton.eugene.models.object.xml; +import com.google.common.collect.ImmutableSet; +import org.nuiton.eugene.models.object.ObjectModelModifier; import org.nuiton.eugene.models.object.ObjectModelParameter; +import org.nuiton.eugene.models.object.ObjectModelUMLModifier; +import java.util.Set; + /** * ObjectModelParameterImpl. * @@ -51,15 +56,34 @@ * est false la collection peut prendre plusieurs fois la meme valeur * (List) */ - protected boolean unique = true; - protected boolean ordered; protected String defaultValue; + private static Set<ObjectModelModifier> authorizedModifiers; + public static final String PROPERTY_ORDERED = "ordered"; public ObjectModelParameterImpl() { + // Do not put in postInit has it has to be done before fields are push into the instance + addModifier(ObjectModelUMLModifier.UNIQUE); // Unique by default } + @Override + public void postInit() { + super.postInit(); + } + + @Override + protected Set<ObjectModelModifier> getAuthorizedModifiers() { + if (authorizedModifiers == null) { + // No particular modifier ? + authorizedModifiers = ImmutableSet.of( + (ObjectModelModifier)ObjectModelUMLModifier.UNIQUE, + ObjectModelUMLModifier.ORDERED, + ObjectModelUMLModifier.UNIQUE); + } + return authorizedModifiers; + } + public void setType(String type) { this.type = type; } @@ -82,7 +106,7 @@ } public void setUnique(boolean unique) { - this.unique = unique; + addOrRemoveModifier(ObjectModelUMLModifier.UNIQUE, unique); } public void setDefaultValue(String defaultValue) { @@ -111,17 +135,16 @@ @Override public boolean isOrdered() { - return ordered; -// return "ordered".equals(ordering); + return modifiers.contains(ObjectModelUMLModifier.ORDERED); } public void setOrdered(boolean ordered) { - this.ordered = ordered; + addOrRemoveModifier(ObjectModelUMLModifier.ORDERED, ordered); } @Override public boolean isUnique() { - return unique; + return modifiers.contains(ObjectModelUMLModifier.UNIQUE); } @Override Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModel.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModel.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModel.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,10 +25,10 @@ package org.nuiton.eugene.models.state; +import org.nuiton.eugene.models.Model; + import java.util.List; -import org.nuiton.eugene.models.Model; - /** * StateModel * Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelReader.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelReader.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/StateModelReader.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,10 +25,6 @@ package org.nuiton.eugene.models.state; -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.util.Enumeration; import org.apache.commons.digester3.Digester; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; @@ -39,6 +35,11 @@ import org.nuiton.util.RecursiveProperties; import org.xml.sax.SAXException; +import java.io.File; +import java.io.FileInputStream; +import java.io.IOException; +import java.util.Enumeration; + /** * To read state model files into a memory state model. * Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelComplexeStateImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelComplexeStateImpl.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelComplexeStateImpl.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,15 +25,15 @@ package org.nuiton.eugene.models.state.xml; -import java.util.Collection; -import java.util.HashMap; -import java.util.Map; - import org.nuiton.eugene.models.state.StateModelComplexState; import org.nuiton.eugene.models.state.StateModelSimpleState; import org.nuiton.eugene.models.state.StateModelState; import org.nuiton.eugene.models.state.StateModelTransition; +import java.util.Collection; +import java.util.HashMap; +import java.util.Map; + /** * StateModelComplexeStateImpl.java * Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelImpl.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,15 +25,15 @@ package org.nuiton.eugene.models.state.xml; +import org.nuiton.eugene.models.state.StateModel; +import org.nuiton.eugene.models.state.StateModelStateChart; + import java.util.ArrayList; import java.util.Collection; import java.util.HashMap; import java.util.List; import java.util.Map; -import org.nuiton.eugene.models.state.StateModel; -import org.nuiton.eugene.models.state.StateModelStateChart; - /** * Implementation of the {@link StateModel}. * Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateImpl.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateImpl.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/state/xml/StateModelStateImpl.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -25,12 +25,12 @@ package org.nuiton.eugene.models.state.xml; +import org.nuiton.eugene.models.state.StateModelState; +import org.nuiton.eugene.models.state.StateModelTransition; + import java.util.ArrayList; import java.util.List; -import org.nuiton.eugene.models.state.StateModelState; -import org.nuiton.eugene.models.state.StateModelTransition; - /** * StateModelStateImpl.java * Modified: trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/test/java/org/nuiton/eugene/GeneratorUtilTest.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -33,7 +33,6 @@ import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl; import org.nuiton.eugene.models.object.xml.ObjectModelParameterImpl; -import java.beans.Introspector; import java.util.Set; /** @author fdesbois */ Modified: trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -35,7 +35,7 @@ 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.ObjectModelModifier; +import org.nuiton.eugene.models.object.ObjectModelJavaModifier; import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; import org.nuiton.eugene.models.object.xml.ObjectModelBuilderTest; @@ -204,7 +204,7 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); ObjectModelAttribute constant = builder.addConstant(classifier, "GENDER_MALE", "boolean", "true", - ObjectModelModifier.PUBLIC); + ObjectModelJavaModifier.PUBLIC); Assert.assertTrue(constant.isFinal()); Assert.assertTrue(constant.isStatic()); @@ -224,11 +224,11 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); builder.addAttribute(classifier, "firstName", "java.lang.String", "", - ObjectModelModifier.PUBLIC); + ObjectModelJavaModifier.PUBLIC); builder.addAttribute(classifier, "roles", "java.util.List<org.chorem.bonzoms.Role>", "new ArrayList<Role>()", - ObjectModelModifier.PRIVATE, ObjectModelModifier.STATIC); + ObjectModelJavaModifier.PRIVATE, ObjectModelJavaModifier.STATIC); // ANO#474 : manage manually imports for defaultValue builder.addImport(classifier, "java.util.ArrayList"); @@ -282,7 +282,7 @@ ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms"); - ObjectModelOperation operation = builder.addConstructor(clazz, ObjectModelModifier.PUBLIC); + ObjectModelOperation operation = builder.addConstructor(clazz, ObjectModelJavaModifier.PUBLIC); Assert.assertNotNull(operation); Assert.assertEquals(operation.getName(), "Person"); Assert.assertNull(operation.getReturnParameter()); @@ -304,11 +304,11 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); builder.addOperation(classifier, - "methodName", "java.util.List<java.lang.String>", ObjectModelModifier.PUBLIC); + "methodName", "java.util.List<java.lang.String>", ObjectModelJavaModifier.PUBLIC); builder.addOperation(classifier, "addPropertyChangeListener", null, - ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT); + ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.ABSTRACT); // Check imports ImportsManagerExtension ext = builder.getModel().getExtension( @@ -334,7 +334,7 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", - ObjectModelModifier.PUBLIC); + ObjectModelJavaModifier.PUBLIC); builder.addParameter(operation, "java.lang.String", "name"); @@ -362,7 +362,7 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", - ObjectModelModifier.PUBLIC); + ObjectModelJavaModifier.PUBLIC); builder.addException(operation, "java.lang.IllegalArgumentException"); @@ -389,7 +389,7 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", - ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT); + ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.ABSTRACT); builder.setOperationBody(operation, "this.name = name"); Modified: trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ObjectModelGeneratorTest.java =================================================================== --- trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ObjectModelGeneratorTest.java 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/ObjectModelGeneratorTest.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -29,7 +29,6 @@ import org.junit.Test; import org.nuiton.eugene.Template; import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelElementImpl; /** * Test des fonctions de ObjectModelGenerator. @@ -48,7 +47,7 @@ ObjectModelGenerator generator = new ObjectModelGenerator(); // test with null generated list - Assert.assertTrue(generator.canGenerateElement(new ObjectModelElementImpl())); +// Assert.assertTrue(generator.canGenerateElement(new ObjectModelElementImpl())); Assert.assertTrue(generator.canGenerateElement(new ObjectModelClassImpl())); // List<String> generatedPackages = new ArrayList<String>(); @@ -58,7 +57,7 @@ // generator.setGeneratedPackages(generatedPackages); // Still true - Assert.assertTrue(generator.canGenerateElement(new ObjectModelElementImpl())); +// Assert.assertTrue(generator.canGenerateElement(new ObjectModelElementImpl())); // become false boolean b = generator.canGenerateElement(new ObjectModelClassImpl()); Assert.assertFalse(b); 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 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/XMI21ToObjectModelTest.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -49,6 +49,7 @@ import static org.junit.Assert.assertEquals; import static org.junit.Assert.assertFalse; import static org.junit.Assert.assertNotNull; +import static org.junit.Assert.assertNull; import static org.junit.Assert.assertTrue; @@ -344,6 +345,8 @@ assertEquals(-1, strings.getMaxMultiplicity()); assertTrue(strings.isUnique()); assertFalse(strings.isOrdered()); + assertNull(strings.getReverseAttribute()); + assertTrue(strings.isNavigable()); // doubles ObjectModelAttribute doubles = multiClazz.getAttribute("doubles"); 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 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/eugene/src/test/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderTest.java 2012-06-01 10:51:04 UTC (rev 1152) @@ -36,9 +36,10 @@ import org.nuiton.eugene.models.object.ObjectModelBuilder; import org.nuiton.eugene.models.object.ObjectModelClass; import org.nuiton.eugene.models.object.ObjectModelClassifier; -import org.nuiton.eugene.models.object.ObjectModelModifier; +import org.nuiton.eugene.models.object.ObjectModelJavaModifier; import org.nuiton.eugene.models.object.ObjectModelOperation; import org.nuiton.eugene.models.object.ObjectModelParameter; +import org.nuiton.eugene.models.object.ObjectModelUMLModifier; import java.util.Iterator; import java.util.List; @@ -154,7 +155,7 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); ObjectModelAttribute attribute = builder.addAttribute(classifier, "firstName", "java.lang.String", "", - ObjectModelModifier.PUBLIC); + ObjectModelJavaModifier.PUBLIC); Assert.assertNotNull(attribute); Assert.assertEquals("firstName", attribute.getName()); @@ -166,7 +167,7 @@ attribute = builder.addAttribute(classifier, "roles", "java.lang.List<org.chorem.bonzoms.Role>", "new java.lang.ArrayList<org.chorem.bonzoms.Role>()", - ObjectModelModifier.PRIVATE, ObjectModelModifier.STATIC); + ObjectModelJavaModifier.PRIVATE, ObjectModelJavaModifier.STATIC); Assert.assertEquals("new java.lang.ArrayList<org.chorem.bonzoms.Role>()", attribute.getDefaultValue()); Assert.assertTrue(attribute.isStatic()); @@ -186,7 +187,7 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); ObjectModelOperation result = builder.addOperation(classifier, - "methodName", "java.util.List<java.lang.String>", ObjectModelModifier.PUBLIC); + "methodName", "java.util.List<java.lang.String>", ObjectModelJavaModifier.PUBLIC); Assert.assertNotNull(result); Assert.assertEquals(result.getName(), "methodName"); Assert.assertEquals(result.getReturnType(), "java.util.List<java.lang.String>"); @@ -194,7 +195,7 @@ Assert.assertFalse(result.isAbstract()); result = builder.addOperation(classifier, "addPropertyChangeListener", "void", - ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT); + ObjectModelJavaModifier.PUBLIC, ObjectModelJavaModifier.ABSTRACT); Assert.assertTrue(result.isAbstract()); } @@ -212,7 +213,7 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", - ObjectModelModifier.PUBLIC); + ObjectModelJavaModifier.PUBLIC); builder.setOperationBody(operation, "this.name = name"); Assert.assertNotNull(operation.getBodyCode()); @@ -273,7 +274,7 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", - ObjectModelModifier.PUBLIC); + ObjectModelJavaModifier.PUBLIC); ObjectModelParameter param = builder.addParameter(operation, "java.lang.String", "name"); Assert.assertNotNull(param); @@ -299,7 +300,7 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", - ObjectModelModifier.PUBLIC); + ObjectModelJavaModifier.PUBLIC); builder.addException(operation, "java.lang.IllegalArgumentException"); Set<String> exceptions = operation.getExceptions(); @@ -332,7 +333,7 @@ ObjectModelClass classB = builder.createClass("Vote", "org.chorem.pollen.business.persistence"); ObjectModelAttribute assoc = builder.addAssociation(classA, classB, "poll", 1, 1, - ObjectModelModifier.COMPOSITE, ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED); + ObjectModelUMLModifier.COMPOSITE, ObjectModelUMLModifier.NAVIGABLE, ObjectModelUMLModifier.ORDERED); Assert.assertNotNull(assoc); Assert.assertTrue(assoc.isNavigable()); @@ -362,7 +363,7 @@ ObjectModelClass classB = builder.createClass("Vote", "org.chorem.pollen.business.persistence"); ObjectModelAttribute assocA = builder.addAssociation(classA, classB, "poll", 1, 1, - ObjectModelModifier.COMPOSITE, ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED); + ObjectModelUMLModifier.COMPOSITE, ObjectModelUMLModifier.NAVIGABLE, ObjectModelUMLModifier.ORDERED); ObjectModelAttribute assocB = builder.addReverseAssociation(assocA, "vote", 0, -1); @@ -387,10 +388,10 @@ ObjectModelClass classB = builder.createClass("Choice", "org.chorem.pollen.business.persistence"); ObjectModelAttribute assocA = builder.addAssociation(classA, classB, "vote", 0, -1, - ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED); + ObjectModelUMLModifier.NAVIGABLE, ObjectModelUMLModifier.ORDERED); ObjectModelAttribute assocB = builder.addReverseAssociation(assocA, "choice", 1, -1, - ObjectModelModifier.NAVIGABLE, ObjectModelModifier.ORDERED); + ObjectModelUMLModifier.NAVIGABLE, ObjectModelUMLModifier.ORDERED); ObjectModelAssociationClass assocClass = builder.createAssociationClass("VoteToChoice", "org.chorem.pollen.business.persistence", assocA, assocB); Modified: trunk/pom.xml =================================================================== --- trunk/pom.xml 2012-05-31 14:58:52 UTC (rev 1151) +++ trunk/pom.xml 2012-06-01 10:51:04 UTC (rev 1152) @@ -387,7 +387,6 @@ <nuitonUtilsVersion>2.4.8</nuitonUtilsVersion> <nuitonI18nVersion>2.4.1</nuitonI18nVersion> - <!-- TODO Move this back to mavenpom --> <antVersion>1.8.4</antVersion> <jrstPluginVersion>1.5</jrstPluginVersion>
participants (1)
-
athimelï¼ users.nuiton.org