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) {