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();
}