Author: chirino
Date: Mon Nov 23 01:52:03 2009
New Revision: 883209

URL: http://svn.apache.org/viewvc?rev=883209&view=rev
Log:
better CommonsCLISupport

Modified:
    
activemq/sandbox/activemq-apollo/activemq-util/src/main/java/org/apache/activemq/util/IntrospectionSupport.java
    
activemq/sandbox/activemq-apollo/activemq-util/src/main/java/org/apache/activemq/util/cli/CommonsCLISupport.java

Modified: 
activemq/sandbox/activemq-apollo/activemq-util/src/main/java/org/apache/activemq/util/IntrospectionSupport.java
URL: 
http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo/activemq-util/src/main/java/org/apache/activemq/util/IntrospectionSupport.java?rev=883209&r1=883208&r2=883209&view=diff
==============================================================================
--- 
activemq/sandbox/activemq-apollo/activemq-util/src/main/java/org/apache/activemq/util/IntrospectionSupport.java
 (original)
+++ 
activemq/sandbox/activemq-apollo/activemq-util/src/main/java/org/apache/activemq/util/IntrospectionSupport.java
 Mon Nov 23 01:52:03 2009
@@ -171,6 +171,15 @@
         return rc;
     }
 
+    public static Class<?> getPropertyType(Object target, String name) {
+        Class<?> clazz = target.getClass();
+        Method setter = findSetterMethod(clazz, name);
+        if (setter == null) {
+            return null;
+        }
+        return setter.getParameterTypes()[0];
+    }
+    
     public static boolean setProperty(Object target, String name, Object 
value) {
         try {
             Class<?> clazz = target.getClass();

Modified: 
activemq/sandbox/activemq-apollo/activemq-util/src/main/java/org/apache/activemq/util/cli/CommonsCLISupport.java
URL: 
http://svn.apache.org/viewvc/activemq/sandbox/activemq-apollo/activemq-util/src/main/java/org/apache/activemq/util/cli/CommonsCLISupport.java?rev=883209&r1=883208&r2=883209&view=diff
==============================================================================
--- 
activemq/sandbox/activemq-apollo/activemq-util/src/main/java/org/apache/activemq/util/cli/CommonsCLISupport.java
 (original)
+++ 
activemq/sandbox/activemq-apollo/activemq-util/src/main/java/org/apache/activemq/util/cli/CommonsCLISupport.java
 Mon Nov 23 01:52:03 2009
@@ -1,5 +1,8 @@
 package org.apache.activemq.util.cli;
 
+import java.util.ArrayList;
+import java.util.HashSet;
+
 import org.apache.activemq.util.IntrospectionSupport;
 import org.apache.commons.cli.CommandLine;
 import org.apache.commons.cli.Option;
@@ -20,11 +23,16 @@
             
             String value = option.getValue();
             if( value!=null ) {
-                if( !IntrospectionSupport.setProperty(target, propName, 
option.getValues()) ) {
-                    if( !IntrospectionSupport.setProperty(target, propName, 
option.getValuesList())) {
-                        IntrospectionSupport.setProperty(target, propName, 
value);
-                    }
-                }                
+                Class<?> type = IntrospectionSupport.getPropertyType(target, 
propName);
+                if( type.isArray() ) {
+                    IntrospectionSupport.setProperty(target, propName, 
option.getValues());
+                } else if( type.isAssignableFrom(ArrayList.class) ) {
+                    IntrospectionSupport.setProperty(target, propName, new 
ArrayList(option.getValuesList()) );
+                } else if( type.isAssignableFrom(HashSet.class) ) {
+                    IntrospectionSupport.setProperty(target, propName, new 
HashSet(option.getValuesList()) );
+                } else {
+                    IntrospectionSupport.setProperty(target, propName, value);
+                }
             } else {
                 IntrospectionSupport.setProperty(target, propName, true);      
            
             }


Reply via email to