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