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())) {