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.2 maven-commandline-plugin/src/java/org/codelutin/option/generate/java/ConfigJavaGenerator.java:1.3 --- maven-commandline-plugin/src/java/org/codelutin/option/generate/java/ConfigJavaGenerator.java:1.2 Mon Dec 31 00:01:40 2007 +++ maven-commandline-plugin/src/java/org/codelutin/option/generate/java/ConfigJavaGenerator.java Fri Jan 4 09:48:38 2008 @@ -22,6 +22,7 @@ import org.apache.commons.lang.StringUtils; import org.codelutin.i18n.I18n; import org.codelutin.option.ConfigPropertyKey; +import org.codelutin.option.def.ConfigPropertyModifier; import org.codelutin.option.def.DefinitionParserContexts.ConfigContext; import org.codelutin.option.def.DefinitionParserContexts.ConfigPropertyContext; @@ -81,6 +82,7 @@ StringBuilder staticBloc = new StringBuilder(); // add constant ConfigPropertyKey fields String classPrefix = ConfigPropertyKey.class.getSimpleName(); + String description; for (ConfigPropertyContext property : this.context.getContexts()) { String key = property.getKey(); Class type = property.getType(); @@ -88,7 +90,7 @@ String clazz = classPrefix + "<" + type.getSimpleName() + ">"; String fieldName = getConstantFieldName(key, SUFFIX_CONFIG_PROPERTY_FIELD); String javadoc = "La clef pour acc\u00E9der \u00E0 la propri\u00E9t\u00E9 " + key + " de la config"; - String description = invokeI18N(property.getKey() + ".description"); + description = invokeI18N(property.getKey() + "description"); String params = "\"" + key + "\", " + type.getSimpleName() + ".class, " + property.getModifiers() + ", " + description; Object value = property.getDefaultValue(); if (value != null) { @@ -99,10 +101,13 @@ } // add propertec constructor (this is an abstract class) builder.append('\n'); - addConstructor(null, PROTECTED, "super(\"" + context.getCategory() + "\");", null); + description = invokeI18N(".description"); + addConstructor(null, PROTECTED, "super(\"" + context.getCategory() + "\", " + description + ");", null); // add properties typed accessors for (ConfigPropertyContext propertyContext : context.getContexts()) { generatePropertyAccessor(propertyContext); + generatePropertyMutator(propertyContext); + } // add static bloc to initialize the constant fields addStaticBloc(staticBloc.toString().substring(1)); @@ -138,12 +143,50 @@ addMethod(typeAsStr, methodName, javadoc, PUBLIC, "return getProperty(" + fieldName + ");", null); } + protected void generatePropertyMutator(ConfigPropertyContext context) { + String key = context.getKey(); + String argumentKeyCap = StringUtils.capitalize(key); + Class type = context.getType(); + //int modifiers = context.getModifiers(); + registerImport(normalImports, type); + String typeAsStr = type.getSimpleName(); + boolean booleanValueType = type == Boolean.class; + if (booleanValueType) { + typeAsStr = "boolean"; + } + int mods = PUBLIC; + if (ConfigPropertyModifier.FINAL.match(context.getModifiers())) { + // restricted access + mods = PROTECTED; + } + String methodName = "set" + argumentKeyCap; + String fieldName = getConstantFieldName(key, SUFFIX_CONFIG_PROPERTY_FIELD); + String javadoc = generatePropertyMutatorJavadoc(context, fieldName, mods); + + addMethod("void", methodName, javadoc, mods, "setProperty(" + fieldName + ", value);", null, typeAsStr + " value"); + } + protected String generatePropertyAccessorJavadoc(ConfigPropertyContext config, String fieldName) { StringBuilder sb = new StringBuilder(); sb.append("Accesseur de la valeur de la propri\u00E9t\u00E9 "); sb.append(config.getKey()); - sb.append("\nde la configuration, ou sa valeur par d\u00E9faut si elle existe."); - sb.append("\n\n@return la valeur de la propri\u00E9t\u00E9 ou sa valeur par d\u00E9faut (si elle existe)."); + sb.append("\n."); + sb.append("\n\n@return la valeur de la propri\u00E9t\u00E9"); + sb.append("\n@see #").append(fieldName).append('\n'); + return sb.toString(); + } + + protected String generatePropertyMutatorJavadoc(ConfigPropertyContext config, String fieldName, int mods) { + StringBuilder sb = new StringBuilder(); + sb.append("Mutateur de la valeur de la propri\u00E9t\u00E9 "); + sb.append(config.getKey()); + sb.append("."); + if (PUBLIC == mods) { + sb.append("\nla propri\u00E9t\u00E9 est de port\u00E9e publique car non finale."); + } else { + sb.append("\nla propri\u00E9t\u00E9 est de port\u00E9e prot\u00E9tected car finale."); + } + sb.append("\n\n@param value la nouvelle valeur \u00E0 affecter"); sb.append("\n@see #").append(fieldName).append('\n'); return sb.toString(); }