Repository: incubator-juneau
Updated Branches:
  refs/heads/master 8591ef182 -> b58e236ab


Bug fixes in interface proxy support.

Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/b58e236a
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/b58e236a
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/b58e236a

Branch: refs/heads/master
Commit: b58e236ab53ba5e8154e3df166dad9ebc548613d
Parents: 8591ef1
Author: JamesBognar <[email protected]>
Authored: Tue Mar 28 12:59:14 2017 -0400
Committer: JamesBognar <[email protected]>
Committed: Tue Mar 28 12:59:14 2017 -0400

----------------------------------------------------------------------
 .../org/apache/juneau/html/HtmlSerializer.java  | 14 +++++++---
 .../apache/juneau/rest/test/InterfaceProxy.java |  6 ++++-
 .../rest/test/InterfaceProxyResource.java       | 22 +++++++++++++++
 .../juneau/rest/test/InterfaceProxyTest.java    | 28 ++++++++++++++++++++
 4 files changed, 65 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/b58e236a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java 
b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
index 0f79e8e..a4d8c7d 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
@@ -390,7 +390,7 @@ public class HtmlSerializer extends XmlSerializer {
                                out.i(i+2);
                        out.eTag("td").nl();
                        out.sTag(i+2, "td");
-                       cr = serializeAnything(session, out, value, valueType, 
(key == null ? "_x0000_" : key.toString()), 2, null, false);
+                       cr = serializeAnything(session, out, value, valueType, 
(key == null ? "_x0000_" : session.toString(key)), 2, null, false);
                        if (cr == CR_NORMAL)
                                out.i(i+2);
                        out.eTag("td").nl();
@@ -485,8 +485,11 @@ public class HtmlSerializer extends XmlSerializer {
 
                        out.oTag(i, "table").attr(btpn, type2).append('>').nl();
                        out.sTag(i+1, "tr").nl();
-                       for (Object key : th)
-                               out.sTag(i+2, "th").append(key).eTag("th").nl();
+                       for (Object key : th) {
+                               out.sTag(i+2, "th");
+                               out.text(session.convertToType(key, 
String.class));
+                               out.eTag("th").nl();
+                       }
                        out.eTag(i+1, "tr").nl();
 
                        for (Object o : c) {
@@ -565,7 +568,6 @@ public class HtmlSerializer extends XmlSerializer {
                        return null;
                c = session.sort(c);
                Object[] th;
-               Set<Object> s = new TreeSet<Object>();
                Set<ClassMeta> prevC = new HashSet<ClassMeta>();
                Object o1 = null;
                for (Object o : c)
@@ -622,6 +624,10 @@ public class HtmlSerializer extends XmlSerializer {
                        th = set.toArray(new Object[set.size()]);
                }
                prevC.add(cm);
+               boolean isSortable = true;
+               for (Object o : th)
+                       isSortable &= (o instanceof Comparable);
+               Set<Object> s = (isSortable ? new TreeSet<Object>() : new 
LinkedHashSet<Object>());
                s.addAll(Arrays.asList(th));
 
                for (Object o : c) {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/b58e236a/juneau-rest-test/src/main/java/org/apache/juneau/rest/test/InterfaceProxy.java
----------------------------------------------------------------------
diff --git 
a/juneau-rest-test/src/main/java/org/apache/juneau/rest/test/InterfaceProxy.java
 
b/juneau-rest-test/src/main/java/org/apache/juneau/rest/test/InterfaceProxy.java
index 38f8aa3..7420516 100644
--- 
a/juneau-rest-test/src/main/java/org/apache/juneau/rest/test/InterfaceProxy.java
+++ 
b/juneau-rest-test/src/main/java/org/apache/juneau/rest/test/InterfaceProxy.java
@@ -54,6 +54,8 @@ public interface InterfaceProxy {
        Map<Integer,List<Bean>> returnBeanListMapIntegerKeys();
        SwappedPojo returnSwappedPojo();
        SwappedPojo[][][] returnSwappedPojo3dArray();
+       Map<SwappedPojo,SwappedPojo> returnSwappedPojoMap();
+       Map<SwappedPojo,SwappedPojo[][][]> returnSwappedPojo3dMap();
 
        
//--------------------------------------------------------------------------------
        // Test server-side exception serialization.
@@ -91,6 +93,8 @@ public interface InterfaceProxy {
        void setBeanListMapIntegerKeys(Map<Integer,List<Bean>> x);
        void setSwappedPojo(SwappedPojo x);
        void setSwappedPojo3dArray(SwappedPojo[][][] x);
+       void setSwappedPojoMap(Map<SwappedPojo,SwappedPojo> x);
+       void setSwappedPojo3dMap(Map<SwappedPojo,SwappedPojo[][][]> x);
 
        public static class Bean {
                public int a;
@@ -122,7 +126,7 @@ public interface InterfaceProxy {
        public static class SwappedPojoSwap extends 
PojoSwap<SwappedPojo,String> {
                @Override
                public String swap(BeanSession session, SwappedPojo c) throws 
SerializeException {
-                       return "[{(<swapped>)}]";
+                       return "[{(<swapped>)}]";  // Use special characters.
                }
 
                @Override

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/b58e236a/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 cf4132e..f8f56e2 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
@@ -147,6 +147,14 @@ public class InterfaceProxyResource extends 
RestServletJenaDefault {
                                return new SwappedPojo[][][]{{{new 
SwappedPojo(),null},null},null};
                        }
                        @Override
+                       public Map<SwappedPojo,SwappedPojo> 
returnSwappedPojoMap() {
+                               return new 
AMap<SwappedPojo,SwappedPojo>().append(new SwappedPojo(), new SwappedPojo());
+                       }
+                       @Override
+                       public Map<SwappedPojo,SwappedPojo[][][]> 
returnSwappedPojo3dMap() {
+                               return new 
AMap<SwappedPojo,SwappedPojo[][][]>().append(new SwappedPojo(), new 
SwappedPojo[][][]{{{new SwappedPojo(),null},null},null});
+                       }
+                       @Override
                        public void throwException1() throws 
InterfaceProxy.InterfaceProxyException1 {
                                throw new 
InterfaceProxy.InterfaceProxyException1("foo");
                        }
@@ -269,6 +277,20 @@ public class InterfaceProxyResource extends 
RestServletJenaDefault {
                                
assertObjectEquals("[[['[{(<swapped>)}]',null],null],null]", x);
                                assertTrue(x[0][0][0].wasUnswapped);
                        }
+                       @Override
+                       public void 
setSwappedPojoMap(Map<SwappedPojo,SwappedPojo> x) {
+                               
assertObjectEquals("{'[{(<swapped>)}]':'[{(<swapped>)}]'}", x);
+                               Map.Entry<SwappedPojo,SwappedPojo> e = 
x.entrySet().iterator().next();
+                               assertTrue(e.getKey().wasUnswapped);
+                               assertTrue(e.getValue().wasUnswapped);
+                       }
+                       @Override
+                       public void 
setSwappedPojo3dMap(Map<SwappedPojo,SwappedPojo[][][]> x) {
+                               
assertObjectEquals("{'[{(<swapped>)}]':[[['[{(<swapped>)}]',null],null],null]}",
 x);
+                               Map.Entry<SwappedPojo,SwappedPojo[][][]> e = 
x.entrySet().iterator().next();
+                               assertTrue(e.getKey().wasUnswapped);
+                               assertTrue(e.getValue()[0][0][0].wasUnswapped);
+                       }
                };
        }
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/b58e236a/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 c4c0299..11a7fe0 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
@@ -220,6 +220,24 @@ public class InterfaceProxyTest extends RestTestcase {
        }
 
        @Test
+       public void returnSwappedPojoMap() {
+               Map<SwappedPojo,SwappedPojo> x = 
getProxy().returnSwappedPojoMap();
+               assertObjectEquals("{'[{(<swapped>)}]':'[{(<swapped>)}]'}", x);
+               Map.Entry<SwappedPojo,SwappedPojo> e = 
x.entrySet().iterator().next();
+               assertTrue(e.getKey().wasUnswapped);
+               assertTrue(e.getValue().wasUnswapped);
+       }
+
+       @Test
+       public void returnSwappedPojo3dMap() {
+               Map<SwappedPojo,SwappedPojo[][][]> x = 
getProxy().returnSwappedPojo3dMap();
+               
assertObjectEquals("{'[{(<swapped>)}]':[[['[{(<swapped>)}]',null],null],null]}",
 x);
+               Map.Entry<SwappedPojo,SwappedPojo[][][]> e = 
x.entrySet().iterator().next();
+               assertTrue(e.getKey().wasUnswapped);
+               assertTrue(e.getValue()[0][0][0].wasUnswapped);
+       }
+
+       @Test
        public void throwException1() {
                try {
                        getProxy().throwException1();
@@ -390,4 +408,14 @@ public class InterfaceProxyTest extends RestTestcase {
        public void setSwappedPojo3dArray() {
                getProxy().setSwappedPojo3dArray(new SwappedPojo[][][]{{{new 
SwappedPojo(),null},null},null});
        }
+
+       @Test
+       public void setSwappedPojoMap() {
+               getProxy().setSwappedPojoMap(new 
AMap<SwappedPojo,SwappedPojo>().append(new SwappedPojo(), new SwappedPojo()));
+       }
+
+       @Test
+       public void setSwappedPojo3dMap() {
+               getProxy().setSwappedPojo3dMap(new 
AMap<SwappedPojo,SwappedPojo[][][]>().append(new SwappedPojo(), new 
SwappedPojo[][][]{{{new SwappedPojo(),null},null},null}));
+       }
 }

Reply via email to