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 2014/05/26 22:58:28 UTC
git commit: [KARAF-2991] Shell Console throws exception when a
service contains int[] as value for a property Add a fix for custom
collections
Repository: karaf
Updated Branches:
refs/heads/master 9b4a050ec -> b4f8ee6f5
[KARAF-2991] Shell Console throws exception when a service contains int[] as value for a property
Add a fix for custom collections
Project: http://git-wip-us.apache.org/repos/asf/karaf/repo
Commit: http://git-wip-us.apache.org/repos/asf/karaf/commit/b4f8ee6f
Tree: http://git-wip-us.apache.org/repos/asf/karaf/tree/b4f8ee6f
Diff: http://git-wip-us.apache.org/repos/asf/karaf/diff/b4f8ee6f
Branch: refs/heads/master
Commit: b4f8ee6f5a40291c6ab0d55e0c22545ae6da029a
Parents: 9b4a050
Author: Guillaume Nodet <gn...@gmail.com>
Authored: Mon May 26 22:58:11 2014 +0200
Committer: Guillaume Nodet <gn...@gmail.com>
Committed: Mon May 26 22:58:11 2014 +0200
----------------------------------------------------------------------
.../apache/karaf/shell/support/ShellUtil.java | 6 +-
.../karaf/shell/support/ShellUtilTest.java | 78 +++++++++++++++-----
2 files changed, 63 insertions(+), 21 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/karaf/blob/b4f8ee6f/shell/core/src/main/java/org/apache/karaf/shell/support/ShellUtil.java
----------------------------------------------------------------------
diff --git a/shell/core/src/main/java/org/apache/karaf/shell/support/ShellUtil.java b/shell/core/src/main/java/org/apache/karaf/shell/support/ShellUtil.java
index 4fc95c8..405f608 100644
--- a/shell/core/src/main/java/org/apache/karaf/shell/support/ShellUtil.java
+++ b/shell/core/src/main/java/org/apache/karaf/shell/support/ShellUtil.java
@@ -21,6 +21,7 @@ package org.apache.karaf.shell.support;
import java.security.AccessControlContext;
import java.security.AccessController;
import java.util.Arrays;
+import java.util.Collection;
import javax.security.auth.Subject;
@@ -79,6 +80,9 @@ public class ShellUtil {
return Arrays.toString((long[]) obj);
} else if (obj instanceof short[]) {
return Arrays.toString((short[]) obj);
+ } else if (obj instanceof Collection<?>) {
+ Object[] array = ((Collection<?>) obj).toArray();
+ return getValueString(array);
} else if (obj.getClass().isArray()) {
Object[] array = (Object[]) obj;
StringBuilder sb = new StringBuilder();
@@ -201,5 +205,5 @@ public class ShellUtil {
return null;
}
}
-
+
}
http://git-wip-us.apache.org/repos/asf/karaf/blob/b4f8ee6f/shell/core/src/test/java/org/apache/karaf/shell/support/ShellUtilTest.java
----------------------------------------------------------------------
diff --git a/shell/core/src/test/java/org/apache/karaf/shell/support/ShellUtilTest.java b/shell/core/src/test/java/org/apache/karaf/shell/support/ShellUtilTest.java
index f6d0ba9..c99bb25 100644
--- a/shell/core/src/test/java/org/apache/karaf/shell/support/ShellUtilTest.java
+++ b/shell/core/src/test/java/org/apache/karaf/shell/support/ShellUtilTest.java
@@ -18,52 +18,90 @@
*/
package org.apache.karaf.shell.support;
+import static org.junit.Assert.assertEquals;
+
+import java.util.AbstractList;
import java.util.Arrays;
-import java.util.HashSet;
+import java.util.Collection;
+import java.util.Iterator;
import java.util.LinkedHashSet;
+import java.util.List;
+import java.util.ListIterator;
import org.junit.Test;
-import static org.junit.Assert.assertEquals;
-
public class ShellUtilTest {
@Test
+ public void testGetValueStringWithCustomCollection() {
+ List<Integer> data = new AbstractList<Integer>() {
+
+ int[] values = new int[15];
+ int size = 0;
+
+ @Override
+ public boolean add(Integer e) {
+ values[size] = e;
+ size++;
+ return true;
+ }
+
+ @Override
+ public Integer get(int index) {
+ if ( index >= size ) throw new IndexOutOfBoundsException();
+ return values[index];
+ }
+
+ @Override
+ public int size() {
+ return size;
+ }
+
+ @Override
+ public String toString() {
+ return "Custom" + super.toString();
+ }
+ };
+ data.add(5);
+ assertEquals("[5]", ShellUtil.getValueString(data));
+ }
+
+ @Test
public void testGetValueString() {
Object data;
data = "Hello World";
assertEquals("Hello World", ShellUtil.getValueString(data));
- data = new int[]{1, 2, 3, 5, 7, 9};
+ data = new int[] { 1, 2, 3, 5, 7, 9 };
assertEquals("[1, 2, 3, 5, 7, 9]", ShellUtil.getValueString(data));
- data = new short[]{1, 2, 3, 5, 7, 9};
+ data = new short[] { 1, 2, 3, 5, 7, 9 };
assertEquals("[1, 2, 3, 5, 7, 9]", ShellUtil.getValueString(data));
- data = new long[]{1, 2, 3, 5, 7, 9};
+ data = new long[] { 1, 2, 3, 5, 7, 9 };
assertEquals("[1, 2, 3, 5, 7, 9]", ShellUtil.getValueString(data));
- data = new byte[]{1, 2, 3, 5, 7, 9};
+ data = new byte[] { 1, 2, 3, 5, 7, 9 };
assertEquals("[1, 2, 3, 5, 7, 9]", ShellUtil.getValueString(data));
- data = new float[]{1, 2, 3, 5, 7, 9};
- assertEquals("[1.0, 2.0, 3.0, 5.0, 7.0, 9.0]", ShellUtil.getValueString(data));
+ data = new float[] { 1, 2, 3, 5, 7, 9 };
+ assertEquals("[1.0, 2.0, 3.0, 5.0, 7.0, 9.0]",
+ ShellUtil.getValueString(data));
- data = new double[]{1, 2, 3, 5, 7, 9};
- assertEquals("[1.0, 2.0, 3.0, 5.0, 7.0, 9.0]", ShellUtil.getValueString(data));
+ data = new double[] { 1, 2, 3, 5, 7, 9 };
+ assertEquals("[1.0, 2.0, 3.0, 5.0, 7.0, 9.0]",
+ ShellUtil.getValueString(data));
- data = new boolean[]{true, true, false};
+ data = new boolean[] { true, true, false };
assertEquals("[true, true, false]", ShellUtil.getValueString(data));
- data = new char[]{'a', 'c', 'e'};
+ data = new char[] { 'a', 'c', 'e' };
assertEquals("[a, c, e]", ShellUtil.getValueString(data));
- data = new Object[]{
- new int[]{1, 2, 3, 5, 8},
- new char[]{'h', 'e', 'l', 'l', 'o'},
- "World"
- };
- assertEquals("[[1, 2, 3, 5, 8], [h, e, l, l, o], World]", ShellUtil.getValueString(data));
+ data = new Object[] { new int[] { 1, 2, 3, 5, 8 },
+ new char[] { 'h', 'e', 'l', 'l', 'o' }, "World" };
+ assertEquals("[[1, 2, 3, 5, 8], [h, e, l, l, o], World]",
+ ShellUtil.getValueString(data));
data = Arrays.asList(5, 10, 15, 25);
assertEquals("[5, 10, 15, 25]", ShellUtil.getValueString(data));
@@ -71,7 +109,7 @@ public class ShellUtilTest {
data = new LinkedHashSet<>(Arrays.asList(5, 10, 15, 25));
assertEquals("[5, 10, 15, 25]", ShellUtil.getValueString(data));
- data = new int[][]{{1, 2, 3}, {5, 7, 9}};
+ data = new int[][] { { 1, 2, 3 }, { 5, 7, 9 } };
assertEquals("[[1, 2, 3], [5, 7, 9]]", ShellUtil.getValueString(data));
}