Index: maven-commandline-plugin/src/java/org/codelutin/option/generate/JavaGeneratorContext.java diff -u maven-commandline-plugin/src/java/org/codelutin/option/generate/JavaGeneratorContext.java:1.2 maven-commandline-plugin/src/java/org/codelutin/option/generate/JavaGeneratorContext.java:1.3 --- maven-commandline-plugin/src/java/org/codelutin/option/generate/JavaGeneratorContext.java:1.2 Thu Mar 20 01:30:55 2008 +++ maven-commandline-plugin/src/java/org/codelutin/option/generate/JavaGeneratorContext.java Sat Mar 22 06:07:59 2008 @@ -19,6 +19,8 @@ import org.codelutin.option.Option; import org.codelutin.option.OptionParser; import org.codelutin.option.def.DefinitionParser; +import org.codelutin.option.def.DefinitionParserContexts.ConfigContext; +import org.codelutin.option.def.DefinitionParserContexts.OptionContext; import org.codelutin.option.def.DefinitionParserUtil.TypeSource; import org.codelutin.option.generate.util.AbstractGeneratorContext; @@ -44,6 +46,11 @@ protected DefinitionParser parser; + protected OptionContext[] optionContexts; + protected ConfigContext[] configContexts; + + protected String optionKeySimpleName; + public String getActionPackageName() { return actionPackageName; } @@ -169,6 +176,18 @@ return parser; } + public ConfigContext[] getConfigContexts() { + return configContexts; + } + + public OptionContext[] getOptionContexts() { + return optionContexts; + } + + public String getOptionKeySimpleName() { + return optionKeySimpleName; + } + public void init(JavaGeneratorGoal goal) throws IOException, ClassNotFoundException { super.init(goal); @@ -179,7 +198,7 @@ //checkInstanceOf(actionSuperClass, OptionAction.class); //checkInstanceOf(configSuperClass, Config.class); - + String packageName = getPackageName(); parserPackageName = packageName; @@ -257,6 +276,17 @@ throw new IllegalStateException(message); } + optionKeySimpleName = getParserSimpleName(); + + int pos = optionKeySimpleName.indexOf("OptionParser"); + if (pos > -1) { + optionKeySimpleName = optionKeySimpleName.substring(0, pos); + } + optionKeySimpleName += "OptionKey"; + + optionContexts = getParser().getOptions(); + + configContexts = getParser().getConfigs(); } protected void checkInstanceOf(String givenClass, Class expectedClass) { Index: maven-commandline-plugin/src/java/org/codelutin/option/generate/JavaGeneratorGoal.java diff -u maven-commandline-plugin/src/java/org/codelutin/option/generate/JavaGeneratorGoal.java:1.22 maven-commandline-plugin/src/java/org/codelutin/option/generate/JavaGeneratorGoal.java:1.23 --- maven-commandline-plugin/src/java/org/codelutin/option/generate/JavaGeneratorGoal.java:1.22 Sat Mar 22 01:36:21 2008 +++ maven-commandline-plugin/src/java/org/codelutin/option/generate/JavaGeneratorGoal.java Sat Mar 22 06:07:59 2008 @@ -116,20 +116,10 @@ public void generate() throws Exception { - String optionKeySimpleName = getContext().getParserSimpleName(); - - OptionContext[] optionContexts = getContext().getParser().getOptions(); - ConfigContext[] configContexts = getContext().getParser().getConfigs(); - - int pos = optionKeySimpleName.indexOf("OptionParser"); - if (pos > -1) { - optionKeySimpleName = optionKeySimpleName.substring(0, pos); - } - optionKeySimpleName += "OptionKey"; Map map = new TreeMap(); // build a dictonary of options implementations name - for (OptionContext context : optionContexts) { + for (OptionContext context : getContext().getOptionContexts()) { String suffix = StringUtils.capitalize(context.getKey()); String optionClassName = getContext().getOptionSimpleName() + suffix; map.put(context.getKey(), optionClassName); @@ -139,111 +129,54 @@ if (needSpecializedAction()) { AbstractOptionActionJavaGenerator.doGenerate(getContext()); - - /*AbstractOptionActionJavaGenerator.doGenerate(getContext().getOut(), getTimestamp(), getContext().getI18nPrefix(), - getContext().getParserPackageName(), - getContext().getContextPackageName(), - getContext().getParserSimpleName(), - getContext().getContextSimpleName(), - getContext().getActionSimpleName(), - getActionSuperClass() - );*/ + setActionSuperClass(getContext().getActionSimpleName()); } - getContext().setConfigSimpleName(getContext().getPrefix() + (getContext().isConcreteConfig() ? "" : "Abstract") + "Config"); + boolean isConcreteConfig = getContext().isConcreteConfig(); + + getContext().setConfigSimpleName(getContext().getPrefix() + (isConcreteConfig ? "" : "Abstract") + "Config"); // generate specialized abstract SimpleConfigImpl for this parser if (needSpecializedAbstractConfig()) { - AbstractConfigJavaGenerator.doGenerate(getContext().getOut(), timestamp, getContext().getI18nPrefix(), - configContexts, - getContext().getParserPackageName(), - getContext().getContextPackageName(), - getContext().getOptionPackageName(), - getContext().getConfigPackageName(), - getContext().getParserSimpleName(), - getContext().getContextSimpleName(), - optionKeySimpleName + "", - getPrefix() + "AbstractConfig", - getContext().getConfigSimpleName(), - getConfigSuperClass() - ); + AbstractConfigJavaGenerator.doGenerate(getContext(),getPrefix() + "AbstractConfig"); + // the super classes of generatred configs is the one generated here setConfigSuperClass(getContext().getPrefix() + "AbstractConfig"); } // generate specialized OptionKey for this parser - OptionKeyJavaGenerator.doGenerate(getContext().getOut(), timestamp, getContext().getI18nPrefix(), - getContext().getParserPackageName(), - getContext().getContextPackageName(), - getContext().getOptionPackageName(), - getContext().getParserSimpleName(), - getContext().getContextSimpleName(), - optionKeySimpleName, - getContext().getActionSuperClass() - ); + OptionKeyJavaGenerator.doGenerate(getContext()); // generate OptionParser implementation - OptionParserJavaGenerator.doGenerate(getContext().getOut(), timestamp, getContext().getI18nPrefix(), - optionContexts, - getContext().getParserPackageName(), - getContext().getParserSimpleName(), - optionKeySimpleName, - getContext().getOptionPackageName(), - getContext().getOptionSimpleName(), - getContext().getActionPackageName(), - getContext().getActionSimpleName(), - getContext().getParserSuperClass() - ); - - - AbstractContextJavaGenerator.doGenerate(getContext().getOut(), timestamp, getContext().getI18nPrefix(), - configContexts, - getContext().getParserPackageName(), - getContext().getConfigPackageName(), - getContext().getParserSimpleName(), - getContext().getConfigSimpleName(), - getContext().getContextSimpleName(), - getContext().getContextSuperClass() - ); + OptionParserJavaGenerator.doGenerate(getContext()); + + // generate AbstractContext implementation + AbstractContextJavaGenerator.doGenerate(getContext()); // generate Config implementations - for (ConfigContext context : configContexts) { + for (ConfigContext context : getContext().getConfigContexts()) { String suffix = StringUtils.capitalize(context.getCategory()); - ConfigJavaGenerator.doGenerate(getContext().getOut(), timestamp, getContext().getI18nPrefix(), - context, - getContext().getParserPackageName(), - getContext().getConfigPackageName(), + ConfigJavaGenerator.doGenerate(getContext(),context, getContext().getConfigSimpleName() + suffix, - getContext().getParserSimpleName(), - getContext().getConfigSuperClass(), - getContext().isConcreteConfig() + isConcreteConfig ); } // generate Option implementations - for (OptionContext context : optionContexts) { - OptionJavaGenerator.doGenerate(getContext().getOut(), timestamp, getContext().getI18nPrefix(), context, - getContext().getOptionPackageName(), - map.get(context.getKey()), - getContext().getOptionSuperClass() - ); + for (OptionContext context : getContext().getOptionContexts()) { + OptionJavaGenerator.doGenerate(getContext(), context,map.get(context.getKey())); } // generate OptionAction implementations - for (OptionContext context : optionContexts) { + for (OptionContext context : getContext().getOptionContexts()) { String suffix = StringUtils.capitalize(context.getKey()); String optionClassName = map.get(context.getKey()); - OptionActionJavaGenerator.doGenerate(getContext().getOut(), timestamp, getContext().getI18nPrefix(), context, - getContext().getActionPackageName(), + OptionActionJavaGenerator.doGenerate(getContext(),context, getContext().getActionSimpleName() + suffix, getContext().getActionSuperClass() + "<" + optionClassName + ">", - getContext().getOptionPackageName(), - optionClassName, - getContext().getParserPackageName(), - getContext().getParserSimpleName(), - getContext().getContextSimpleName() - ); + optionClassName + ); } map.clear(); }