You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@karaf.apache.org by gn...@apache.org on 2012/01/17 18:02:27 UTC

svn commit: r1232479 - /karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/NewAction.java

Author: gnodet
Date: Tue Jan 17 17:02:27 2012
New Revision: 1232479

URL: http://svn.apache.org/viewvc?rev=1232479&view=rev
Log:
[KARAF-1161] The shell:new action does not support the creation of arrays

Modified:
    karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/NewAction.java

Modified: karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/NewAction.java
URL: http://svn.apache.org/viewvc/karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/NewAction.java?rev=1232479&r1=1232478&r2=1232479&view=diff
==============================================================================
--- karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/NewAction.java (original)
+++ karaf/branches/karaf-2.2.x/shell/commands/src/main/java/org/apache/karaf/shell/commands/NewAction.java Tue Jan 17 17:02:27 2012
@@ -23,6 +23,7 @@ import org.apache.felix.gogo.commands.co
 import org.apache.felix.gogo.commands.converter.GenericType;
 import org.apache.karaf.shell.console.AbstractAction;
 
+import java.lang.reflect.Array;
 import java.lang.reflect.Constructor;
 import java.lang.reflect.InvocationTargetException;
 import java.lang.reflect.Type;
@@ -55,6 +56,14 @@ public class NewAction extends AbstractA
         if (args == null) {
             args = Collections.emptyList();
         }
+        // Handle arrays
+        if (clazz.isArray()) {
+            Object obj = Array.newInstance(clazz.getComponentType(), args.size());
+            for (int i = 0; i < args.size(); i++) {
+                Array.set(obj, i, convert(args.get(i), clazz.getComponentType()));
+            }
+            return obj;
+        }
         // Map of matching constructors
         Map<Constructor, List<Object>> matches = findMatchingConstructors(clazz, args, Arrays.asList(new ReifiedType[args.size()]));
         if (matches.size() == 1) {