Index: lutincommandline/src/java/org/codelutin/option/OptionParser.java diff -u lutincommandline/src/java/org/codelutin/option/OptionParser.java:1.2 lutincommandline/src/java/org/codelutin/option/OptionParser.java:1.3 --- lutincommandline/src/java/org/codelutin/option/OptionParser.java:1.2 Fri Feb 22 12:35:37 2008 +++ lutincommandline/src/java/org/codelutin/option/OptionParser.java Sat Mar 1 12:07:39 2008 @@ -68,6 +68,20 @@ */ public abstract class OptionParser { + /** + * la propriéte des classes qui contiennent les inner-classes d'actions + * d'options concretes. + *

+ * Le parseur généré contiendra une constante de type tableau de classes. + */ + public static final String ACTION_IMPLEMENTATIONS_PROPERTY = "ACTION_IMPLEMENTATIONS"; + /** + * la propriété des classes concretes de configuration. + *

+ * Le parseur contiendra une constantes de type tableau de classes de + * configs. + */ + public static final String CONFIG_IMPLEMENTATIONS_PROPERTY = "CONFIG_IMPLEMENTATIONS"; /** logger non statique pour épouser la catégorie de l'implantation */ protected final Log log = LogFactory.getLog(getClass()); @@ -117,6 +131,18 @@ public OptionParser() throws IllegalArgumentException { optionKeys = Collections.unmodifiableList(ReflectUtil.getConstants(getClass(), OptionKey.class)); configKeys = Collections.unmodifiableList(ReflectUtil.getConstants(getClass(), ConfigKey.class)); + + // enregistrement des actions concretes contenues dans des inner-classes + Class[] actions = ReflectUtil.getConstant(getClass(), ACTION_IMPLEMENTATIONS_PROPERTY); + for (Class action : actions) { + registerActions(action); + } + + // enregistrement des configs concretes + Class[] configs = ReflectUtil.getConstant(getClass(), CONFIG_IMPLEMENTATIONS_PROPERTY); + for (Class config : configs) { + registerConfig(config); + } } /**