r921 - in trunk/eugene/src/main/java/org/nuiton/eugene: java models/object models/object/xml
Author: fdesbois Date: 2010-06-24 15:59:09 +0200 (Thu, 24 Jun 2010) New Revision: 921 Url: http://nuiton.org/repositories/revision/eugene/921 Log: Evo #704 : manage modifiers on inner classifier + add some debug log Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilder.java trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2010-06-19 18:55:29 UTC (rev 920) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2010-06-24 13:59:09 UTC (rev 921) @@ -541,9 +541,10 @@ public ObjectModelClassifier addInnerClassifier(ObjectModelClass clazz, ObjectModelType type, - String name) + String name, + ObjectModelModifier... modifiers) throws IllegalArgumentException { - return modelBuilder.addInnerClassifier(clazz, type, name); + return modelBuilder.addInnerClassifier(clazz, type, name, modifiers); } /** Modified: trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2010-06-19 18:55:29 UTC (rev 920) +++ trunk/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2010-06-24 13:59:09 UTC (rev 921) @@ -297,8 +297,9 @@ public ObjectModelClassifier addInnerClassifier( ObjectModelClass clazz, ObjectModelType type, - String name) throws IllegalArgumentException { - return builder.addInnerClassifier(clazz, type, name); + String name, + ObjectModelModifier... modifiers) throws IllegalArgumentException { + return builder.addInnerClassifier(clazz, type, name, modifiers); } public void setDocumentation(ObjectModelElement element, @@ -384,6 +385,15 @@ this.constantPrefix = constantPrefix; } + /** + * Used to initialize constant prefix depends on model tagvalue {@link + * JavaGeneratorUtil#TAG_CONSTANT_PREFIX}. If no tagvalue found, the default + * value will be an empty prefix. + */ + public void initConstantPrefixFromModel() { + constantPrefix = getConstantPrefix(null, ""); + } + protected URL getFileInClassPath(String fqn) { String resourceName = fqn.replaceAll("\\.", "/") + ".java"; URL fileLocation = getClassLoader().getResource(resourceName); Modified: trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilder.java =================================================================== --- trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilder.java 2010-06-19 18:55:29 UTC (rev 920) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilder.java 2010-06-24 13:59:09 UTC (rev 921) @@ -26,23 +26,23 @@ package org.nuiton.eugene.models.object; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.models.object.xml.*; /** - * ObjectModelBuilder + * Builder to fill an empty ObjectModel. The object model name is important if + * you want to use the model in generators. * <p/> * Created: 3 nov. 2009 * - * @author fdesbois - * @version $Revision$ - * <p/> - * Builder to fill an empty ObjectModel. The object model name is important if you want to use the model - * in generators. - * <p/> - * Mise a jour: $Date$ - * par : */ + * @author fdesbois <fdesbois@codelutin.com> + * @version $Id$ + */ public class ObjectModelBuilder { + private static final Log log = LogFactory.getLog(ObjectModelBuilder.class); + protected ObjectModelImpl model; /** @@ -111,6 +111,22 @@ throws IllegalArgumentException { clazz.setName(name); clazz.setPackage(packageName); + setClassModifiers(clazz, modifiers); + model.addClass(clazz); + return clazz; + } + + /** + * Set modifiers to a class. Only STATIC and ABSTRACT are actually supported. + * + * @param clazz ObjectModelClassImpl where modifiers will be set + * @param modifiers Array of ObjectModelModifier to set + * @throws IllegalArgumentException for unsupported modifier + */ + protected void setClassModifiers(ObjectModelClassImpl clazz, + ObjectModelModifier... modifiers) + throws IllegalArgumentException { + for (ObjectModelModifier modifier : modifiers) { switch (modifier) { case ABSTRACT: @@ -120,11 +136,10 @@ clazz.setStatic(true); break; default: - throw new IllegalArgumentException("Unsupported modifier type '" + modifier.name() + "'"); + throw new IllegalArgumentException( + "Unsupported modifier type '" + modifier.name() + "'"); } - } - model.addClass(clazz); - return clazz; + } } /** @@ -460,7 +475,12 @@ * @return the new instanciated inner classifier * @throws IllegalArgumentException if given {@code type} is not a concrete classifier type */ - public ObjectModelClassifier addInnerClassifier(ObjectModelClass clazz, ObjectModelType type, String name) throws IllegalArgumentException { + public ObjectModelClassifier addInnerClassifier(ObjectModelClass clazz, + ObjectModelType type, + String name, + ObjectModelModifier... modifiers) + throws IllegalArgumentException { + ObjectModelClassImpl impl = (ObjectModelClassImpl) clazz; ObjectModelClassifierImpl inner; switch (type) { @@ -470,6 +490,7 @@ break; case OBJECT_MODEL_CLASS: inner = new ObjectModelClassImpl(); + setClassModifiers((ObjectModelClassImpl)inner, modifiers); break; case OBJECT_MODEL_INTERFACE: inner = new ObjectModelInterfaceImpl(); @@ -482,6 +503,11 @@ inner.postInit(); impl.addInnerClassifier(inner); inner.setObjectModelImpl(impl.getModel()); + + if (log.isDebugEnabled()) { + log.debug("Add inner classifier for " + clazz.getQualifiedName() + " : " + inner.getQualifiedName()); + } + return inner; } 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-06-19 18:55:29 UTC (rev 920) +++ trunk/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelClassImpl.java 2010-06-24 13:59:09 UTC (rev 921) @@ -34,6 +34,8 @@ import java.util.List; import java.util.Map; +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; @@ -45,13 +47,13 @@ * Created: 14 janv. 2004 * * @author Cédric Pineau <pineau@codelutin.com> - * Copyright Code Lutin - * @version $Revision$ - * - * Last update : $Date$ - * by : */ + * @author fdesbois <fdesbois@codelutin.com> + * @version $Id$ + */ public class ObjectModelClassImpl extends ObjectModelClassifierImpl implements ObjectModelClass { + private static final Log log = LogFactory.getLog(ObjectModelClassImpl.class); + protected List<ObjectModelClass> superclasses; protected Map<ObjectModelClass, String> superclassesDiscriminators = new HashMap<ObjectModelClass, String>(); protected List<ObjectModelImplRef> superclassesRefs = new ArrayList<ObjectModelImplRef>(); @@ -98,8 +100,12 @@ superclasses = new ArrayList<ObjectModelClass>(); for (ObjectModelImplRef superclassesRef : superclassesRefs) { ObjectModelImplSuperClassRef ref = (ObjectModelImplSuperClassRef) superclassesRef; + + if (log.isDebugEnabled()) { + log.debug("Superclass ref for " + this.getQualifiedName() + " : " + ref.getName()); + } + ObjectModelClass superclass = objectModelImpl.getClass(ref.getName()); - if (superclass == null) { ExternalCacheExtension cache = objectModelImpl.getExtension( ExternalCacheExtension.OBJECTMODEL_EXTENSION, ExternalCacheExtension.class); @@ -107,6 +113,10 @@ superclass = cache.getCache(ref, ObjectModelClassImpl.class); } + if (log.isDebugEnabled()) { + log.debug("Superclass for " + this.getQualifiedName() + " : " + superclass.getQualifiedName()); + } + superclasses.add(superclass); superclassesDiscriminators.put(superclass, ref.getDiscriminator()); }
participants (1)
-
fdesbois@users.nuiton.org