You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@juneau.apache.org by ja...@apache.org on 2017/03/28 16:59:17 UTC

incubator-juneau git commit: Bug fixes in interface proxy support.

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 <ja...@apache.org>
Authored: Tue Mar 28 12:59:14 2017 -0400
Committer: JamesBognar <ja...@apache.org>
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}));
+	}
 }