Author: fdesbois Date: 2009-11-03 16:26:27 +0100 (Tue, 03 Nov 2009) New Revision: 688 Added: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelModifier.java branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilder.java Removed: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java Modified: branches/eugene-2.0/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java branches/eugene-2.0/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java Log: - Refactor Builders -> create ObjectModelBuilder - Add ObjectModelModifier to simplify builder's methods Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java =================================================================== --- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2009-11-03 11:38:10 UTC (rev 687) +++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/JavaBuilder.java 2009-11-03 15:26:27 UTC (rev 688) @@ -1,15 +1,18 @@ package org.nuiton.eugene.java; +import java.util.HashSet; +import java.util.Set; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.nuiton.eugene.GeneratorUtil; import org.nuiton.eugene.ImportsManager; import org.nuiton.eugene.models.object.*; +import org.nuiton.eugene.models.object.ObjectModelModifier; import org.nuiton.eugene.models.object.xml.*; /** * JavaBuilder - * <p/> + * * Created: 29 oct. 2009 * * @author fdesbois @@ -17,33 +20,25 @@ * * Mise a jour: $Date$ * par : $Author$ - * <p/> */ public class JavaBuilder { private static final Log log = LogFactory.getLog(JavaBuilder.class); - protected ObjectModelImpl model; + protected ObjectModelBuilder modelBuilder; protected ImportsManagerExtension managers; @SuppressWarnings("unchecked") public JavaBuilder(String modelName) { - this.model = new ObjectModelImpl(); - this.model.setName(modelName); + this.modelBuilder = new ObjectModelBuilder(modelName); - // initialize ObjectModel extension for ImportsManager - //try { - this.managers = this.model.getExtension( - ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); - /*} catch (IllegalArgumentException eee) { // "imports" not exist - this.managers = new ImportsManagerExtension(); - this.model.addExtension(ImportsManagerExtension.OBJECTMODEL_EXTENSION, this.managers); - }*/ + this.managers = getModel().getExtension( + ImportsManagerExtension.OBJECTMODEL_EXTENSION, ImportsManagerExtension.class); } public ObjectModel getModel() { - return this.model; + return this.modelBuilder.getModel(); } public void addImport(ObjectModelClassifier classifier, String imports) { @@ -57,259 +52,103 @@ } public ObjectModelClass createClass(String name, String packageName) { - ObjectModelClassImpl clazz = - (ObjectModelClassImpl)ObjectModelBuilderHelper.createClass(name, packageName); - model.addClass(clazz); - return clazz; + return modelBuilder.createClass(name, packageName); } public ObjectModelClass createAbstractClass(String name, String packageName) { - ObjectModelClassImpl clazz = - (ObjectModelClassImpl)ObjectModelBuilderHelper.createAbstractClass(name, packageName); - model.addClass(clazz); - return clazz; + return modelBuilder.createClass(name, packageName, ObjectModelModifier.ABSTRACT); } public void setSuperClass(ObjectModelClass classifier, String superclassQualifiedName) { ObjectModelClassImpl impl = (ObjectModelClassImpl) classifier; impl.getSuperclasses().clear(); // suppress all existing superclass: only one can be set for java - ObjectModelBuilderHelper.addSuperclass(impl, superclassQualifiedName); + modelBuilder.addSuperclass(impl, superclassQualifiedName); this.addImport(classifier, superclassQualifiedName); } public void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) { - ObjectModelBuilderHelper.addInterface(classifier, interfaceQualifiedName); + modelBuilder.addInterface(classifier, interfaceQualifiedName); this.addImport(classifier, interfaceQualifiedName); } - /** - * Add attribute to a classifier with properties in parse string. - * Use java syntax to define properties of the attribute : - * ex : "public static final java.util.Date maDate = new java.util.Date()" - * - * @param classifier the classifier to add the attribute - * @param parse the properties of the attribute to parse - * @return a new ObjectModelAttribute corresponding to the new attribute added to the classifier - * @throws IllegalArgumentException - */ - public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String parse) - throws IllegalArgumentException { - ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl(); - String result = parse; - try { - // Visibility - if (parse.contains("public ")) { - attribute.setVisibility("public"); - result = parse.replace("public ", ""); - } else if (parse.contains("protected ")) { - attribute.setVisibility("protected"); - result = parse.replace("protected ", ""); - } else if (parse.contains("private ")) { - attribute.setVisibility("private"); - result = parse.replace("private ", ""); - } else { - attribute.setVisibility(""); - } - - // Static - if (result.contains("static ")) { - attribute.setStatic(true); - result = result.replace("static ", ""); - } - // Final - if (result.contains("final ")) { - attribute.setFinal(true); - result = result.replace("final ", ""); - } - - // Type - int typeIndex = result.indexOf(" "); - String type = result.substring(0, typeIndex).trim(); - attribute.setType(type); - result = result.substring(typeIndex + 1); - - // Name - int nameIndex = result.indexOf("="); - String name = ""; - if (nameIndex != -1) { - name = result.substring(0, nameIndex).trim(); - result = result.substring(nameIndex); - - // DefaultValue - int equalsIndex = result.indexOf("="); - String value = result.substring(equalsIndex + 1).trim(); - attribute.setDefaultValue(value); - - //if (value.contains("new ")) { - this.addImport(classifier, value); - //} - - } else { // Il ne reste que le nom si pas de = - name = result; - } - attribute.setName(name); - - ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl) classifier; - classifierImpl.addAttribute(attribute); - this.addImport(classifier, attribute.getType()); - } catch (StringIndexOutOfBoundsException eee) { - throw new IllegalArgumentException("Can't add Attribute : Illegal parse parameter : " + - "input = " + parse + " _ current = " + result, eee); + public ObjectModelAttribute addConstant(ObjectModelClassifier classifier, String name, String type, String value, + ObjectModelModifier visibility) throws IllegalArgumentException { + if (!visibility.isVisibility()) { + throw new IllegalArgumentException("Illegal visibility type : " + visibility.name() + + " for " + classifier.getQualifiedName()); } - return attribute; + + return modelBuilder.addAttribute(classifier, name, type, value, visibility, + ObjectModelModifier.STATIC, ObjectModelModifier.FINAL); } - public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, ObjectModelAttribute attribute) { - this.addImport(classifier, attribute.getType()); - return ObjectModelBuilderHelper.addAttribute(classifier, attribute.getName(), attribute.getType(), - attribute.getDefaultValue(), attribute.getVisibility(), attribute.isStatic(), attribute.isFinal()); + public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type) { + return modelBuilder.addAttribute(classifier, name, type); } - public ObjectModelOperation addConstructor(ObjectModelClass clazz, String visibility) { - return ObjectModelBuilderHelper.addOperation(clazz, visibility, clazz.getName(), null); + public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value, + ObjectModelModifier... modifiers) { + return modelBuilder.addAttribute(classifier, name, type, value, modifiers); } - /** - * Attention ne marche pas pour les constructeur !!! - * Attention ne marche pas pour les generic du type : <T extends Plop> T myMethod !!! - * @param classifier - * @param parse - * @return - * @throws IllegalArgumentException - */ - public ObjectModelOperation addOperation(ObjectModelClassifier classifier, String parse) - throws IllegalArgumentException { - ObjectModelOperationImpl operation = new ObjectModelOperationImpl(); - String result = ""; + public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, ObjectModelAttribute attribute) { + this.addImport(classifier, attribute.getType()); - try { - // Visibility - if (parse.contains("public ")) { - operation.setVisibility("public"); - result = parse.replace("public ", ""); - } else if (parse.contains("protected ")) { - operation.setVisibility("protected"); - result = parse.replace("protected ", ""); - } else if (parse.contains("private ")) { - operation.setVisibility("private"); - result = parse.replace("private ", ""); - } else { - operation.setVisibility(""); - } + Set<ObjectModelModifier> modifiers = new HashSet<ObjectModelModifier>(); - // Static - if (result.contains("static ")) { - operation.setStatic(true); - result = result.replace("static ", ""); - } - // Abstract - if (result.contains("abstract ")) { - operation.setAbstract(true); - result = result.replace("abstract ", ""); - } + if (attribute.isStatic()) { + modifiers.add(ObjectModelModifier.STATIC); + } + if (attribute.isFinal()) { + modifiers.add(ObjectModelModifier.FINAL); + } + 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); + } - // Return Parameter - int typeIndex = result.indexOf(" "); - String type = result.substring(0, typeIndex).trim(); - result = result.substring(typeIndex + 1); + return modelBuilder.addAttribute(classifier, attribute.getName(), attribute.getType(), + attribute.getDefaultValue(), modifiers.toArray(new ObjectModelModifier[modifiers.size()])); + } - // TROP COMPLEXE pour les generic du type <T extends Plop> T myMethod - /*if (log.isDebugEnabled()) { - log.debug ("type : " + type + " _ result= " + result); - } - if (type.contains("<")) { // Generic : <T extends Plop> T myMethod - int endGeneric = result.indexOf(">"); // index de fin du generic - type += result.substring(0, endGeneric).trim(); // type = <T extends Plop> - if (log.isDebugEnabled()) { - log.debug ("type : " + type + " _ result= " + result); - } - result = result.substring(endGeneric + 1).trim(); // result = T myMethod - if (log.isDebugEnabled()) { - log.debug ("type : " + type + " _ result= " + result); - } - typeIndex = result.indexOf(" "); - type += " " + result.substring(0, typeIndex).trim(); // type = <T extends Plop> T - if (log.isDebugEnabled()) { - log.debug ("type : " + type + " _ result= " + result); - } - result = result.substring(typeIndex + 1); // result = myMethod - if (log.isDebugEnabled()) { - log.debug ("type : " + type + " _ result= " + result); - } - }*/ - ObjectModelParameterImpl returnParameter = new ObjectModelParameterImpl(); - returnParameter.setType(type); - operation.setReturnParameter(returnParameter); - - if (log.isDebugEnabled()) { - log.debug("parse before name : " + result); - } - - int nameIndex = result.indexOf("("); - String methodName = ""; - if (nameIndex != -1) { - methodName = result.substring(0, nameIndex).trim(); - result = result.substring(nameIndex); - - // Input parameters - if (result.contains("(")) { - int parentheseIndex = result.indexOf("("); - int parentheseEndIndex = result.indexOf(")"); - result = result.substring(parentheseIndex + 1, parentheseEndIndex); - - String paramName = ""; - for (String param : result.split(",")) { - typeIndex = param.indexOf(" "); - type = param.substring(0, typeIndex).trim(); - paramName = param.substring(typeIndex + 1).trim(); - - ObjectModelParameterImpl parameter = new ObjectModelParameterImpl(); - parameter.setType(type); - parameter.setName(paramName); - operation.addParameter(parameter); - } - } - - } else { // Il ne reste que le nom si pas de ( - methodName = result; - } - operation.setName(methodName); - - // Add operation to Classifier - ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl) classifier; - classifierImpl.addOperation(operation); - // imports for returnType - this.addImport(classifier, operation.getReturnType()); - // imports for inputParameters - for (ObjectModelParameter parameter : operation.getParameters()) { - this.addImport(classifier, parameter.getType()); - } - } catch (StringIndexOutOfBoundsException eee) { - throw new IllegalArgumentException("Can't add Operation : Illegal parse parameter : " + - "input = " + parse + " _ current = " + result, eee); + public ObjectModelOperation addConstructor(ObjectModelClass clazz, ObjectModelModifier visibility) + throws IllegalArgumentException { + if (!visibility.isVisibility()) { + throw new IllegalArgumentException("Illegal visibility type : " + visibility.name() + + " for " + clazz.getQualifiedName()); } - return operation; + + return modelBuilder.addOperation(clazz, clazz.getName(), null, visibility); } - public ObjectModelOperation addOperation(ObjectModelClassifier classifier, String visibility, - String type, String name, String... inputParameters) { + public ObjectModelOperation addOperation(ObjectModelClassifier classifier, String name, String type, + ObjectModelModifier... modifiers) { - return ObjectModelBuilderHelper.addOperation(classifier, visibility, name, type, inputParameters); + return modelBuilder.addOperation(classifier, name, type, modifiers); } public ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) { - ObjectModelParameter param = ObjectModelBuilderHelper.addParameter(operation, type, name); + ObjectModelParameter param = modelBuilder.addParameter(operation, type, name); this.addImport((ObjectModelClassifier) operation.getDeclaringElement(), type); return param; } public void addException(ObjectModelOperation operation, String exception) { - ObjectModelBuilderHelper.addException(operation, exception); + modelBuilder.addException(operation, exception); this.addImport((ObjectModelClassifier) operation.getDeclaringElement(), exception); } - public void setOperationBody(ObjectModelOperation operation, String body) { - ObjectModelBuilderHelper.setOperationBody(operation, body); + public void setOperationBody(ObjectModelOperation operation, String body) + throws IllegalArgumentException { + if (operation.isAbstract()) { + throw new IllegalArgumentException("Unable to add body for an abstract method"); + } + modelBuilder.setOperationBody(operation, body); } Modified: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java =================================================================== --- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2009-11-03 11:38:10 UTC (rev 687) +++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/java/ObjectModelTransformerToJava.java 2009-11-03 15:26:27 UTC (rev 688) @@ -73,29 +73,30 @@ builder.addInterface(classifier, interfaceQualifiedName); } - protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String parse) - throws IllegalArgumentException { - return builder.addAttribute(classifier, parse); + protected ObjectModelAttribute addConstant(ObjectModelClassifier classifier, String name, String type, String value, + ObjectModelModifier visibility) throws IllegalArgumentException { + return builder.addConstant(classifier, name, type, value, visibility); } + protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value, + ObjectModelModifier... modifiers) { + return builder.addAttribute(classifier, name, type, value, modifiers); + } + protected ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, ObjectModelAttribute attribute) { return builder.addAttribute(classifier, attribute); } - protected ObjectModelOperation addConstructor(ObjectModelClass clazz, String visibility) { + protected ObjectModelOperation addConstructor(ObjectModelClass clazz, ObjectModelModifier visibility) + throws IllegalArgumentException { return builder.addConstructor(clazz, visibility); } - protected ObjectModelOperation addOperation(ObjectModelClassifier classifier, String parse) - throws IllegalArgumentException { - return builder.addOperation(classifier, parse); + protected ObjectModelOperation addOperation(ObjectModelClassifier classifier, String name, String type, + ObjectModelModifier... modifiers) { + return builder.addOperation(classifier, name, type, modifiers); } - protected ObjectModelOperation addOperation(ObjectModelClassifier classifier, String visibility, - String type, String name, String... inputParameters) { - return builder.addOperation(classifier, visibility, type, name, inputParameters); - } - protected ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) { return builder.addParameter(operation, type, name); } @@ -104,7 +105,8 @@ builder.addException(operation, exception); } - protected void setOperationBody(ObjectModelOperation operation, String body) { + protected void setOperationBody(ObjectModelOperation operation, String body) + throws IllegalArgumentException { builder.setOperationBody(operation, body); } Added: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelModifier.java =================================================================== --- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelModifier.java (rev 0) +++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelModifier.java 2009-11-03 15:26:27 UTC (rev 688) @@ -0,0 +1,56 @@ + +package org.nuiton.eugene.models.object; + +/** + * ObjectModelModifier + * + * Created: 3 nov. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public enum ObjectModelModifier { + + STATIC, FINAL, ABSTRACT, PUBLIC, PROTECTED, PRIVATE, PACKAGE; + + public boolean isVisibility() { + return this == PUBLIC || + this == PROTECTED || + this == PRIVATE || + this == PACKAGE; + } + + @Override + public String toString() { + switch (this) { + //case STATIC: return "static"; + //case ABSTRACT: return "abstract"; + //case FINAL: return "final"; + case PUBLIC: return "public"; + case PRIVATE: return "private"; + case PROTECTED: return "protected"; + case PACKAGE: return ""; + } + return ""; + } + + public static ObjectModelModifier toValue(String name) { + if (name.equals("public")) { + return PUBLIC; + } else if (name.equals("private")) { + return PRIVATE; + } else if (name.equals("protected")) { + return PROTECTED; + } else if (name.equals("")) { + return PACKAGE; + } else { + return null; + } + } + + + +} Property changes on: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelModifier.java ___________________________________________________________________ Added: svn:keywords + Author Date Revision Added: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilder.java =================================================================== --- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilder.java (rev 0) +++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilder.java 2009-11-03 15:26:27 UTC (rev 688) @@ -0,0 +1,156 @@ + +package org.nuiton.eugene.models.object.xml; + +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.ObjectModelElement; +import org.nuiton.eugene.models.object.ObjectModelInterface; +import org.nuiton.eugene.models.object.ObjectModelModifier; +import org.nuiton.eugene.models.object.ObjectModelOperation; +import org.nuiton.eugene.models.object.ObjectModelParameter; + +/** + * ObjectModelBuilder + * + * Created: 3 nov. 2009 + * + * @author fdesbois + * @version $Revision$ + * + * Mise a jour: $Date$ + * par : $Author$ + */ +public class ObjectModelBuilder { + + protected ObjectModelImpl model; + + public ObjectModelBuilder(String name) { + this.model = new ObjectModelImpl(); + this.model.setName(name); + } + + public ObjectModel getModel() { + return this.model; + } + + public ObjectModelClass createClass(String name, String packageName, ObjectModelModifier... modifiers) { + ObjectModelClassImpl result = new ObjectModelClassImpl(); + result.setName(name); + result.setPackage(packageName); + for (ObjectModelModifier modifier : modifiers) { + switch (modifier) { + case ABSTRACT: result.setAbstract(true); break; + case STATIC: result.setStatic(true); + } + } + model.addClass(result); + return result; + } + + public ObjectModelInterface createInterface(String name, String packageName) { + ObjectModelInterfaceImpl result = new ObjectModelInterfaceImpl(); + result.setName(name); + result.setPackage(packageName); + return result; + } + + public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type) { + return addAttribute(classifier, name, type, ""); + } + + public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value, + ObjectModelModifier... modifiers) { + ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl(); + attribute.setName(name); + 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); + } + } + } + + ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl)classifier; + classifierImpl.addAttribute(attribute); + return attribute; + } + + public ObjectModelOperation addOperation(ObjectModelClassifier clazz, + String name, String returnType, ObjectModelModifier... modifiers) { + ObjectModelOperationImpl result = new ObjectModelOperationImpl(); + result.setName(name); + + if (returnType != null) { + ObjectModelParameterImpl returnParameter = new ObjectModelParameterImpl(); + returnParameter.setType(returnType); + 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); + } + } + } + + ((ObjectModelClassifierImpl)clazz).addOperation(result); + return result; + } + + public void setOperationBody(ObjectModelOperation operation, String body) { + ObjectModelOperationImpl operationImpl = (ObjectModelOperationImpl) operation; + operationImpl.setBodyCode(body); + } + + public void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) { + ObjectModelClassifierImpl impl = (ObjectModelClassifierImpl) classifier; + + ObjectModelImplRef interfacez = new ObjectModelImplRef(); + interfacez.setName(interfaceQualifiedName); + + impl.addInterface(interfacez); + } + + public void addSuperclass(ObjectModelClass clazz, String superclassQualifiedName) { + ObjectModelClassImpl impl = (ObjectModelClassImpl) clazz; + + ObjectModelImplSuperClassRef superclass = new ObjectModelImplSuperClassRef(); + superclass.setName(superclassQualifiedName); + + impl.addSuperclass(superclass); + } + + public ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) { + ObjectModelOperationImpl impl = (ObjectModelOperationImpl) operation; + ObjectModelParameterImpl param = new ObjectModelParameterImpl(); + param.setType(type); + param.setName(name); + impl.addParameter(param); + return param; + } + + public void addException(ObjectModelOperation operation, String exception) { + ObjectModelOperationImpl impl = (ObjectModelOperationImpl) operation; + ObjectModelParameterImpl param = new ObjectModelParameterImpl(); + param.setType(exception); + impl.addExceptionParameter(param); + } + + public void setDocumentation(ObjectModelElement element, String documentation) { + ObjectModelElementImpl impl = (ObjectModelElementImpl)element; + impl.setDocumentation(documentation); + } + +} Property changes on: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilder.java ___________________________________________________________________ Added: svn:keywords + Author Date Revision Deleted: branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java =================================================================== --- branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java 2009-11-03 11:38:10 UTC (rev 687) +++ branches/eugene-2.0/eugene/src/main/java/org/nuiton/eugene/models/object/xml/ObjectModelBuilderHelper.java 2009-11-03 15:26:27 UTC (rev 688) @@ -1,156 +0,0 @@ -/* *##% - * Copyright (c) 2009 poussin. All rights reserved. - * - * This program is free software: you can redistribute it and/or modify - * it under the terms of the GNU 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 Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with this program. If not, see <http://www.gnu.org/licenses/>. - *##%*/ - -package org.nuiton.eugene.models.object.xml; - - -import org.nuiton.eugene.models.object.*; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - -/** - * class that help to build java class or interface object. - * - * - * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ - */ -public class ObjectModelBuilderHelper { - - /** to use log facility, just put in your code: log.info(\"...\"); */ - static private Log log = LogFactory.getLog(ObjectModelBuilderHelper.class); - - public static ObjectModelClass createClass(String name, String packageName) { - ObjectModelClassImpl result = new ObjectModelClassImpl(); - result.setName(name); - result.setPackage(packageName); - return result; - } - - public static ObjectModelClass createAbstractClass(String name, String packageName) { - ObjectModelClassImpl result = (ObjectModelClassImpl) createClass(name,packageName); - result.setAbstract(true); - return result; - } - - public static ObjectModelInterface createInterface(String name, String packageName) { - ObjectModelInterfaceImpl result = new ObjectModelInterfaceImpl(); - result.setName(name); - result.setPackage(packageName); - return result; - } - - public static ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value, - String visibility, boolean isStatic, boolean isFinal) { - ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl(); - attribute.setFinal(isFinal); - attribute.setDefaultValue(value); - attribute.setName(name); - attribute.setStatic(isStatic); - attribute.setType(type); - attribute.setVisibility(visibility); - - ObjectModelClassifierImpl classifierImpl = (ObjectModelClassifierImpl)classifier; - classifierImpl.addAttribute(attribute); - return attribute; - } - - public static ObjectModelAttribute addConstant(ObjectModelClassifier classifier, String name, String type, String value, String visibility) { - return addAttribute(classifier, name, type, value, visibility, true, true); - } - - public static ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value) { - return addAttribute(classifier, name, type, value, "protected", false, false); - } - - public static ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type) { - return addAttribute(classifier, name, type, "", "protected", false, false); - } - - public static ObjectModelOperation addOperation(ObjectModelClassifier clazz, - String visibility, String name, String returnType, String... inputParameters) { - ObjectModelOperationImpl result = new ObjectModelOperationImpl(); - result.setName(name); - - result.setName(name); - result.setVisibility("public"); - - if (returnType != null) { - ObjectModelParameterImpl returnParameter = new ObjectModelParameterImpl(); - returnParameter.setType(returnType); - result.setReturnParameter(returnParameter); - } - - int nbParameters = inputParameters.length; - if (nbParameters %2 != 0) { - throw new IllegalArgumentException("Unccorect number of parameters (" + nbParameters + ") : " + - "each inputParameter must have name and type"); - } - for (int i = 0; i < inputParameters.length; i+=2) { - ObjectModelParameterImpl parameter = new ObjectModelParameterImpl(); - parameter.setType(inputParameters[i]); - parameter.setName(inputParameters[i+1]); - //importsManager.addImport(inputParameters[i+1]); - result.addParameter(parameter); - } - - ((ObjectModelClassifierImpl)clazz).addOperation(result); - return result; - } - - public static void setOperationBody(ObjectModelOperation operation, String body) { - ObjectModelOperationImpl operationImpl = (ObjectModelOperationImpl) operation; - operationImpl.setBodyCode(body); - } - - public static void addInterface(ObjectModelClassifier classifier, String interfaceQualifiedName) { - ObjectModelClassifierImpl impl = (ObjectModelClassifierImpl) classifier; - - ObjectModelImplRef interfacez = new ObjectModelImplRef(); - interfacez.setName(interfaceQualifiedName); - - impl.addInterface(interfacez); - } - - public static void addSuperclass(ObjectModelClass clazz, String superclassQualifiedName) { - ObjectModelClassImpl impl = (ObjectModelClassImpl) clazz; - - ObjectModelImplSuperClassRef superclass = new ObjectModelImplSuperClassRef(); - superclass.setName(superclassQualifiedName); - - impl.addSuperclass(superclass); - } - - public static ObjectModelParameter addParameter(ObjectModelOperation operation, String type, String name) { - ObjectModelOperationImpl impl = (ObjectModelOperationImpl) operation; - ObjectModelParameterImpl param = new ObjectModelParameterImpl(); - param.setType(type); - param.setName(name); - impl.addParameter(param); - return param; - } - - public static void addException(ObjectModelOperation operation, String exception) { - ObjectModelOperationImpl impl = (ObjectModelOperationImpl) operation; - ObjectModelParameterImpl param = new ObjectModelParameterImpl(); - param.setType(exception); - impl.addExceptionParameter(param); - } -} Modified: branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java =================================================================== --- branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java 2009-11-03 11:38:10 UTC (rev 687) +++ branches/eugene-2.0/eugene/src/test/java/org/nuiton/eugene/java/JavaBuilderTest.java 2009-11-03 15:26:27 UTC (rev 688) @@ -14,6 +14,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.ObjectModelOperation; import org.nuiton.eugene.models.object.ObjectModelParameter; import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; @@ -162,52 +163,54 @@ } /** - * Test of addAttribute(ObjectModelClassifier, String) method, of class JavaBuilder. + * Test of addConstant method, of class JavaBuilder. * Prerequisite : existing classifier in model. - * - Add attribute simple attribute (visibility, type, name) - * - Add attribute with defaultValue - * - Add attribute with defaultValue as new instance of object - * - Add attribute with defaultValue which contains a '.' (double) + * - Add a public constant attribute (static, final) */ @Test - public void testAddAttributeObjectModelClassifierString() { + public void testAddConstant() { + System.out.println("addConstant"); + JavaBuilder builder = new JavaBuilder("TestModel"); + + ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); + + ObjectModelAttribute constant = builder.addConstant(classifier, "GENDER_MALE", "boolean", "true", + ObjectModelModifier.PUBLIC); + + assertTrue(constant.isFinal()); + assertTrue(constant.isStatic()); + } + + /** + * Test of addAttribute method, of class JavaBuilder. + * Prerequisite : existing classifier in model. + * - Add a public attribute without default value + * - Add a private static attribute with default value + */ + @Test + public void testAddAttribute() { System.out.println("addAttribute"); - JavaBuilder builder = new JavaBuilder("modelName"); + JavaBuilder builder = new JavaBuilder("TestModel"); ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - String parse = "public java.lang.String bilou"; - ObjectModelAttribute result = builder.addAttribute(classifier, parse); - assertNotNull(result); - assertEquals(result.getName(), "bilou"); - assertEquals(result.getType(), "java.lang.String"); - assertEquals(result.getVisibility(), "public"); + ObjectModelAttribute attribute = builder.addAttribute(classifier, "firstName", "java.lang.String", "", + ObjectModelModifier.PUBLIC); - parse = "public static final long uid = 12534sdf78ef9"; - result = builder.addAttribute(classifier, parse); - assertNotNull(result); - assertTrue(result.isFinal()); - assertTrue(result.isStatic()); - assertEquals(result.getName(), "uid"); - assertEquals(result.getType(), "long"); - assertEquals(result.getVisibility(), "public"); - assertEquals(result.getDefaultValue(), "12534sdf78ef9"); + assertNotNull(attribute); + assertEquals(attribute.getName(), "firstName"); + assertEquals(attribute.getType(), "java.lang.String"); + assertEquals(attribute.getVisibility(), "public"); + assertEquals(attribute.getDefaultValue(), ""); + assertFalse(attribute.isFinal()); + assertFalse(attribute.isStatic()); - parse = "private java.util.Date publicDate = new java.util.Date()"; - result = builder.addAttribute(classifier, parse); - assertNotNull(result); - assertEquals(result.getName(), "publicDate"); - assertEquals(result.getType(), "java.util.Date"); - assertEquals(result.getVisibility(), "private"); - assertEquals(result.getDefaultValue(), "new java.util.Date()"); + attribute = builder.addAttribute(classifier, "roles", "java.lang.List<org.chorem.bonzoms.Role>", + "new java.lang.ArrayList<org.chorem.bonzoms.Role>()", + ObjectModelModifier.PRIVATE, ObjectModelModifier.STATIC); - parse = "private double age = 2.0"; - result = builder.addAttribute(classifier, parse); - assertNotNull(result); - assertEquals(result.getName(), "age"); - assertEquals(result.getType(), "double"); - assertEquals(result.getVisibility(), "private"); - assertEquals(result.getDefaultValue(), "2.0"); + assertEquals(attribute.getDefaultValue(), "new java.lang.ArrayList<org.chorem.bonzoms.Role>()"); + assertTrue(attribute.isStatic()); } /** @@ -231,13 +234,8 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); ObjectModelAttribute result = builder.addAttribute(classifier, attribute); - assertNotNull(result); - assertEquals(result.getName(), "name"); - assertEquals(result.getType(), "java.lang.String"); - assertEquals(result.getVisibility(), "public"); - assertEquals(result.getDefaultValue(), "\"\""); - assertTrue(result.isFinal()); - assertFalse(result.isStatic()); + + assertNotSame(attribute, result); } /** @@ -253,7 +251,7 @@ ObjectModelClass clazz = builder.createClass("Person", "org.chorem.bonzoms"); - ObjectModelOperation operation = builder.addConstructor(clazz, "public"); + ObjectModelOperation operation = builder.addConstructor(clazz, ObjectModelModifier.PUBLIC); assertNotNull(operation); assertEquals(operation.getName(), "Person"); assertNull(operation.getReturnParameter()); @@ -263,74 +261,28 @@ /** * Test of addOperation method, of class JavaBuilder. * Prerequisite : existing classifier in model. - * - Add simple method without parameters - * - Add method with one parameter - * NOTE : unsupported generic and exceptions + * - Add simple public method + * - Add abstract method */ @Test - public void testAddOperationObjectModelClassifierString() { + public void testAddOperation() { System.out.println("addOperation"); - JavaBuilder builder = new JavaBuilder("modelName"); - ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - - String parse = "public abstract java.util.List<java.lang.String> methodName"; - ObjectModelOperation result = builder.addOperation(classifier, parse); - assertNotNull(result); - assertTrue(result.isAbstract()); - assertEquals(result.getName(), "methodName"); - assertEquals(result.getReturnType(), "java.util.List<java.lang.String>"); - assertEquals(result.getVisibility(), "public"); - - /*parse = "public <T extends blob> T myMethod"; // UNSUPPORTED*/ - - parse = "public void addPropertyChangeListener(java.lang.String propertyName)"; - result = builder.addOperation(classifier, parse); - assertNotNull(result); - assertEquals(result.getName(), "addPropertyChangeListener"); - assertEquals(result.getReturnType(), "void"); - assertEquals(result.getVisibility(), "public"); - assertEquals(result.getParameters().size(), 1); - - List<ObjectModelParameter> listParams = (List<ObjectModelParameter>)result.getParameters(); - ObjectModelParameter param1 = listParams.get(0); - assertEquals(param1.getName(), "propertyName"); - assertEquals(param1.getType(), "java.lang.String"); - } - - /** - * Test of addOperation method, of class JavaBuilder. - * Prerequisite : existing classifier in model. - * - Add simple method without parameters - * - Add method with one parameter - */ - @Test - public void testAddOperation5args() { - System.out.println("addOperation"); - JavaBuilder builder = new JavaBuilder("modelName"); ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); ObjectModelOperation result = builder.addOperation(classifier, - "public", "java.util.List<java.lang.String>", "methodName"); + "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()); - result = builder.addOperation(classifier, "public", "void", "addPropertyChangeListener", - "java.lang.String", "propertyName"); - assertNotNull(result); - assertEquals(result.getName(), "addPropertyChangeListener"); - assertEquals(result.getReturnType(), "void"); - assertEquals(result.getVisibility(), "public"); - assertEquals(result.getParameters().size(), 1); - - List<ObjectModelParameter> listParams = (List<ObjectModelParameter>)result.getParameters(); - ObjectModelParameter param1 = listParams.get(0); - assertEquals(param1.getName(), "propertyName"); - assertEquals(param1.getType(), "java.lang.String"); + result = builder.addOperation(classifier, "addPropertyChangeListener", "void", + ObjectModelModifier.PUBLIC, ObjectModelModifier.ABSTRACT); + assertTrue(result.isAbstract()); } /** @@ -346,8 +298,8 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - ObjectModelOperation operation = builder.addOperation(classifier, - "public java.lang.String setName"); + ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", + ObjectModelModifier.PUBLIC); ObjectModelParameter param = builder.addParameter(operation, "java.lang.String", "name"); assertNotNull(param); @@ -372,8 +324,8 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - ObjectModelOperation operation = builder.addOperation(classifier, - "public java.lang.String setName"); + ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", + ObjectModelModifier.PUBLIC); builder.addException(operation, "java.lang.IllegalArgumentException"); Set<String> exceptions = operation.getExceptions(); @@ -398,8 +350,8 @@ ObjectModelClassifier classifier = builder.createClass("Person", "org.chorem.bonzoms"); - ObjectModelOperation operation = builder.addOperation(classifier, - "public java.lang.String setName"); + ObjectModelOperation operation = builder.addOperation(classifier, "setName", "java.lang.String", + ObjectModelModifier.PUBLIC); builder.setOperationBody(operation, "this.name = name"); assertNotNull(operation.getBodyCode()); Modified: branches/eugene-2.0/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java =================================================================== --- branches/eugene-2.0/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-11-03 11:38:10 UTC (rev 687) +++ branches/eugene-2.0/eugene-test/src/main/java/org/nuiton/eugene/test/generator/BeanTransformer.java 2009-11-03 15:26:27 UTC (rev 688) @@ -6,7 +6,6 @@ import org.nuiton.eugene.models.object.*; import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; import java.io.Serializable; import java.util.Collection; import java.util.Iterator; @@ -79,8 +78,9 @@ hasMultipleAttribute = true; // Add getChild - ObjectModelOperation getChild = addOperation(resultClass, - "public " + attrType + " get" + attrNameCapitalized + "(int index)"); + ObjectModelOperation getChild = addOperation(resultClass, "get" + attrNameCapitalized, + attrType, ObjectModelModifier.PUBLIC); + addParameter(getChild, "int", "index"); setOperationBody(getChild, "" /*{ <%=attrType%> o = getChild(<%=attrName%>, index); @@ -97,8 +97,9 @@ if (isEntity) { hasEntity = true; - ObjectModelOperation getChildEntity = addOperation(resultClass, - "public " + attrType + " get" + attrNameCapitalized + "(" + String.class.getName() + " topiaId)"); + ObjectModelOperation getChildEntity = addOperation(resultClass, "get" + attrNameCapitalized, + attrType, ObjectModelModifier.PUBLIC); + addParameter(getChildEntity, String.class.getName(), "topiaId"); setOperationBody(getChildEntity, "" /*{ <%=attrType%> o = getEntity(<%=attrName%>, topiaId); @@ -108,8 +109,9 @@ } // Add addChild - ObjectModelOperation addChild = addOperation(resultClass, - "public " + attrType + " add" + attrNameCapitalized + "(" + attrType + " " + attrName + ")"); + ObjectModelOperation addChild = addOperation(resultClass, "add" + attrNameCapitalized, + attrType, ObjectModelModifier.PUBLIC); + addParameter(addChild, attrType, attrName); setOperationBody(addChild, "" /*{ @@ -120,8 +122,9 @@ ); // Add removeChild - ObjectModelOperation removeChild = addOperation(resultClass, - "public boolean remove" + attrNameCapitalized + "(" + attrType + " " + attrName + ")"); + ObjectModelOperation removeChild = addOperation(resultClass, "remove" + attrNameCapitalized, + "boolean", ObjectModelModifier.PUBLIC); + addParameter(removeChild, attrType, attrName); setOperationBody(removeChild, "" /*{ @@ -148,11 +151,12 @@ } // Add attribute - addAttribute(resultClass, attr.getVisibility() + " " + attrType + " " + attrName); + String visibility = attr.getVisibility(); + addAttribute(resultClass, attrName, attrType, "", ObjectModelModifier.toValue(visibility)); // Add getter - ObjectModelOperation getter = this.addOperation(resultClass, - "public " + attrType + " get" + attrNameCapitalized); + ObjectModelOperation getter = addOperation(resultClass, "get" + attrNameCapitalized, attrType, + ObjectModelModifier.PUBLIC); setOperationBody(getter, "" /*{ return this.<%=attrName%>; @@ -160,8 +164,9 @@ ); // Add setter - ObjectModelOperation setter = this.addOperation(resultClass, - "public void set" + attrNameCapitalized + "(" + attrType + " newValue)"); + ObjectModelOperation setter = addOperation(resultClass, "set" + attrNameCapitalized, "void", + ObjectModelModifier.PUBLIC); + addParameter(setter, attrType, "newValue"); setOperationBody(setter, "" /*{ <%=attrType%> oldValue = get<%=attrNameCapitalized%>(); @@ -175,8 +180,10 @@ // Add helper methods if (hasMultipleAttribute) { - ObjectModelOperation getChild = addOperation(resultClass, "protected", "<T> T", "getChild", - "java.util.Collection<T>", "childs", "int", "index"); // params + ObjectModelOperation getChild = addOperation(resultClass, "getChild", "<T> T", + ObjectModelModifier.PROTECTED); + addParameter(getChild, "java.util.Collection<T>", "childs"); + addParameter(getChild, "int", "index"); setOperationBody(getChild, "" /*{ if (childs != null) { @@ -194,10 +201,10 @@ } if (hasEntity) { - ObjectModelOperation getEntity = addOperation(resultClass, "protected", - "<T extends org.nuiton.topia.persistence.TopiaEntity> T", // returnType - "getEntity", - "java.util.Collection<T>", "childs", "java.lang.String", "topiaId"); // params + ObjectModelOperation getEntity = addOperation(resultClass, "getEntity", + "<T extends org.nuiton.topia.persistence.TopiaEntity> T", ObjectModelModifier.PROTECTED); + addParameter(getEntity, "java.util.Collection<T>", "childs"); + addParameter(getEntity, "java.lang.String", "topiaId"); setOperationBody(getEntity, "" /*{ if (childs != null) { @@ -212,16 +219,14 @@ ); } - - // Add operations for (ObjectModelOperation op : clazz.getOperations()) { - ObjectModelOperation resultOperation = addOperation(resultClass, - op.getVisibility() + " abstract " + op.getReturnType() + " " + op.getName()); + String visibility = op.getVisibility(); + ObjectModelOperation resultOperation = addOperation(resultClass, op.getName(), op.getReturnType(), + ObjectModelModifier.toValue(visibility), ObjectModelModifier.ABSTRACT); for (ObjectModelParameter param : op.getParameters()) { - ObjectModelParameter resultParameter = addParameter(resultOperation, - param.getType(), param.getName()); + addParameter(resultOperation, param.getType(), param.getName()); } for (String exception : op.getExceptions()) { @@ -241,16 +246,17 @@ String svUID = TopiaGeneratorUtil.findTagValue("dto-serialVersionUID", inputClass, getModel()); if (svUID != null) { - addAttribute(resultClass, "public static final long serialVersionUID = " + svUID); + addConstant(resultClass, "serialVersionUID", "long", svUID, ObjectModelModifier.PUBLIC); } } protected void createListeners(ObjectModelClass resultClass, ObjectModelClass inputClass) { - addAttribute(resultClass, "protected final " + PropertyChangeSupport.class.getName() + " pcs"); + addAttribute(resultClass, "pcs", "java.beans.PropertyChangeSupport", "", + ObjectModelModifier.PROTECTED, ObjectModelModifier.FINAL); // Default constructor - ObjectModelOperation constructor = addConstructor(resultClass, "public"); + ObjectModelOperation constructor = addConstructor(resultClass, ObjectModelModifier.PUBLIC); setOperationBody(constructor, "" /*{ pcs = new PropertyChangeSupport(this); @@ -263,7 +269,8 @@ String objectType = Object.class.getName(); ObjectModelOperation addPropertyChangeListener = addOperation(resultClass, - "public void addPropertyChangeListener(" + propType + " listener)"); + "addPropertyChangeListener", "void", ObjectModelModifier.PUBLIC); + addParameter(addPropertyChangeListener, propType, "listener"); setOperationBody(addPropertyChangeListener, "" /*{ pcs.addPropertyChangeListener(listener); @@ -271,7 +278,9 @@ ); ObjectModelOperation addPropertyChangeListenerPlus = addOperation(resultClass, - "public void addPropertyChangeListener(" + strType + " propertyName," + propType + " listener)"); + "addPropertyChangeListener", "void", ObjectModelModifier.PUBLIC); + addParameter(addPropertyChangeListenerPlus, strType, "propertyName"); + addParameter(addPropertyChangeListenerPlus, propType, "listener"); setOperationBody(addPropertyChangeListenerPlus, "" /*{ pcs.addPropertyChangeListener(propertyName, listener); @@ -279,7 +288,8 @@ ); ObjectModelOperation removePropertyChangeListener = addOperation(resultClass, - "public void removePropertyChangeListener(" + propType + " listener)"); + "removePropertyChangeListener", "void", ObjectModelModifier.PUBLIC); + addParameter(removePropertyChangeListener, propType, "listener"); setOperationBody(removePropertyChangeListener, "" /*{ pcs.removePropertyChangeListener(listener); @@ -287,7 +297,9 @@ ); ObjectModelOperation removePropertyChangeListenerPlus = addOperation(resultClass, - "public void removePropertyChangeListener(" + strType + " propertyName," + propType + " listener)"); + "removePropertyChangeListener", "void", ObjectModelModifier.PUBLIC); + addParameter(removePropertyChangeListenerPlus, strType, "propertyName"); + addParameter(removePropertyChangeListenerPlus, propType, "listener"); setOperationBody(removePropertyChangeListenerPlus, "" /*{ pcs.removePropertyChangeListener(propertyName, listener); @@ -295,7 +307,10 @@ ); ObjectModelOperation firePropertyChange = addOperation(resultClass, - "protected void firePropertyChange(" + strType + " propertyName," + objectType + " oldValue, " + objectType + " newValue)"); + "firePropertyChange", "void", ObjectModelModifier.PROTECTED); + addParameter(firePropertyChange, strType, "propertyName"); + addParameter(firePropertyChange, objectType, "oldValue"); + addParameter(firePropertyChange, objectType, "newValue"); setOperationBody(firePropertyChange, "" /*{ pcs.firePropertyChange(propertyName, oldValue, newValue); Modified: branches/eugene-2.0/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java =================================================================== --- branches/eugene-2.0/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java 2009-11-03 11:38:10 UTC (rev 687) +++ branches/eugene-2.0/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java 2009-11-03 15:26:27 UTC (rev 688) @@ -3,6 +3,7 @@ import org.nuiton.eugene.java.JavaBuilder; import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelModifier; import org.nuiton.eugene.models.object.ObjectModelOperation; /*{generator option: parentheses = false}*/ @@ -33,32 +34,35 @@ private void createRole() { ObjectModelClass roleClass = createClass("Role", "org.chorem.bonzoms"); - addAttribute(roleClass, "String name"); + addAttribute(roleClass, "name", "java.lang.String"); //this.addImportForClassifier(roleClass, Date.class); - addAttribute(roleClass, "java.util.Date fromDate"); - addAttribute(roleClass, "java.util.Date thruDate"); + addAttribute(roleClass, "fromDate", "java.util.Date"); + addAttribute(roleClass, "thruDate", "java.util.Date"); } private void createPerson() { ObjectModelClass personneClass = createClass("Person", "org.chorem.bonzoms"); - addAttribute(personneClass, "java.lang.String lastName"); - addAttribute(personneClass, "java.lang.String firstName = \"2.0\""); + addAttribute(personneClass, "lastName", "java.lang.String"); + addAttribute(personneClass, "firstName", "java.lang.String", "\"2.0\""); //this.addImportForClassifier(personneClass, List.class); - addAttribute(personneClass, - "java.util.List<org.chorem.bonzoms.Role> roles = new java.util.ArrayList<org.chorem.bonzoms.Role>()"); + addAttribute(personneClass, "roles", "java.util.List<org.chorem.bonzoms.Role>", + "new java.util.ArrayList<org.chorem.bonzoms.Role>()"); - ObjectModelOperation setLastName = addOperation(personneClass, "public void setLastName(String lastName)"); + ObjectModelOperation setLastName = addOperation(personneClass, "setLastName", "void", + ObjectModelModifier.PUBLIC); + addParameter(setLastName, "java.lang.String", "lastName"); setOperationBody(setLastName, "" /*{ this.lastName = lastName; }*/ ); - ObjectModelOperation getLastName = addOperation(personneClass, "public String getLastName"); + ObjectModelOperation getLastName = addOperation(personneClass, "getLastName", "java.lang.String", + ObjectModelModifier.PUBLIC); setOperationBody(getLastName, "" /*{ return this.lastName;