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/04/03 15:18:44 UTC

incubator-juneau git commit: Bug fixes and tests.

Repository: incubator-juneau
Updated Branches:
  refs/heads/master 4d73a6368 -> 1321591d3


Bug fixes and tests.

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

Branch: refs/heads/master
Commit: 1321591d30c1a361a52769d38ef85ebc70a7da10
Parents: 4d73a63
Author: JamesBognar <ja...@apache.org>
Authored: Mon Apr 3 11:18:46 2017 -0400
Committer: JamesBognar <ja...@apache.org>
Committed: Mon Apr 3 11:18:46 2017 -0400

----------------------------------------------------------------------
 .../org/apache/juneau/html/BasicHtmlTest.java   |  38 +--
 .../transforms/BeanDictionaryComboTest.java     | 246 +++++++++++++++++++
 .../java/org/apache/juneau/html/HtmlParser.java |   4 +-
 .../org/apache/juneau/html/HtmlSerializer.java  |   9 +-
 4 files changed, 272 insertions(+), 25 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1321591d/juneau-core-test/src/test/java/org/apache/juneau/html/BasicHtmlTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/html/BasicHtmlTest.java b/juneau-core-test/src/test/java/org/apache/juneau/html/BasicHtmlTest.java
index e6fec70..2cf1fcd 100644
--- a/juneau-core-test/src/test/java/org/apache/juneau/html/BasicHtmlTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/html/BasicHtmlTest.java
@@ -512,11 +512,11 @@ public class BasicHtmlTest {
 					+"<tr>"
 						+"<td>b2</td>"
 						+"<td>"
-							+"<table _type='B^'>"
+							+"<table _type='array'>"
 								+"<tr>"
 									+"<th>b</th>"
 								+"</tr>"
-								+"<tr>"
+								+"<tr _type='B'>"
 									+"<td>foo</td>"
 								+"</tr>"
 							+"</table>"
@@ -553,11 +553,11 @@ public class BasicHtmlTest {
 					+"\t<tr>\n"
 						+"\t\t<td>b2</td>\n"
 						+"\t\t<td>\n"
-							+"\t\t\t<table _type='B^'>\n"
+							+"\t\t\t<table _type='array'>\n"
 								+"\t\t\t\t<tr>\n"
 									+"\t\t\t\t\t<th>b</th>\n"
 								+"\t\t\t\t</tr>\n"
-								+"\t\t\t\t<tr>\n"
+								+"\t\t\t\t<tr _type='B'>\n"
 									+"\t\t\t\t\t<td>foo</td>\n"
 								+"\t\t\t\t</tr>\n"
 							+"\t\t\t</table>\n"
@@ -579,7 +579,7 @@ public class BasicHtmlTest {
 				+"</table>\n",
 			},
 			{
-				"BeanWithPropertiesWithArrayTypeNames",
+				"BeanWithPropertiesWith2dArrayTypeNames",
 				new BeanWithPropertiesWith2dArrayTypeNames().init(),
 				"<table>"
 					+"<tr>"
@@ -602,7 +602,7 @@ public class BasicHtmlTest {
 					+"<tr>"
 						+"<td>b2</td>"
 						+"<td>"
-								+"<ul _type='B^^'>"
+								+"<ul>"
 									+"<li>"
 										+"<table _type='array'>"
 											+"<tr>"
@@ -655,7 +655,7 @@ public class BasicHtmlTest {
 					+"\t<tr>\n"
 						+"\t\t<td>b2</td>\n"
 						+"\t\t<td>\n"
-							+"\t\t\t<ul _type='B^^'>\n"
+							+"\t\t\t<ul>\n"
 								+"\t\t\t\t<li>\n"
 									+"\t\t\t\t\t<table _type='array'>\n"
 										+"\t\t\t\t\t\t<tr>\n"
@@ -979,11 +979,11 @@ public class BasicHtmlTest {
 					+"<tr>"
 						+"<td>ia1</td>"
 						+"<td>"
-							+"<table _type='A^'>"
+							+"<table _type='array'>"
 								+"<tr>"
 									+"<th>a</th>"
 								+"</tr>"
-								+"<tr>"
+								+"<tr _type='A'>"
 									+"<td>foo</td>"
 								+"</tr>"
 							+"</table>"
@@ -1005,11 +1005,11 @@ public class BasicHtmlTest {
 					+"<tr>"
 						+"<td>aa1</td>"
 						+"<td>"
-							+"<table _type='A^'>"
+							+"<table _type='array'>"
 								+"<tr>"
 									+"<th>a</th>"
 								+"</tr>"
-								+"<tr>"
+								+"<tr _type='A'>"
 									+"<td>foo</td>"
 								+"</tr>"
 							+"</table>"
@@ -1031,11 +1031,11 @@ public class BasicHtmlTest {
 					+"<tr>"
 						+"<td>o1</td>"
 						+"<td>"
-							+"<table _type='A^'>"
+							+"<table _type='array'>"
 								+"<tr>"
 									+"<th>a</th>"
 								+"</tr>"
-								+"<tr>"
+								+"<tr _type='A'>"
 									+"<td>foo</td>"
 								+"</tr>"
 							+"</table>"
@@ -1072,11 +1072,11 @@ public class BasicHtmlTest {
 					+"\t<tr>\n"
 						+"\t\t<td>ia1</td>\n"
 						+"\t\t<td>\n"
-							+"\t\t\t<table _type='A^'>\n"
+							+"\t\t\t<table _type='array'>\n"
 								+"\t\t\t\t<tr>\n"
 									+"\t\t\t\t\t<th>a</th>\n"
 								+"\t\t\t\t</tr>\n"
-								+"\t\t\t\t<tr>\n"
+								+"\t\t\t\t<tr _type='A'>\n"
 									+"\t\t\t\t\t<td>foo</td>\n"
 								+"\t\t\t\t</tr>\n"
 							+"\t\t\t</table>\n"
@@ -1098,11 +1098,11 @@ public class BasicHtmlTest {
 					+"\t<tr>\n"
 						+"\t\t<td>aa1</td>\n"
 						+"\t\t<td>\n"
-							+"\t\t\t<table _type='A^'>\n"
+							+"\t\t\t<table _type='array'>\n"
 								+"\t\t\t\t<tr>\n"
 									+"\t\t\t\t\t<th>a</th>\n"
 								+"\t\t\t\t</tr>\n"
-								+"\t\t\t\t<tr>\n"
+								+"\t\t\t\t<tr _type='A'>\n"
 									+"\t\t\t\t\t<td>foo</td>\n"
 								+"\t\t\t\t</tr>\n"
 							+"\t\t\t</table>\n"
@@ -1124,11 +1124,11 @@ public class BasicHtmlTest {
 					+"\t<tr>\n"
 						+"\t\t<td>o1</td>\n"
 						+"\t\t<td>\n"
-							+"\t\t\t<table _type='A^'>\n"
+							+"\t\t\t<table _type='array'>\n"
 								+"\t\t\t\t<tr>\n"
 									+"\t\t\t\t\t<th>a</th>\n"
 								+"\t\t\t\t</tr>\n"
-								+"\t\t\t\t<tr>\n"
+								+"\t\t\t\t<tr _type='A'>\n"
 									+"\t\t\t\t\t<td>foo</td>\n"
 								+"\t\t\t\t</tr>\n"
 							+"\t\t\t</table>\n"

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1321591d/juneau-core-test/src/test/java/org/apache/juneau/transforms/BeanDictionaryComboTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/transforms/BeanDictionaryComboTest.java b/juneau-core-test/src/test/java/org/apache/juneau/transforms/BeanDictionaryComboTest.java
new file mode 100644
index 0000000..5ccd899
--- /dev/null
+++ b/juneau-core-test/src/test/java/org/apache/juneau/transforms/BeanDictionaryComboTest.java
@@ -0,0 +1,246 @@
+// ***************************************************************************************************************************
+// * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file *
+// * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file        *
+// * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance            *
+// * with the License.  You may obtain a copy of the License at                                                              *
+// *                                                                                                                         *
+// *  http://www.apache.org/licenses/LICENSE-2.0                                                                             *
+// *                                                                                                                         *
+// * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an  *
+// * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the        *
+// * specific language governing permissions and limitations under the License.                                              *
+// ***************************************************************************************************************************
+package org.apache.juneau.transforms;
+
+import java.util.*;
+
+import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
+import org.apache.juneau.parser.*;
+import org.apache.juneau.serializer.*;
+import org.junit.runner.*;
+import org.junit.runners.*;
+
+/**
+ * Exhaustive serialization tests for the CalendarSwap class.
+ */
+@RunWith(Parameterized.class)
+@SuppressWarnings({"javadoc"})
+public class BeanDictionaryComboTest extends ComboTest {
+
+	@Parameterized.Parameters
+	public static Collection<Object[]> getParameters() {
+		return Arrays.asList(new Object[][] {
+			{ 	/* 0 */
+				"A",
+				new A().init(),
+				/* Json */		"{_type:'A',a:1}",
+				/* JsonT */		"{t:'A',a:1}",
+				/* JsonR */		"{\n\t_type: 'A',\n\ta: 1\n}",
+				/* Xml */		"<A><a>1</a></A>",
+				/* XmlT */		"<A><a>1</a></A>",
+				/* XmlR */		"<A>\n\t<a>1</a>\n</A>\n",
+				/* XmlNs */		"<A><a>1</a></A>",
+				/* Html */		"<table _type='A'><tr><td>a</td><td>1</td></tr></table>",
+				/* HtmlT */		"<table t='A'><tr><td>a</td><td>1</td></tr></table>",
+				/* HtmlR */		"<table _type='A'>\n\t<tr>\n\t\t<td>a</td>\n\t\t<td>1</td>\n\t</tr>\n</table>\n",
+				/* Uon */		"(_type=A,a=1)",
+				/* UonT */		"(t=A,a=1)",
+				/* UonR */		"(\n\t_type=A,\n\ta=1\n)",
+				/* UrlEnc */	"_type=A&a=1",
+				/* UrlEncT */	"t=A&a=1",
+				/* UrlEncR */	"_type=A\n&a=1",
+				/* MsgPack */	"82A55F74797065A141A16101",
+				/* MsgPackT */	"82A174A141A16101",
+				/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:_type>A</jp:_type>\n<jp:a>1</jp:a>\n</rdf:Description>\n</rdf:RDF>\n",
+				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:t>A</jp:t>\n<jp:a>1</jp:a>\n</rdf:Description>\n</rdf:RDF>\n",
+				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:_type>A</jp:_type>\n    <jp:a>1</jp:a>\n  </rdf:Description>\n</rdf:RDF>\n",
+			},
+			{
+				"A[]",
+				new A[]{new A().init()},
+				/* Json */		"[{_type:'A',a:1}]",
+				/* JsonT */		"[{t:'A',a:1}]",
+				/* JsonR */		"[\n\t{\n\t\t_type: 'A',\n\t\ta: 1\n\t}\n]",
+				/* Xml */		"<array _type='A^'><A><a>1</a></A></array>",
+				/* XmlT */		"<array t='A^'><A><a>1</a></A></array>",
+				/* XmlR */		"<array _type='A^'>\n\t<A>\n\t\t<a>1</a>\n\t</A>\n</array>\n",
+				/* XmlNs */		"<array _type='A^'><A><a>1</a></A></array>",
+				/* Html */		"<table _type='array'><tr><th>a</th></tr><tr _type='A'><td>1</td></tr></table>",
+				/* HtmlT */		"<table t='array'><tr><th>a</th></tr><tr t='A'><td>1</td></tr></table>",
+				/* HtmlR */		"<table _type='array'>\n\t<tr>\n\t\t<th>a</th>\n\t</tr>\n\t<tr _type='A'>\n\t\t<td>1</td>\n\t</tr>\n</table>\n",
+				/* Uon */		"@((_type=A,a=1))",
+				/* UonT */		"@((t=A,a=1))",
+				/* UonR */		"@(\n\t(\n\t\t_type=A,\n\t\ta=1\n\t)\n)",
+				/* UrlEnc */	"0=(_type=A,a=1)",
+				/* UrlEncT */	"0=(t=A,a=1)",
+				/* UrlEncR */	"0=(\n\t_type=A,\n\ta=1\n)",
+				/* MsgPack */	"9182A55F74797065A141A16101",
+				/* MsgPackT */	"9182A174A141A16101",
+				/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:_type>A</jp:_type>\n<jp:a>1</jp:a>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:t>A</jp:t>\n<jp:a>1</jp:a>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li rdf:parseType='Resource'>\n      <jp:_type>A</jp:_type>\n      <jp:a>1</jp:a>\n    </rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n",
+			},
+			{
+				"IA[]",
+				new IA[]{new A().init()},
+				/* Json */		"[{_type:'A',a:1}]",
+				/* JsonT */		"[{t:'A',a:1}]",
+				/* JsonR */		"[\n\t{\n\t\t_type: 'A',\n\t\ta: 1\n\t}\n]",
+				/* Xml */		"<array><A><a>1</a></A></array>",
+				/* XmlT */		"<array><A><a>1</a></A></array>",
+				/* XmlR */		"<array>\n\t<A>\n\t\t<a>1</a>\n\t</A>\n</array>\n",
+				/* XmlNs */		"<array><A><a>1</a></A></array>",
+				/* Html */		"<table _type='array'><tr><th>a</th></tr><tr _type='A'><td>1</td></tr></table>",
+				/* HtmlT */		"<table t='array'><tr><th>a</th></tr><tr t='A'><td>1</td></tr></table>",
+				/* HtmlR */		"<table _type='array'>\n\t<tr>\n\t\t<th>a</th>\n\t</tr>\n\t<tr _type='A'>\n\t\t<td>1</td>\n\t</tr>\n</table>\n",
+				/* Uon */		"@((_type=A,a=1))",
+				/* UonT */		"@((t=A,a=1))",
+				/* UonR */		"@(\n\t(\n\t\t_type=A,\n\t\ta=1\n\t)\n)",
+				/* UrlEnc */	"0=(_type=A,a=1)",
+				/* UrlEncT */	"0=(t=A,a=1)",
+				/* UrlEncR */	"0=(\n\t_type=A,\n\ta=1\n)",
+				/* MsgPack */	"9182A55F74797065A141A16101",
+				/* MsgPackT */	"9182A174A141A16101",
+				/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:_type>A</jp:_type>\n<jp:a>1</jp:a>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:t>A</jp:t>\n<jp:a>1</jp:a>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li rdf:parseType='Resource'>\n      <jp:_type>A</jp:_type>\n      <jp:a>1</jp:a>\n    </rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n",
+			},
+			{
+				"B",
+				new B().init(),
+				/* Json */		"{z:'B',b:1}",
+				/* JsonT */		"{z:'B',b:1}",
+				/* JsonR */		"{\n\tz: 'B',\n\tb: 1\n}",
+				/* Xml */		"<B><b>1</b></B>",
+				/* XmlT */		"<B><b>1</b></B>",
+				/* XmlR */		"<B>\n\t<b>1</b>\n</B>\n",
+				/* XmlNs */		"<B><b>1</b></B>",
+				/* Html */		"<table z='B'><tr><td>b</td><td>1</td></tr></table>",
+				/* HtmlT */		"<table z='B'><tr><td>b</td><td>1</td></tr></table>",
+				/* HtmlR */		"<table z='B'>\n\t<tr>\n\t\t<td>b</td>\n\t\t<td>1</td>\n\t</tr>\n</table>\n",
+				/* Uon */		"(z=B,b=1)",
+				/* UonT */		"(z=B,b=1)",
+				/* UonR */		"(\n\tz=B,\n\tb=1\n)",
+				/* UrlEnc */	"z=B&b=1",
+				/* UrlEncT */	"z=B&b=1",
+				/* UrlEncR */	"z=B\n&b=1",
+				/* MsgPack */	"82A17AA142A16201",
+				/* MsgPackT */	"82A17AA142A16201",
+				/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:z>B</jp:z>\n<jp:b>1</jp:b>\n</rdf:Description>\n</rdf:RDF>\n",
+				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:z>B</jp:z>\n<jp:b>1</jp:b>\n</rdf:Description>\n</rdf:RDF>\n",
+				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:z>B</jp:z>\n    <jp:b>1</jp:b>\n  </rdf:Description>\n</rdf:RDF>\n",
+			},
+			{
+				"B[]",
+				new B[]{new B().init()},
+				/* Json */		"[{z:'B',b:1}]",
+				/* JsonT */		"[{z:'B',b:1}]",
+				/* JsonR */		"[\n\t{\n\t\tz: 'B',\n\t\tb: 1\n\t}\n]",
+				/* Xml */		"<array _type='B^'><B><b>1</b></B></array>",
+				/* XmlT */		"<array t='B^'><B><b>1</b></B></array>",
+				/* XmlR */		"<array _type='B^'>\n\t<B>\n\t\t<b>1</b>\n\t</B>\n</array>\n",
+				/* XmlNs */		"<array _type='B^'><B><b>1</b></B></array>",
+				/* Html */		"<table _type='array'><tr><th>b</th></tr><tr z='B'><td>1</td></tr></table>",
+				/* HtmlT */		"<table t='array'><tr><th>b</th></tr><tr z='B'><td>1</td></tr></table>",
+				/* HtmlR */		"<table _type='array'>\n\t<tr>\n\t\t<th>b</th>\n\t</tr>\n\t<tr z='B'>\n\t\t<td>1</td>\n\t</tr>\n</table>\n",
+				/* Uon */		"@((z=B,b=1))",
+				/* UonT */		"@((z=B,b=1))",
+				/* UonR */		"@(\n\t(\n\t\tz=B,\n\t\tb=1\n\t)\n)",
+				/* UrlEnc */	"0=(z=B,b=1)",
+				/* UrlEncT */	"0=(z=B,b=1)",
+				/* UrlEncR */	"0=(\n\tz=B,\n\tb=1\n)",
+				/* MsgPack */	"9182A17AA142A16201",
+				/* MsgPackT */	"9182A17AA142A16201",
+				/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:z>B</jp:z>\n<jp:b>1</jp:b>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:z>B</jp:z>\n<jp:b>1</jp:b>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li rdf:parseType='Resource'>\n      <jp:z>B</jp:z>\n      <jp:b>1</jp:b>\n    </rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n",
+			},
+			{
+				"IB[]",
+				new IB[]{new B().init()},
+				/* Json */		"[{z:'B',b:1}]",
+				/* JsonT */		"[{z:'B',b:1}]",
+				/* JsonR */		"[\n\t{\n\t\tz: 'B',\n\t\tb: 1\n\t}\n]",
+				/* Xml */		"<array><B><b>1</b></B></array>",
+				/* XmlT */		"<array><B><b>1</b></B></array>",
+				/* XmlR */		"<array>\n\t<B>\n\t\t<b>1</b>\n\t</B>\n</array>\n",
+				/* XmlNs */		"<array><B><b>1</b></B></array>",
+				/* Html */		"<table _type='array'><tr><th>b</th></tr><tr z='B'><td>1</td></tr></table>",
+				/* HtmlT */		"<table t='array'><tr><th>b</th></tr><tr z='B'><td>1</td></tr></table>",
+				/* HtmlR */		"<table _type='array'>\n\t<tr>\n\t\t<th>b</th>\n\t</tr>\n\t<tr z='B'>\n\t\t<td>1</td>\n\t</tr>\n</table>\n",
+				/* Uon */		"@((z=B,b=1))",
+				/* UonT */		"@((z=B,b=1))",
+				/* UonR */		"@(\n\t(\n\t\tz=B,\n\t\tb=1\n\t)\n)",
+				/* UrlEnc */	"0=(z=B,b=1)",
+				/* UrlEncT */	"0=(z=B,b=1)",
+				/* UrlEncR */	"0=(\n\tz=B,\n\tb=1\n)",
+				/* MsgPack */	"9182A17AA142A16201",
+				/* MsgPackT */	"9182A17AA142A16201",
+				/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:z>B</jp:z>\n<jp:b>1</jp:b>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:z>B</jp:z>\n<jp:b>1</jp:b>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li rdf:parseType='Resource'>\n      <jp:z>B</jp:z>\n      <jp:b>1</jp:b>\n    </rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n",
+			},
+		});
+	}
+	
+	public BeanDictionaryComboTest(
+			String label, 
+			Object in,
+			String oJson, String oJsonT, String oJsonR,
+			String oXml, String oXmlT, String oXmlR, String oXmlNs,
+			String oHtml, String oHtmlT, String oHtmlR,
+			String oUon, String oUonT, String oUonR,
+			String oUrlEncoding, String oUrlEncodingT, String oUrlEncodingR,
+			String oMsgPack, String oMsgPackT,
+			String oRdfXml, String oRdfXmlT, String oRdfXmlR
+		) {
+		super(
+			label,
+			in, 
+			oJson, oJsonT, oJsonR,
+			oXml, oXmlT, oXmlR, oXmlNs,
+			oHtml, oHtmlT, oHtmlR,
+			oUon, oUonT, oUonR,
+			oUrlEncoding, oUrlEncodingT, oUrlEncodingR,
+			oMsgPack, oMsgPackT,
+			oRdfXml, oRdfXmlT, oRdfXmlR
+		);
+	}
+	
+	@Override
+	protected Serializer applySettings(Serializer s) throws Exception {
+		return s.builder().trimNullProperties(false).build();
+	}
+	
+	@Override
+	protected Parser applySettings(Parser p) throws Exception {
+		return p.builder().build();
+	}
+	
+	@Bean(beanDictionary={A.class})
+	public static interface IA {}
+	
+	@Bean(typeName="A")
+	public static class A implements IA {
+		public int a;
+		
+		public A init() {
+			a = 1;
+			return this;
+		}
+	}
+
+	@Bean(beanDictionary={B.class}, typePropertyName="z")
+	public static interface IB {}
+	
+	@Bean(typeName="B")
+	public static class B implements IB {
+		public int b;
+		
+		public B init() {
+			b = 1;
+			return this;
+		}
+	}
+}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1321591d/juneau-core/src/main/java/org/apache/juneau/html/HtmlParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlParser.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlParser.java
index 5e65356..bcc5bf2 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlParser.java
@@ -409,7 +409,7 @@ public class HtmlParser extends XmlParser {
 				}
 				l.add(m == null ? null : (E)m.getBean());
 			} else {
-				String c = getAttributes(r).get(session.getBeanTypePropertyName(type));
+				String c = getAttributes(r).get(session.getBeanTypePropertyName(type.getElementType()));
 				Map m = (Map)(elementType.isMap() && elementType.canCreateNewInstance(l) ? elementType.newInstance(l) : new ObjectMap(session));
 				for (int i = 0; i < keys.size(); i++) {
 					tag = nextTag(r, TD, NULL);
@@ -428,7 +428,7 @@ public class HtmlParser extends XmlParser {
 				}
 				if (m != null && c != null) {
 					ObjectMap m2 = (m instanceof ObjectMap ? (ObjectMap)m : new ObjectMap(m).setBeanSession(session));
-					m2.put(session.getBeanTypePropertyName(type), c);
+					m2.put(session.getBeanTypePropertyName(type.getElementType()), c);
 					l.add((E)session.cast(m2, pMeta, elementType));
 				} else {
 					l.add((E)m);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/1321591d/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 28b31c0..abb55c8 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
@@ -257,7 +257,7 @@ public class HtmlSerializer extends XmlSerializer {
 			sType = aType.getSerializedClassMeta();
 			String typeName = null;
 			if (session.isAddBeanTypeProperties() && ! eType.equals(aType))
-				typeName = aType.getResolvedDictionaryName();
+				typeName = aType.getDictionaryName();
 
 			// Swap if necessary
 			PojoSwap swap = aType.getPojoSwap();
@@ -467,7 +467,7 @@ public class HtmlSerializer extends XmlSerializer {
 
 		String type2 = null;
 		if (sType != eType)
-			type2 = sType.getResolvedDictionaryName();
+			type2 = sType.getDictionaryName();
 		if (type2 == null)
 			type2 = "array";
 
@@ -503,8 +503,9 @@ public class HtmlSerializer extends XmlSerializer {
 
 				out.oTag(i+1, "tr");
 				String typeName = (cm == null ? null : cm.getDictionaryName());
-				if (typeName != null && sType.getElementType() != cm)
-					out.attr(btpn, typeName);
+				String typeProperty = session.getBeanTypePropertyName(cm);
+				if (typeName != null && eType.getElementType() != cm)
+					out.attr(typeProperty, typeName);
 				out.cTag().nl();
 
 				if (cm == null) {