Index: lutinutil/src/java/org/codelutin/option/OptionKey.java diff -u lutinutil/src/java/org/codelutin/option/OptionKey.java:1.3 lutinutil/src/java/org/codelutin/option/OptionKey.java:1.4 --- lutinutil/src/java/org/codelutin/option/OptionKey.java:1.3 Thu Jan 3 06:00:53 2008 +++ lutinutil/src/java/org/codelutin/option/OptionKey.java Fri Jan 4 09:51:38 2008 @@ -19,6 +19,7 @@ package org.codelutin.option; import org.codelutin.option.def.OptionDefinition; +import org.codelutin.util.ArrayUtil; import java.lang.reflect.Constructor; import java.lang.reflect.Modifier; @@ -133,6 +134,18 @@ } } + /** + * Launch action for the given parser + * + * @param parser the used parser + * @throws Exception if any problem + */ + public void doAction(P parser) throws Exception { + if (!options.isEmpty()) { + getAction(parser).doRun(ArrayUtil.toArray(options, optionClass)); + } + } + protected void resetOptions() { options.clear(); } @@ -149,7 +162,7 @@ * @param parser the parser used * @return the share action's instance */ - protected A getAction(P parser) { + public A getAction(P parser) { if (action == null) { if (actionClass == null) { throw new IllegalStateException("no concrete action found for " + abstractActionClass); @@ -160,7 +173,7 @@ actionConstructor = actionClass.getConstructor(); } catch (NoSuchMethodException e) { actionConstructor = actionClass.getConstructor(parser.getClass()); - } + } } if (actionConstructor.getParameterTypes().length == 0) { action = actionConstructor.newInstance();