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})); + } }
