Index: maven-commandline-plugin/src/java/org/codelutin/option/generate/java/OptionParserJavaGenerator.java diff -u maven-commandline-plugin/src/java/org/codelutin/option/generate/java/OptionParserJavaGenerator.java:1.9 maven-commandline-plugin/src/java/org/codelutin/option/generate/java/OptionParserJavaGenerator.java:1.10 --- maven-commandline-plugin/src/java/org/codelutin/option/generate/java/OptionParserJavaGenerator.java:1.9 Sun Mar 16 11:15:48 2008 +++ maven-commandline-plugin/src/java/org/codelutin/option/generate/java/OptionParserJavaGenerator.java Sun Mar 16 21:24:10 2008 @@ -24,6 +24,7 @@ import org.codelutin.option.OptionParser; import org.codelutin.option.def.ArgumentType; import org.codelutin.option.def.ArgumentValueType; +import org.codelutin.option.def.DefaultOptionAction; import org.codelutin.option.def.DefinitionParser; import org.codelutin.option.def.DefinitionParserContexts.ArgumentContext; import org.codelutin.option.def.DefinitionParserContexts.ConfigContext; @@ -32,7 +33,6 @@ import org.codelutin.option.def.DefinitionParserUtil; import org.codelutin.option.def.OptionDefinition; import org.codelutin.option.def.OptionDefinitionBuilder; -import org.codelutin.option.def.DefaultOptionAction; import org.codelutin.util.StringUtil; import java.io.File; @@ -46,7 +46,7 @@ * Permet de générer un {@link OptionParser} à partir des résultats du parsing * d'un {@link DefinitionParser}. *
- * Utiliser la méthode {@link #doGenerate(java.io.File,long, String,org.codelutin.option.def.DefinitionParserContexts.OptionContext[],org.codelutin.option.def.DefinitionParserContexts.ConfigContext[], String, String, String, String, String, String, String, String, String, String, String[], String[])} + * Utiliser la méthode {@link #doGenerate(java.io.File,long, String,org.codelutin.option.def.DefinitionParserContexts.OptionContext[],org.codelutin.option.def.DefinitionParserContexts.ConfigContext[], String, String, String, String, String, String, String, String, String, String)} * pour générer un nouveeau parseur. * * @author chemit @@ -66,15 +66,18 @@ String configClassPrefix, String actionPack, String actionClassPrefix, - String superClass, String[] actionImplementations, String[] configImplementations) throws IOException { + String superClass) throws IOException { OptionParserJavaGenerator gen; - gen = new OptionParserJavaGenerator(out, timestamp, i18nPrefix, ocontexts, ccontexts, pack, simpleName, optionKeySimpleName, optionPack, optionClassPrefix, configPack, configClassPrefix, actionPack, actionClassPrefix, superClass, actionImplementations, configImplementations); + gen = new OptionParserJavaGenerator(out, timestamp, i18nPrefix, ocontexts, ccontexts, pack, simpleName, optionKeySimpleName, optionPack, optionClassPrefix, configPack, configClassPrefix, actionPack, actionClassPrefix, superClass); gen.generate(); } - private static final String SUFFIX_OPTION_FIELD = "_OPTION_KEY"; + static final String SUFFIX_OPTION_FIELD = "_OPTION_KEY"; + + static final String SUFFIX_PROPERTY_FIELD = "_PROPERTY_KEY"; + + static final String SUFFIX_CONFIG_FIELD = "_CONFIG_KEY"; - private static final String SUFFIX_CONFIG_FIELD = "_CONFIG_KEY"; private static final String BUILD_DEFINITIONS_JAVADOC = "Initialise le parser avec les d\u00E9finitions d'options\n\n@param builder le builder utilisé pour construire les définitions"; private static final MessageFormat CLASS_JAVADOC_MESSAGE = new MessageFormat("Implantation du parseur d''options.\n\n@author {0}\n@see {1}"); @@ -89,9 +92,6 @@ protected String actionClassPrefix; protected OptionContext[] ocontexts; - protected String[] actionImplementations; - protected String[] configImplementations; - protected ConfigContext[] ccontexts; protected OptionParserJavaGenerator(File out, @@ -108,9 +108,7 @@ String configClassPrefix, String actionPack, String actionClassPrefix, - String superClass, - String[] actionImplementations, - String[] configImplementations) { + String superClass) { super(out, timestamp, i18nPrefix, PUBLIC, pack, simpleName, superClass); this.optionKeySimpleName = optionKeySimpleName; this.optionPack = optionPack; @@ -121,9 +119,6 @@ this.actionClassPrefix = actionClassPrefix; this.ocontexts = ocontexts; this.ccontexts = ccontexts; - this.actionImplementations = actionImplementations; - this.configImplementations = configImplementations; - } protected void addContent() { @@ -131,11 +126,6 @@ registerImport(normalImports, OptionDefinitionBuilder.class); registerImport(normalImports, OptionDefinition.class); - // add actionImplementations constant field - addStaticClassArray(OptionParser.ACTION_IMPLEMENTATIONS_PROPERTY, actionImplementations, "Les actions concretes implant\u00E9es dans le parseur."); - // add configImplementations constant field - addStaticClassArray(OptionParser.CONFIG_IMPLEMENTATIONS_PROPERTY, configImplementations, "Les configs concretes implant\u00E9es dans le parseur."); - StringBuilder staticBloc = new StringBuilder(); // add ConfigKey constant fields addConfigKeyFields(staticBloc); @@ -152,20 +142,6 @@ addStaticMethod("void", "buildDefinitions", BUILD_DEFINITIONS_JAVADOC, 0, body, null, OptionDefinitionBuilder.class.getSimpleName() + " builder"); } - private void addStaticClassArray(String fieldName, String[] configImplementations, String javadoc) { - String clazz = "Class[]"; - StringBuffer sb = new StringBuffer(); - sb.append(" new ").append(clazz).append(" {"); - if (configImplementations.length == 0) { - sb.append(','); - } - for (String implementation : configImplementations) { - sb.append("\n\t\t").append(implementation).append(".class,"); - } - String r = sb.toString(); - addStaticField(fieldName, clazz, javadoc, PUBLIC | FINAL, r.substring(0, r.length() - 1) + "\n\t}"); - } - @Override protected String generateClassJavadoc() { StringBuffer sb = new StringBuffer(); @@ -199,10 +175,9 @@ String suffix = StringUtils.capitalize(key); String optionImpl = optionClassPrefix + suffix; String actionImpl = actionClassPrefix + suffix; - if (option!=null) { - actionImpl = actionImpl.replace("Abstract",""); + if (option != null) { + actionImpl = actionImpl.replace("Abstract", ""); } - if (!pack.equals(optionPack)) { registerImport(normalImports, optionPack + "." + optionImpl); } Index: maven-commandline-plugin/src/java/org/codelutin/option/generate/java/AbstractContextJavaGenerator.java diff -u maven-commandline-plugin/src/java/org/codelutin/option/generate/java/AbstractContextJavaGenerator.java:1.2 maven-commandline-plugin/src/java/org/codelutin/option/generate/java/AbstractContextJavaGenerator.java:1.3 --- maven-commandline-plugin/src/java/org/codelutin/option/generate/java/AbstractContextJavaGenerator.java:1.2 Sun Mar 16 11:15:48 2008 +++ maven-commandline-plugin/src/java/org/codelutin/option/generate/java/AbstractContextJavaGenerator.java Sun Mar 16 21:24:10 2008 @@ -20,6 +20,7 @@ import org.apache.commons.lang.StringUtils; import org.codelutin.option.ParserFailedException; +import org.codelutin.option.AbstractContext; import org.codelutin.option.def.DefinitionParserContexts.ConfigContext; import java.io.File; @@ -31,7 +32,7 @@ import java.text.MessageFormat; /** - * Permet de générer un {@link org.codelutin.option.AbstractContext} encapsulant le parser et les configurations + * Permet de générer un {@link AbstractContext} encapsulant le parser et les configurations * * Utiliser la méthode {@link #doGenerate(java.io.File,long, String,ConfigContext[], String, String, String, String,String, String)} * pour générer un nouveeau parseur. @@ -86,10 +87,7 @@ registerImport(normalImports, ParserFailedException.class); builder.append('\n'); - addConstructor(null, PROTECTED, "super(args);", new String[]{IOException.class.getSimpleName(), ParserFailedException.class.getSimpleName()}, "String[] args"); - - // add parser accessor - generateParserAccessor(); + addConstructor(null, PROTECTED, "super("+parserSimpleName +".class);", new String[]{Exception.class.getSimpleName()}); // add configs shared instances accessors for (ConfigContext context : ccontexts) { @@ -104,18 +102,9 @@ } } - protected void generateParserAccessor() { - - String javadoc = generateParserAccessorJavadoc(parserSimpleName); - - addMethod(parserSimpleName, "getParser", javadoc, PUBLIC, "return parser==null?parser=new " + parserSimpleName + "():parser;", null); - } - protected void generateMainConfigAccessor() { - - String javadoc = generateParserAccessorJavadoc(parserSimpleName); + String javadoc = generateMainConfigAccessorJavadoc(parserSimpleName); String methodName = "getConfig"; - addMethod(parserSimpleName, methodName, javadoc, PUBLIC, "return parser==null?parser=new " + parserSimpleName + "():parser;", null); } @@ -128,9 +117,7 @@ registerImport(normalImports, configPack, abstractClass); String javadoc = generateConfigAccessorJavadoc(parserSimpleName + "#" + methodName + "()", key); - addMethod(abstractClass, methodName, javadoc, PUBLIC, "return getParser()." + methodName + "();", null); - } @Override @@ -156,13 +143,4 @@ sb.append("\n@see ").append(abstractClass).append('\n'); return sb.toString(); } - - protected String generateParserAccessorJavadoc(String abstractClass) { - StringBuilder sb = new StringBuilder(); - sb.append("Accesseur typ\u00E9 de l'instance partag\u00E9e du parseur").append(abstractClass).append(".");
- sb.append("\n\n@return l'unique instance parta\u00E9e du parseur.");
- sb.append("\n@see ").append(abstractClass).append('\n');
- return sb.toString();
- }
-
-}
\ No newline at end of file
+}
Index: maven-commandline-plugin/src/java/org/codelutin/option/generate/java/ConfigJavaGenerator.java
diff -u maven-commandline-plugin/src/java/org/codelutin/option/generate/java/ConfigJavaGenerator.java:1.10 maven-commandline-plugin/src/java/org/codelutin/option/generate/java/ConfigJavaGenerator.java:1.11
--- maven-commandline-plugin/src/java/org/codelutin/option/generate/java/ConfigJavaGenerator.java:1.10 Sat Mar 15 01:22:22 2008
+++ maven-commandline-plugin/src/java/org/codelutin/option/generate/java/ConfigJavaGenerator.java Sun Mar 16 21:24:10 2008
@@ -22,6 +22,7 @@
import org.apache.commons.lang.StringUtils;
import org.codelutin.i18n.I18n;
import org.codelutin.option.ConfigPropertyKey;
+import static org.codelutin.option.generate.java.OptionParserJavaGenerator.SUFFIX_PROPERTY_FIELD;
import org.codelutin.option.def.ConfigPropertyModifier;
import org.codelutin.option.def.DefinitionParserContexts.ConfigContext;
import org.codelutin.option.def.DefinitionParserContexts.ConfigPropertyContext;
@@ -61,12 +62,8 @@
private static final MessageFormat CLASS_JAVADOC_MESSAGE = new MessageFormat("Implantation de la configuration de cat\u00E9gorie {0}.\n\n@author {1}\n@see {2}");
- private static final String SUFFIX_CONFIG_PROPERTY_FIELD = "_PROPERTY_KEY";
-
protected boolean concreteClass;
-
protected ConfigContext context;
-
protected String parserPack;
protected String parserSimpleName;
@@ -104,7 +101,7 @@
Class> type = property.getType();
registerImport(normalImports, type);
String clazz = classPrefix + "<" + type.getSimpleName() + ">";
- String fieldName = getConstantFieldName(key, SUFFIX_CONFIG_PROPERTY_FIELD);
+ String fieldName = getConstantFieldName(key, SUFFIX_PROPERTY_FIELD);
String javadoc = "La clef pour acc\u00E9der \u00E0 la propri\u00E9t\u00E9 " + key + "";
description = invokeI18N(property.getKey() + ".description");
String params = "\"" + key + "\", " + type.getSimpleName() + ".class, " + property.getModifiers() + ", " + description;
@@ -122,7 +119,7 @@
// add propertec constructor (this is an abstract class)
builder.append('\n');
description = invokeI18N("description");
- addConstructor(null, concreteClass ? PUBLIC : PROTECTED, "super(parser ,\"" + context.getCategory() + "\", " + description + ");", null,parserSimpleName+" parser");
+ addConstructor(null, concreteClass ? PUBLIC : PROTECTED, "super(\"" + context.getCategory() + "\", " + description + ");", null);
// add properties typed accessors
for (ConfigPropertyContext propertyContext : context.getContexts()) {
generatePropertyAccessor(propertyContext);
@@ -158,7 +155,7 @@
typeAsStr = "boolean";
}
String methodName = buildGetterMethodName(booleanValueType, argumentKeyCap);
- String fieldName = getConstantFieldName(key, SUFFIX_CONFIG_PROPERTY_FIELD);
+ String fieldName = getConstantFieldName(key, SUFFIX_PROPERTY_FIELD);
String javadoc = generatePropertyAccessorJavadoc(context, fieldName);
addMethod(typeAsStr, methodName, javadoc, PUBLIC, "return getProperty(" + fieldName + ");", null);
}
@@ -180,7 +177,7 @@
mods = PROTECTED;
}
String methodName = "set" + argumentKeyCap;
- String fieldName = getConstantFieldName(key, SUFFIX_CONFIG_PROPERTY_FIELD);
+ String fieldName = getConstantFieldName(key, SUFFIX_PROPERTY_FIELD);
String javadoc = generatePropertyMutatorJavadoc(context, fieldName, mods);
addMethod("void", methodName, javadoc, mods, "setProperty(" + fieldName + ", value);", null, typeAsStr + " value");
Index: maven-commandline-plugin/src/java/org/codelutin/option/generate/java/AbstractConfigJavaGenerator.java
diff -u maven-commandline-plugin/src/java/org/codelutin/option/generate/java/AbstractConfigJavaGenerator.java:1.1 maven-commandline-plugin/src/java/org/codelutin/option/generate/java/AbstractConfigJavaGenerator.java:1.2
--- maven-commandline-plugin/src/java/org/codelutin/option/generate/java/AbstractConfigJavaGenerator.java:1.1 Sat Mar 15 01:22:22 2008
+++ maven-commandline-plugin/src/java/org/codelutin/option/generate/java/AbstractConfigJavaGenerator.java Sun Mar 16 21:24:10 2008
@@ -20,11 +20,17 @@
package org.codelutin.option.generate.java;
import org.codelutin.option.ConfigPropertyKey;
+import org.codelutin.option.def.DefaultOptionAction;
+import org.codelutin.option.def.DefinitionParser;
+import org.codelutin.option.def.DefinitionParser.MandatoryConfigProperty;
import org.codelutin.option.def.DefinitionParserContexts;
+import org.codelutin.util.StringUtil;
import java.io.File;
import java.io.IOException;
-import static java.lang.reflect.Modifier.*;
+import static java.lang.reflect.Modifier.ABSTRACT;
+import static java.lang.reflect.Modifier.PROTECTED;
+import static java.lang.reflect.Modifier.PUBLIC;
import java.text.FieldPosition;
import java.text.MessageFormat;
@@ -32,7 +38,7 @@
* Generateur d'implantation de classe de base de config.
*
* Utiliser la méthode
- * {@link #doGenerate(java.io.File,long, String, DefinitionParserContexts.ConfigContext[], String, String,String, String, String,String, String,String, String,String,String)}
+ * {@link #doGenerate(java.io.File,long, String,org.codelutin.option.def.DefinitionParserContexts.ConfigContext[], String, String, String, String,String, String, String, String, String,String)}
* pour générer une nouvelle action.
*
* @author tony
@@ -45,35 +51,38 @@
String parserPack,
String contextPack,
String optionPack,
+ String configPack,
String parserSimpleName,
String contextSimpleName,
String optionKeySimpleName,
String simpleName,
- String superClass,
- String configOptionKey,
- String configFileOptionKey,
- String filenameOptionKey) throws IOException {
- String superClassWithType = superClass + '<' + parserSimpleName + ", " + contextSimpleName + ", " + optionKeySimpleName + '>';
+ String configSimpleName,
+ String superClass) throws IOException {
+
AbstractConfigJavaGenerator gen;
- gen = new AbstractConfigJavaGenerator(out, timestamp, i18nPrefix, ccontexts, parserPack,contextPack,optionPack, simpleName, superClassWithType, parserSimpleName, contextSimpleName, optionKeySimpleName, configOptionKey, configFileOptionKey, filenameOptionKey);
+ gen = new AbstractConfigJavaGenerator(out, timestamp, i18nPrefix, ccontexts, parserPack, contextPack, optionPack, configPack, simpleName, superClass, parserSimpleName, contextSimpleName, optionKeySimpleName, configSimpleName);
gen.generate();
}
private static final MessageFormat CLASS_JAVADOC_MESSAGE = new MessageFormat("Implantation de base des configurations sp\u00E9cifiques a l''application au parseur {0}.\n\n@author {1}\n@see {2}\n@see {3}\n@see {4}");
-
protected String parserSimpleName;
protected String contextSimpleName;
+
protected String optionKeySimpleName;
+
protected DefinitionParserContexts.ConfigContext[] ccontexts;
- protected String filenameOptionKey;
- protected String configOptionKey;
- protected String configFileOptionKey;
- protected String contextPack;
+ protected MandatoryConfigProperty configFileNameConfigPropertyKey;
+ protected DefaultOptionAction configOptionKey;
+ protected DefaultOptionAction configFileOptionKey;
+ protected String contextPack;
protected String optionPack;
+ protected String configPack;
+
+ protected String configSimpleName;
protected AbstractConfigJavaGenerator(File out,
@@ -83,25 +92,27 @@
String pack,
String contextPack,
String optionPack,
+ String configPack,
String simpleName,
String superClass,
String parserSimpleName,
String contextSimpleName,
String optionKeySimpleName,
- String configOptionKey,
- String configFileOptionKey,
- String filenameOptionKey) {
+ String configSimpleName) {
super(out, timestamp, i18nPrefix, ABSTRACT | PUBLIC, pack, simpleName, superClass);
this.parserSimpleName = parserSimpleName;
this.contextSimpleName = contextSimpleName;
this.optionKeySimpleName = optionKeySimpleName;
this.ccontexts = ccontexts;
- this.configOptionKey = configOptionKey;
- this.configFileOptionKey = configFileOptionKey;
- this.filenameOptionKey = filenameOptionKey;
- this.contextPack=contextPack;
- this.optionPack=optionPack;
+
+ this.configOptionKey = DefaultOptionAction.changeConfig;
+ this.configFileOptionKey = DefaultOptionAction.changeFileConfig;
+ this.configFileNameConfigPropertyKey = DefinitionParser.MandatoryConfigProperty.configFileName;
+ this.configSimpleName = configSimpleName;
+ this.contextPack = contextPack;
+ this.optionPack = optionPack;
+ this.configPack = configPack;
}
@@ -110,16 +121,30 @@
registerImport(normalImports, ConfigPropertyKey.class);
registerImport(normalImports, File.class);
//registerImport(normalImports, superClassWithNoType);
- registerImport(normalImports, pack,parserSimpleName);
- registerImport(normalImports, pack,optionKeySimpleName);
- registerImport(normalImports, contextPack,contextSimpleName);
+ registerImport(normalImports, pack, parserSimpleName);
+ registerImport(normalImports, pack, optionKeySimpleName);
+ registerImport(normalImports, contextPack, contextSimpleName);
registerImport(normalImports, pack, optionKeySimpleName);
builder.append('\n');
- addConstructor(null, PUBLIC, "super(parser, category, description);", null, parserSimpleName + " parser", "String category", "String description");
+ addConstructor(null, PUBLIC, "super(category, description);", null, "String category", "String description");
+
+ String field;
+
+ field = StringUtil.convertToConstantName(configOptionKey.name()) + OptionParserJavaGenerator.SUFFIX_OPTION_FIELD;
+ registerStaticImport(staticImports, pack + '.' + parserSimpleName + '.' + field);
+ addMethod(optionKeySimpleName, "getConfigOptionKey", null, PROTECTED, "return " + field + ";", null);
+
+ field = StringUtil.convertToConstantName(configFileOptionKey.name()) + OptionParserJavaGenerator.SUFFIX_OPTION_FIELD;
+ registerStaticImport(staticImports, pack + '.' + parserSimpleName + '.' + field);
+ addMethod(optionKeySimpleName, "getConfigFileOptionKey", null, PROTECTED, "return " + field + ";", null);
+
+ field = StringUtil.convertToConstantName(configFileNameConfigPropertyKey.name()) + OptionParserJavaGenerator.SUFFIX_PROPERTY_FIELD;
+
+ String configImpl = configSimpleName + "Main";
+
+ registerStaticImport(staticImports, configPack + '.' + configImpl + '.' + field);
- addMethod(optionKeySimpleName, "getConfigOptionKey", null, PROTECTED, "return " + parserSimpleName + "." + configOptionKey + ";", null);
- addMethod(optionKeySimpleName, "getConfigFileOptionKey", null, PROTECTED, "return " + parserSimpleName + "." + configFileOptionKey + ";", null);
- addMethod("ConfigPropertyKey