Repository: incubator-juneau
Updated Branches:
  refs/heads/master b1a30b033 -> 4f26c8814


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4f26c881/juneau-rest-test/src/main/java/org/apache/juneau/rest/test/InterfaceProxyResource.java
----------------------------------------------------------------------
diff --git 
a/juneau-rest-test/src/main/java/org/apache/juneau/rest/test/InterfaceProxyResource.java
 
b/juneau-rest-test/src/main/java/org/apache/juneau/rest/test/InterfaceProxyResource.java
index 8e226a0..06edda7 100644
--- 
a/juneau-rest-test/src/main/java/org/apache/juneau/rest/test/InterfaceProxyResource.java
+++ 
b/juneau-rest-test/src/main/java/org/apache/juneau/rest/test/InterfaceProxyResource.java
@@ -12,13 +12,17 @@
 // 
***************************************************************************************************************************
 package org.apache.juneau.rest.test;
 
+import static java.util.Arrays.*;
 import static org.junit.Assert.*;
 
+import java.lang.reflect.*;
 import java.util.*;
 
+import org.apache.juneau.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.rest.annotation.*;
 import org.apache.juneau.rest.jena.*;
+import org.apache.juneau.utils.*;
 import org.junit.*;
 
 /**
@@ -72,16 +76,85 @@ public class InterfaceProxyResource extends 
RestServletJenaDefault {
                                return new int[]{1,2};
                        }
                        @Override
+                       public int[][] returnInt2dArray() {
+                               return new int[][]{{1,2}};
+                       }
+                       @Override
+                       public int[][][] returnInt3dArray() {
+                               return new int[][][]{{{1,2}}};
+                       }
+                       @Override
+                       public Integer[] returnIntegerArray() {
+                               return new Integer[]{1,null};
+                       }
+                       @Override
+                       public Integer[][] returnInteger2dArray() {
+                               return new Integer[][]{{1,null}};
+                       }
+                       @Override
+                       public Integer[][][] returnInteger3dArray() {
+                               return new Integer[][][]{{{1,null}}};
+                       }
+                       @Override
                        public String[] returnStringArray() {
                                return new String[]{"foo","bar",null};
                        }
                        @Override
+                       public String[][] returnString2dArray() {
+                               return new String[][]{{"foo","bar",null}};
+                       }
+                       @Override
+                       public String[][][] returnString3dArray() {
+                               return new String[][][]{{{"foo","bar",null}}};
+                       }
+                       @Override
                        public List<Integer> returnIntegerList() {
-                               return Arrays.asList(new Integer[]{1,2});
+                               return asList(new Integer[]{1,null});
+                       }
+                       @Override
+                       public List<List<Integer>> returnInteger2dList() {
+                               return new AList<List<Integer>>()
+                               .append(
+                                       new 
AList<Integer>().append(1).append(null)
+                               );
+                       }
+                       @Override
+                       public List<List<List<Integer>>> returnInteger3dList() {
+                               return new AList<List<List<Integer>>>()
+                               .append(
+                                       new AList<List<Integer>>()
+                                       .append(
+                                               new 
AList<Integer>().append(1).append(null)
+                                       )
+                               );
+                       }
+                       @Override
+                       public List<Integer[]> returnInteger1d1dList() {
+                               return new AList<Integer[]>().append(new 
Integer[]{1,null}).append(null);
+                       }
+                       @Override
+                       public List<Integer[][]> returnInteger1d2dList() {
+                               return new AList<Integer[][]>().append(new 
Integer[][]{{1,null},null}).append(null);
+                       }
+                       @Override
+                       public List<Integer[][][]> returnInteger1d3dList() {
+                               return new AList<Integer[][][]>().append(new 
Integer[][][]{{{1,null},null},null}).append(null);
+                       }
+                       @Override
+                       public List<int[]> returnInt1d1dList() {
+                               return new AList<int[]>().append(new 
int[]{1,2}).append(null);
+                       }
+                       @Override
+                       public List<int[][]> returnInt1d2dList() {
+                               return new AList<int[][]>().append(new 
int[][]{{1,2},null}).append(null);
+                       }
+                       @Override
+                       public List<int[][][]> returnInt1d3dList() {
+                               return new AList<int[][][]>().append(new 
int[][][]{{{1,2},null},null}).append(null);
                        }
                        @Override
                        public List<String> returnStringList() {
-                               return Arrays.asList(new 
String[]{"foo","bar",null});
+                               return asList(new String[]{"foo","bar",null});
                        }
                        @Override
                        public Bean returnBean() {
@@ -93,19 +166,19 @@ public class InterfaceProxyResource extends 
RestServletJenaDefault {
                        }
                        @Override
                        public List<Bean> returnBeanList() {
-                               return Arrays.asList(new Bean().init());
+                               return asList(new Bean().init());
                        }
                        @Override
                        public Map<String,Bean> returnBeanMap() {
-                               return new 
HashMap<String,Bean>(){{put("foo",new Bean().init());}};
+                               return new AMap<String,Bean>().append("foo",new 
Bean().init());
                        }
                        @Override
                        public Map<String,List<Bean>> returnBeanListMap() {
-                               return new 
HashMap<String,List<Bean>>(){{put("foo",Arrays.asList(new Bean().init()));}};
+                               return new 
AMap<String,List<Bean>>().append("foo",asList(new Bean().init()));
                        }
                        @Override
                        public Map<Integer,List<Bean>> 
returnBeanListMapIntegerKeys() {
-                               return new 
HashMap<Integer,List<Bean>>(){{put(1,Arrays.asList(new Bean().init()));}};
+                               return new 
AMap<Integer,List<Bean>>().append(1,asList(new Bean().init()));
                        }
                        @Override
                        public void throwException1() throws 
InterfaceProxy.InterfaceProxyException1 {
@@ -151,12 +224,84 @@ public class InterfaceProxyResource extends 
RestServletJenaDefault {
                                assertObjectEquals("[1,2]", x);
                        }
                        @Override
+                       public void setInt2dArray(int[][] x) {
+                               assertObjectEquals("[[1,2]]", x);
+                       }
+                       @Override
+                       public void setInt3dArray(int[][][] x) {
+                               assertObjectEquals("[[[1,2]]]", x);
+                       }
+                       @Override
+                       public void setIntegerArray(Integer[] x) {
+                               assertObjectEquals("[1,null]", x);
+                       }
+                       @Override
+                       public void setInteger2dArray(Integer[][] x) {
+                               assertObjectEquals("[[1,null]]", x);
+                       }
+                       @Override
+                       public void setInteger3dArray(Integer[][][] x) {
+                               assertObjectEquals("[[[1,null]]]", x);
+                       }
+                       @Override
                        public void setStringArray(String[] x) {
                                assertObjectEquals("['foo','bar',null]", x);
                        }
                        @Override
+                       public void setString2dArray(String[][] x) {
+                               assertObjectEquals("[['foo','bar',null]]", x);
+                       }
+                       @Override
+                       public void setString3dArray(String[][][] x) {
+                               assertObjectEquals("[[['foo','bar',null]]]", x);
+                       }
+                       @Override
                        public void setIntegerList(List<Integer> x) {
-                               assertObjectEquals("[1,2,null]", x);
+                               assertObjectEquals("[1,null]", x);
+                               assertEquals(Integer.class, 
x.get(0).getClass());
+                       }
+                       @Override
+                       public void setInteger2dList(List<List<Integer>> x) {
+                               assertObjectEquals("[[1,null]]", x);
+                               assertEquals(Integer.class, 
x.get(0).get(0).getClass());
+                       }
+                       @Override
+                       public void setInteger3dList(List<List<List<Integer>>> 
x) {
+                               assertObjectEquals("[[[1,null]]]", x);
+                               assertEquals(Integer.class, 
x.get(0).get(0).get(0).getClass());
+                       }
+                       @Override
+                       public void setInteger1d1dList(List<Integer[]> x) {
+                               assertObjectEquals("[[1,null],null]", x);
+                               assertEquals(Integer[].class, 
x.get(0).getClass());
+                               assertEquals(Integer.class, 
x.get(0)[0].getClass());
+                       }
+                       @Override
+                       public void setInteger1d2dList(List<Integer[][]> x) {
+                               assertObjectEquals("[[[1,null],null],null]", x);
+                               assertEquals(Integer[][].class, 
x.get(0).getClass());
+                               assertEquals(Integer.class, 
x.get(0)[0][0].getClass());
+                       }
+                       @Override
+                       public void setInteger1d3dList(List<Integer[][][]> x) {
+                               
assertObjectEquals("[[[[1,null],null],null],null]", x);
+                               assertEquals(Integer[][][].class, 
x.get(0).getClass());
+                               assertEquals(Integer.class, 
x.get(0)[0][0][0].getClass());
+                       }
+                       @Override
+                       public void setInt1d1dList(List<int[]> x) {
+                               assertObjectEquals("[[1,2],null]", x);
+                               assertEquals(int[].class, x.get(0).getClass());
+                       }
+                       @Override
+                       public void setInt1d2dList(List<int[][]> x) {
+                               assertObjectEquals("[[[1,2],null],null]", x);
+                               assertEquals(int[][].class, 
x.get(0).getClass());
+                       }
+                       @Override
+                       public void setInt1d3dList(List<int[][][]> x) {
+                               
assertObjectEquals("[[[[1,2],null],null],null]", x);
+                               assertEquals(int[][][].class, 
x.get(0).getClass());
                        }
                        @Override
                        public void setStringList(List<String> x) {
@@ -193,4 +338,13 @@ public class InterfaceProxyResource extends 
RestServletJenaDefault {
        private static void assertObjectEquals(String e, Object o) {
                Assert.assertEquals(e, JsonSerializer.DEFAULT_LAX.toString(o));
        }
+
+       public static void main(String[] args) {
+               
JsonSerializer.DEFAULT_LAX_READABLE.println(BeanContext.DEFAULT.createSession().getClassMetas(new
 Type[]{X.class}));
+
+       }
+
+       public static class X extends LinkedList<int[][]> {
+
+       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4f26c881/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/DTOs.java
----------------------------------------------------------------------
diff --git 
a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/DTOs.java 
b/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/DTOs.java
index 3e3ea07..578c939 100644
--- a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/DTOs.java
+++ b/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/DTOs.java
@@ -16,6 +16,7 @@ import java.util.*;
 
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.urlencoding.annotation.*;
+import org.apache.juneau.utils.*;
 
 public class DTOs {
 
@@ -35,7 +36,6 @@ public class DTOs {
 
        }
 
-       @SuppressWarnings("serial")
        @Bean(sort=true)
        public static class B {
                public String[] f01;
@@ -85,25 +85,25 @@ public class DTOs {
                static B create() {
                        B t = new B();
                        t.f01 = new String[]{"a","b"};
-                       t.f02 = new ArrayList<String>(){{add("c");add("d");}};
+                       t.f02 = new AList<String>().append("c").append("d");
                        t.f03 = new int[]{1,2};
-                       t.f04 = new ArrayList<Integer>(){{add(3);add(4);}};
+                       t.f04 = new AList<Integer>().append(3).append(4);
                        t.f05 = new String[][]{{"e","f"},{"g","h"}};
-                       t.f06 = new ArrayList<String[]>(){{add(new 
String[]{"i","j"});add(new String[]{"k","l"});}};
+                       t.f06 = new AList<String[]>().append(new 
String[]{"i","j"}).append(new String[]{"k","l"});
                        t.f07 = new A[]{A.create(),A.create()};
-                       t.f08 = new 
ArrayList<A>(){{add(A.create());add(A.create());}};
+                       t.f08 = new 
AList<A>().append(A.create()).append(A.create());
                        t.f09 = new A[][]{{A.create()},{A.create()}};
-                       t.f10 = new 
ArrayList<List<A>>(){{add(Arrays.asList(A.create()));add(Arrays.asList(A.create()));}};
+                       t.f10 = new 
AList<List<A>>().append(Arrays.asList(A.create())).append(Arrays.asList(A.create()));
                        t.setF11(new String[]{"a","b"});
-                       t.setF12(new ArrayList<String>(){{add("c");add("d");}});
+                       t.setF12(new AList<String>().append("c").append("d"));
                        t.setF13(new int[]{1,2});
-                       t.setF14(new ArrayList<Integer>(){{add(3);add(4);}});
+                       t.setF14(new AList<Integer>().append(3).append(4));
                        t.setF15(new String[][]{{"e","f"},{"g","h"}});
-                       t.setF16(new ArrayList<String[]>(){{add(new 
String[]{"i","j"});add(new String[]{"k","l"});}});
+                       t.setF16(new AList<String[]>().append(new 
String[]{"i","j"}).append(new String[]{"k","l"}));
                        t.setF17(new A[]{A.create(),A.create()});
-                       t.setF18(new 
ArrayList<A>(){{add(A.create());add(A.create());}});
+                       t.setF18(new 
AList<A>().append(A.create()).append(A.create()));
                        t.setF19(new A[][]{{A.create()},{A.create()}});
-                       t.setF20(new 
ArrayList<List<A>>(){{add(Arrays.asList(A.create()));add(Arrays.asList(A.create()));}});
+                       t.setF20(new 
AList<List<A>>().append(Arrays.asList(A.create())).append(Arrays.asList(A.create())));
                        return t;
                }
        }
@@ -114,25 +114,25 @@ public class DTOs {
                static C create() {
                        C t = new C();
                        t.f01 = new String[]{"a","b"};
-                       t.f02 = new ArrayList<String>(){{add("c");add("d");}};
+                       t.f02 = new AList<String>().append("c").append("d");
                        t.f03 = new int[]{1,2};
-                       t.f04 = new ArrayList<Integer>(){{add(3);add(4);}};
+                       t.f04 = new AList<Integer>().append(3).append(4);
                        t.f05 = new String[][]{{"e","f"},{"g","h"}};
-                       t.f06 = new ArrayList<String[]>(){{add(new 
String[]{"i","j"});add(new String[]{"k","l"});}};
+                       t.f06 = new AList<String[]>().append(new 
String[]{"i","j"}).append(new String[]{"k","l"});
                        t.f07 = new A[]{A.create(),A.create()};
-                       t.f08 = new 
ArrayList<A>(){{add(A.create());add(A.create());}};
+                       t.f08 = new 
AList<A>().append(A.create()).append(A.create());
                        t.f09 = new A[][]{{A.create()},{A.create()}};
-                       t.f10 = new 
ArrayList<List<A>>(){{add(Arrays.asList(A.create()));add(Arrays.asList(A.create()));}};
+                       t.f10 = new 
AList<List<A>>().append(Arrays.asList(A.create())).append(Arrays.asList(A.create()));
                        t.setF11(new String[]{"a","b"});
-                       t.setF12(new ArrayList<String>(){{add("c");add("d");}});
+                       t.setF12(new AList<String>().append("c").append("d"));
                        t.setF13(new int[]{1,2});
-                       t.setF14(new ArrayList<Integer>(){{add(3);add(4);}});
+                       t.setF14(new AList<Integer>().append(3).append(4));
                        t.setF15(new String[][]{{"e","f"},{"g","h"}});
-                       t.setF16(new ArrayList<String[]>(){{add(new 
String[]{"i","j"});add(new String[]{"k","l"});}});
+                       t.setF16(new AList<String[]>().append(new 
String[]{"i","j"}).append(new String[]{"k","l"}));
                        t.setF17(new A[]{A.create(),A.create()});
-                       t.setF18(new 
ArrayList<A>(){{add(A.create());add(A.create());}});
+                       t.setF18(new 
AList<A>(){{add(A.create());add(A.create());}});
                        t.setF19(new A[][]{{A.create()},{A.create()}});
-                       t.setF20(new 
ArrayList<List<A>>(){{add(Arrays.asList(A.create()));add(Arrays.asList(A.create()));}});
+                       t.setF20(new 
AList<List<A>>().append(Arrays.asList(A.create())).append(Arrays.asList(A.create())));
                        return t;
                }
        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4f26c881/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/InterfaceProxyTest.java
----------------------------------------------------------------------
diff --git 
a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/InterfaceProxyTest.java
 
b/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/InterfaceProxyTest.java
index 74b59c6..d1312c6 100644
--- 
a/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/InterfaceProxyTest.java
+++ 
b/juneau-rest-test/src/test/java/org/apache/juneau/rest/test/InterfaceProxyTest.java
@@ -25,13 +25,13 @@ import org.apache.juneau.rest.test.InterfaceProxy.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.uon.*;
 import org.apache.juneau.urlencoding.*;
+import org.apache.juneau.utils.*;
 import org.apache.juneau.xml.*;
 import org.junit.*;
 import org.junit.runner.*;
 import org.junit.runners.*;
 
 @RunWith(Parameterized.class)
-@SuppressWarnings("serial")
 public class InterfaceProxyTest extends RestTestcase {
 
        @Parameterized.Parameters
@@ -106,14 +106,97 @@ public class InterfaceProxyTest extends RestTestcase {
        }
 
        @Test
+       public void returnInt2dArray() {
+               assertObjectEquals("[[1,2]]", getProxy().returnInt2dArray());
+       }
+
+       @Test
+       public void returnInt3dArray() {
+               assertObjectEquals("[[[1,2]]]", getProxy().returnInt3dArray());
+       }
+
+       @Test
+       public void returnIntegerArray() {
+               assertObjectEquals("[1,null]", getProxy().returnIntegerArray());
+       }
+
+       @Test
+       public void returnInteger2dArray() {
+               assertObjectEquals("[[1,null]]", 
getProxy().returnInteger2dArray());
+       }
+
+       @Test
+       public void returnInteger3dArray() {
+               assertObjectEquals("[[[1,null]]]", 
getProxy().returnInteger3dArray());
+       }
+
+       @Test
        public void returnStringArray() {
                assertObjectEquals("['foo','bar',null]", 
getProxy().returnStringArray());
        }
 
        @Test
+       public void returnString2dArray() {
+               assertObjectEquals("[['foo','bar',null]]", 
getProxy().returnString2dArray());
+       }
+
+       @Test
+       public void returnString3dArray() {
+               assertObjectEquals("[[['foo','bar',null]]]", 
getProxy().returnString3dArray());
+       }
+
+       @Test
        public void returnIntegerList() {
-               assertObjectEquals("[1,2]", getProxy().returnIntegerList());
-               assertTrue(getProxy().returnIntegerList().get(0) instanceof 
Integer);
+               assertObjectEquals("[1,null]", getProxy().returnIntegerList());
+               assertEquals(Integer.class, 
getProxy().returnIntegerList().get(0).getClass());
+       }
+
+       @Test
+       public void returnInteger2dList() {
+               assertObjectEquals("[[1,null]]", 
getProxy().returnInteger2dList());
+               assertEquals(Integer.class, 
getProxy().returnInteger2dList().get(0).get(0).getClass());
+       }
+
+       @Test
+       public void returnInteger3dList() {
+               assertObjectEquals("[[[1,null]]]", 
getProxy().returnInteger3dList());
+               assertEquals(Integer.class, 
getProxy().returnInteger3dList().get(0).get(0).get(0).getClass());
+       }
+
+       @Test
+       public void returnInteger1d1dList() {
+               assertObjectEquals("[[1,null],null]", 
getProxy().returnInteger1d1dList());
+               assertEquals(Integer.class, 
getProxy().returnInteger1d1dList().get(0)[0].getClass());
+       }
+
+       @Test
+       public void returnInteger1d2dList() {
+               assertObjectEquals("[[[1,null],null],null]", 
getProxy().returnInteger1d2dList());
+               assertEquals(Integer.class, 
getProxy().returnInteger1d2dList().get(0)[0][0].getClass());
+       }
+
+       @Test
+       public void returnInteger1d3dList() {
+               assertObjectEquals("[[[[1,null],null],null],null]", 
getProxy().returnInteger1d3dList());
+               assertEquals(Integer.class, 
getProxy().returnInteger1d3dList().get(0)[0][0][0].getClass());
+       }
+
+       @Test
+       public void returnInt1d1dList() {
+               assertObjectEquals("[[1,2],null]", 
getProxy().returnInt1d1dList());
+               assertEquals(int[].class, 
getProxy().returnInt1d1dList().get(0).getClass());
+       }
+
+       @Test
+       public void returnInt1d2dList() {
+               assertObjectEquals("[[[1,2],null],null]", 
getProxy().returnInt1d2dList());
+               assertEquals(int[][].class, 
getProxy().returnInt1d2dList().get(0).getClass());
+       }
+
+       @Test
+       public void returnInt1d3dList() {
+               assertObjectEquals("[[[[1,2],null],null],null]", 
getProxy().returnInt1d3dList());
+               assertEquals(int[][][].class, 
getProxy().returnInt1d3dList().get(0).getClass());
        }
 
        @Test
@@ -125,38 +208,38 @@ public class InterfaceProxyTest extends RestTestcase {
        @Test
        public void returnBean() {
                assertObjectEquals("{a:1,b:'foo'}", getProxy().returnBean());
-               assertClass(InterfaceProxy.Bean.class, getProxy().returnBean());
+               assertEquals(InterfaceProxy.Bean.class, 
getProxy().returnBean().getClass());
        }
 
        @Test
        public void returnBeanArray() {
                assertObjectEquals("[{a:1,b:'foo'}]", 
getProxy().returnBeanArray());
-               assertClass(InterfaceProxy.Bean.class, 
getProxy().returnBeanArray()[0]);
+               assertEquals(InterfaceProxy.Bean.class, 
getProxy().returnBeanArray()[0].getClass());
        }
 
        @Test
        public void returnBeanList() {
                assertObjectEquals("[{a:1,b:'foo'}]", 
getProxy().returnBeanList());
-               assertClass(InterfaceProxy.Bean.class, 
getProxy().returnBeanList().get(0));
+               assertEquals(InterfaceProxy.Bean.class, 
getProxy().returnBeanList().get(0).getClass());
        }
 
        @Test
        public void returnBeanMap() {
                assertObjectEquals("{foo:{a:1,b:'foo'}}", 
getProxy().returnBeanMap());
-               assertClass(InterfaceProxy.Bean.class, 
getProxy().returnBeanMap().get("foo"));
+               assertEquals(InterfaceProxy.Bean.class, 
getProxy().returnBeanMap().get("foo").getClass());
        }
 
        @Test
        public void returnBeanListMap() {
                assertObjectEquals("{foo:[{a:1,b:'foo'}]}", 
getProxy().returnBeanListMap());
-               assertClass(InterfaceProxy.Bean.class, 
getProxy().returnBeanListMap().get("foo").get(0));
+               assertEquals(InterfaceProxy.Bean.class, 
getProxy().returnBeanListMap().get("foo").get(0).getClass());
        }
 
        @Test
        public void returnBeanListMapIntegerKeys() {
                // Note: JsonSerializer serializes key as string.
                assertObjectEquals("{'1':[{a:1,b:'foo'}]}", 
getProxy().returnBeanListMapIntegerKeys());
-               assertClass(Integer.class, 
getProxy().returnBeanListMapIntegerKeys().keySet().iterator().next());
+               assertEquals(Integer.class, 
getProxy().returnBeanListMapIntegerKeys().keySet().iterator().next().getClass());
        }
 
        @Test
@@ -244,13 +327,109 @@ public class InterfaceProxyTest extends RestTestcase {
        }
 
        @Test
+       public void setInt2dArray() {
+               getProxy().setInt2dArray(new int[][]{{1,2}});
+       }
+
+       @Test
+       public void setInt3dArray() {
+               getProxy().setInt3dArray(new int[][][]{{{1,2}}});
+       }
+
+       @Test
+       public void setIntegerArray() {
+               getProxy().setIntegerArray(new Integer[]{1,null});
+       }
+
+       @Test
+       public void setInteger2dArray() {
+               getProxy().setInteger2dArray(new Integer[][]{{1,null}});
+       }
+
+       @Test
+       public void setInteger3dArray() {
+               getProxy().setInteger3dArray(new Integer[][][]{{{1,null}}});
+       }
+
+       @Test
        public void setStringArray() {
                getProxy().setStringArray(new String[]{"foo","bar",null});
        }
 
        @Test
+       public void setString2dArray() {
+               getProxy().setString2dArray(new String[][]{{"foo","bar",null}});
+       }
+
+       @Test
+       public void setString3dArray() {
+               getProxy().setString3dArray(new 
String[][][]{{{"foo","bar",null}}});
+       }
+
+       @Test
        public void setIntegerList() {
-               getProxy().setIntegerList(Arrays.asList(new 
Integer[]{1,2,null}));
+               getProxy().setIntegerList(new 
AList<Integer>().append(1).append(null));
+       }
+
+       @Test
+       public void setInteger2dList() {
+               getProxy().setInteger2dList(
+                       new AList<List<Integer>>()
+                       .append(new AList<Integer>().append(1).append(null))
+               );
+       }
+
+       @Test
+       public void setInteger3dList() {
+               getProxy().setInteger3dList(
+                       new AList<List<List<Integer>>>()
+                       .append(
+                               new AList<List<Integer>>()
+                               .append(new 
AList<Integer>().append(1).append(null))
+                       )
+               );
+       }
+
+       @Test
+       public void setInteger1d1dList() {
+               getProxy().setInteger1d1dList(
+                       new AList<Integer[]>().append(new 
Integer[]{1,null}).append(null)
+               );
+       }
+
+       @Test
+       public void setInteger1d2dList() {
+               getProxy().setInteger1d2dList(
+                       new AList<Integer[][]>().append(new 
Integer[][]{{1,null},null}).append(null)
+               );
+       }
+
+       @Test
+       public void setInteger1d3dList() {
+               getProxy().setInteger1d3dList(
+                       new AList<Integer[][][]>().append(new 
Integer[][][]{{{1,null},null},null}).append(null)
+               );
+       }
+
+       @Test
+       public void setInt1d1dList() {
+               getProxy().setInt1d1dList(
+                       new AList<int[]>().append(new int[]{1,2}).append(null)
+               );
+       }
+
+       @Test
+       public void setInt1d2dList() {
+               getProxy().setInt1d2dList(
+                       new AList<int[][]>().append(new 
int[][]{{1,2},null}).append(null)
+               );
+       }
+
+       @Test
+       public void setInt1d3dList() {
+               getProxy().setInt1d3dList(
+                       new AList<int[][][]>().append(new 
int[][][]{{{1,2},null},null}).append(null)
+               );
        }
 
        @Test
@@ -275,16 +454,16 @@ public class InterfaceProxyTest extends RestTestcase {
 
        @Test
        public void setBeanMap() {
-               getProxy().setBeanMap(new HashMap<String,Bean>(){{put("foo",new 
Bean().init());}});
+               getProxy().setBeanMap(new AMap<String,Bean>().append("foo",new 
Bean().init()));
        }
 
        @Test
        public void setBeanListMap() {
-               getProxy().setBeanListMap(new 
HashMap<String,List<Bean>>(){{put("foo",Arrays.asList(new Bean().init()));}});
+               getProxy().setBeanListMap(new 
AMap<String,List<Bean>>().append("foo",Arrays.asList(new Bean().init())));
        }
 
        @Test
        public void setBeanListMapIntegerKeys() {
-               getProxy().setBeanListMapIntegerKeys(new 
HashMap<Integer,List<Bean>>(){{put(1,Arrays.asList(new Bean().init()));}});
+               getProxy().setBeanListMapIntegerKeys(new 
AMap<Integer,List<Bean>>().append(1,Arrays.asList(new Bean().init())));
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4f26c881/juneau-rest/src/main/java/org/apache/juneau/rest/RestContext.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestContext.java 
b/juneau-rest/src/main/java/org/apache/juneau/rest/RestContext.java
index f1e0228..ae3aa22 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestContext.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestContext.java
@@ -441,7 +441,7 @@ public final class RestContext extends Context {
                                                                                
                        throw e;
                                                                                
                } catch (Exception e) {
                                                                                
                        res.setHeader("Exception-Name", e.getClass().getName());
-                                                                               
                        res.setHeader("Exception-Message", 
e.getCause().getMessage());
+                                                                               
                        res.setHeader("Exception-Message", e.getMessage());
                                                                                
                        throw e;
                                                                                
                }
                                                                                
                res.setOutput(output);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/4f26c881/juneau-rest/src/main/java/org/apache/juneau/rest/RestUtils.java
----------------------------------------------------------------------
diff --git a/juneau-rest/src/main/java/org/apache/juneau/rest/RestUtils.java 
b/juneau-rest/src/main/java/org/apache/juneau/rest/RestUtils.java
index 713da69..a4291a0 100644
--- a/juneau-rest/src/main/java/org/apache/juneau/rest/RestUtils.java
+++ b/juneau-rest/src/main/java/org/apache/juneau/rest/RestUtils.java
@@ -19,6 +19,7 @@ import java.util.*;
 import javax.servlet.http.*;
 
 import org.apache.juneau.internal.*;
+import org.apache.juneau.utils.*;
 
 /**
  * Various reusable utility methods.
@@ -35,45 +36,44 @@ public final class RestUtils {
                return httpMsgs.get(rc);
        }
 
-       @SuppressWarnings("serial")
-       private static Map<Integer,String> httpMsgs = new 
HashMap<Integer,String>() {{
-               put(200, "OK");
-               put(201, "Created");
-               put(202, "Accepted");
-               put(203, "Non-Authoritative Information");
-               put(204, "No Content");
-               put(205, "Reset Content");
-               put(206, "Partial Content");
-               put(300, "Multiple Choices");
-               put(301, "Moved Permanently");
-               put(302, "Temporary Redirect");
-               put(303, "See Other");
-               put(304, "Not Modified");
-               put(305, "Use Proxy");
-               put(307, "Temporary Redirect");
-               put(400, "Bad Request");
-               put(401, "Unauthorized");
-               put(402, "Payment Required");
-               put(403, "Forbidden");
-               put(404, "Not Found");
-               put(405, "Method Not Allowed");
-               put(406, "Not Acceptable");
-               put(407, "Proxy Authentication Required");
-               put(408, "Request Time-Out");
-               put(409, "Conflict");
-               put(410, "Gone");
-               put(411, "Length Required");
-               put(412, "Precondition Failed");
-               put(413, "Request Entity Too Large");
-               put(414, "Request-URI Too Large");
-               put(415, "Unsupported Media Type");
-               put(500, "Internal Server Error");
-               put(501, "Not Implemented");
-               put(502, "Bad Gateway");
-               put(503, "Service Unavailable");
-               put(504, "Gateway Timeout");
-               put(505, "HTTP Version Not Supported");
-       }};
+       private static Map<Integer,String> httpMsgs = new AMap<Integer,String>()
+               .append(200, "OK")
+               .append(201, "Created")
+               .append(202, "Accepted")
+               .append(203, "Non-Authoritative Information")
+               .append(204, "No Content")
+               .append(205, "Reset Content")
+               .append(206, "Partial Content")
+               .append(300, "Multiple Choices")
+               .append(301, "Moved Permanently")
+               .append(302, "Temporary Redirect")
+               .append(303, "See Other")
+               .append(304, "Not Modified")
+               .append(305, "Use Proxy")
+               .append(307, "Temporary Redirect")
+               .append(400, "Bad Request")
+               .append(401, "Unauthorized")
+               .append(402, "Payment Required")
+               .append(403, "Forbidden")
+               .append(404, "Not Found")
+               .append(405, "Method Not Allowed")
+               .append(406, "Not Acceptable")
+               .append(407, "Proxy Authentication Required")
+               .append(408, "Request Time-Out")
+               .append(409, "Conflict")
+               .append(410, "Gone")
+               .append(411, "Length Required")
+               .append(412, "Precondition Failed")
+               .append(413, "Request Entity Too Large")
+               .append(414, "Request-URI Too Large")
+               .append(415, "Unsupported Media Type")
+               .append(500, "Internal Server Error")
+               .append(501, "Not Implemented")
+               .append(502, "Bad Gateway")
+               .append(503, "Service Unavailable")
+               .append(504, "Gateway Timeout")
+               .append(505, "HTTP Version Not Supported")
+       ;
 
        /**
         * Trims <js>'/'</js> characters from both the start and end of the 
specified string.

Reply via email to