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.10 maven-commandline-plugin/src/java/org/codelutin/option/generate/java/OptionParserJavaGenerator.java:1.11 --- maven-commandline-plugin/src/java/org/codelutin/option/generate/java/OptionParserJavaGenerator.java:1.10 Sun Mar 16 21:24:10 2008 +++ maven-commandline-plugin/src/java/org/codelutin/option/generate/java/OptionParserJavaGenerator.java Mon Mar 17 22:43:47 2008 @@ -20,14 +20,12 @@ import org.apache.commons.lang.StringUtils; import org.codelutin.i18n.I18n; -import org.codelutin.option.ConfigKey; 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; import org.codelutin.option.def.DefinitionParserContexts.GroupContext; import org.codelutin.option.def.DefinitionParserContexts.OptionContext; import org.codelutin.option.def.DefinitionParserUtil; @@ -46,7 +44,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)} + * Utiliser la méthode {@link #doGenerate(java.io.File,long, String,org.codelutin.option.def.DefinitionParserContexts.OptionContext[], String, String, String, String, String, String, String, String)} * pour générer un nouveeau parseur. * * @author chemit @@ -56,19 +54,16 @@ long timestamp, String i18nPrefix, OptionContext[] ocontexts, - ConfigContext[] ccontexts, String pack, String simpleName, String optionKeySimpleName, String optionPack, String optionClassPrefix, - String configPack, - String configClassPrefix, String actionPack, String actionClassPrefix, String superClass) throws IOException { OptionParserJavaGenerator gen; - gen = new OptionParserJavaGenerator(out, timestamp, i18nPrefix, ocontexts, ccontexts, pack, simpleName, optionKeySimpleName, optionPack, optionClassPrefix, configPack, configClassPrefix, actionPack, actionClassPrefix, superClass); + gen = new OptionParserJavaGenerator(out, timestamp, i18nPrefix, ocontexts, pack, simpleName, optionKeySimpleName, optionPack, optionClassPrefix, actionPack, actionClassPrefix, superClass); gen.generate(); } @@ -86,39 +81,29 @@ protected String optionKeySimpleName; protected String optionClassPrefix; - protected String configPack; - protected String configClassPrefix; protected String actionPack; protected String actionClassPrefix; protected OptionContext[] ocontexts; - protected ConfigContext[] ccontexts; - protected OptionParserJavaGenerator(File out, long timestamp, String i18nPrefix, OptionContext[] ocontexts, - ConfigContext[] ccontexts, String pack, String simpleName, String optionKeySimpleName, String optionPack, String optionClassPrefix, - String configPack, - String configClassPrefix, String actionPack, String actionClassPrefix, String superClass) { super(out, timestamp, i18nPrefix, PUBLIC, pack, simpleName, superClass); this.optionKeySimpleName = optionKeySimpleName; this.optionPack = optionPack; - this.configPack = configPack; this.actionPack = actionPack; this.optionClassPrefix = optionClassPrefix; - this.configClassPrefix = configClassPrefix; this.actionClassPrefix = actionClassPrefix; this.ocontexts = ocontexts; - this.ccontexts = ccontexts; } protected void addContent() { @@ -127,16 +112,15 @@ registerImport(normalImports, OptionDefinition.class); StringBuilder staticBloc = new StringBuilder(); - // add ConfigKey constant fields - addConfigKeyFields(staticBloc); + // add OptionKey constant fields - addOptionKeyFields(staticBloc); - // add configs shared instances accessors - for (ConfigContext context : ccontexts) { - generateConfigAccessor(context); + if (ocontexts.length > 0) { + addOptionKeyFields(staticBloc); + + // add static bloc to initiliaze the constants + addStaticBloc(staticBloc.toString().substring(1)); } - // add static bloc to initiliaze the constants - addStaticBloc(staticBloc.toString().substring(1)); + // add static method to build the definition by programmation String body = new ToInitMethodSourceWalker().doWalk(ocontexts); addStaticMethod("void", "buildDefinitions", BUILD_DEFINITIONS_JAVADOC, 0, body, null, OptionDefinitionBuilder.class.getSimpleName() + " builder"); @@ -151,9 +135,6 @@ protected void addOptionKeyFields(StringBuilder sb) { - if (ocontexts.length == 0) { - return; - } String classPrefix; classPrefix = optionKeySimpleName; String factoryMethod = "new" + optionKeySimpleName; @@ -165,13 +146,7 @@ for (int i = 0; i < ocontexts.length; i++) { OptionContext context = ocontexts[i]; String key = context.getKey(); - DefaultOptionAction option; - try { - option = DefaultOptionAction.valueOf(key); - } catch (Exception e) { - // not a - option = null; - } + DefaultOptionAction option = getDefaultOptionAction(key); String suffix = StringUtils.capitalize(key); String optionImpl = optionClassPrefix + suffix; String actionImpl = actionClassPrefix + suffix; @@ -195,53 +170,18 @@ } } - protected void addConfigKeyFields(StringBuilder sb) { - if (ccontexts.length == 0) { - return; - } - registerImport(normalImports, ConfigKey.class); - registerStaticImport(staticImports, ConfigKey.class, "newConfigKey"); - sb.append("\n// configs key init"); - String classPrefix; - classPrefix = ConfigKey.class.getSimpleName(); - for (ConfigContext context : ccontexts) { - String key = context.getCategory(); - String suffix = StringUtils.capitalize(key); - String configImpl = configClassPrefix + suffix; - if (!pack.equals(configPack)) { - registerImport(normalImports, configPack + "." + configImpl); - } - String clazz = classPrefix + "<" + configImpl + ">"; - String fieldName = StringUtil.convertToConstantName(key) + SUFFIX_CONFIG_FIELD; - String javadoc = "La clef pour acc\u00E9der \u00E0 la config de cat\u00E9gorie" + key + "";
- String description = invokeI18N("config." + key + ".description");
- String params = "\"" + key + "\", " + configImpl + ".class, " + description;
- sb.append('\n').append(fieldName).append(" = newConfigKey(").append(params).append(");");
- addStaticField(fieldName, clazz, javadoc, PUBLIC | FINAL, null);
+ private DefaultOptionAction getDefaultOptionAction(String key) {
+ DefaultOptionAction option;
+ try {
+ option = DefaultOptionAction.valueOf(key);
+ } catch (Exception e) {
+ // this is not an error !
+ option = null;
}
+ return option;
}
- protected void generateConfigAccessor(ConfigContext context) {
- String key = context.getCategory();
- String suffix = StringUtils.capitalize(key);
- String methodName = "get" + suffix + "Config";
- String fieldName = getConstantFieldName(key, SUFFIX_CONFIG_FIELD);
- String abstractClass = configClassPrefix + suffix;
- String javadoc = generateConfigAccessorJavadoc(abstractClass, key, fieldName);
- addMethod(abstractClass, methodName, javadoc, PUBLIC, "return getConfig(" + fieldName + ");", null);
- }
-
- protected String generateConfigAccessorJavadoc(String abstractClass, String key, String fieldName) {
- StringBuilder sb = new StringBuilder();
- sb.append("Accesseur typ\u00E9 de l'instance partag\u00E9e de la configuration de cat\u00E9gorie ").append(key).append("\n(implantantion abstraite dans la classe ");
- sb.append(abstractClass).append(")\n.");
- sb.append("\n\n@return l'unique instance parta\u00E9e de la configuration de cat\u00E9gorie ").append(key).append("");
- sb.append("\n@see #").append(fieldName);
- sb.append("\n@see ").append(abstractClass).append('\n');
- return sb.toString();
- }
-
private final static MessageFormat OPTION_BEGIN = new MessageFormat("// option {0}/{1} : {2}\n");
/**
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.3 maven-commandline-plugin/src/java/org/codelutin/option/generate/java/AbstractContextJavaGenerator.java:1.4
--- maven-commandline-plugin/src/java/org/codelutin/option/generate/java/AbstractContextJavaGenerator.java:1.3 Sun Mar 16 21:24:10 2008
+++ maven-commandline-plugin/src/java/org/codelutin/option/generate/java/AbstractContextJavaGenerator.java Mon Mar 17 22:43:47 2008
@@ -19,13 +19,16 @@
package org.codelutin.option.generate.java;
import org.apache.commons.lang.StringUtils;
-import org.codelutin.option.ParserFailedException;
+import org.codelutin.i18n.I18n;
import org.codelutin.option.AbstractContext;
+import org.codelutin.option.ConfigKey;
import org.codelutin.option.def.DefinitionParserContexts.ConfigContext;
+import org.codelutin.util.StringUtil;
import java.io.File;
import java.io.IOException;
import static java.lang.reflect.Modifier.ABSTRACT;
+import static java.lang.reflect.Modifier.FINAL;
import static java.lang.reflect.Modifier.PROTECTED;
import static java.lang.reflect.Modifier.PUBLIC;
import java.text.FieldPosition;
@@ -83,41 +86,74 @@
}
protected void addContent() {
- registerImport(normalImports, IOException.class);
- registerImport(normalImports, ParserFailedException.class);
+ registerStaticImport(staticImports, I18n.class, "n_");
+ //registerImport(normalImports, IOException.class);
+ //registerImport(normalImports, ParserFailedException.class);
+
+ StringBuilder staticBloc = new StringBuilder();
+
+ if (ccontexts.length > 0) {
+ // add ConfigKey constant fields
+ addConfigKeyFields(staticBloc);
+ }
builder.append('\n');
- addConstructor(null, PROTECTED, "super("+parserSimpleName +".class);", new String[]{Exception.class.getSimpleName()});
+ addConstructor(null, PROTECTED, "super(" + parserSimpleName + ".class);", new String[]{Exception.class.getSimpleName()});
- // add configs shared instances accessors
- for (ConfigContext context : ccontexts) {
- generateConfigAccessor(context);
- String key = context.getCategory();
- if (key.equals("main")) {
- // register as main config
- String mainConfig = configSimpleName + "Main";
- String javadoc = generateMainConfigAccessorJavadoc(mainConfig);
- addMethod(mainConfig, "getConfig", javadoc, PUBLIC, "return getMainConfig();", null);
+ // add main config accessor
+ //generateMainConfigAccessor();
+
+ if (ccontexts.length > 0) {
+ // add configs shared instances accessors
+ for (ConfigContext context : ccontexts) {
+ generateConfigAccessor(context);
}
+
+ // add static bloc to initiliaze the config keys
+ addStaticBloc(staticBloc.toString().substring(1));
}
}
protected void generateMainConfigAccessor() {
- String javadoc = generateMainConfigAccessorJavadoc(parserSimpleName);
- String methodName = "getConfig";
- addMethod(parserSimpleName, methodName, javadoc, PUBLIC, "return parser==null?parser=new " + parserSimpleName + "():parser;", null);
+ String mainConfig = configSimpleName + "Main";
+ String javadoc = generateMainConfigAccessorJavadoc(mainConfig);
+ addMethod(mainConfig, "getConfig", javadoc, PUBLIC, "return getMainConfig();", null);
}
protected void generateConfigAccessor(ConfigContext context) {
String key = context.getCategory();
-
String suffix = StringUtils.capitalize(key);
String methodName = "get" + suffix + "Config";
+ String fieldName = getConstantFieldName(key, OptionParserJavaGenerator.SUFFIX_CONFIG_FIELD);
String abstractClass = configSimpleName + suffix;
- registerImport(normalImports, configPack, abstractClass);
+ String javadoc = generateConfigAccessorJavadoc(abstractClass, key, fieldName);
+ addMethod(abstractClass, methodName, javadoc, PUBLIC, "return getConfig(" + fieldName + ");", null);
+ }
- String javadoc = generateConfigAccessorJavadoc(parserSimpleName + "#" + methodName + "()", key);
- addMethod(abstractClass, methodName, javadoc, PUBLIC, "return getParser()." + methodName + "();", null);
+ protected void addConfigKeyFields(StringBuilder sb) {
+ if (ccontexts.length == 0) {
+ return;
+ }
+ registerImport(normalImports, ConfigKey.class);
+ registerStaticImport(staticImports, ConfigKey.class, "newConfigKey");
+ sb.append("\n// configs key init");
+ String classPrefix;
+ classPrefix = ConfigKey.class.getSimpleName();
+ for (ConfigContext context : ccontexts) {
+ String key = context.getCategory();
+ String suffix = StringUtils.capitalize(key);
+ String configImpl = configSimpleName + suffix;
+ if (!pack.equals(configPack)) {
+ registerImport(normalImports, configPack + "." + configImpl);
+ }
+ String clazz = classPrefix + "<" + configImpl + ">";
+ String fieldName = StringUtil.convertToConstantName(key) + OptionParserJavaGenerator.SUFFIX_CONFIG_FIELD;
+ String javadoc = "La clef pour acc\u00E9der \u00E0 la config de cat\u00E9gorie " + key + "";
+ String description = invokeI18N("config." + key + ".description");
+ String params = "\"" + key + "\", " + configImpl + ".class, " + description;
+ sb.append('\n').append(fieldName).append(" = newConfigKey(").append(params).append(");");
+ addStaticField(fieldName, clazz, javadoc, PUBLIC | FINAL, null);
+ }
}
@Override
@@ -127,11 +163,12 @@
return sb.toString();
}
- protected String generateConfigAccessorJavadoc(String abstractClass, String key) {
+ protected String generateConfigAccessorJavadoc(String abstractClass, String key, String fieldName) {
StringBuilder sb = new StringBuilder();
sb.append("Accesseur typ\u00E9 de l'instance partag\u00E9e de la configuration de cat\u00E9gorie ").append(key).append("\n(implantantion abstraite dans la classe ");
sb.append(abstractClass).append(")\n.");
sb.append("\n\n@return l'unique instance parta\u00E9e de la configuration de cat\u00E9gorie ").append(key).append("");
+ sb.append("\n@see #").append(fieldName);
sb.append("\n@see ").append(abstractClass).append('\n');
return sb.toString();
}
@@ -143,4 +180,6 @@
sb.append("\n@see ").append(abstractClass).append('\n');
return sb.toString();
}
+
+
}
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.11 maven-commandline-plugin/src/java/org/codelutin/option/generate/java/ConfigJavaGenerator.java:1.12
--- maven-commandline-plugin/src/java/org/codelutin/option/generate/java/ConfigJavaGenerator.java:1.11 Sun Mar 16 21:24:10 2008
+++ maven-commandline-plugin/src/java/org/codelutin/option/generate/java/ConfigJavaGenerator.java Mon Mar 17 22:43:47 2008
@@ -87,7 +87,7 @@
protected void addContent() {
registerStaticImport(staticImports, ConfigPropertyKey.class, "newConfigPropertyKey");
registerImport(normalImports, ConfigPropertyKey.class);
- registerImport(normalImports,parserPack, parserSimpleName);
+ //registerImport(normalImports,parserPack, parserSimpleName);
registerImport(normalImports,parserPack, superClass);
registerStaticImport(staticImports, I18n.class, "n_");
Index: maven-commandline-plugin/src/java/org/codelutin/option/generate/java/DefaultOptionActionJavaGenerator.java
diff -u maven-commandline-plugin/src/java/org/codelutin/option/generate/java/DefaultOptionActionJavaGenerator.java:1.2 maven-commandline-plugin/src/java/org/codelutin/option/generate/java/DefaultOptionActionJavaGenerator.java:1.3
--- maven-commandline-plugin/src/java/org/codelutin/option/generate/java/DefaultOptionActionJavaGenerator.java:1.2 Sun Mar 16 11:15:48 2008
+++ maven-commandline-plugin/src/java/org/codelutin/option/generate/java/DefaultOptionActionJavaGenerator.java Mon Mar 17 22:43:47 2008
@@ -4,10 +4,7 @@
import org.codelutin.option.def.DefinitionParserContexts.OptionContext;
import java.io.File;
-import static java.lang.reflect.Modifier.FINAL;
import static java.lang.reflect.Modifier.PROTECTED;
-import static java.lang.reflect.Modifier.PUBLIC;
-import static java.lang.reflect.Modifier.STATIC;
/** @author chemit */
public class DefaultOptionActionJavaGenerator extends OptionActionJavaGenerator {
@@ -23,12 +20,10 @@
@Override
protected void addFields() {
- registerImport(normalImports, parserPack, contextClass);
+ //registerImport(normalImports, parserPack, contextClass);
registerImport(normalImports, option.action().getName());
- addField("RUNNABLE_CLASS", "Class<" + type + '>', null, PUBLIC | STATIC | FINAL, type + ".class");
- builder.append('\n');
- addField("runnable", type, null, PROTECTED, null);
+ addField("delegate", type, null, PROTECTED, null);
}
@@ -38,10 +33,13 @@
String body;
String[] exceptions = {"Exception"};
builder.append('\n');
- body = "return runnable == null ? runnable = RUNNABLE_CLASS.newInstance() : runnable;";
- addMethod(type, "getRunnable", null, PROTECTED, body, exceptions);
+
+ body = "getDelegate().run(this);";
+ addMethod("void", "run", null, PROTECTED, body, exceptions);
+ builder.append('\n');
+
+ body = "return delegate == null ? delegate = " + type + ".class.newInstance() : delegate;";
+ addMethod(type, "getDelegate", null, PROTECTED, body, exceptions);
builder.append('\n');
- body = "getRunnable().run(this, context);";
- addMethod("void", "run", null, PROTECTED, body, exceptions, contextClass + " context");
}
}