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.4 maven-commandline-plugin/src/java/org/codelutin/option/generate/java/OptionParserJavaGenerator.java:1.5 --- maven-commandline-plugin/src/java/org/codelutin/option/generate/java/OptionParserJavaGenerator.java:1.4 Mon Jan 7 20:19:02 2008 +++ maven-commandline-plugin/src/java/org/codelutin/option/generate/java/OptionParserJavaGenerator.java Fri Mar 14 22:35:52 2008 @@ -45,7 +45,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(File,long, String, OptionContext[], 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[],org.codelutin.option.def.DefinitionParserContexts.ConfigContext[], String, String, String, String, String, String, String, String, String, String, String[], String[])} * pour générer un nouveeau parseur. * * @author chemit @@ -63,31 +63,34 @@ String optionClassPrefix, String configPack, String configClassPrefix, - String actionPack, String actionClassPrefix, - String superClass) throws IOException { + String superClass, String[] actionImplementations, String[] configImplementations) 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, ccontexts, pack, simpleName, optionKeySimpleName, optionPack, optionClassPrefix, configPack, configClassPrefix, actionPack, actionClassPrefix, superClass, actionImplementations, configImplementations); gen.generate(); } private static final String SUFFIX_OPTION_FIELD = "_OPTION_KEY"; - private 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}"); protected String optionPack; + protected String optionKeySimpleName; protected String optionClassPrefix; protected String configPack; protected String configClassPrefix; protected String actionPack; protected String actionClassPrefix; - protected OptionContext[] ocontexts; + + protected String[] actionImplementations; + protected String[] configImplementations; + protected ConfigContext[] ccontexts; protected OptionParserJavaGenerator(File out, @@ -104,7 +107,9 @@ String configClassPrefix, String actionPack, String actionClassPrefix, - String superClass) { + String superClass, + String[] actionImplementations, + String[] configImplementations) { super(out, timestamp, i18nPrefix, PUBLIC, pack, simpleName, superClass); this.optionKeySimpleName = optionKeySimpleName; this.optionPack = optionPack; @@ -115,6 +120,8 @@ this.actionClassPrefix = actionClassPrefix; this.ocontexts = ocontexts; this.ccontexts = ccontexts; + this.actionImplementations = actionImplementations; + this.configImplementations = configImplementations; } @@ -123,6 +130,11 @@ 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); @@ -139,6 +151,17 @@ 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(" {"); + 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(); @@ -201,7 +224,7 @@ 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 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);