juneau-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From jamesbog...@apache.org
Subject [02/10] incubator-juneau git commit: More JUnits, bug fixes.
Date Fri, 07 Apr 2017 18:19:42 GMT
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core-test/src/test/java/org/apache/juneau/transforms/DateSwapComboTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/transforms/DateSwapComboTest.java b/juneau-core-test/src/test/java/org/apache/juneau/transforms/DateSwapComboTest.java
index 376cbec..9bdd575 100644
--- a/juneau-core-test/src/test/java/org/apache/juneau/transforms/DateSwapComboTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/transforms/DateSwapComboTest.java
@@ -12,6 +12,9 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.transforms;
 
+import static org.apache.juneau.TestUtils.*;
+
+import java.lang.reflect.*;
 import java.util.*;
 
 import org.apache.juneau.*;
@@ -39,502 +42,660 @@ public class DateSwapComboTest extends ComboTest {
 	public static Collection<Object[]> getParameters() {
 		return Arrays.asList(new Object[][] {
 			{	/* 0 */
-				"DateSwap.ToString/singleDate",
-				singleDate,
-				DateSwap.ToString.class,
-				/* Json */		"'Sun Mar 03 10:11:12 PST 1901'",
-				/* JsonT */		"'Sun Mar 03 10:11:12 PST 1901'",
-				/* JsonR */		"'Sun Mar 03 10:11:12 PST 1901'",
-				/* Xml */		"<string>Sun Mar 03 10:11:12 PST 1901</string>",
-				/* XmlT */		"<string>Sun Mar 03 10:11:12 PST 1901</string>",
-				/* XmlR */		"<string>Sun Mar 03 10:11:12 PST 1901</string>\n",
-				/* XmlNs */		"<string>Sun Mar 03 10:11:12 PST 1901</string>",
-				/* Html */		"<string>Sun Mar 03 10:11:12 PST 1901</string>",
-				/* HtmlT */		"<string>Sun Mar 03 10:11:12 PST 1901</string>",
-				/* HtmlR */		"<string>Sun Mar 03 10:11:12 PST 1901</string>",
-				/* Uon */		"'Sun Mar 03 10:11:12 PST 1901'",
-				/* UonT */		"'Sun Mar 03 10:11:12 PST 1901'",
-				/* UonR */		"'Sun Mar 03 10:11:12 PST 1901'",
-				/* UrlEnc */	"_value='Sun+Mar+03+10:11:12+PST+1901'",
-				/* UrlEncT */	"_value='Sun+Mar+03+10:11:12+PST+1901'",
-				/* UrlEncR */	"_value='Sun+Mar+03+10:11:12+PST+1901'",
-				/* MsgPack */	"BC53756E204D61722030332031303A31313A3132205053542031393031",
-				/* MsgPackT */	"BC53756E204D61722030332031303A31313A3132205053542031393031",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<j:value>Sun Mar 03 10:11:12 PST 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<j:value>Sun Mar 03 10:11:12 PST 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <j:value>Sun Mar 03 10:11:12 PST 1901</j:value>\n  </rdf:Description>\n</rdf:RDF>\n",
+				new ComboInput2<Date>(
+					"DateSwap.ToString/singleDate",
+					Date.class,
+					singleDate,
+					DateSwap.ToString.class,
+					/* Json */		"'Sun Mar 03 10:11:12 PST 1901'",
+					/* JsonT */		"'Sun Mar 03 10:11:12 PST 1901'",
+					/* JsonR */		"'Sun Mar 03 10:11:12 PST 1901'",
+					/* Xml */		"<string>Sun Mar 03 10:11:12 PST 1901</string>",
+					/* XmlT */		"<string>Sun Mar 03 10:11:12 PST 1901</string>",
+					/* XmlR */		"<string>Sun Mar 03 10:11:12 PST 1901</string>\n",
+					/* XmlNs */		"<string>Sun Mar 03 10:11:12 PST 1901</string>",
+					/* Html */		"<string>Sun Mar 03 10:11:12 PST 1901</string>",
+					/* HtmlT */		"<string>Sun Mar 03 10:11:12 PST 1901</string>",
+					/* HtmlR */		"<string>Sun Mar 03 10:11:12 PST 1901</string>",
+					/* Uon */		"'Sun Mar 03 10:11:12 PST 1901'",
+					/* UonT */		"'Sun Mar 03 10:11:12 PST 1901'",
+					/* UonR */		"'Sun Mar 03 10:11:12 PST 1901'",
+					/* UrlEnc */	"_value='Sun+Mar+03+10:11:12+PST+1901'",
+					/* UrlEncT */	"_value='Sun+Mar+03+10:11:12+PST+1901'",
+					/* UrlEncR */	"_value='Sun+Mar+03+10:11:12+PST+1901'",
+					/* MsgPack */	"BC53756E204D61722030332031303A31313A3132205053542031393031",
+					/* MsgPackT */	"BC53756E204D61722030332031303A31313A3132205053542031393031",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<j:value>Sun Mar 03 10:11:12 PST 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<j:value>Sun Mar 03 10:11:12 PST 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <j:value>Sun Mar 03 10:11:12 PST 1901</j:value>\n  </rdf:Description>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(Date o) {
+						assertType(Date.class, o);
+					}
+				}
 			},
 			{	/* 1 */
-				"DateSwap.ToString/dateArray",
-				dateArray,
-				DateSwap.ToString.class,
-				/* Json */		"['Sun Mar 03 10:11:12 PST 1901']",
-				/* JsonT */		"['Sun Mar 03 10:11:12 PST 1901']",
-				/* JsonR */		"[\n\t'Sun Mar 03 10:11:12 PST 1901'\n]",
-				/* Xml */		"<array><string>Sun Mar 03 10:11:12 PST 1901</string></array>",
-				/* XmlT */		"<array><string>Sun Mar 03 10:11:12 PST 1901</string></array>",
-				/* XmlR */		"<array>\n\t<string>Sun Mar 03 10:11:12 PST 1901</string>\n</array>\n",
-				/* XmlNs */		"<array><string>Sun Mar 03 10:11:12 PST 1901</string></array>",
-				/* Html */		"<ul><li>Sun Mar 03 10:11:12 PST 1901</li></ul>",
-				/* HtmlT */		"<ul><li>Sun Mar 03 10:11:12 PST 1901</li></ul>",
-				/* HtmlR */		"<ul>\n\t<li>Sun Mar 03 10:11:12 PST 1901</li>\n</ul>\n",
-				/* Uon */		"@('Sun Mar 03 10:11:12 PST 1901')",
-				/* UonT */		"@('Sun Mar 03 10:11:12 PST 1901')",
-				/* UonR */		"@(\n\t'Sun Mar 03 10:11:12 PST 1901'\n)",
-				/* UrlEnc */	"0='Sun+Mar+03+10:11:12+PST+1901'",
-				/* UrlEncT */	"0='Sun+Mar+03+10:11:12+PST+1901'",
-				/* UrlEncR */	"0='Sun+Mar+03+10:11:12+PST+1901'",
-				/* MsgPack */	"91BC53756E204D61722030332031303A31313A3132205053542031393031",
-				/* MsgPackT */	"91BC53756E204D61722030332031303A31313A3132205053542031393031",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun Mar 03 10:11:12 PST 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun Mar 03 10:11:12 PST 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li>Sun Mar 03 10:11:12 PST 1901</rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n",
+				new ComboInput2<Date[]>(
+					"DateSwap.ToString/dateArray",
+					Date[].class,
+					dateArray,
+					DateSwap.ToString.class,
+					/* Json */		"['Sun Mar 03 10:11:12 PST 1901']",
+					/* JsonT */		"['Sun Mar 03 10:11:12 PST 1901']",
+					/* JsonR */		"[\n\t'Sun Mar 03 10:11:12 PST 1901'\n]",
+					/* Xml */		"<array><string>Sun Mar 03 10:11:12 PST 1901</string></array>",
+					/* XmlT */		"<array><string>Sun Mar 03 10:11:12 PST 1901</string></array>",
+					/* XmlR */		"<array>\n\t<string>Sun Mar 03 10:11:12 PST 1901</string>\n</array>\n",
+					/* XmlNs */		"<array><string>Sun Mar 03 10:11:12 PST 1901</string></array>",
+					/* Html */		"<ul><li>Sun Mar 03 10:11:12 PST 1901</li></ul>",
+					/* HtmlT */		"<ul><li>Sun Mar 03 10:11:12 PST 1901</li></ul>",
+					/* HtmlR */		"<ul>\n\t<li>Sun Mar 03 10:11:12 PST 1901</li>\n</ul>\n",
+					/* Uon */		"@('Sun Mar 03 10:11:12 PST 1901')",
+					/* UonT */		"@('Sun Mar 03 10:11:12 PST 1901')",
+					/* UonR */		"@(\n\t'Sun Mar 03 10:11:12 PST 1901'\n)",
+					/* UrlEnc */	"0='Sun+Mar+03+10:11:12+PST+1901'",
+					/* UrlEncT */	"0='Sun+Mar+03+10:11:12+PST+1901'",
+					/* UrlEncR */	"0='Sun+Mar+03+10:11:12+PST+1901'",
+					/* MsgPack */	"91BC53756E204D61722030332031303A31313A3132205053542031393031",
+					/* MsgPackT */	"91BC53756E204D61722030332031303A31313A3132205053542031393031",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun Mar 03 10:11:12 PST 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun Mar 03 10:11:12 PST 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li>Sun Mar 03 10:11:12 PST 1901</rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(Date[] o) {
+						assertType(Date.class, o[0]);
+					}
+				}
 			},
 			{	/* 2 */
-				"DateSwap.ToString",
-				dateMap,
-				DateSwap.ToString.class,
-				/* Json */		"{foo:'Sun Mar 03 10:11:12 PST 1901'}",
-				/* JsonT */		"{foo:'Sun Mar 03 10:11:12 PST 1901'}",
-				/* JsonR */		"{\n\tfoo: 'Sun Mar 03 10:11:12 PST 1901'\n}",
-				/* Xml */		"<object><foo>Sun Mar 03 10:11:12 PST 1901</foo></object>",
-				/* XmlT */		"<object><foo>Sun Mar 03 10:11:12 PST 1901</foo></object>",
-				/* XmlR */		"<object>\n\t<foo>Sun Mar 03 10:11:12 PST 1901</foo>\n</object>\n",
-				/* XmlNs */		"<object><foo>Sun Mar 03 10:11:12 PST 1901</foo></object>",
-				/* Html */		"<table><tr><td>foo</td><td>Sun Mar 03 10:11:12 PST 1901</td></tr></table>",
-				/* HtmlT */		"<table><tr><td>foo</td><td>Sun Mar 03 10:11:12 PST 1901</td></tr></table>",
-				/* HtmlR */		"<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>Sun Mar 03 10:11:12 PST 1901</td>\n\t</tr>\n</table>\n",
-				/* Uon */		"(foo='Sun Mar 03 10:11:12 PST 1901')",
-				/* UonT */		"(foo='Sun Mar 03 10:11:12 PST 1901')",
-				/* UonR */		"(\n\tfoo='Sun Mar 03 10:11:12 PST 1901'\n)",
-				/* UrlEnc */	"foo='Sun+Mar+03+10:11:12+PST+1901'",
-				/* UrlEncT */	"foo='Sun+Mar+03+10:11:12+PST+1901'",
-				/* UrlEncR */	"foo='Sun+Mar+03+10:11:12+PST+1901'",
-				/* MsgPack */	"81A3666F6FBC53756E204D61722030332031303A31313A3132205053542031393031",
-				/* MsgPackT */	"81A3666F6FBC53756E204D61722030332031303A31313A3132205053542031393031",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun Mar 03 10:11:12 PST 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun Mar 03 10:11:12 PST 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:foo>Sun Mar 03 10:11:12 PST 1901</jp:foo>\n  </rdf:Description>\n</rdf:RDF>\n",
+				new ComboInput2<ObjectMap>(
+					"DateSwap.ToString",
+					getType(Map.class,String.class,Date.class),
+					dateMap,
+					DateSwap.ToString.class,
+					/* Json */		"{foo:'Sun Mar 03 10:11:12 PST 1901'}",
+					/* JsonT */		"{foo:'Sun Mar 03 10:11:12 PST 1901'}",
+					/* JsonR */		"{\n\tfoo: 'Sun Mar 03 10:11:12 PST 1901'\n}",
+					/* Xml */		"<object><foo>Sun Mar 03 10:11:12 PST 1901</foo></object>",
+					/* XmlT */		"<object><foo>Sun Mar 03 10:11:12 PST 1901</foo></object>",
+					/* XmlR */		"<object>\n\t<foo>Sun Mar 03 10:11:12 PST 1901</foo>\n</object>\n",
+					/* XmlNs */		"<object><foo>Sun Mar 03 10:11:12 PST 1901</foo></object>",
+					/* Html */		"<table><tr><td>foo</td><td>Sun Mar 03 10:11:12 PST 1901</td></tr></table>",
+					/* HtmlT */		"<table><tr><td>foo</td><td>Sun Mar 03 10:11:12 PST 1901</td></tr></table>",
+					/* HtmlR */		"<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>Sun Mar 03 10:11:12 PST 1901</td>\n\t</tr>\n</table>\n",
+					/* Uon */		"(foo='Sun Mar 03 10:11:12 PST 1901')",
+					/* UonT */		"(foo='Sun Mar 03 10:11:12 PST 1901')",
+					/* UonR */		"(\n\tfoo='Sun Mar 03 10:11:12 PST 1901'\n)",
+					/* UrlEnc */	"foo='Sun+Mar+03+10:11:12+PST+1901'",
+					/* UrlEncT */	"foo='Sun+Mar+03+10:11:12+PST+1901'",
+					/* UrlEncR */	"foo='Sun+Mar+03+10:11:12+PST+1901'",
+					/* MsgPack */	"81A3666F6FBC53756E204D61722030332031303A31313A3132205053542031393031",
+					/* MsgPackT */	"81A3666F6FBC53756E204D61722030332031303A31313A3132205053542031393031",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun Mar 03 10:11:12 PST 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun Mar 03 10:11:12 PST 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:foo>Sun Mar 03 10:11:12 PST 1901</jp:foo>\n  </rdf:Description>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(ObjectMap o) {
+						assertType(Date.class, o.get("foo"));
+					}
+				}
 			},
 			{	/* 3 */
-				"DateSwap.ISO8601DT/singleDate",
-				singleDate,
-				DateSwap.ISO8601DT.class,
-				/* Json */		"'1901-03-03T10:11:12-08:00'",
-				/* JsonT */		"'1901-03-03T10:11:12-08:00'",
-				/* JsonR */		"'1901-03-03T10:11:12-08:00'",
-				/* Xml */		"<string>1901-03-03T10:11:12-08:00</string>",
-				/* XmlT */		"<string>1901-03-03T10:11:12-08:00</string>",
-				/* XmlR */		"<string>1901-03-03T10:11:12-08:00</string>\n",
-				/* XmlNs */		"<string>1901-03-03T10:11:12-08:00</string>",
-				/* Html */		"<string>1901-03-03T10:11:12-08:00</string>",
-				/* HtmlT */		"<string>1901-03-03T10:11:12-08:00</string>",
-				/* HtmlR */		"<string>1901-03-03T10:11:12-08:00</string>",
-				/* Uon */		"1901-03-03T10:11:12-08:00",
-				/* UonT */		"1901-03-03T10:11:12-08:00",
-				/* UonR */		"1901-03-03T10:11:12-08:00",
-				/* UrlEnc */	"_value=1901-03-03T10:11:12-08:00",
-				/* UrlEncT */	"_value=1901-03-03T10:11:12-08:00",
-				/* UrlEncR */	"_value=1901-03-03T10:11:12-08:00",
-				/* MsgPack */	"B9313930312D30332D30335431303A31313A31322D30383A3030",
-				/* MsgPackT */	"B9313930312D30332D30335431303A31313A31322D30383A3030",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<j:value>1901-03-03T10:11:12-08:00</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<j:value>1901-03-03T10:11:12-08:00</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <j:value>1901-03-03T10:11:12-08:00</j:value>\n  </rdf:Description>\n</rdf:RDF>\n",
+				new ComboInput2<Date>(
+					"DateSwap.ISO8601DT/singleDate",
+					Date.class,
+					singleDate,
+					DateSwap.ISO8601DT.class,
+					/* Json */		"'1901-03-03T10:11:12-08:00'",
+					/* JsonT */		"'1901-03-03T10:11:12-08:00'",
+					/* JsonR */		"'1901-03-03T10:11:12-08:00'",
+					/* Xml */		"<string>1901-03-03T10:11:12-08:00</string>",
+					/* XmlT */		"<string>1901-03-03T10:11:12-08:00</string>",
+					/* XmlR */		"<string>1901-03-03T10:11:12-08:00</string>\n",
+					/* XmlNs */		"<string>1901-03-03T10:11:12-08:00</string>",
+					/* Html */		"<string>1901-03-03T10:11:12-08:00</string>",
+					/* HtmlT */		"<string>1901-03-03T10:11:12-08:00</string>",
+					/* HtmlR */		"<string>1901-03-03T10:11:12-08:00</string>",
+					/* Uon */		"1901-03-03T10:11:12-08:00",
+					/* UonT */		"1901-03-03T10:11:12-08:00",
+					/* UonR */		"1901-03-03T10:11:12-08:00",
+					/* UrlEnc */	"_value=1901-03-03T10:11:12-08:00",
+					/* UrlEncT */	"_value=1901-03-03T10:11:12-08:00",
+					/* UrlEncR */	"_value=1901-03-03T10:11:12-08:00",
+					/* MsgPack */	"B9313930312D30332D30335431303A31313A31322D30383A3030",
+					/* MsgPackT */	"B9313930312D30332D30335431303A31313A31322D30383A3030",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<j:value>1901-03-03T10:11:12-08:00</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<j:value>1901-03-03T10:11:12-08:00</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <j:value>1901-03-03T10:11:12-08:00</j:value>\n  </rdf:Description>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(Date o) {
+						assertType(Date.class, o);
+					}
+				}
 			},
 			{	/* 4 */
-				"DateSwap.ISO8601DT/dateArray",
-				dateArray,
-				DateSwap.ISO8601DT.class,
-				/* Json */		"['1901-03-03T10:11:12-08:00']",
-				/* JsonT */		"['1901-03-03T10:11:12-08:00']",
-				/* JsonR */		"[\n\t'1901-03-03T10:11:12-08:00'\n]",
-				/* Xml */		"<array><string>1901-03-03T10:11:12-08:00</string></array>",
-				/* XmlT */		"<array><string>1901-03-03T10:11:12-08:00</string></array>",
-				/* XmlR */		"<array>\n\t<string>1901-03-03T10:11:12-08:00</string>\n</array>\n",
-				/* XmlNs */		"<array><string>1901-03-03T10:11:12-08:00</string></array>",
-				/* Html */		"<ul><li>1901-03-03T10:11:12-08:00</li></ul>",
-				/* HtmlT */		"<ul><li>1901-03-03T10:11:12-08:00</li></ul>",
-				/* HtmlR */		"<ul>\n\t<li>1901-03-03T10:11:12-08:00</li>\n</ul>\n",
-				/* Uon */		"@(1901-03-03T10:11:12-08:00)",
-				/* UonT */		"@(1901-03-03T10:11:12-08:00)",
-				/* UonR */		"@(\n\t1901-03-03T10:11:12-08:00\n)",
-				/* UrlEnc */	"0=1901-03-03T10:11:12-08:00",
-				/* UrlEncT */	"0=1901-03-03T10:11:12-08:00",
-				/* UrlEncR */	"0=1901-03-03T10:11:12-08:00",
-				/* MsgPack */	"91B9313930312D30332D30335431303A31313A31322D30383A3030",
-				/* MsgPackT */	"91B9313930312D30332D30335431303A31313A31322D30383A3030",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>1901-03-03T10:11:12-08:00</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>1901-03-03T10:11:12-08:00</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li>1901-03-03T10:11:12-08:00</rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n",
+				new ComboInput2<Date[]>(
+					"DateSwap.ISO8601DT/dateArray",
+					Date[].class,
+					dateArray,
+					DateSwap.ISO8601DT.class,
+					/* Json */		"['1901-03-03T10:11:12-08:00']",
+					/* JsonT */		"['1901-03-03T10:11:12-08:00']",
+					/* JsonR */		"[\n\t'1901-03-03T10:11:12-08:00'\n]",
+					/* Xml */		"<array><string>1901-03-03T10:11:12-08:00</string></array>",
+					/* XmlT */		"<array><string>1901-03-03T10:11:12-08:00</string></array>",
+					/* XmlR */		"<array>\n\t<string>1901-03-03T10:11:12-08:00</string>\n</array>\n",
+					/* XmlNs */		"<array><string>1901-03-03T10:11:12-08:00</string></array>",
+					/* Html */		"<ul><li>1901-03-03T10:11:12-08:00</li></ul>",
+					/* HtmlT */		"<ul><li>1901-03-03T10:11:12-08:00</li></ul>",
+					/* HtmlR */		"<ul>\n\t<li>1901-03-03T10:11:12-08:00</li>\n</ul>\n",
+					/* Uon */		"@(1901-03-03T10:11:12-08:00)",
+					/* UonT */		"@(1901-03-03T10:11:12-08:00)",
+					/* UonR */		"@(\n\t1901-03-03T10:11:12-08:00\n)",
+					/* UrlEnc */	"0=1901-03-03T10:11:12-08:00",
+					/* UrlEncT */	"0=1901-03-03T10:11:12-08:00",
+					/* UrlEncR */	"0=1901-03-03T10:11:12-08:00",
+					/* MsgPack */	"91B9313930312D30332D30335431303A31313A31322D30383A3030",
+					/* MsgPackT */	"91B9313930312D30332D30335431303A31313A31322D30383A3030",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>1901-03-03T10:11:12-08:00</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>1901-03-03T10:11:12-08:00</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li>1901-03-03T10:11:12-08:00</rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(Date[] o) {
+						assertType(Date.class, o[0]);
+					}
+				}
 			},
 			{	/* 5 */
-				"DateSwap.ISO8601DT/dateMap",
-				dateMap,
-				DateSwap.ISO8601DT.class,
-				/* Json */		"{foo:'1901-03-03T10:11:12-08:00'}",
-				/* JsonT */		"{foo:'1901-03-03T10:11:12-08:00'}",
-				/* JsonR */		"{\n\tfoo: '1901-03-03T10:11:12-08:00'\n}",
-				/* Xml */		"<object><foo>1901-03-03T10:11:12-08:00</foo></object>",
-				/* XmlT */		"<object><foo>1901-03-03T10:11:12-08:00</foo></object>",
-				/* XmlR */		"<object>\n\t<foo>1901-03-03T10:11:12-08:00</foo>\n</object>\n",
-				/* XmlNs */		"<object><foo>1901-03-03T10:11:12-08:00</foo></object>",
-				/* Html */		"<table><tr><td>foo</td><td>1901-03-03T10:11:12-08:00</td></tr></table>",
-				/* HtmlT */		"<table><tr><td>foo</td><td>1901-03-03T10:11:12-08:00</td></tr></table>",
-				/* HtmlR */		"<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>1901-03-03T10:11:12-08:00</td>\n\t</tr>\n</table>\n",
-				/* Uon */		"(foo=1901-03-03T10:11:12-08:00)",
-				/* UonT */		"(foo=1901-03-03T10:11:12-08:00)",
-				/* UonR */		"(\n\tfoo=1901-03-03T10:11:12-08:00\n)",
-				/* UrlEnc */	"foo=1901-03-03T10:11:12-08:00",
-				/* UrlEncT */	"foo=1901-03-03T10:11:12-08:00",
-				/* UrlEncR */	"foo=1901-03-03T10:11:12-08:00",
-				/* MsgPack */	"81A3666F6FB9313930312D30332D30335431303A31313A31322D30383A3030",
-				/* MsgPackT */	"81A3666F6FB9313930312D30332D30335431303A31313A31322D30383A3030",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>1901-03-03T10:11:12-08:00</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>1901-03-03T10:11:12-08:00</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:foo>1901-03-03T10:11:12-08:00</jp:foo>\n  </rdf:Description>\n</rdf:RDF>\n",
+				new ComboInput2<ObjectMap>(
+					"DateSwap.ISO8601DT/dateMap",
+					getType(Map.class,String.class,Date.class),
+					dateMap,
+					DateSwap.ISO8601DT.class,
+					/* Json */		"{foo:'1901-03-03T10:11:12-08:00'}",
+					/* JsonT */		"{foo:'1901-03-03T10:11:12-08:00'}",
+					/* JsonR */		"{\n\tfoo: '1901-03-03T10:11:12-08:00'\n}",
+					/* Xml */		"<object><foo>1901-03-03T10:11:12-08:00</foo></object>",
+					/* XmlT */		"<object><foo>1901-03-03T10:11:12-08:00</foo></object>",
+					/* XmlR */		"<object>\n\t<foo>1901-03-03T10:11:12-08:00</foo>\n</object>\n",
+					/* XmlNs */		"<object><foo>1901-03-03T10:11:12-08:00</foo></object>",
+					/* Html */		"<table><tr><td>foo</td><td>1901-03-03T10:11:12-08:00</td></tr></table>",
+					/* HtmlT */		"<table><tr><td>foo</td><td>1901-03-03T10:11:12-08:00</td></tr></table>",
+					/* HtmlR */		"<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>1901-03-03T10:11:12-08:00</td>\n\t</tr>\n</table>\n",
+					/* Uon */		"(foo=1901-03-03T10:11:12-08:00)",
+					/* UonT */		"(foo=1901-03-03T10:11:12-08:00)",
+					/* UonR */		"(\n\tfoo=1901-03-03T10:11:12-08:00\n)",
+					/* UrlEnc */	"foo=1901-03-03T10:11:12-08:00",
+					/* UrlEncT */	"foo=1901-03-03T10:11:12-08:00",
+					/* UrlEncR */	"foo=1901-03-03T10:11:12-08:00",
+					/* MsgPack */	"81A3666F6FB9313930312D30332D30335431303A31313A31322D30383A3030",
+					/* MsgPackT */	"81A3666F6FB9313930312D30332D30335431303A31313A31322D30383A3030",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>1901-03-03T10:11:12-08:00</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>1901-03-03T10:11:12-08:00</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:foo>1901-03-03T10:11:12-08:00</jp:foo>\n  </rdf:Description>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(ObjectMap o) {
+						assertType(Date.class, o.get("foo"));
+					}
+				}
 			},
 			{	/* 6 */
-				"DateSwap.RFC2822DTZ/singleDate",
-				singleDate,
-				DateSwap.RFC2822DTZ.class,
-				/* Json */		"'Sun, 03 Mar 1901 18:11:12 GMT'",
-				/* JsonT */		"'Sun, 03 Mar 1901 18:11:12 GMT'",
-				/* JsonR */		"'Sun, 03 Mar 1901 18:11:12 GMT'",
-				/* Xml */		"<string>Sun, 03 Mar 1901 18:11:12 GMT</string>",
-				/* XmlT */		"<string>Sun, 03 Mar 1901 18:11:12 GMT</string>",
-				/* XmlR */		"<string>Sun, 03 Mar 1901 18:11:12 GMT</string>\n",
-				/* XmlNs */		"<string>Sun, 03 Mar 1901 18:11:12 GMT</string>",
-				/* Html */		"<string>Sun, 03 Mar 1901 18:11:12 GMT</string>",
-				/* HtmlT */		"<string>Sun, 03 Mar 1901 18:11:12 GMT</string>",
-				/* HtmlR */		"<string>Sun, 03 Mar 1901 18:11:12 GMT</string>",
-				/* Uon */		"'Sun, 03 Mar 1901 18:11:12 GMT'",
-				/* UonT */		"'Sun, 03 Mar 1901 18:11:12 GMT'",
-				/* UonR */		"'Sun, 03 Mar 1901 18:11:12 GMT'",
-				/* UrlEnc */	"_value='Sun,+03+Mar+1901+18:11:12+GMT'",
-				/* UrlEncT */	"_value='Sun,+03+Mar+1901+18:11:12+GMT'",
-				/* UrlEncR */	"_value='Sun,+03+Mar+1901+18:11:12+GMT'",
-				/* MsgPack */	"BD53756E2C203033204D617220313930312031383A31313A313220474D54",
-				/* MsgPackT */	"BD53756E2C203033204D617220313930312031383A31313A313220474D54",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<j:value>Sun, 03 Mar 1901 18:11:12 GMT</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<j:value>Sun, 03 Mar 1901 18:11:12 GMT</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <j:value>Sun, 03 Mar 1901 18:11:12 GMT</j:value>\n  </rdf:Description>\n</rdf:RDF>\n",
+				new ComboInput2<Date>(
+					"DateSwap.RFC2822DTZ/singleDate",
+					Date.class,
+					singleDate,
+					DateSwap.RFC2822DTZ.class,
+					/* Json */		"'Sun, 03 Mar 1901 18:11:12 GMT'",
+					/* JsonT */		"'Sun, 03 Mar 1901 18:11:12 GMT'",
+					/* JsonR */		"'Sun, 03 Mar 1901 18:11:12 GMT'",
+					/* Xml */		"<string>Sun, 03 Mar 1901 18:11:12 GMT</string>",
+					/* XmlT */		"<string>Sun, 03 Mar 1901 18:11:12 GMT</string>",
+					/* XmlR */		"<string>Sun, 03 Mar 1901 18:11:12 GMT</string>\n",
+					/* XmlNs */		"<string>Sun, 03 Mar 1901 18:11:12 GMT</string>",
+					/* Html */		"<string>Sun, 03 Mar 1901 18:11:12 GMT</string>",
+					/* HtmlT */		"<string>Sun, 03 Mar 1901 18:11:12 GMT</string>",
+					/* HtmlR */		"<string>Sun, 03 Mar 1901 18:11:12 GMT</string>",
+					/* Uon */		"'Sun, 03 Mar 1901 18:11:12 GMT'",
+					/* UonT */		"'Sun, 03 Mar 1901 18:11:12 GMT'",
+					/* UonR */		"'Sun, 03 Mar 1901 18:11:12 GMT'",
+					/* UrlEnc */	"_value='Sun,+03+Mar+1901+18:11:12+GMT'",
+					/* UrlEncT */	"_value='Sun,+03+Mar+1901+18:11:12+GMT'",
+					/* UrlEncR */	"_value='Sun,+03+Mar+1901+18:11:12+GMT'",
+					/* MsgPack */	"BD53756E2C203033204D617220313930312031383A31313A313220474D54",
+					/* MsgPackT */	"BD53756E2C203033204D617220313930312031383A31313A313220474D54",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<j:value>Sun, 03 Mar 1901 18:11:12 GMT</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<j:value>Sun, 03 Mar 1901 18:11:12 GMT</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <j:value>Sun, 03 Mar 1901 18:11:12 GMT</j:value>\n  </rdf:Description>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(Date o) {
+						assertType(Date.class, o);
+					}
+				}
 			},
 			{	/* 7 */
-				"DateSwap.RFC2822DTZ/dateArray",
-				dateArray,
-				DateSwap.RFC2822DTZ.class,
-				/* Json */		"['Sun, 03 Mar 1901 18:11:12 GMT']",
-				/* JsonT */		"['Sun, 03 Mar 1901 18:11:12 GMT']",
-				/* JsonR */		"[\n\t'Sun, 03 Mar 1901 18:11:12 GMT'\n]",
-				/* Xml */		"<array><string>Sun, 03 Mar 1901 18:11:12 GMT</string></array>",
-				/* XmlT */		"<array><string>Sun, 03 Mar 1901 18:11:12 GMT</string></array>",
-				/* XmlR */		"<array>\n\t<string>Sun, 03 Mar 1901 18:11:12 GMT</string>\n</array>\n",
-				/* XmlNs */		"<array><string>Sun, 03 Mar 1901 18:11:12 GMT</string></array>",
-				/* Html */		"<ul><li>Sun, 03 Mar 1901 18:11:12 GMT</li></ul>",
-				/* HtmlT */		"<ul><li>Sun, 03 Mar 1901 18:11:12 GMT</li></ul>",
-				/* HtmlR */		"<ul>\n\t<li>Sun, 03 Mar 1901 18:11:12 GMT</li>\n</ul>\n",
-				/* Uon */		"@('Sun, 03 Mar 1901 18:11:12 GMT')",
-				/* UonT */		"@('Sun, 03 Mar 1901 18:11:12 GMT')",
-				/* UonR */		"@(\n\t'Sun, 03 Mar 1901 18:11:12 GMT'\n)",
-				/* UrlEnc */	"0='Sun,+03+Mar+1901+18:11:12+GMT'",
-				/* UrlEncT */	"0='Sun,+03+Mar+1901+18:11:12+GMT'",
-				/* UrlEncR */	"0='Sun,+03+Mar+1901+18:11:12+GMT'",
-				/* MsgPack */	"91BD53756E2C203033204D617220313930312031383A31313A313220474D54",
-				/* MsgPackT */	"91BD53756E2C203033204D617220313930312031383A31313A313220474D54",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun, 03 Mar 1901 18:11:12 GMT</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun, 03 Mar 1901 18:11:12 GMT</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li>Sun, 03 Mar 1901 18:11:12 GMT</rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n",
+				new ComboInput2<Date[]>(
+					"DateSwap.RFC2822DTZ/dateArray",
+					Date[].class,
+					dateArray,
+					DateSwap.RFC2822DTZ.class,
+					/* Json */		"['Sun, 03 Mar 1901 18:11:12 GMT']",
+					/* JsonT */		"['Sun, 03 Mar 1901 18:11:12 GMT']",
+					/* JsonR */		"[\n\t'Sun, 03 Mar 1901 18:11:12 GMT'\n]",
+					/* Xml */		"<array><string>Sun, 03 Mar 1901 18:11:12 GMT</string></array>",
+					/* XmlT */		"<array><string>Sun, 03 Mar 1901 18:11:12 GMT</string></array>",
+					/* XmlR */		"<array>\n\t<string>Sun, 03 Mar 1901 18:11:12 GMT</string>\n</array>\n",
+					/* XmlNs */		"<array><string>Sun, 03 Mar 1901 18:11:12 GMT</string></array>",
+					/* Html */		"<ul><li>Sun, 03 Mar 1901 18:11:12 GMT</li></ul>",
+					/* HtmlT */		"<ul><li>Sun, 03 Mar 1901 18:11:12 GMT</li></ul>",
+					/* HtmlR */		"<ul>\n\t<li>Sun, 03 Mar 1901 18:11:12 GMT</li>\n</ul>\n",
+					/* Uon */		"@('Sun, 03 Mar 1901 18:11:12 GMT')",
+					/* UonT */		"@('Sun, 03 Mar 1901 18:11:12 GMT')",
+					/* UonR */		"@(\n\t'Sun, 03 Mar 1901 18:11:12 GMT'\n)",
+					/* UrlEnc */	"0='Sun,+03+Mar+1901+18:11:12+GMT'",
+					/* UrlEncT */	"0='Sun,+03+Mar+1901+18:11:12+GMT'",
+					/* UrlEncR */	"0='Sun,+03+Mar+1901+18:11:12+GMT'",
+					/* MsgPack */	"91BD53756E2C203033204D617220313930312031383A31313A313220474D54",
+					/* MsgPackT */	"91BD53756E2C203033204D617220313930312031383A31313A313220474D54",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun, 03 Mar 1901 18:11:12 GMT</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Sun, 03 Mar 1901 18:11:12 GMT</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li>Sun, 03 Mar 1901 18:11:12 GMT</rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(Date[] o) {
+						assertType(Date.class, o[0]);
+					}
+				}
 			},
 			{	/* 8 */
-				"DateSwap.RFC2822DTZ/dateMap",
-				dateMap,
-				DateSwap.RFC2822DTZ.class,
-				/* Json */		"{foo:'Sun, 03 Mar 1901 18:11:12 GMT'}",
-				/* JsonT */		"{foo:'Sun, 03 Mar 1901 18:11:12 GMT'}",
-				/* JsonR */		"{\n\tfoo: 'Sun, 03 Mar 1901 18:11:12 GMT'\n}",
-				/* Xml */		"<object><foo>Sun, 03 Mar 1901 18:11:12 GMT</foo></object>",
-				/* XmlT */		"<object><foo>Sun, 03 Mar 1901 18:11:12 GMT</foo></object>",
-				/* XmlR */		"<object>\n\t<foo>Sun, 03 Mar 1901 18:11:12 GMT</foo>\n</object>\n",
-				/* XmlNs */		"<object><foo>Sun, 03 Mar 1901 18:11:12 GMT</foo></object>",
-				/* Html */		"<table><tr><td>foo</td><td>Sun, 03 Mar 1901 18:11:12 GMT</td></tr></table>",
-				/* HtmlT */		"<table><tr><td>foo</td><td>Sun, 03 Mar 1901 18:11:12 GMT</td></tr></table>",
-				/* HtmlR */		"<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>Sun, 03 Mar 1901 18:11:12 GMT</td>\n\t</tr>\n</table>\n",
-				/* Uon */		"(foo='Sun, 03 Mar 1901 18:11:12 GMT')",
-				/* UonT */		"(foo='Sun, 03 Mar 1901 18:11:12 GMT')",
-				/* UonR */		"(\n\tfoo='Sun, 03 Mar 1901 18:11:12 GMT'\n)",
-				/* UrlEnc */	"foo='Sun,+03+Mar+1901+18:11:12+GMT'",
-				/* UrlEncT */	"foo='Sun,+03+Mar+1901+18:11:12+GMT'",
-				/* UrlEncR */	"foo='Sun,+03+Mar+1901+18:11:12+GMT'",
-				/* MsgPack */	"81A3666F6FBD53756E2C203033204D617220313930312031383A31313A313220474D54",
-				/* MsgPackT */	"81A3666F6FBD53756E2C203033204D617220313930312031383A31313A313220474D54",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun, 03 Mar 1901 18:11:12 GMT</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun, 03 Mar 1901 18:11:12 GMT</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:foo>Sun, 03 Mar 1901 18:11:12 GMT</jp:foo>\n  </rdf:Description>\n</rdf:RDF>\n",
+				new ComboInput2<ObjectMap>(
+					"DateSwap.RFC2822DTZ/dateMap",
+					getType(Map.class,String.class,Date.class),
+					dateMap,
+					DateSwap.RFC2822DTZ.class,
+					/* Json */		"{foo:'Sun, 03 Mar 1901 18:11:12 GMT'}",
+					/* JsonT */		"{foo:'Sun, 03 Mar 1901 18:11:12 GMT'}",
+					/* JsonR */		"{\n\tfoo: 'Sun, 03 Mar 1901 18:11:12 GMT'\n}",
+					/* Xml */		"<object><foo>Sun, 03 Mar 1901 18:11:12 GMT</foo></object>",
+					/* XmlT */		"<object><foo>Sun, 03 Mar 1901 18:11:12 GMT</foo></object>",
+					/* XmlR */		"<object>\n\t<foo>Sun, 03 Mar 1901 18:11:12 GMT</foo>\n</object>\n",
+					/* XmlNs */		"<object><foo>Sun, 03 Mar 1901 18:11:12 GMT</foo></object>",
+					/* Html */		"<table><tr><td>foo</td><td>Sun, 03 Mar 1901 18:11:12 GMT</td></tr></table>",
+					/* HtmlT */		"<table><tr><td>foo</td><td>Sun, 03 Mar 1901 18:11:12 GMT</td></tr></table>",
+					/* HtmlR */		"<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>Sun, 03 Mar 1901 18:11:12 GMT</td>\n\t</tr>\n</table>\n",
+					/* Uon */		"(foo='Sun, 03 Mar 1901 18:11:12 GMT')",
+					/* UonT */		"(foo='Sun, 03 Mar 1901 18:11:12 GMT')",
+					/* UonR */		"(\n\tfoo='Sun, 03 Mar 1901 18:11:12 GMT'\n)",
+					/* UrlEnc */	"foo='Sun,+03+Mar+1901+18:11:12+GMT'",
+					/* UrlEncT */	"foo='Sun,+03+Mar+1901+18:11:12+GMT'",
+					/* UrlEncR */	"foo='Sun,+03+Mar+1901+18:11:12+GMT'",
+					/* MsgPack */	"81A3666F6FBD53756E2C203033204D617220313930312031383A31313A313220474D54",
+					/* MsgPackT */	"81A3666F6FBD53756E2C203033204D617220313930312031383A31313A313220474D54",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun, 03 Mar 1901 18:11:12 GMT</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>Sun, 03 Mar 1901 18:11:12 GMT</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:foo>Sun, 03 Mar 1901 18:11:12 GMT</jp:foo>\n  </rdf:Description>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(ObjectMap o) {
+						assertType(Date.class, o.get("foo"));
+					}
+				}
 			},
 			{	/* 9 */
-				"DateLongSwap",
-				singleDate,
-				DateLongSwap.class,
-				/* Json */		"-2172116928000",
-				/* JsonT */		"-2172116928000",
-				/* JsonR */		"-2172116928000",
-				/* Xml */		"<number>-2172116928000</number>",
-				/* XmlT */		"<number>-2172116928000</number>",
-				/* XmlR */		"<number>-2172116928000</number>\n",
-				/* XmlNs */		"<number>-2172116928000</number>",
-				/* Html */		"<number>-2172116928000</number>",
-				/* HtmlT */		"<number>-2172116928000</number>",
-				/* HtmlR */		"<number>-2172116928000</number>",
-				/* Uon */		"-2172116928000",
-				/* UonT */		"-2172116928000",
-				/* UonR */		"-2172116928000",
-				/* UrlEnc */	"_value=-2172116928000",
-				/* UrlEncT */	"_value=-2172116928000",
-				/* UrlEncR */	"_value=-2172116928000",
-				/* MsgPack */	"D3FFFFFE0643BDFA00",
-				/* MsgPackT */	"D3FFFFFE0643BDFA00",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<j:value>-2172116928000</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<j:value>-2172116928000</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <j:value>-2172116928000</j:value>\n  </rdf:Description>\n</rdf:RDF>\n",
+				new ComboInput2<Date>(
+					"DateLongSwap",
+					Date.class,
+					singleDate,
+					DateLongSwap.class,
+					/* Json */		"-2172116928000",
+					/* JsonT */		"-2172116928000",
+					/* JsonR */		"-2172116928000",
+					/* Xml */		"<number>-2172116928000</number>",
+					/* XmlT */		"<number>-2172116928000</number>",
+					/* XmlR */		"<number>-2172116928000</number>\n",
+					/* XmlNs */		"<number>-2172116928000</number>",
+					/* Html */		"<number>-2172116928000</number>",
+					/* HtmlT */		"<number>-2172116928000</number>",
+					/* HtmlR */		"<number>-2172116928000</number>",
+					/* Uon */		"-2172116928000",
+					/* UonT */		"-2172116928000",
+					/* UonR */		"-2172116928000",
+					/* UrlEnc */	"_value=-2172116928000",
+					/* UrlEncT */	"_value=-2172116928000",
+					/* UrlEncR */	"_value=-2172116928000",
+					/* MsgPack */	"D3FFFFFE0643BDFA00",
+					/* MsgPackT */	"D3FFFFFE0643BDFA00",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<j:value>-2172116928000</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<j:value>-2172116928000</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <j:value>-2172116928000</j:value>\n  </rdf:Description>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(Date o) {
+						assertType(Date.class, o);
+					}
+				}
 			},
 			{	/* 10 */
-				"DateLongSwap/dateArray",
-				dateArray,
-				DateLongSwap.class,
-				/* Json */		"[-2172116928000]",
-				/* JsonT */		"[-2172116928000]",
-				/* JsonR */		"[\n\t-2172116928000\n]",
-				/* Xml */		"<array><number>-2172116928000</number></array>",
-				/* XmlT */		"<array><number>-2172116928000</number></array>",
-				/* XmlR */		"<array>\n\t<number>-2172116928000</number>\n</array>\n",
-				/* XmlNs */		"<array><number>-2172116928000</number></array>",
-				/* Html */		"<ul><li><number>-2172116928000</number></li></ul>",
-				/* HtmlT */		"<ul><li><number>-2172116928000</number></li></ul>",
-				/* HtmlR */		"<ul>\n\t<li><number>-2172116928000</number></li>\n</ul>\n",
-				/* Uon */		"@(-2172116928000)",
-				/* UonT */		"@(-2172116928000)",
-				/* UonR */		"@(\n\t-2172116928000\n)",
-				/* UrlEnc */	"0=-2172116928000",
-				/* UrlEncT */	"0=-2172116928000",
-				/* UrlEncR */	"0=-2172116928000",
-				/* MsgPack */	"91D3FFFFFE0643BDFA00",
-				/* MsgPackT */	"91D3FFFFFE0643BDFA00",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>-2172116928000</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>-2172116928000</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li>-2172116928000</rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n",
+				new ComboInput2<Date[]>(
+					"DateLongSwap/dateArray",
+					Date[].class,
+					dateArray,
+					DateLongSwap.class,
+					/* Json */		"[-2172116928000]",
+					/* JsonT */		"[-2172116928000]",
+					/* JsonR */		"[\n\t-2172116928000\n]",
+					/* Xml */		"<array><number>-2172116928000</number></array>",
+					/* XmlT */		"<array><number>-2172116928000</number></array>",
+					/* XmlR */		"<array>\n\t<number>-2172116928000</number>\n</array>\n",
+					/* XmlNs */		"<array><number>-2172116928000</number></array>",
+					/* Html */		"<ul><li><number>-2172116928000</number></li></ul>",
+					/* HtmlT */		"<ul><li><number>-2172116928000</number></li></ul>",
+					/* HtmlR */		"<ul>\n\t<li><number>-2172116928000</number></li>\n</ul>\n",
+					/* Uon */		"@(-2172116928000)",
+					/* UonT */		"@(-2172116928000)",
+					/* UonR */		"@(\n\t-2172116928000\n)",
+					/* UrlEnc */	"0=-2172116928000",
+					/* UrlEncT */	"0=-2172116928000",
+					/* UrlEncR */	"0=-2172116928000",
+					/* MsgPack */	"91D3FFFFFE0643BDFA00",
+					/* MsgPackT */	"91D3FFFFFE0643BDFA00",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>-2172116928000</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>-2172116928000</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li>-2172116928000</rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(Date[] o) {
+						assertType(Date.class, o[0]);
+					}
+				}
 			},
 			{	/* 11 */
-				"DateLongSwap/dateMap",
-				dateMap,
-				DateLongSwap.class,
-				/* Json */		"{foo:-2172116928000}",
-				/* JsonT */		"{foo:-2172116928000}",
-				/* JsonR */		"{\n\tfoo: -2172116928000\n}",
-				/* Xml */		"<object><foo _type='number'>-2172116928000</foo></object>",
-				/* XmlT */		"<object><foo t='number'>-2172116928000</foo></object>",
-				/* XmlR */		"<object>\n\t<foo _type='number'>-2172116928000</foo>\n</object>\n",
-				/* XmlNs */		"<object><foo _type='number'>-2172116928000</foo></object>",
-				/* Html */		"<table><tr><td>foo</td><td><number>-2172116928000</number></td></tr></table>",
-				/* HtmlT */		"<table><tr><td>foo</td><td><number>-2172116928000</number></td></tr></table>",
-				/* HtmlR */		"<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td><number>-2172116928000</number></td>\n\t</tr>\n</table>\n",
-				/* Uon */		"(foo=-2172116928000)",
-				/* UonT */		"(foo=-2172116928000)",
-				/* UonR */		"(\n\tfoo=-2172116928000\n)",
-				/* UrlEnc */	"foo=-2172116928000",
-				/* UrlEncT */	"foo=-2172116928000",
-				/* UrlEncR */	"foo=-2172116928000",
-				/* MsgPack */	"81A3666F6FD3FFFFFE0643BDFA00",
-				/* MsgPackT */	"81A3666F6FD3FFFFFE0643BDFA00",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>-2172116928000</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>-2172116928000</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:foo>-2172116928000</jp:foo>\n  </rdf:Description>\n</rdf:RDF>\n",
+				new ComboInput2<ObjectMap>(
+					"DateLongSwap/dateMap",
+					getType(Map.class,String.class,Date.class),
+					dateMap,
+					DateLongSwap.class,
+					/* Json */		"{foo:-2172116928000}",
+					/* JsonT */		"{foo:-2172116928000}",
+					/* JsonR */		"{\n\tfoo: -2172116928000\n}",
+					/* Xml */		"<object><foo _type='number'>-2172116928000</foo></object>",
+					/* XmlT */		"<object><foo t='number'>-2172116928000</foo></object>",
+					/* XmlR */		"<object>\n\t<foo _type='number'>-2172116928000</foo>\n</object>\n",
+					/* XmlNs */		"<object><foo _type='number'>-2172116928000</foo></object>",
+					/* Html */		"<table><tr><td>foo</td><td><number>-2172116928000</number></td></tr></table>",
+					/* HtmlT */		"<table><tr><td>foo</td><td><number>-2172116928000</number></td></tr></table>",
+					/* HtmlR */		"<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td><number>-2172116928000</number></td>\n\t</tr>\n</table>\n",
+					/* Uon */		"(foo=-2172116928000)",
+					/* UonT */		"(foo=-2172116928000)",
+					/* UonR */		"(\n\tfoo=-2172116928000\n)",
+					/* UrlEnc */	"foo=-2172116928000",
+					/* UrlEncT */	"foo=-2172116928000",
+					/* UrlEncR */	"foo=-2172116928000",
+					/* MsgPack */	"81A3666F6FD3FFFFFE0643BDFA00",
+					/* MsgPackT */	"81A3666F6FD3FFFFFE0643BDFA00",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>-2172116928000</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>-2172116928000</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:foo>-2172116928000</jp:foo>\n  </rdf:Description>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(ObjectMap o) {
+						assertType(Date.class, o.get("foo"));
+					}
+				}
 			},
 			{	/* 12 */
-				"DateMapSwap/singleDate",
-				singleDate,
-				DateMapSwap.class,
-				/* Json */		"{time:-2172116928000}",
-				/* JsonT */		"{time:-2172116928000}",
-				/* JsonR */		"{\n\ttime: -2172116928000\n}",
-				/* Xml */		"<object><time _type='number'>-2172116928000</time></object>",
-				/* XmlT */		"<object><time t='number'>-2172116928000</time></object>",
-				/* XmlR */		"<object>\n\t<time _type='number'>-2172116928000</time>\n</object>\n",
-				/* XmlNs */		"<object><time _type='number'>-2172116928000</time></object>",
-				/* Html */		"<table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table>",
-				/* HtmlT */		"<table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table>",
-				/* HtmlR */		"<table>\n\t<tr>\n\t\t<td>time</td>\n\t\t<td><number>-2172116928000</number></td>\n\t</tr>\n</table>\n",
-				/* Uon */		"(time=-2172116928000)",
-				/* UonT */		"(time=-2172116928000)",
-				/* UonR */		"(\n\ttime=-2172116928000\n)",
-				/* UrlEnc */	"time=-2172116928000",
-				/* UrlEncT */	"time=-2172116928000",
-				/* UrlEncR */	"time=-2172116928000",
-				/* MsgPack */	"81A474696D65D3FFFFFE0643BDFA00",
-				/* MsgPackT */	"81A474696D65D3FFFFFE0643BDFA00",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:time>-2172116928000</jp:time>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:time>-2172116928000</jp:time>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:time>-2172116928000</jp:time>\n  </rdf:Description>\n</rdf:RDF>\n",
+				new ComboInput2<Date>(
+					"DateMapSwap/singleDate",
+					Date.class,
+					singleDate,
+					DateMapSwap.class,
+					/* Json */		"{time:-2172116928000}",
+					/* JsonT */		"{time:-2172116928000}",
+					/* JsonR */		"{\n\ttime: -2172116928000\n}",
+					/* Xml */		"<object><time _type='number'>-2172116928000</time></object>",
+					/* XmlT */		"<object><time t='number'>-2172116928000</time></object>",
+					/* XmlR */		"<object>\n\t<time _type='number'>-2172116928000</time>\n</object>\n",
+					/* XmlNs */		"<object><time _type='number'>-2172116928000</time></object>",
+					/* Html */		"<table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table>",
+					/* HtmlT */		"<table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table>",
+					/* HtmlR */		"<table>\n\t<tr>\n\t\t<td>time</td>\n\t\t<td><number>-2172116928000</number></td>\n\t</tr>\n</table>\n",
+					/* Uon */		"(time=-2172116928000)",
+					/* UonT */		"(time=-2172116928000)",
+					/* UonR */		"(\n\ttime=-2172116928000\n)",
+					/* UrlEnc */	"time=-2172116928000",
+					/* UrlEncT */	"time=-2172116928000",
+					/* UrlEncR */	"time=-2172116928000",
+					/* MsgPack */	"81A474696D65D3FFFFFE0643BDFA00",
+					/* MsgPackT */	"81A474696D65D3FFFFFE0643BDFA00",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:time>-2172116928000</jp:time>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:time>-2172116928000</jp:time>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:time>-2172116928000</jp:time>\n  </rdf:Description>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(Date o) {
+						assertType(Date.class, o);
+					}
+				}
 			},
 			{	/* 13 */
-				"DateMapSwap/dateArray",
-				dateArray,
-				DateMapSwap.class,
-				/* Json */		"[{time:-2172116928000}]",
-				/* JsonT */		"[{time:-2172116928000}]",
-				/* JsonR */		"[\n\t{\n\t\ttime: -2172116928000\n\t}\n]",
-				/* Xml */		"<array><object><time _type='number'>-2172116928000</time></object></array>",
-				/* XmlT */		"<array><object><time t='number'>-2172116928000</time></object></array>",
-				/* XmlR */		"<array>\n\t<object>\n\t\t<time _type='number'>-2172116928000</time>\n\t</object>\n</array>\n",
-				/* XmlNs */		"<array><object><time _type='number'>-2172116928000</time></object></array>",
-				/* Html */		"<ul><li><table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table></li></ul>",
-				/* HtmlT */		"<ul><li><table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table></li></ul>",
-				/* HtmlR */		"<ul>\n\t<li>\n\t\t<table>\n\t\t\t<tr>\n\t\t\t\t<td>time</td>\n\t\t\t\t<td><number>-2172116928000</number></td>\n\t\t\t</tr>\n\t\t</table>\n\t</li>\n</ul>\n",
-				/* Uon */		"@((time=-2172116928000))",
-				/* UonT */		"@((time=-2172116928000))",
-				/* UonR */		"@(\n\t(\n\t\ttime=-2172116928000\n\t)\n)",
-				/* UrlEnc */	"0=(time=-2172116928000)",
-				/* UrlEncT */	"0=(time=-2172116928000)",
-				/* UrlEncR */	"0=(\n\ttime=-2172116928000\n)",
-				/* MsgPack */	"9181A474696D65D3FFFFFE0643BDFA00",
-				/* MsgPackT */	"9181A474696D65D3FFFFFE0643BDFA00",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li rdf:parseType='Resource'>\n      <jp:time>-2172116928000</jp:time>\n    </rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n",
+				new ComboInput2<Date[]>(
+					"DateMapSwap/dateArray",
+					Date[].class,
+					dateArray,
+					DateMapSwap.class,
+					/* Json */		"[{time:-2172116928000}]",
+					/* JsonT */		"[{time:-2172116928000}]",
+					/* JsonR */		"[\n\t{\n\t\ttime: -2172116928000\n\t}\n]",
+					/* Xml */		"<array><object><time _type='number'>-2172116928000</time></object></array>",
+					/* XmlT */		"<array><object><time t='number'>-2172116928000</time></object></array>",
+					/* XmlR */		"<array>\n\t<object>\n\t\t<time _type='number'>-2172116928000</time>\n\t</object>\n</array>\n",
+					/* XmlNs */		"<array><object><time _type='number'>-2172116928000</time></object></array>",
+					/* Html */		"<ul><li><table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table></li></ul>",
+					/* HtmlT */		"<ul><li><table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table></li></ul>",
+					/* HtmlR */		"<ul>\n\t<li>\n\t\t<table>\n\t\t\t<tr>\n\t\t\t\t<td>time</td>\n\t\t\t\t<td><number>-2172116928000</number></td>\n\t\t\t</tr>\n\t\t</table>\n\t</li>\n</ul>\n",
+					/* Uon */		"@((time=-2172116928000))",
+					/* UonT */		"@((time=-2172116928000))",
+					/* UonR */		"@(\n\t(\n\t\ttime=-2172116928000\n\t)\n)",
+					/* UrlEnc */	"0=(time=-2172116928000)",
+					/* UrlEncT */	"0=(time=-2172116928000)",
+					/* UrlEncR */	"0=(\n\ttime=-2172116928000\n)",
+					/* MsgPack */	"9181A474696D65D3FFFFFE0643BDFA00",
+					/* MsgPackT */	"9181A474696D65D3FFFFFE0643BDFA00",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li rdf:parseType='Resource'>\n      <jp:time>-2172116928000</jp:time>\n    </rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(Date[] o) {
+						assertType(Date.class, o[0]);
+					}
+				}
 			},
 			{	/* 14 */
-				"DateMapSwap/dateMap",
-				dateMap,
-				DateMapSwap.class,
-				/* Json */		"{foo:{time:-2172116928000}}",
-				/* JsonT */		"{foo:{time:-2172116928000}}",
-				/* JsonR */		"{\n\tfoo: {\n\t\ttime: -2172116928000\n\t}\n}",
-				/* Xml */		"<object><foo _type='object'><time _type='number'>-2172116928000</time></foo></object>",
-				/* XmlT */		"<object><foo t='object'><time t='number'>-2172116928000</time></foo></object>",
-				/* XmlR */		"<object>\n\t<foo _type='object'>\n\t\t<time _type='number'>-2172116928000</time>\n\t</foo>\n</object>\n",
-				/* XmlNs */		"<object><foo _type='object'><time _type='number'>-2172116928000</time></foo></object>",
-				/* Html */		"<table><tr><td>foo</td><td><table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table></td></tr></table>",
-				/* HtmlT */		"<table><tr><td>foo</td><td><table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table></td></tr></table>",
-				/* HtmlR */		"<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>\n\t\t\t<table>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>time</td>\n\t\t\t\t\t<td><number>-2172116928000</number></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t</tr>\n</table>\n",
-				/* Uon */		"(foo=(time=-2172116928000))",
-				/* UonT */		"(foo=(time=-2172116928000))",
-				/* UonR */		"(\n\tfoo=(\n\t\ttime=-2172116928000\n\t)\n)",
-				/* UrlEnc */	"foo=(time=-2172116928000)",
-				/* UrlEncT */	"foo=(time=-2172116928000)",
-				/* UrlEncR */	"foo=(\n\ttime=-2172116928000\n)",
-				/* MsgPack */	"81A3666F6F81A474696D65D3FFFFFE0643BDFA00",
-				/* MsgPackT */	"81A3666F6F81A474696D65D3FFFFFE0643BDFA00",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:foo rdf:parseType='Resource'>\n      <jp:time>-2172116928000</jp:time>\n    </jp:foo>\n  </rdf:Description>\n</rdf:RDF>\n",
+				new ComboInput2<ObjectMap>(
+					"DateMapSwap/dateMap",
+					getType(Map.class,String.class,Date.class),
+					dateMap,
+					DateMapSwap.class,
+					/* Json */		"{foo:{time:-2172116928000}}",
+					/* JsonT */		"{foo:{time:-2172116928000}}",
+					/* JsonR */		"{\n\tfoo: {\n\t\ttime: -2172116928000\n\t}\n}",
+					/* Xml */		"<object><foo _type='object'><time _type='number'>-2172116928000</time></foo></object>",
+					/* XmlT */		"<object><foo t='object'><time t='number'>-2172116928000</time></foo></object>",
+					/* XmlR */		"<object>\n\t<foo _type='object'>\n\t\t<time _type='number'>-2172116928000</time>\n\t</foo>\n</object>\n",
+					/* XmlNs */		"<object><foo _type='object'><time _type='number'>-2172116928000</time></foo></object>",
+					/* Html */		"<table><tr><td>foo</td><td><table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table></td></tr></table>",
+					/* HtmlT */		"<table><tr><td>foo</td><td><table><tr><td>time</td><td><number>-2172116928000</number></td></tr></table></td></tr></table>",
+					/* HtmlR */		"<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>\n\t\t\t<table>\n\t\t\t\t<tr>\n\t\t\t\t\t<td>time</td>\n\t\t\t\t\t<td><number>-2172116928000</number></td>\n\t\t\t\t</tr>\n\t\t\t</table>\n\t\t</td>\n\t</tr>\n</table>\n",
+					/* Uon */		"(foo=(time=-2172116928000))",
+					/* UonT */		"(foo=(time=-2172116928000))",
+					/* UonR */		"(\n\tfoo=(\n\t\ttime=-2172116928000\n\t)\n)",
+					/* UrlEnc */	"foo=(time=-2172116928000)",
+					/* UrlEncT */	"foo=(time=-2172116928000)",
+					/* UrlEncR */	"foo=(\n\ttime=-2172116928000\n)",
+					/* MsgPack */	"81A3666F6F81A474696D65D3FFFFFE0643BDFA00",
+					/* MsgPackT */	"81A3666F6F81A474696D65D3FFFFFE0643BDFA00",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo rdf:parseType='Resource'>\n<jp:time>-2172116928000</jp:time>\n</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:foo rdf:parseType='Resource'>\n      <jp:time>-2172116928000</jp:time>\n    </jp:foo>\n  </rdf:Description>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(ObjectMap o) {
+						assertType(Date.class, o.get("foo"));
+					}
+				}
 			},
 			{	/* 15 */
-				"DateSwap.DateMedium/singleDate",
-				singleDate,
-				DateSwap.DateMedium.class,
-				/* Json */		"'Mar 3, 1901'",
-				/* JsonT */		"'Mar 3, 1901'",
-				/* JsonR */		"'Mar 3, 1901'",
-				/* Xml */		"<string>Mar 3, 1901</string>",
-				/* XmlT */		"<string>Mar 3, 1901</string>",
-				/* XmlR */		"<string>Mar 3, 1901</string>\n",
-				/* XmlNs */		"<string>Mar 3, 1901</string>",
-				/* Html */		"<string>Mar 3, 1901</string>",
-				/* HtmlT */		"<string>Mar 3, 1901</string>",
-				/* HtmlR */		"<string>Mar 3, 1901</string>",
-				/* Uon */		"'Mar 3, 1901'",
-				/* UonT */		"'Mar 3, 1901'",
-				/* UonR */		"'Mar 3, 1901'",
-				/* UrlEnc */	"_value='Mar+3,+1901'",
-				/* UrlEncT */	"_value='Mar+3,+1901'",
-				/* UrlEncR */	"_value='Mar+3,+1901'",
-				/* MsgPack */	"AB4D617220332C2031393031",
-				/* MsgPackT */	"AB4D617220332C2031393031",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<j:value>Mar 3, 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<j:value>Mar 3, 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <j:value>Mar 3, 1901</j:value>\n  </rdf:Description>\n</rdf:RDF>\n",
+				new ComboInput2<Date>(
+					"DateSwap.DateMedium/singleDate",
+					Date.class,
+					singleDate,
+					DateSwap.DateMedium.class,
+					/* Json */		"'Mar 3, 1901'",
+					/* JsonT */		"'Mar 3, 1901'",
+					/* JsonR */		"'Mar 3, 1901'",
+					/* Xml */		"<string>Mar 3, 1901</string>",
+					/* XmlT */		"<string>Mar 3, 1901</string>",
+					/* XmlR */		"<string>Mar 3, 1901</string>\n",
+					/* XmlNs */		"<string>Mar 3, 1901</string>",
+					/* Html */		"<string>Mar 3, 1901</string>",
+					/* HtmlT */		"<string>Mar 3, 1901</string>",
+					/* HtmlR */		"<string>Mar 3, 1901</string>",
+					/* Uon */		"'Mar 3, 1901'",
+					/* UonT */		"'Mar 3, 1901'",
+					/* UonR */		"'Mar 3, 1901'",
+					/* UrlEnc */	"_value='Mar+3,+1901'",
+					/* UrlEncT */	"_value='Mar+3,+1901'",
+					/* UrlEncR */	"_value='Mar+3,+1901'",
+					/* MsgPack */	"AB4D617220332C2031393031",
+					/* MsgPackT */	"AB4D617220332C2031393031",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<j:value>Mar 3, 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<j:value>Mar 3, 1901</j:value>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <j:value>Mar 3, 1901</j:value>\n  </rdf:Description>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(Date o) {
+						assertType(Date.class, o);
+					}
+				}
 			},
 			{	/* 16 */
-				"DateSwap.DateMedium/dateArray",
-				dateArray,
-				DateSwap.DateMedium.class,
-				/* Json */		"['Mar 3, 1901']",
-				/* JsonT */		"['Mar 3, 1901']",
-				/* JsonR */		"[\n\t'Mar 3, 1901'\n]",
-				/* Xml */		"<array><string>Mar 3, 1901</string></array>",
-				/* XmlT */		"<array><string>Mar 3, 1901</string></array>",
-				/* XmlR */		"<array>\n\t<string>Mar 3, 1901</string>\n</array>\n",
-				/* XmlNs */		"<array><string>Mar 3, 1901</string></array>",
-				/* Html */		"<ul><li>Mar 3, 1901</li></ul>",
-				/* HtmlT */		"<ul><li>Mar 3, 1901</li></ul>",
-				/* HtmlR */		"<ul>\n\t<li>Mar 3, 1901</li>\n</ul>\n",
-				/* Uon */		"@('Mar 3, 1901')",
-				/* UonT */		"@('Mar 3, 1901')",
-				/* UonR */		"@(\n\t'Mar 3, 1901'\n)",
-				/* UrlEnc */	"0='Mar+3,+1901'",
-				/* UrlEncT */	"0='Mar+3,+1901'",
-				/* UrlEncR */	"0='Mar+3,+1901'",
-				/* MsgPack */	"91AB4D617220332C2031393031",
-				/* MsgPackT */	"91AB4D617220332C2031393031",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Mar 3, 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Mar 3, 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li>Mar 3, 1901</rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n",
+				new ComboInput2<Date[]>(
+					"DateSwap.DateMedium/dateArray",
+					Date[].class,
+					dateArray,
+					DateSwap.DateMedium.class,
+					/* Json */		"['Mar 3, 1901']",
+					/* JsonT */		"['Mar 3, 1901']",
+					/* JsonR */		"[\n\t'Mar 3, 1901'\n]",
+					/* Xml */		"<array><string>Mar 3, 1901</string></array>",
+					/* XmlT */		"<array><string>Mar 3, 1901</string></array>",
+					/* XmlR */		"<array>\n\t<string>Mar 3, 1901</string>\n</array>\n",
+					/* XmlNs */		"<array><string>Mar 3, 1901</string></array>",
+					/* Html */		"<ul><li>Mar 3, 1901</li></ul>",
+					/* HtmlT */		"<ul><li>Mar 3, 1901</li></ul>",
+					/* HtmlR */		"<ul>\n\t<li>Mar 3, 1901</li>\n</ul>\n",
+					/* Uon */		"@('Mar 3, 1901')",
+					/* UonT */		"@('Mar 3, 1901')",
+					/* UonR */		"@(\n\t'Mar 3, 1901'\n)",
+					/* UrlEnc */	"0='Mar+3,+1901'",
+					/* UrlEncT */	"0='Mar+3,+1901'",
+					/* UrlEncR */	"0='Mar+3,+1901'",
+					/* MsgPack */	"91AB4D617220332C2031393031",
+					/* MsgPackT */	"91AB4D617220332C2031393031",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Mar 3, 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Seq>\n<rdf:li>Mar 3, 1901</rdf:li>\n</rdf:Seq>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Seq>\n    <rdf:li>Mar 3, 1901</rdf:li>\n  </rdf:Seq>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(Date[] o) {
+						assertType(Date.class, o[0]);
+					}
+				}
 			},
 			{	/* 17 */
-				"DateSwap.DateMedium/dateMap",
-				dateMap,
-				DateSwap.DateMedium.class,
-				/* Json */		"{foo:'Mar 3, 1901'}",
-				/* JsonT */		"{foo:'Mar 3, 1901'}",
-				/* JsonR */		"{\n\tfoo: 'Mar 3, 1901'\n}",
-				/* Xml */		"<object><foo>Mar 3, 1901</foo></object>",
-				/* XmlT */		"<object><foo>Mar 3, 1901</foo></object>",
-				/* XmlR */		"<object>\n\t<foo>Mar 3, 1901</foo>\n</object>\n",
-				/* XmlNs */		"<object><foo>Mar 3, 1901</foo></object>",
-				/* Html */		"<table><tr><td>foo</td><td>Mar 3, 1901</td></tr></table>",
-				/* HtmlT */		"<table><tr><td>foo</td><td>Mar 3, 1901</td></tr></table>",
-				/* HtmlR */		"<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>Mar 3, 1901</td>\n\t</tr>\n</table>\n",
-				/* Uon */		"(foo='Mar 3, 1901')",
-				/* UonT */		"(foo='Mar 3, 1901')",
-				/* UonR */		"(\n\tfoo='Mar 3, 1901'\n)",
-				/* UrlEnc */	"foo='Mar+3,+1901'",
-				/* UrlEncT */	"foo='Mar+3,+1901'",
-				/* UrlEncR */	"foo='Mar+3,+1901'",
-				/* MsgPack */	"81A3666F6FAB4D617220332C2031393031",
-				/* MsgPackT */	"81A3666F6FAB4D617220332C2031393031",
-				/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>Mar 3, 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>Mar 3, 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
-				/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:foo>Mar 3, 1901</jp:foo>\n  </rdf:Description>\n</rdf:RDF>\n",
+				new ComboInput2<ObjectMap>(
+					"DateSwap.DateMedium/dateMap",
+					getType(Map.class,String.class,Date.class),
+					dateMap,
+					DateSwap.DateMedium.class,
+					/* Json */		"{foo:'Mar 3, 1901'}",
+					/* JsonT */		"{foo:'Mar 3, 1901'}",
+					/* JsonR */		"{\n\tfoo: 'Mar 3, 1901'\n}",
+					/* Xml */		"<object><foo>Mar 3, 1901</foo></object>",
+					/* XmlT */		"<object><foo>Mar 3, 1901</foo></object>",
+					/* XmlR */		"<object>\n\t<foo>Mar 3, 1901</foo>\n</object>\n",
+					/* XmlNs */		"<object><foo>Mar 3, 1901</foo></object>",
+					/* Html */		"<table><tr><td>foo</td><td>Mar 3, 1901</td></tr></table>",
+					/* HtmlT */		"<table><tr><td>foo</td><td>Mar 3, 1901</td></tr></table>",
+					/* HtmlR */		"<table>\n\t<tr>\n\t\t<td>foo</td>\n\t\t<td>Mar 3, 1901</td>\n\t</tr>\n</table>\n",
+					/* Uon */		"(foo='Mar 3, 1901')",
+					/* UonT */		"(foo='Mar 3, 1901')",
+					/* UonR */		"(\n\tfoo='Mar 3, 1901'\n)",
+					/* UrlEnc */	"foo='Mar+3,+1901'",
+					/* UrlEncT */	"foo='Mar+3,+1901'",
+					/* UrlEncR */	"foo='Mar+3,+1901'",
+					/* MsgPack */	"81A3666F6FAB4D617220332C2031393031",
+					/* MsgPackT */	"81A3666F6FAB4D617220332C2031393031",
+					/* RdfXml */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>Mar 3, 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlT */	"<rdf:RDF>\n<rdf:Description>\n<jp:foo>Mar 3, 1901</jp:foo>\n</rdf:Description>\n</rdf:RDF>\n",
+					/* RdfXmlR */	"<rdf:RDF>\n  <rdf:Description>\n    <jp:foo>Mar 3, 1901</jp:foo>\n  </rdf:Description>\n</rdf:RDF>\n"
+				)
+				{
+					public void verify(ObjectMap o) {
+						assertType(Date.class, o.get("foo"));
+					}
+				}
 			},
 		});
 	}
 	
-	private Class<?> swapClass;
+	private final Class<?> swapClass;
 	
-	public DateSwapComboTest(
-			String label, 
-			Object in,
-			Class<?> swapClass, 
-			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
-		);
-		this.swapClass = swapClass;
+	public DateSwapComboTest(ComboInput2<?> comboInput) {
+		super(comboInput);
+		this.swapClass = comboInput.swapClass;
+	}
+		
+	public static class ComboInput2<T> extends ComboInput<T> {
+		private final Class<?> swapClass;
+		
+		public ComboInput2(
+				String label,
+				Type type,
+				T in,
+				Class<?> swapClass,
+				String json,
+				String jsonT,
+				String jsonR,
+				String xml,
+				String xmlT,
+				String xmlR,
+				String xmlNs,
+				String html,
+				String htmlT,
+				String htmlR,
+				String uon,
+				String uonT,
+				String uonR,
+				String urlEncoding,
+				String urlEncodingT,
+				String urlEncodingR,
+				String msgPack,
+				String msgPackT,
+				String rdfXml,
+				String rdfXmlT,
+				String rdfXmlR
+			) {
+			super(label, type, in, json, jsonT, jsonR, xml, xmlT, xmlR, xmlNs, html, htmlT, htmlR, uon, uonT, uonR, urlEncoding, urlEncodingT, urlEncodingR, msgPack, msgPackT, rdfXml, rdfXmlT, rdfXmlR);
+			this.swapClass = swapClass;
+		}
 	}
 	
 	@BeforeClass

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core-test/src/test/java/org/apache/juneau/utils/PojoQueryTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/utils/PojoQueryTest.java b/juneau-core-test/src/test/java/org/apache/juneau/utils/PojoQueryTest.java
index 157c45e..caa5285 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/utils/PojoQueryTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/utils/PojoQueryTest.java
@@ -336,7 +336,7 @@ public class PojoQueryTest {
 		BeanSession session = BeanContext.DEFAULT.createSession();
 		List results;
 
-		List<D1> in = new AList<D1>() 
+		List<D1> in = new AList<D1>()
 			.append(new D1("foo"))
 			.append(new D1("bar"))
 			.append(new D1("baz"))

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core-test/src/test/java/org/apache/juneau/xml/BasicXmlTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/xml/BasicXmlTest.java b/juneau-core-test/src/test/java/org/apache/juneau/xml/BasicXmlTest.java
index 5754274..ec7bcf4 100644
--- a/juneau-core-test/src/test/java/org/apache/juneau/xml/BasicXmlTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/xml/BasicXmlTest.java
@@ -250,7 +250,7 @@ public class BasicXmlTest {
 						+"<k6 _type='null'/>"
 					+"</c>"
 				+"</object>",
-		   },
+			},
 			{
 				"BeanWithTypeName",
 				new BeanWithTypeName().init(),
@@ -501,16 +501,16 @@ public class BasicXmlTest {
 			{
 				"BeanWithXmlFormatAttrProperty",
 				new BeanWithXmlFormatAttrProperty().init(),
-         	"<object a='foo' b='123'/>",
-         	"<object a='foo' b='123'/>\n",
-         	"<object a='foo' b='123'/>",
+				"<object a='foo' b='123'/>",
+				"<object a='foo' b='123'/>\n",
+				"<object a='foo' b='123'/>",
 			},
 			{
 				"BeanWithXmlFormatAttrs",
 				new BeanWithXmlFormatAttrs().init(),
-         	"<object a='foo' b='123'/>",
-         	"<object a='foo' b='123'/>\n",
-         	"<object a='foo' b='123'/>",
+				"<object a='foo' b='123'/>",
+				"<object a='foo' b='123'/>\n",
+				"<object a='foo' b='123'/>",
 			},
 			{
 				"BeanWithXmlFormatElementProperty",

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core-test/src/test/java/org/apache/juneau/xml/XmlTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/xml/XmlTest.java b/juneau-core-test/src/test/java/org/apache/juneau/xml/XmlTest.java
index 1926e12..c9a4fbe 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/xml/XmlTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/xml/XmlTest.java
@@ -149,7 +149,7 @@ public class XmlTest {
 	@Test
 	public void testBeanNameAnnotation() throws Exception {
 		String e =
-			  "<Person1>\n"
+			"<Person1>\n"
 			+ "	<name>John Smith</name>\n"
 			+ "	<age>123</age>\n"
 			+ "</Person1>\n";
@@ -180,7 +180,7 @@ public class XmlTest {
 	@Test
 	public void testTrimNulls() throws Exception {
 		String e =
-			  "<Person1>\n"
+			"<Person1>\n"
 			+ "	<age>123</age>\n"
 			+ "</Person1>\n";
 		String r = XmlSerializer.DEFAULT_SQ_READABLE.serialize(new Person1(null, 123));

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanContext.java b/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
index 763d76e..0977ba0 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
@@ -876,7 +876,7 @@ public class BeanContext extends Context {
 		notBeanPackagePrefixes = l2.toArray(new String[l2.size()]);
 
 		LinkedList<BeanFilter> lbf = new LinkedList<BeanFilter>();
- 		try {
+		try {
 			for (Class<?> c : pm.get(BEAN_beanFilters, Class[].class, new Class[0])) {
 				if (isParentClass(BeanFilter.class, c))
 					lbf.add((BeanFilter)c.newInstance());
@@ -888,10 +888,10 @@ public class BeanContext extends Context {
 		} catch (Exception e) {
 			throw new RuntimeException(e);
 		}
- 		beanFilters = lbf.toArray(new BeanFilter[0]);
+		beanFilters = lbf.toArray(new BeanFilter[0]);
 
 		LinkedList<PojoSwap<?,?>> lpf = new LinkedList<PojoSwap<?,?>>();
- 		try {
+		try {
 			for (Class<?> c : pm.get(BEAN_pojoSwaps, Class[].class, new Class[0])) {
 				if (isParentClass(PojoSwap.class, c))
 					lpf.add((PojoSwap<?,?>)c.newInstance());
@@ -901,13 +901,13 @@ public class BeanContext extends Context {
 		} catch (Exception e) {
 			throw new RuntimeException(e);
 		}
- 		pojoSwaps = lpf.toArray(new PojoSwap[0]);
+		pojoSwaps = lpf.toArray(new PojoSwap[0]);
 
- 		implClasses = new TreeMap<Class<?>,Class<?>>(new ClassComparator());
- 		Map<Class,Class> m = pm.getMap(BEAN_implClasses, Class.class, Class.class, null);
- 		if (m != null)
-	 		for (Map.Entry<Class,Class> e : m.entrySet())
-	 			implClasses.put(e.getKey(), e.getValue());
+		implClasses = new TreeMap<Class<?>,Class<?>>(new ClassComparator());
+		Map<Class,Class> m = pm.getMap(BEAN_implClasses, Class.class, Class.class, null);
+		if (m != null)
+			for (Map.Entry<Class,Class> e : m.entrySet())
+				implClasses.put(e.getKey(), e.getValue());
 		implKeyClasses = implClasses.keySet().toArray(new Class[0]);
 		implValueClasses = implClasses.values().toArray(new Class[0]);
 
@@ -1112,9 +1112,9 @@ public class BeanContext extends Context {
 			ClassMeta<?> ce = c.length == pos ? object() : getTypedClassMeta(c, pos);
 			return (ce.isObject() ? cm : new ClassMeta(cm, null, null, ce));
 		} else if (cm.isMap()) {
-			 ClassMeta<?> ck = c.length == pos ? object() : c[pos++];
-			 ClassMeta<?> cv = c.length == pos ? object() : getTypedClassMeta(c, pos);
-			 return (ck.isObject() && cv.isObject() ? cm : new ClassMeta(cm, ck, cv, null));
+			ClassMeta<?> ck = c.length == pos ? object() : c[pos++];
+			ClassMeta<?> cv = c.length == pos ? object() : getTypedClassMeta(c, pos);
+			return (ck.isObject() && cv.isObject() ? cm : new ClassMeta(cm, ck, cv, null));
 		}
 		return cm;
 	}
@@ -1123,8 +1123,19 @@ public class BeanContext extends Context {
 		if (o == null)
 			return null;
 
-		if (o instanceof ClassMeta)
-			return (ClassMeta)o;
+		if (o instanceof ClassMeta) {
+			ClassMeta<?> cm = (ClassMeta)o;
+
+			// This classmeta could have been created by a different context.
+			// Need to re-resolve it to pick up PojoSwaps and stuff on this context.
+			if (cm.getBeanContext() == this)
+				return cm;
+			if (cm.isMap())
+				return getClassMeta(cm.innerClass, cm.getKeyType(), cm.getValueType());
+			if (cm.isCollection())
+				return getClassMeta(cm.innerClass, cm.getElementType());
+			return getClassMeta(cm.innerClass);
+		}
 
 		Class c = resolve(o, typeVarImpls);
 
@@ -1161,7 +1172,7 @@ public class BeanContext extends Context {
 		return rawType;
 	}
 
-	/** 
+	/**
 	 * Convert a Type to a Class if possible.
 	 * Return null if not possible.
 	 */

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java b/juneau-core/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
index 219211d..0715bb5 100644
--- a/juneau-core/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/csv/CsvSerializerBuilder.java
@@ -148,6 +148,13 @@ public class CsvSerializerBuilder extends SerializerBuilder {
 		super.sortMaps(value);
 		return this;
 	}
+
+	@Override /* SerializerBuilder */
+	public CsvSerializerBuilder abridged(boolean value) {
+		super.abridged(value);
+		return this;
+	}
+
 	@Override /* CoreObjectBuilder */
 	public CsvSerializerBuilder beansRequireDefaultConstructor(boolean value) {
 		super.beansRequireDefaultConstructor(value);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementContainer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementContainer.java b/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementContainer.java
index 1b8269e..0087b29 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementContainer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementContainer.java
@@ -60,6 +60,33 @@ public class HtmlElementContainer extends HtmlElement {
 	}
 
 	/**
+	 * Returns the child node at the specified address.
+	 * <p>
+	 * Indexes are zero-indexed.
+	 * <p>
+	 * For example, calling <code>getChild(1,2,3);</code> will return the 4th child of the 3rd child of the 2nd child.
+	 *
+	 * @param index The child indexes.
+	 * @return The child node, or <jk>null</jk> if it doesn't point to a valid child.
+	 */
+	public Object getChild(int...index) {
+		if (index.length == 0)
+			return null;
+		if (index.length == 1)
+			return getChild(index[0]);
+		Object c = this;
+		for (int i = 0; i < index.length; i++) {
+			if (c instanceof HtmlElementMixed)
+				c = ((HtmlElementMixed)c).getChild(index[i]);
+			else if (c instanceof HtmlElementContainer)
+				c = ((HtmlElementContainer)c).getChild(index[i]);
+			else
+				return null;
+		}
+		return c;
+	}
+
+	/**
 	 * Returns the child node at the specified index.
 	 *
 	 * @param type The class type of the node.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementMixed.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementMixed.java b/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementMixed.java
index 0430528..869391a 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementMixed.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/html5/HtmlElementMixed.java
@@ -61,6 +61,33 @@ public class HtmlElementMixed extends HtmlElement {
 	}
 
 	/**
+	 * Returns the child node at the specified address.
+	 * <p>
+	 * Indexes are zero-indexed.
+	 * <p>
+	 * For example, calling <code>getChild(1,2,3);</code> will return the 4th child of the 3rd child of the 2nd child.
+	 *
+	 * @param index The child indexes.
+	 * @return The child node, or <jk>null</jk> if it doesn't point to a valid child.
+	 */
+	public Object getChild(int...index) {
+		if (index.length == 0)
+			return null;
+		if (index.length == 1)
+			return getChild(index[0]);
+		Object c = this;
+		for (int i = 0; i < index.length; i++) {
+			if (c instanceof HtmlElementMixed)
+				c = ((HtmlElementMixed)c).getChild(index[i]);
+			else if (c instanceof HtmlElementContainer)
+				c = ((HtmlElementContainer)c).getChild(index[i]);
+			else
+				return null;
+		}
+		return c;
+	}
+
+	/**
 	 * Returns the child node at the specified index.
 	 *
 	 * @param type The class type of the node.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/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 abb55c8..168ac5c 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
@@ -202,7 +202,7 @@ public class HtmlSerializer extends XmlSerializer {
 	 * @throws IOException If a problem occurred trying to send output to the writer.
 	 */
 	private HtmlWriter doSerialize(HtmlSerializerSession session, Object o, HtmlWriter w) throws Exception {
-		serializeAnything(session, w, o, null, null, session.getInitialDepth()-1, null, true);
+		serializeAnything(session, w, o, session.getExpectedRootType(o), null, session.getInitialDepth()-1, null, true);
 		return w;
 	}
 
@@ -284,14 +284,14 @@ public class HtmlSerializer extends XmlSerializer {
 				cr = CR_SIMPLE;
 
 			} else if (sType.isNumber()) {
-				if (eType.isNumber())
+				if (eType.isNumber() && ! isRoot)
 					out.append(o);
 				else
 					out.sTag("number").append(o).eTag("number");
 				cr = CR_SIMPLE;
 
 			} else if (sType.isBoolean()) {
-				if (eType.isBoolean())
+				if (eType.isBoolean() && ! isRoot)
 					out.append(o);
 				else
 					out.sTag("boolean").append(o).eTag("boolean");
@@ -353,8 +353,8 @@ public class HtmlSerializer extends XmlSerializer {
 	@SuppressWarnings({ "rawtypes", "unchecked" })
 	private void serializeMap(HtmlSerializerSession session, HtmlWriter out, Map m, ClassMeta<?> sType, ClassMeta<?> eKeyType, ClassMeta<?> eValueType, String typeName, BeanPropertyMeta ppMeta) throws Exception {
 
-		ClassMeta<?> keyType = eKeyType == null ? sType.getKeyType() : eKeyType;
-		ClassMeta<?> valueType = eValueType == null ? sType.getValueType() : eValueType;
+		ClassMeta<?> keyType = eKeyType == null ? session.string() : eKeyType;
+		ClassMeta<?> valueType = eValueType == null ? session.object() : eValueType;
 		ClassMeta<?> aType = session.getClassMetaForObject(m);       // The actual type
 
 		int i = session.getIndent();
@@ -504,6 +504,7 @@ public class HtmlSerializer extends XmlSerializer {
 				out.oTag(i+1, "tr");
 				String typeName = (cm == null ? null : cm.getDictionaryName());
 				String typeProperty = session.getBeanTypePropertyName(cm);
+
 				if (typeName != null && eType.getElementType() != cm)
 					out.attr(typeProperty, typeName);
 				out.cTag().nl();
@@ -516,7 +517,7 @@ public class HtmlSerializer extends XmlSerializer {
 
 					for (Object k : th) {
 						out.sTag(i+2, "td");
-						ContentResult cr = serializeAnything(session, out, m2.get(k), seType, session.toString(k), 2, null, false);
+						ContentResult cr = serializeAnything(session, out, m2.get(k), eType.getElementType(), session.toString(k), 2, null, false);
 						if (cr == CR_NORMAL)
 							out.i(i+2);
 						out.eTag("td").nl();
@@ -549,7 +550,7 @@ public class HtmlSerializer extends XmlSerializer {
 			out.append('>').nl();
 			for (Object o : c) {
 				out.sTag(i+1, "li");
-				ContentResult cr = serializeAnything(session, out, o, seType, name, 1, null, false);
+				ContentResult cr = serializeAnything(session, out, o, eType.getElementType(), name, 1, null, false);
 				if (cr == CR_NORMAL)
 					out.i(i+1);
 				out.eTag("li").nl();

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
index 7c9a923..fe0a7c5 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializerBuilder.java
@@ -321,6 +321,12 @@ public class HtmlSerializerBuilder extends XmlSerializerBuilder {
 	}
 
 	@Override /* SerializerBuilder */
+	public HtmlSerializerBuilder abridged(boolean value) {
+		super.abridged(value);
+		return this;
+	}
+
+	@Override /* SerializerBuilder */
 	public HtmlSerializerBuilder sortMaps(boolean value) {
 		super.sortMaps(value);
 		return this;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java b/juneau-core/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
index c591b91..c4d7d40 100644
--- a/juneau-core/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/jso/JsoSerializerBuilder.java
@@ -149,6 +149,12 @@ public class JsoSerializerBuilder extends SerializerBuilder {
 		return this;
 	}
 
+	@Override /* SerializerBuilder */
+	public JsoSerializerBuilder abridged(boolean value) {
+		super.abridged(value);
+		return this;
+	}
+
 	@Override /* CoreObjectBuilder */
 	public JsoSerializerBuilder beansRequireDefaultConstructor(boolean value) {
 		super.beansRequireDefaultConstructor(value);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java b/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
index 104d838..3e28eab 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
@@ -60,7 +60,7 @@ public final class JsonSchemaSerializer extends JsonSerializer {
 	}
 
 	@Override /* CoreObject */
- 	protected ObjectMap getOverrideProperties() {
+	protected ObjectMap getOverrideProperties() {
 		return super.getOverrideProperties().append(SERIALIZER_detectRecursions, true).append(SERIALIZER_ignoreRecursions, true);
 	}
 
@@ -78,7 +78,7 @@ public final class JsonSchemaSerializer extends JsonSerializer {
 	protected void doSerialize(SerializerSession session, Object o) throws Exception {
 		JsonSerializerSession s = (JsonSerializerSession)session;
 		ObjectMap schema = getSchema(s, session.getClassMetaForObject(o), "root", null);
-		serializeAnything(s, s.getWriter(), schema, null, "root", null);
+		serializeAnything(s, s.getWriter(), schema, s.getExpectedRootType(o), "root", null);
 	}
 
 	/*

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java b/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
index aab5768..9a8616f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializerBuilder.java
@@ -165,6 +165,13 @@ public class JsonSchemaSerializerBuilder extends JsonSerializerBuilder {
 		super.sortMaps(value);
 		return this;
 	}
+
+	@Override /* SerializerBuilder */
+	public JsonSchemaSerializerBuilder abridged(boolean value) {
+		super.abridged(value);
+		return this;
+	}
+
 	@Override /* CoreObjectBuilder */
 	public JsonSchemaSerializerBuilder beansRequireDefaultConstructor(boolean value) {
 		super.beansRequireDefaultConstructor(value);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java b/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
index 7464495..91945d4 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
@@ -387,6 +387,6 @@ public class JsonSerializer extends WriterSerializer {
 	@Override /* Serializer */
 	protected void doSerialize(SerializerSession session, Object o) throws Exception {
 		JsonSerializerSession s = (JsonSerializerSession)session;
-		serializeAnything(s, s.getWriter(), o, null, "root", null);
+		serializeAnything(s, s.getWriter(), o, s.getExpectedRootType(o), "root", null);
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java b/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
index b226459..97323aa 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializerBuilder.java
@@ -214,6 +214,12 @@ public class JsonSerializerBuilder extends SerializerBuilder {
 		return this;
 	}
 
+	@Override /* SerializerBuilder */
+	public JsonSerializerBuilder abridged(boolean value) {
+		super.abridged(value);
+		return this;
+	}
+
 	@Override /* CoreObjectBuilder */
 	public JsonSerializerBuilder beansRequireDefaultConstructor(boolean value) {
 		super.beansRequireDefaultConstructor(value);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
index 9834195..89e736b 100644
--- a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
@@ -217,6 +217,6 @@ public class MsgPackSerializer extends OutputStreamSerializer {
 	@Override /* Serializer */
 	protected void doSerialize(SerializerSession session, Object o) throws Exception {
 		MsgPackSerializerSession s = (MsgPackSerializerSession)session;
-		serializeAnything(s, s.getOutputStream(), o, null, "root", null);
+		serializeAnything(s, s.getOutputStream(), o, s.getExpectedRootType(o), "root", null);
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
index de0fb45..f909e14 100644
--- a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializerBuilder.java
@@ -148,6 +148,13 @@ public class MsgPackSerializerBuilder extends SerializerBuilder {
 		super.sortMaps(value);
 		return this;
 	}
+
+	@Override /* SerializerBuilder */
+	public MsgPackSerializerBuilder abridged(boolean value) {
+		super.abridged(value);
+		return this;
+	}
+
 	@Override /* CoreObjectBuilder */
 	public MsgPackSerializerBuilder beansRequireDefaultConstructor(boolean value) {
 		super.beansRequireDefaultConstructor(value);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/bde9b101/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java b/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
index 8ab1255..d56aee6 100644
--- a/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
+++ b/juneau-core/src/main/java/org/apache/juneau/plaintext/PlainTextSerializerBuilder.java
@@ -148,6 +148,13 @@ public class PlainTextSerializerBuilder extends SerializerBuilder {
 		super.sortMaps(value);
 		return this;
 	}
+
+	@Override /* SerializerBuilder */
+	public PlainTextSerializerBuilder abridged(boolean value) {
+		super.abridged(value);
+		return this;
+	}
+
 	@Override /* CoreObjectBuilder */
 	public PlainTextSerializerBuilder beansRequireDefaultConstructor(boolean value) {
 		super.beansRequireDefaultConstructor(value);



Mime
View raw message