You are viewing a plain text version of this content. The canonical link for it is here.
Posted to scm@geronimo.apache.org by jd...@apache.org on 2008/06/09 19:19:52 UTC
svn commit: r665788 -
/geronimo/gshell/trunk/gshell-support/gshell-clp/src/main/java/org/apache/geronimo/gshell/clp/CommandLineProcessor.java
Author: jdillon
Date: Mon Jun 9 10:19:52 2008
New Revision: 665788
URL: http://svn.apache.org/viewvc?rev=665788&view=rev
Log:
The CLP isn't really specific to one bean, so remove that and allow more than one bean to be inspected for processing
Modified:
geronimo/gshell/trunk/gshell-support/gshell-clp/src/main/java/org/apache/geronimo/gshell/clp/CommandLineProcessor.java
Modified: geronimo/gshell/trunk/gshell-support/gshell-clp/src/main/java/org/apache/geronimo/gshell/clp/CommandLineProcessor.java
URL: http://svn.apache.org/viewvc/geronimo/gshell/trunk/gshell-support/gshell-clp/src/main/java/org/apache/geronimo/gshell/clp/CommandLineProcessor.java?rev=665788&r1=665787&r2=665788&view=diff
==============================================================================
--- geronimo/gshell/trunk/gshell-support/gshell-clp/src/main/java/org/apache/geronimo/gshell/clp/CommandLineProcessor.java (original)
+++ geronimo/gshell/trunk/gshell-support/gshell-clp/src/main/java/org/apache/geronimo/gshell/clp/CommandLineProcessor.java Mon Jun 9 10:19:52 2008
@@ -45,24 +45,18 @@
*/
public class CommandLineProcessor
{
- private final Object bean;
-
private final List<Handler> optionHandlers = new ArrayList<Handler>();
private final List<Handler> argumentHandlers = new ArrayList<Handler>();
private boolean stopAtNonOption = false;
+
+ public CommandLineProcessor() {}
- public CommandLineProcessor(final Object bean) throws IllegalAnnotationError {
+ public CommandLineProcessor(final Object bean) {
assert bean != null;
- this.bean = bean;
-
- discoverDescriptors();
- }
-
- public Object getBean() {
- return bean;
+ addBean(bean);
}
public List<Handler> getOptionHandlers() {
@@ -80,12 +74,20 @@
public void setStopAtNonOption(final boolean flag) {
stopAtNonOption = flag;
}
-
+
+ public void addBean(final Object bean) {
+ assert bean != null;
+
+ discoverDescriptors(bean);
+ }
+
//
// Discovery
//
- private void discoverDescriptors() {
+ private void discoverDescriptors(final Object bean) {
+ assert bean != null;
+
// Recursively process all the methods/fields.
for (Class type=bean.getClass(); type!=null; type=type.getSuperclass()) {
// Discover methods
@@ -105,12 +107,12 @@
for (Field field : type.getDeclaredFields()) {
Option option = field.getAnnotation(Option.class);
if (option != null) {
- addOption(createFieldSetter(field), option);
+ addOption(createFieldSetter(bean, field), option);
}
Argument argument = field.getAnnotation(Argument.class);
if (argument != null) {
- addArgument(createFieldSetter(field), argument);
+ addArgument(createFieldSetter(bean, field), argument);
}
}
}
@@ -123,7 +125,8 @@
}
}
- private Setter createFieldSetter(final Field field) {
+ private Setter createFieldSetter(final Object bean, final Field field) {
+ assert bean != null;
assert field != null;
if (Collection.class.isAssignableFrom(field.getType())) {