r647 - in branches/1.0.1-Javabuilder: . eugene/doc/sources eugene/src/main/java/org/nuiton/eugene eugene/src/main/java/org/nuiton/eugene/models/object eugene/src/main/java/org/nuiton/eugene/models/object/builder eugene/src/main/java/org/nuiton/eugene/models/object/java eugene/src/main/java/org/nuiton/eugene/models/object/java/old eugene-test eugene-test/src eugene-test/src/main eugene-test/src/main/java eugene-test/src/main/java/org eugene-test/src/main/java/org/nuiton eugene-test/src/main/
Author: fdesbois Date: 2009-10-20 17:16:34 +0200 (Tue, 20 Oct 2009) New Revision: 647 Added: branches/1.0.1-Javabuilder/eugene-test/ branches/1.0.1-Javabuilder/eugene-test/LICENSE.txt branches/1.0.1-Javabuilder/eugene-test/README.txt branches/1.0.1-Javabuilder/eugene-test/changelog.txt branches/1.0.1-Javabuilder/eugene-test/pom.xml branches/1.0.1-Javabuilder/eugene-test/src/ branches/1.0.1-Javabuilder/eugene-test/src/main/ branches/1.0.1-Javabuilder/eugene-test/src/main/java/ branches/1.0.1-Javabuilder/eugene-test/src/main/java/org/ branches/1.0.1-Javabuilder/eugene-test/src/main/java/org/nuiton/ branches/1.0.1-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/ branches/1.0.1-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/ branches/1.0.1-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/ branches/1.0.1-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java branches/1.0.1-Javabuilder/eugene-test/src/main/resources/ branches/1.0.1-Javabuilder/eugene-test/src/main/resources/log4j.properties branches/1.0.1-Javabuilder/eugene-test/src/site/ branches/1.0.1-Javabuilder/eugene-test/src/site/fr/ branches/1.0.1-Javabuilder/eugene-test/src/site/fr/rst/ branches/1.0.1-Javabuilder/eugene-test/src/site/fr/rst/index.rst branches/1.0.1-Javabuilder/eugene-test/src/test/ branches/1.0.1-Javabuilder/eugene-test/src/test/java/ branches/1.0.1-Javabuilder/eugene-test/src/test/java/org/ branches/1.0.1-Javabuilder/eugene-test/src/test/java/org/nuiton/ branches/1.0.1-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/ branches/1.0.1-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/test/ branches/1.0.1-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/test/generator/ branches/1.0.1-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/test/generator/TestBuilderTest.java branches/1.0.1-Javabuilder/eugene/doc/sources/eugene_javabuilder.zargo branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/JavaBuilder.java branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilderHelper.java branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelVisibility.java branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/ branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaClassFile.java branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaFile.java Removed: branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/JavaClassBuilder.java branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/Exemple.java branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/JavaClassBuilder.java branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/JavaClassifierBuilder.java branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/JavaInterfaceBuilder.java branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/old/JavaBuilder.java branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/old/JavaFileBuilder.java branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/old/JavaFileBuilderImpl.java Modified: branches/1.0.1-Javabuilder/pom.xml Log: [branche-javabuilder] - Add test module for testing JavaBuilder and processor [branche-javabuilder] - Create abstract JavaBuilder and JavaFile [branche-javabuilder] - Create ObjectModelBuilderHelper which is independant from Builder but useful to use ObjectModel classes and methods (not possible with only interfaces) [branche-javabuilder] - Todo analysis : documentation for implementation of JavaBuilder and integration with maven-eugene-plugin Added: branches/1.0.1-Javabuilder/eugene/doc/sources/eugene_javabuilder.zargo =================================================================== (Binary files differ) Property changes on: branches/1.0.1-Javabuilder/eugene/doc/sources/eugene_javabuilder.zargo ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/JavaBuilder.java =================================================================== --- branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/JavaBuilder.java (rev 0) +++ branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/JavaBuilder.java 2009-10-20 15:16:34 UTC (rev 647) @@ -0,0 +1,48 @@ + +package org.nuiton.eugene; + +import java.util.HashMap; +import java.util.Map; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelBuilderHelper; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.builder.JavaClassFile; +import org.nuiton.eugene.models.object.builder.JavaFile; +import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelImpl; + +/** + * + * @author fdesbois + */ +public abstract class JavaBuilder { + + protected ObjectModelImpl objectModel; + + protected Map<String, JavaFile> javaFiles; + + protected static ObjectModelBuilderHelper helper = new ObjectModelBuilderHelper(); + + public JavaBuilder() { + this.objectModel = new ObjectModelImpl(); + this.javaFiles = new HashMap<String, JavaFile>(); + } + + protected JavaClassFile createJavaClassFile(ObjectModelClass clazz) { + JavaClassFile javaFile = new JavaClassFile(clazz); + objectModel.addClass((ObjectModelClassImpl)clazz); + javaFiles.put(clazz.getQualifiedName(), javaFile); + return javaFile; + } + + public JavaFile getFile(String qualifiedName) { + return javaFiles.get(qualifiedName); + } + + public ObjectModel getModel() { + return objectModel; + } + + public abstract void build(); + +} Deleted: branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/JavaClassBuilder.java =================================================================== --- branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/JavaClassBuilder.java 2009-10-20 10:54:29 UTC (rev 646) +++ branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/JavaClassBuilder.java 2009-10-20 15:16:34 UTC (rev 647) @@ -1,60 +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; - - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl; - -/** - * class that help to build java class or interface object. - * - * - * @author poussin - * @version $Revision$ - * - * Last update: $Date$ - * by : $Author$ - */ -public class JavaClassBuilder { - - /** to use log facility, just put in your code: log.info(\"...\"); */ - static private Log log = LogFactory.getLog(JavaClassBuilder.class); - - public ObjectModelClass createClass(String name) { - ObjectModelClassImpl result = new ObjectModelClassImpl(); - return result; - } - - public ObjectModelInterface createInterface(String name) { - ObjectModelInterfaceImpl result = new ObjectModelInterfaceImpl(); - return result; - } - - public ObjectModelOperation addOperation(ObjectModelClassifier clazz, - String name, String failbackName) { - ObjectModelOperationImpl result = new ObjectModelOperationImpl(); - result.setName(name); - ((ObjectModelClassifierImpl)clazz).addOperation(result); - return result; - } -} Copied: branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilderHelper.java (from rev 641, branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/JavaClassBuilder.java) =================================================================== --- branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilderHelper.java (rev 0) +++ branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilderHelper.java 2009-10-20 15:16:34 UTC (rev 647) @@ -0,0 +1,131 @@ +/* *##% + * 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; + + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl; +import org.nuiton.eugene.models.object.xml.ObjectModelParameterImpl; + +/** + * class that help to build java class or interface object. + * + * + * @author poussin + * @version $Revision$ + * + * Last update: $Date$ + * by : $Author$ + */ +public class ObjectModelBuilderHelper { + + public static final boolean PROP_SET_STATIC = true; + public static final boolean PROP_SET_NO_STATIC = false; + + /** to use log facility, just put in your code: log.info(\"...\"); */ + static private Log log = LogFactory.getLog(ObjectModelBuilderHelper.class); + + public ObjectModelClass createClass(String name, String packageName) { + ObjectModelClassImpl result = new ObjectModelClassImpl(); + result.setName(name); + result.setPackage(packageName); + return result; + } + + public ObjectModelClass createAbstractClass(String name, String packageName) { + ObjectModelClassImpl result = (ObjectModelClassImpl) createClass(name,packageName); + result.setAbstract(true); + 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, 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 ObjectModelAttribute addConstant(ObjectModelClassifier classifier, String name, String type, String value, String visibility) { + return addAttribute(classifier, name, type, value, visibility, true, true); + } + + public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type, String value) { + return addAttribute(classifier, name, type, value, "protected", false, false); + } + + public ObjectModelAttribute addAttribute(ObjectModelClassifier classifier, String name, String type) { + return addAttribute(classifier, name, type, "", "protected", false, false); + } + + public ObjectModelOperation addOperation(ObjectModelClassifier clazz, + String name, String returnType, String... inputParameters) { + ObjectModelOperationImpl result = new ObjectModelOperationImpl(); + result.setName(name); + + result.setName(name); + result.setVisibility("public"); + ObjectModelParameterImpl returnParameter = new ObjectModelParameterImpl(); + if (returnType == null) { + returnType = "void"; + } + 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 void setOperationBody(ObjectModelOperation operation, String body) { + ObjectModelOperationImpl operationImpl = (ObjectModelOperationImpl) operation; + operationImpl.setBodyCode(body); + } +} Property changes on: branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelBuilderHelper.java ___________________________________________________________________ Added: svn:mergeinfo + Added: branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelVisibility.java =================================================================== --- branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelVisibility.java (rev 0) +++ branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/ObjectModelVisibility.java 2009-10-20 15:16:34 UTC (rev 647) @@ -0,0 +1,14 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.nuiton.eugene.models.object; + +/** + * + * @author fdesbois + */ +public enum ObjectModelVisibility { + PUBLIC, PROTECTED, PRIVATE, PACKAGE +} Added: branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaClassFile.java =================================================================== --- branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaClassFile.java (rev 0) +++ branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaClassFile.java 2009-10-20 15:16:34 UTC (rev 647) @@ -0,0 +1,21 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.nuiton.eugene.models.object.builder; + +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; + +/** + * + * @author fdesbois + */ +public class JavaClassFile extends JavaFile<ObjectModelClassImpl, ObjectModelClass> { + + public JavaClassFile(ObjectModelClass clazz) { + super(clazz); + } + +} Added: branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaFile.java =================================================================== --- branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaFile.java (rev 0) +++ branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/builder/JavaFile.java 2009-10-20 15:16:34 UTC (rev 647) @@ -0,0 +1,39 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.nuiton.eugene.models.object.builder; + +import org.nuiton.eugene.ImportsManager; +import org.nuiton.eugene.models.object.ObjectModelClassifier; +import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl; + +/** + * + * @author fdesbois + */ +public abstract class JavaFile<O extends ObjectModelClassifierImpl, I extends ObjectModelClassifier> { + + protected O classifier; + + protected ImportsManager importsManager; + + public JavaFile(I classifier) { + this.classifier = (O) classifier; + this.importsManager = new ImportsManager(); + } + + public I getClassifier() { + return (I) this.classifier; + } + + public void addImport(String imports) { + importsManager.addImport(imports); + } + + public void addImport(Class<?> imports) { + importsManager.addImport(imports); + } + +} Deleted: branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/Exemple.java =================================================================== --- branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/Exemple.java 2009-10-20 10:54:29 UTC (rev 646) +++ branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/Exemple.java 2009-10-20 15:16:34 UTC (rev 647) @@ -1,63 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package org.nuiton.eugene.models.object.java; - -import java.io.File; -import java.io.Writer; -import org.nuiton.eugene.Generator; -import org.nuiton.eugene.models.object.ObjectModelOperation; -/*{ generator option: writeString = + }*/ - -/** - * - * generator option: parentheses = false - * - * generator option: writeString = builder.setOperationBody(operation, - * generator option: beginParenthese = false - * @author fdesbois - */ -public class Exemple { - - public void methodTest(Writer output) { - - JavaClassBuilder builder = new JavaClassBuilder("org.nuiton.troulala", "Test"); - - builder.addAttribute("pouet", "String"); - ObjectModelOperation operation = builder.addOperation("setPouet","void","pouet","String"); - builder.setOperationBody(operation, "" - /*[ this.pouet = pouet; - - - ]*/); - - - - - operation = builder.addOperation("setPouet","void","pouet","String"); - /*{ - - - for (ObjectModelOperation op : builder.getOperations()) { - - - <%=op.getVisibility()%> .... () { - <%=op.getBodyCode()%> - } - - - } - - }*/ - - - - - builder.setOperationBody(operation, "" + - "this.pouet = pouet;\n"); - - } - -} Deleted: branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/JavaClassBuilder.java =================================================================== --- branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/JavaClassBuilder.java 2009-10-20 10:54:29 UTC (rev 646) +++ branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/JavaClassBuilder.java 2009-10-20 15:16:34 UTC (rev 647) @@ -1,77 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package org.nuiton.eugene.models.object.java; - -import org.nuiton.eugene.GeneratorUtil; -import org.nuiton.eugene.ImportsManager; -import org.nuiton.eugene.models.object.ObjectModelAttribute; -import org.nuiton.eugene.models.object.ObjectModelClass; -import org.nuiton.eugene.models.object.ObjectModelOperation; -import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl; - -/** - * - * @author fdesbois - */ -public class JavaClassBuilder extends JavaClassifierBuilder<ObjectModelClassImpl, ObjectModelClass> { - - public JavaClassBuilder(String name, String packageName, ImportsManager imports) { - super(name, packageName, imports); - } - - public JavaClassBuilder(String name, String packageName) { - super(name, packageName); - } - - @Override - protected ObjectModelClassImpl newClassifier() { - return new ObjectModelClassImpl(); - } - - /*@Override - protected void newMainClassifier() { - this.mainClassifier = new ObjectModelClassImpl(); - }*/ - - @Override - public ObjectModelAttribute addAttribute(String name, String type) { - ObjectModelAttributeImpl attribute = (ObjectModelAttributeImpl) super.addAttribute(name, type); - attribute.setVisibility("protected"); - return attribute; - } - - public ObjectModelAttribute addConstant(String name, String type, String value, String visibility) { - ObjectModelAttributeImpl constant = (ObjectModelAttributeImpl) addAttribute(name, type, value); - constant.setVisibility(visibility); - constant.setFinal(true); - constant.setStatic(true); - return constant; - } - - /*public ObjectModelAttribute addPropertyWithGetterSetter(String name, String type) { - ObjectModelAttributeImpl property = (ObjectModelAttributeImpl) addAttribute(name, type); - - String setterName = "set" + GeneratorUtil.toUpperCaseFirstLetter(name); - String returnTypeSetter = "void"; - - - //addOperation(name, type, inputParameters) - - return property; - }*/ - - @Override - public void setOperationBody(ObjectModelOperation operation, String body) { - ObjectModelOperationImpl operationImpl = (ObjectModelOperationImpl) operation; - operationImpl.setBodyCode(body); - } - - - - -} Deleted: branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/JavaClassifierBuilder.java =================================================================== --- branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/JavaClassifierBuilder.java 2009-10-20 10:54:29 UTC (rev 646) +++ branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/JavaClassifierBuilder.java 2009-10-20 15:16:34 UTC (rev 647) @@ -1,94 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package org.nuiton.eugene.models.object.java; - -import org.nuiton.eugene.ImportsManager; -import org.nuiton.eugene.models.object.ObjectModelAttribute; -import org.nuiton.eugene.models.object.ObjectModelClassifier; -import org.nuiton.eugene.models.object.ObjectModelOperation; -import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelParameterImpl; - -/** - * - * @author fdesbois - */ -public abstract class JavaClassifierBuilder<C extends ObjectModelClassifierImpl, I extends ObjectModelClassifier> { - - protected C classifier; - - protected ImportsManager importsManager; - - public JavaClassifierBuilder(String name, String packageName) { - this(name, packageName, new ImportsManager()); - } - - public JavaClassifierBuilder(String name, String packageName, ImportsManager imports) { - this.classifier = newClassifier(); - this.classifier.setName(name); - this.classifier.setPackage(packageName); - this.importsManager = imports; - } - - protected abstract C newClassifier(); - - public I getClassifier() { - return (I) classifier; - } - - public void addImport(String imports) { - importsManager.addImport(imports); - } - - public ObjectModelAttribute addAttribute(String name, String type, String value) { - ObjectModelAttributeImpl attribute = (ObjectModelAttributeImpl) addAttribute(name, type); - attribute.setDefaultValue(value); - return attribute; - } - - public ObjectModelAttribute addAttribute(String name, String type) { - ObjectModelAttributeImpl attribute = new ObjectModelAttributeImpl(); - attribute.setName(name); - attribute.setType(type); - classifier.addAttribute(attribute); - return attribute; - } - - public ObjectModelOperation addOperation(String name, String returnParameterType, String... inputParameters) { - ObjectModelOperationImpl operation = new ObjectModelOperationImpl(); - - operation.setName(name); - operation.setVisibility("public"); - ObjectModelParameterImpl returnParameter = new ObjectModelParameterImpl(); - returnParameter.setType(returnParameterType); - //importsManager.addImport(returnParameterType); - - operation.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.setName(inputParameters[i]); - parameter.setType(inputParameters[i+1]); - //importsManager.addImport(inputParameters[i+1]); - operation.addParameter(parameter); - } - - return operation; - } - - public abstract void setOperationBody(ObjectModelOperation operation, String body); - - /*public void addInnerClassifier(ObjectModelClassifier classifier) { - throw new UnsupportedOperationException("not supported yet."); - }*/ -} Deleted: branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/JavaInterfaceBuilder.java =================================================================== --- branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/JavaInterfaceBuilder.java 2009-10-20 10:54:29 UTC (rev 646) +++ branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/JavaInterfaceBuilder.java 2009-10-20 15:16:34 UTC (rev 647) @@ -1,54 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package org.nuiton.eugene.models.object.java; - -import org.nuiton.eugene.ImportsManager; -import org.nuiton.eugene.models.object.ObjectModelAttribute; -import org.nuiton.eugene.models.object.ObjectModelInterface; -import org.nuiton.eugene.models.object.ObjectModelOperation; -import org.nuiton.eugene.models.object.xml.ObjectModelAttributeImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; - -/** - * - * @author fdesbois - */ -public class JavaInterfaceBuilder extends JavaClassifierBuilder<ObjectModelInterfaceImpl, ObjectModelInterface> { - - public JavaInterfaceBuilder(String name, String packageName, ImportsManager imports) { - super(name, packageName, imports); - } - - public JavaInterfaceBuilder(String name, String packageName) { - super(name, packageName); - } - - @Override - protected ObjectModelInterfaceImpl newClassifier() { - return new ObjectModelInterfaceImpl(); - } - - @Override - public ObjectModelAttribute addAttribute(String name, String type, String value) { - ObjectModelAttributeImpl attribute = (ObjectModelAttributeImpl) super.addAttribute(name, type, value); - attribute.setFinal(true); - attribute.setVisibility("public"); - attribute.setStatic(true); - return attribute; - } - - @Override - public ObjectModelAttribute addAttribute(String name, String type) { - throw new UnsupportedOperationException("Not allowed to set an attribute without value for an interface."); - } - - @Override - public void setOperationBody(ObjectModelOperation operation, String body) { - throw new UnsupportedOperationException("Not allowed for an interface to have operation body code."); - } - - -} Deleted: branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/old/JavaBuilder.java =================================================================== --- branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/old/JavaBuilder.java 2009-10-20 10:54:29 UTC (rev 646) +++ branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/old/JavaBuilder.java 2009-10-20 15:16:34 UTC (rev 647) @@ -1,48 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package org.nuiton.eugene.models.object.java.old; - -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; -import org.nuiton.eugene.models.object.JavaClassBuilder; -import org.nuiton.eugene.models.object.ObjectModelClass; -import org.nuiton.eugene.models.object.ObjectModelClassifier; -import org.nuiton.eugene.models.object.ObjectModelInterface; -import org.nuiton.eugene.models.object.ObjectModelOperation; -import org.nuiton.eugene.models.object.xml.ObjectModelClassImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelClassifierImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelInterfaceImpl; -import org.nuiton.eugene.models.object.xml.ObjectModelOperationImpl; - -/** - * - * @author fdesbois - */ -public class JavaBuilder { - - /** to use log facility, just put in your code: log.info(\"...\"); */ - static private Log log = LogFactory.getLog(JavaBuilder.class); - - public static ObjectModelClass createClass(String name) { - ObjectModelClassImpl result = new ObjectModelClassImpl(); - result.setName(name); - return result; - } - - public static ObjectModelInterface createInterface(String name) { - ObjectModelInterfaceImpl result = new ObjectModelInterfaceImpl(); - return result; - } - - public static ObjectModelOperation addOperation(ObjectModelClassifier clazz, - String name, String failbackName) { - ObjectModelOperationImpl result = new ObjectModelOperationImpl(); - result.setName(name); - ((ObjectModelClassifierImpl)clazz).addOperation(result); - return result; - } - -} Deleted: branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/old/JavaFileBuilder.java =================================================================== --- branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/old/JavaFileBuilder.java 2009-10-20 10:54:29 UTC (rev 646) +++ branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/old/JavaFileBuilder.java 2009-10-20 15:16:34 UTC (rev 647) @@ -1,19 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package org.nuiton.eugene.models.object.java.old; - -import org.nuiton.eugene.models.object.java.*; - -/** - * - * @author fdesbois - */ -public interface JavaFileBuilder<I extends JavaClassifierBuilder> { - - public I createMainClassifier(String name); - - public void addImport(String imports); -} Deleted: branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/old/JavaFileBuilderImpl.java =================================================================== --- branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/old/JavaFileBuilderImpl.java 2009-10-20 10:54:29 UTC (rev 646) +++ branches/1.0.1-Javabuilder/eugene/src/main/java/org/nuiton/eugene/models/object/java/old/JavaFileBuilderImpl.java 2009-10-20 15:16:34 UTC (rev 647) @@ -1,68 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package org.nuiton.eugene.models.object.java.old; - -import org.nuiton.eugene.models.object.java.*; -import org.nuiton.eugene.ImportsManager; -import org.nuiton.eugene.models.object.ObjectModelClass; -import org.nuiton.eugene.models.object.ObjectModelClassifier; -import org.nuiton.eugene.models.object.ObjectModelInterface; - -/** - * - * @author fdesbois - */ -public abstract class JavaFileBuilderImpl<B extends JavaClassifierBuilder> implements JavaFileBuilder<B> { - - protected String packageName; - - protected ImportsManager importsManager; - - protected B mainBuilder; - - public JavaFileBuilderImpl(String packageName) { - this.mainBuilder = null; - this.packageName = packageName; - this.importsManager = new ImportsManager(); - } - - @Override - public B createMainClassifier(String name) { - return newMainBuilder(name); - } - - protected abstract B newMainBuilder(String name); - - @Override - public void addImport(String imports) { - importsManager.addImport(imports); - } - - protected void check(String methodName) throws Exception { - if (mainBuilder == null) { - throw new Exception("Main classifier must be defined to use method '" + methodName +"'"); - } - } - - /*public <T extends ObjectModelClassifier> JavaClassifierBuilder createInnerClassifier( - String name, Class<T> classifierClass) throws Exception { - - check("createInnerClassifier"); - JavaClassifierBuilder builder = null; - if (classifierClass.equals(ObjectModelClass.class)) { - builder = new JavaClassBuilder(name, packageName); - } else if (classifierClass.equals(ObjectModelInterface.class)) { - builder = new JavaInterfaceBuilder(name, packageName); - } - if (builder == null) { - throw new IllegalArgumentException("Type Class unknown : " + classifierClass.getName()); - } else { - mainBuilder.addInnerClassifier(builder.getClassifier()); - } - return builder; - }*/ - -} Property changes on: branches/1.0.1-Javabuilder/eugene-test ___________________________________________________________________ Added: svn:ignore + target Added: branches/1.0.1-Javabuilder/eugene-test/LICENSE.txt =================================================================== --- branches/1.0.1-Javabuilder/eugene-test/LICENSE.txt (rev 0) +++ branches/1.0.1-Javabuilder/eugene-test/LICENSE.txt 2009-10-20 15:16:34 UTC (rev 647) @@ -0,0 +1,280 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS Added: branches/1.0.1-Javabuilder/eugene-test/README.txt =================================================================== --- branches/1.0.1-Javabuilder/eugene-test/README.txt (rev 0) +++ branches/1.0.1-Javabuilder/eugene-test/README.txt 2009-10-20 15:16:34 UTC (rev 647) @@ -0,0 +1 @@ + Added: branches/1.0.1-Javabuilder/eugene-test/changelog.txt =================================================================== --- branches/1.0.1-Javabuilder/eugene-test/changelog.txt (rev 0) +++ branches/1.0.1-Javabuilder/eugene-test/changelog.txt 2009-10-20 15:16:34 UTC (rev 647) @@ -0,0 +1 @@ + Added: branches/1.0.1-Javabuilder/eugene-test/pom.xml =================================================================== --- branches/1.0.1-Javabuilder/eugene-test/pom.xml (rev 0) +++ branches/1.0.1-Javabuilder/eugene-test/pom.xml 2009-10-20 15:16:34 UTC (rev 647) @@ -0,0 +1,118 @@ +<?xml version="1.0" encoding="UTF-8"?> +<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> + + <modelVersion>4.0.0</modelVersion> + + <!-- ************************************************************* --> + <!-- *** POM Relationships *************************************** --> + <!-- ************************************************************* --> + <parent> + <groupId>org.nuiton</groupId> + <artifactId>eugene</artifactId> + <version>1.0.1-SNAPSHOT</version> + </parent> + + <groupId>org.nuiton.eugene</groupId> + <artifactId>eugene-test</artifactId> + + <dependencies> + <dependency> + <groupId>${project.groupId}</groupId> + <artifactId>eugene</artifactId> + <version>${project.version}</version> + <scope>compile</scope> + </dependency> + + <dependency> + <groupId>junit</groupId> + <artifactId>junit</artifactId> + <version>4.7</version> + <scope>test</scope> + </dependency> + </dependencies> + + + <!-- ************************************************************* --> + <!-- *** Project Information ************************************* --> + <!-- ************************************************************* --> + + <name>EUGene Test</name> + <description>Test module for generators.</description> + <inceptionYear>2007</inceptionYear> + + <contributors> + <contributor> + <name>Florian Desbois</name> + <email>fdesbois@codelutin.com</email> + <timezone>+2</timezone> + <roles> + <role>Developpeur</role> + </roles> + </contributor> + </contributors> + + <!-- ************************************************************* --> + <!-- *** Build Settings ****************************************** --> + <!-- ************************************************************* --> + + <packaging>jar</packaging> + + <properties> + <processor.version>1.0.2-SNAPSHOT</processor.version> + + </properties> + + <build> + + <plugins> + + <plugin> + <groupId>org.nuiton.processor</groupId> + <artifactId>maven-processor-plugin</artifactId> + <version>${processor.version}</version> + <executions> + <execution> + <phase>generate-sources</phase> + <goals> + <goal>process</goal> + </goals> + </execution> + </executions> + <configuration> + <includes>**/*.java</includes> + <filters> + org.nuiton.processor.filters.GeneratorTemplatesFilter, + org.nuiton.processor.filters.ActiveLogsCodeFilter + </filters> + </configuration> + </plugin> + + <plugin> + <groupId>org.nuiton.eugene</groupId> + <artifactId>maven-eugene-plugin</artifactId> + <version>${project.version}</version> + </plugin> + + <!--plugin> + <groupId>org.nuiton.i18n</groupId> + <artifactId>maven-i18n-plugin</artifactId> + <version>${i18n.version}</version> + </plugin> + + <plugin> + <artifactId>maven-site-plugin</artifactId> + <dependencies> + <dependency> + <groupId>org.nuiton.jrst</groupId> + <artifactId>doxia-module-jrst</artifactId> + <version>${jrst.version}</version> + </dependency> + </dependencies> + </plugin--> + + </plugins> + </build> + +</project> + Added: branches/1.0.1-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java =================================================================== --- branches/1.0.1-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java (rev 0) +++ branches/1.0.1-Javabuilder/eugene-test/src/main/java/org/nuiton/eugene/test/generator/TestBuilder.java 2009-10-20 15:16:34 UTC (rev 647) @@ -0,0 +1,36 @@ + +package org.nuiton.eugene.test.generator; + +import org.nuiton.eugene.JavaBuilder; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelOperation; + +/*{generator option: parentheses = false}*/ +/*{generator option: writeString = +}*/ + +/** + * + * @author fdesbois + */ +public class TestBuilder extends JavaBuilder { + + @Override + public void build() { + ObjectModelClass clazz = helper.createClass("Personne", "org.chorem.bonzoms"); + helper.addAttribute(clazz, "nom", "String"); + helper.addAttribute(clazz, "prenom", "String"); + + ObjectModelOperation setNom = helper.addOperation(clazz, "setNom", null, "String", "nom"); + helper.setOperationBody(setNom, "" /*{ + this.nom = nom; + }*/); + + ObjectModelOperation getNom = helper.addOperation(clazz, "getNom", "String"); + helper.setOperationBody(getNom, "" /*{ + return this.nom; + }*/); + + this.createJavaClassFile(clazz); // imports automatique ?? + } + +} Added: branches/1.0.1-Javabuilder/eugene-test/src/main/resources/log4j.properties =================================================================== --- branches/1.0.1-Javabuilder/eugene-test/src/main/resources/log4j.properties (rev 0) +++ branches/1.0.1-Javabuilder/eugene-test/src/main/resources/log4j.properties 2009-10-20 15:16:34 UTC (rev 647) @@ -0,0 +1,11 @@ +# Global logging configuration +log4j.rootLogger=ERROR, stdout + +# Console output... +log4j.appender.stdout=org.apache.log4j.ConsoleAppender +log4j.appender.stdout.layout=org.apache.log4j.PatternLayout +log4j.appender.stdout.layout.ConversionPattern=%5p [%t] (%F:%L) %M - %m%n + +# package level +log4j.logger.org.nuiton.eugene=INFO +log4j.logger.org.nuiton.eugene.test=DEBUG Added: branches/1.0.1-Javabuilder/eugene-test/src/site/fr/rst/index.rst =================================================================== --- branches/1.0.1-Javabuilder/eugene-test/src/site/fr/rst/index.rst (rev 0) +++ branches/1.0.1-Javabuilder/eugene-test/src/site/fr/rst/index.rst 2009-10-20 15:16:34 UTC (rev 647) @@ -0,0 +1 @@ + Added: branches/1.0.1-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/test/generator/TestBuilderTest.java =================================================================== --- branches/1.0.1-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/test/generator/TestBuilderTest.java (rev 0) +++ branches/1.0.1-Javabuilder/eugene-test/src/test/java/org/nuiton/eugene/test/generator/TestBuilderTest.java 2009-10-20 15:16:34 UTC (rev 647) @@ -0,0 +1,71 @@ +/* + * To change this template, choose Tools | Templates + * and open the template in the editor. + */ + +package org.nuiton.eugene.test.generator; + +import java.util.List; +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; +import org.junit.After; +import org.junit.AfterClass; +import org.junit.Before; +import org.junit.BeforeClass; +import org.junit.Test; +import static org.junit.Assert.*; +import org.nuiton.eugene.models.object.ObjectModel; +import org.nuiton.eugene.models.object.ObjectModelClass; +import org.nuiton.eugene.models.object.ObjectModelOperation; + +/** + * + * @author fdesbois + */ +public class TestBuilderTest { + + private static final Log log = LogFactory.getLog(TestBuilderTest.class); + + public TestBuilderTest() { + } + + @BeforeClass + public static void setUpClass() throws Exception { + } + + @AfterClass + public static void tearDownClass() throws Exception { + } + + @Before + public void setUp() { + } + + @After + public void tearDown() { + } + + /** + * Test of build method, of class TestBuilder. + */ + @Test + public void testBuild() { + System.out.println("build"); + TestBuilder instance = new TestBuilder(); + + instance.build(); + + ObjectModel result = instance.getModel(); + assertNotNull(result); + assertEquals(result.getClasses().size(), 1); + ObjectModelClass clazz = result.getClass("org.chorem.bonzoms.Personne"); + assertNotNull(clazz); + assertEquals(clazz.getAttributes().size(), 2); + assertEquals(clazz.getOperations().size(), 2); + List<ObjectModelOperation> operations = (List<ObjectModelOperation>)clazz.getOperations(); + ObjectModelOperation operation = operations.get(0); + log.debug("Body code [" + operation.getName() + "] : " + operation.getBodyCode()); + assertFalse(operation.getBodyCode().isEmpty()); + } + +} \ No newline at end of file Modified: branches/1.0.1-Javabuilder/pom.xml =================================================================== --- branches/1.0.1-Javabuilder/pom.xml 2009-10-20 10:54:29 UTC (rev 646) +++ branches/1.0.1-Javabuilder/pom.xml 2009-10-20 15:16:34 UTC (rev 647) @@ -18,7 +18,7 @@ <modules> <module>eugene</module> <module>maven-eugene-plugin</module> - <!--module>eugene-demo</module--> + <module>eugene-test</module> </modules> <dependencyManagement>
participants (1)
-
fdesbois@users.nuiton.org