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

[30/34] incubator-juneau git commit: Add builder classes for all serializers and parsers.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
index d99f5ff..a13df15 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
@@ -19,7 +19,7 @@ import java.util.*;
 
 import javax.xml.datatype.*;
 
-import org.apache.juneau.BeanDictionaryMap;
+import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.json.*;
 import org.apache.juneau.json.annotation.*;
@@ -36,7 +36,7 @@ import org.junit.*;
 @SuppressWarnings({"unchecked","serial","javadoc"})
 public class RoundTripBeanMapsTest extends RoundTripTest {
 
-	public RoundTripBeanMapsTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripBeanMapsTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 
@@ -219,14 +219,14 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 	//====================================================================================================
 	@Test
 	public void testSubTypesUsingAnnotation() throws Exception {
-		JsonSerializer js = JsonSerializer.DEFAULT_LAX.clone().addPojoSwaps(XMLGregorianCalendarSwap.class);
+		JsonSerializer js = new JsonSerializerBuilder().simple().pojoSwaps(XMLGregorianCalendarSwap.class).build();
 
 		// Skip validation-only tests
 		if (isValidationOnly())
 			return;
 
-		Serializer s = getSerializer().clone().addPojoSwaps(XMLGregorianCalendarSwap.class);
-		Parser p = getParser().clone().addPojoSwaps(XMLGregorianCalendarSwap.class);
+		Serializer s = getSerializer().builder().pojoSwaps(XMLGregorianCalendarSwap.class).build();
+		Parser p = getParser().builder().pojoSwaps(XMLGregorianCalendarSwap.class).build();
 
 		B1 b1 = B1.create();
 		Object r = s.serialize(b1);
@@ -292,14 +292,14 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 	//====================================================================================================
 	@Test
 	public void testSubTypesUsingBeanFilter() throws Exception {
-		JsonSerializer js = JsonSerializer.DEFAULT_LAX.clone().addPojoSwaps(XMLGregorianCalendarSwap.class);
+		JsonSerializer js = new JsonSerializerBuilder().simple().pojoSwaps(XMLGregorianCalendarSwap.class).build();
 
 		// Skip validation-only tests
 		if (isValidationOnly())
 			return;
 
-		Serializer s = getSerializer().clone().addBeanFilters(CFilter.class).addPojoSwaps(XMLGregorianCalendarSwap.class);
-		Parser p = getParser().clone().addBeanFilters(CFilter.class).addPojoSwaps(XMLGregorianCalendarSwap.class);
+		Serializer s = getSerializer().builder().beanFilters(CFilter.class).pojoSwaps(XMLGregorianCalendarSwap.class).build();
+		Parser p = getParser().builder().beanFilters(CFilter.class).pojoSwaps(XMLGregorianCalendarSwap.class).build();
 
 		C1 c1 = C1.create();
 		Object r = s.serialize(c1);
@@ -357,7 +357,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 	public static class CFilter extends BeanFilterBuilder {
 		public CFilter() {
 			super(C.class);
-			addToBeanDictionary(CFilterDictionaryMap.class);
+			beanDictionary(CFilterDictionaryMap.class);
 		}
 	}
 
@@ -420,8 +420,8 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 		if (isValidationOnly())
 			return;
 
-		Serializer s = getSerializer().clone().addBeanFilters(CAFilter.class);
-		Parser p = getParser().clone().addBeanFilters(CAFilter.class);
+		Serializer s = getSerializer().builder().beanFilters(CAFilter.class).build();
+		Parser p = getParser().builder().beanFilters(CAFilter.class).build();
 
 		CA1 c1 = CA1.create();
 		Object r = s.serialize(c1);
@@ -452,7 +452,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 	public static class CAFilter extends BeanFilterBuilder {
 		public CAFilter() {
 			super(CA.class);
-			addToBeanDictionary(CAFilterDictionaryMap.class);
+			beanDictionary(CAFilterDictionaryMap.class);
 		}
 	}
 
@@ -498,14 +498,14 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 	//====================================================================================================
 	@Test
 	public void testPropertiesUsingBeanFilter() throws Exception {
-		JsonSerializer js = JsonSerializer.DEFAULT_LAX.clone().addBeanFilters(D2Filter.class);
+		JsonSerializer js = new JsonSerializerBuilder().simple().beanFilters(D2Filter.class).build();
 
 		// Skip validation-only tests
 		if (isValidationOnly())
 			return;
 
-		Serializer s = getSerializer().clone().addBeanFilters(D2Filter.class);
-		Parser p = getParser().clone().addBeanFilters(D2Filter.class);
+		Serializer s = getSerializer().builder().beanFilters(D2Filter.class).build();
+		Parser p = getParser().builder().beanFilters(D2Filter.class).build();
 
 		D2 d = new D2().init();
 		Object r = s.serialize(d);
@@ -526,7 +526,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 	public static class D2Filter extends BeanFilterBuilder {
 		public D2Filter() {
 			super(D2.class);
-			setProperties("f3,f2");
+			properties("f3,f2");
 		}
 	}
 
@@ -568,8 +568,8 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 		if (isValidationOnly())
 			return;
 
-		Serializer s = getSerializer().clone().addBeanFilters(E2Filter.class);
-		Parser p = getParser().clone().addBeanFilters(E2Filter.class);
+		Serializer s = getSerializer().builder().beanFilters(E2Filter.class).build();
+		Parser p = getParser().builder().beanFilters(E2Filter.class).build();
 
 		E2 e = new E2().init();
 		Object r = s.serialize(e);
@@ -589,7 +589,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 	public static class E2Filter extends BeanFilterBuilder {
 		public E2Filter() {
 			super(E2.class);
-			setExcludeProperties("f2");
+			excludeProperties("f2");
 		}
 	}
 
@@ -630,8 +630,8 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 	//====================================================================================================
 	@Test
 	public void testInterfaceClassUsingBeanFilter() throws Exception {
-		Serializer s;
-		Parser p;
+		SerializerBuilder s = getSerializer().builder();
+		ParserBuilder p = getParser() == null ? null : getParser().builder();
 		FB2 t;
 		Object r;
 
@@ -640,30 +640,30 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 			return;
 
 		// --- BeanFilter defined on parent class ---
-		s = getSerializer().clone().addBeanFilters(FB1Filter.class);
-		p = getParser().clone().addBeanFilters(FB1Filter.class);
+		s.beanFilters(FB1Filter.class);
+		p.beanFilters(FB1Filter.class);
 
 		t = new FB2().init();
-		r = s.serialize(t);
-		t = p.parse(r, FB2.class);
+		r = s.build().serialize(t);
+		t = p.build().parse(r, FB2.class);
 		assertObjectEquals("{f1:'f1'}", t);
 
 		// --- BeanFilter defined on child class class ---
-		s = getSerializer().clone().addBeanFilters(FB2Filter.class);
-		p = getParser().clone().addBeanFilters(FB2Filter.class);
+		s.beanFilters(FB2Filter.class);
+		p.beanFilters(FB2Filter.class);
 
 		t = new FB2().init();
-		r = s.serialize(t);
-		t = p.parse(r, FB2.class);
+		r = s.build().serialize(t);
+		t = p.build().parse(r, FB2.class);
 		assertObjectEquals("{f1:'f1'}", t);
 
 		// --- BeanFilter defined as plain class ---
-		s = getSerializer().clone().addBeanFilters(FB1.class);
-		p = getParser().clone().addBeanFilters(FB1.class);
+		s.beanFilters(FB1.class);
+		p.beanFilters(FB1.class);
 
 		t = new FB2().init();
-		r = s.serialize(t);
-		t = p.parse(r, FB2.class);
+		r = s.build().serialize(t);
+		t = p.build().parse(r, FB2.class);
 		assertObjectEquals("{f1:'f1'}", t);
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripClassesTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripClassesTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripClassesTest.java
index 654bbb4..4dcba43 100644
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripClassesTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripClassesTest.java
@@ -28,7 +28,7 @@ import org.junit.*;
 @SuppressWarnings("javadoc")
 public class RoundTripClassesTest extends RoundTripTest {
 
-	public RoundTripClassesTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripClassesTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripDTOsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripDTOsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripDTOsTest.java
index 2c41ce2..d7b749c 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripDTOsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripDTOsTest.java
@@ -26,7 +26,7 @@ import org.junit.*;
 @SuppressWarnings({"javadoc"})
 public class RoundTripDTOsTest extends RoundTripTest {
 
-	public RoundTripDTOsTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripDTOsTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripEnumTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripEnumTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripEnumTest.java
index 972a786..ae98392 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripEnumTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripEnumTest.java
@@ -29,7 +29,7 @@ import org.junit.*;
 @SuppressWarnings({"serial","javadoc"})
 public class RoundTripEnumTest extends RoundTripTest {
 
-	public RoundTripEnumTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripEnumTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 
@@ -46,7 +46,7 @@ public class RoundTripEnumTest extends RoundTripTest {
 
 	@Test
 	public void testEnumB() throws Exception {
-		WriterSerializer s = new JsonSerializer.Simple().addBeanFilters(getBeanFilters()).addPojoSwaps(getPojoSwaps());
+		WriterSerializer s = new JsonSerializerBuilder().simple().beanFilters(getBeanFilters()).pojoSwaps(getPojoSwaps()).build();
 		BEnum t = BEnum.FOO;
 		assertEquals("'xfoo'", s.serialize(t));
 		t = roundTrip(t, BEnum.class);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java
index 9177596..924a6dd 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripGenericsTest.java
@@ -27,7 +27,7 @@ import org.junit.*;
 @SuppressWarnings("javadoc")
 public class RoundTripGenericsTest extends RoundTripTest {
 
-	public RoundTripGenericsTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripGenericsTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripLargeObjectsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripLargeObjectsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripLargeObjectsTest.java
index 7bbd8d9..4e41a60 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripLargeObjectsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripLargeObjectsTest.java
@@ -22,6 +22,7 @@ import org.apache.juneau.json.*;
 import org.apache.juneau.msgpack.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
+import org.apache.juneau.uon.*;
 import org.apache.juneau.urlencoding.*;
 import org.apache.juneau.xml.*;
 import org.junit.*;
@@ -38,7 +39,7 @@ public class RoundTripLargeObjectsTest extends RoundTripTest {
 	private static final int NUM_RUNS = 10;
 	private static final int SIZE_PARAM = 20000;
 
-	public RoundTripLargeObjectsTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripLargeObjectsTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 
@@ -48,55 +49,55 @@ public class RoundTripLargeObjectsTest extends RoundTripTest {
 			// Full round-trip testing
 			{ /* 0 */
 				"Json DEFAULT",
-				new JsonSerializer().setTrimNullProperties(false),
+				new JsonSerializerBuilder().trimNullProperties(false),
 				JsonParser.DEFAULT,
 				0
 			},
 			{ /* 1 */
 				"Json DEFAULT_LAX",
-				new JsonSerializer.Simple().setTrimNullProperties(false),
+				new JsonSerializerBuilder().simple().trimNullProperties(false),
 				JsonParser.DEFAULT,
 				0
 			},
 			{ /* 2 */
 				"Json DEFAULT_SQ",
-				new JsonSerializer.Simple().setTrimNullProperties(false),
+				new JsonSerializerBuilder().simple().trimNullProperties(false),
 				JsonParser.DEFAULT,
 				0
 			},
 			{ /* 3 */
 				"Xml DEFAULT w/namespaces,validation",
-				new XmlSerializer.NsSq().setTrimNullProperties(false).setAddNamespaceUrisToRoot(true).setUseWhitespace(true),
+				new XmlSerializerBuilder().sq().ns().trimNullProperties(false).addNamespaceUrisToRoot(true).useWhitespace(true),
 				XmlParser.DEFAULT,
 				CHECK_XML_WHITESPACE | VALIDATE_XML
 			},
 			{ /* 4 */
 				"Xml DEFAULT wo/namespaces,validation",
-				new XmlSerializer.Sq().setTrimNullProperties(false),
+				new XmlSerializerBuilder().sq().trimNullProperties(false),
 				XmlParser.DEFAULT,
 				CHECK_XML_WHITESPACE
 			},
 			{ /* 5 */
 				"Html",
-				new HtmlSerializer().setTrimNullProperties(false),
+				new HtmlSerializerBuilder().trimNullProperties(false),
 				HtmlParser.DEFAULT,
 				CHECK_XML_WHITESPACE
 			},
 			{ /* 6 */
 				"UrlEncoding",
-				new UrlEncodingSerializer().setTrimNullProperties(false),
+				new UrlEncodingSerializerBuilder().trimNullProperties(false),
 				UrlEncodingParser.DEFAULT,
 				0
 			},
 			{ /* 7 */
 				"Uon",
-				new UonSerializer().setTrimNullProperties(false),
+				new UonSerializerBuilder().trimNullProperties(false),
 				UonParser.DEFAULT,
 				0
 			},
 			{ /* 8 */
 				"MsgPack",
-				new MsgPackSerializer().setTrimNullProperties(false),
+				new MsgPackSerializerBuilder().trimNullProperties(false),
 				MsgPackParser.DEFAULT,
 				0
 			},

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
index f7d2d13..7a3ecca 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java
@@ -21,6 +21,7 @@ import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.transforms.*;
+import org.apache.juneau.uon.*;
 import org.apache.juneau.urlencoding.*;
 import org.apache.juneau.xml.*;
 import org.junit.*;
@@ -32,7 +33,7 @@ import org.junit.*;
 @SuppressWarnings({"deprecation","javadoc"})
 public class RoundTripMapsTest extends RoundTripTest {
 
-	public RoundTripMapsTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripMapsTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 
@@ -105,27 +106,27 @@ public class RoundTripMapsTest extends RoundTripTest {
 		t.put(new byte[]{4,5,6}, null);
 		t.put(null, "b");
 
-		s = new JsonSerializer.Simple().addPojoSwaps(getPojoSwaps()).setTrimNullProperties(false);
+		s = new JsonSerializerBuilder().simple().pojoSwaps(getPojoSwaps()).trimNullProperties(false).build();
 		e = "{AQID:'a',BAUG:null,null:'b'}";
 		r = s.serialize(t);
 		assertEquals(e, r);
 
-		s = new XmlSerializer.NsSq().addPojoSwaps(getPojoSwaps()).setTrimNullProperties(false);
+		s = new XmlSerializerBuilder().ns().sq().pojoSwaps(getPojoSwaps()).trimNullProperties(false).build();
 		e = "<object><AQID>a</AQID><BAUG _type='null'/><_x0000_>b</_x0000_></object>";
 		r = s.serialize(t);
 		assertEquals(e, r);
 
-		s = new HtmlSerializer.Sq().addPojoSwaps(getPojoSwaps()).setTrimNullProperties(false).setAddKeyValueTableHeaders(true);
+		s = new HtmlSerializerBuilder().sq().pojoSwaps(getPojoSwaps()).trimNullProperties(false).addKeyValueTableHeaders(true).build();
 		e = "<table><tr><th>key</th><th>value</th></tr><tr><td>AQID</td><td>a</td></tr><tr><td>BAUG</td><td><null/></td></tr><tr><td><null/></td><td>b</td></tr></table>";
 		r = s.serialize(t);
 		assertEquals(e, r);
 
-		s = new UonSerializer.Encoding().addPojoSwaps(getPojoSwaps()).setTrimNullProperties(false);
+		s = new UonSerializerBuilder().encoding().pojoSwaps(getPojoSwaps()).trimNullProperties(false).build();
 		e = "(AQID=a,BAUG=null,null=b)";
 		r = s.serialize(t);
 		assertEquals(e, r);
 
-		s = new UrlEncodingSerializer().addPojoSwaps(getPojoSwaps()).setTrimNullProperties(false);
+		s = new UrlEncodingSerializerBuilder().pojoSwaps(getPojoSwaps()).trimNullProperties(false).build();
 		e = "AQID=a&BAUG=null&null=b";
 		r = s.serialize(t);
 		assertEquals(e, r);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripNumericConstructorsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripNumericConstructorsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripNumericConstructorsTest.java
index e398451..8177638 100644
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripNumericConstructorsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripNumericConstructorsTest.java
@@ -15,6 +15,7 @@ package org.apache.juneau.a.rttests;
 import static org.junit.Assert.*;
 
 import java.util.*;
+
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.junit.*;
@@ -26,7 +27,7 @@ import org.junit.*;
 @SuppressWarnings({"javadoc","deprecation"})
 public class RoundTripNumericConstructorsTest extends RoundTripTest {
 
-	public RoundTripNumericConstructorsTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripNumericConstructorsTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsAsStringsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsAsStringsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsAsStringsTest.java
index 80d0bde..3b1aefa 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsAsStringsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsAsStringsTest.java
@@ -27,7 +27,7 @@ import org.junit.*;
 @SuppressWarnings({"unused","javadoc"})
 public class RoundTripObjectsAsStringsTest extends RoundTripTest {
 
-	public RoundTripObjectsAsStringsTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripObjectsAsStringsTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsWithSpecialMethodsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsWithSpecialMethodsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsWithSpecialMethodsTest.java
index d40ebf3..a3fc073 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsWithSpecialMethodsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripObjectsWithSpecialMethodsTest.java
@@ -29,7 +29,7 @@ import org.junit.*;
 @SuppressWarnings("javadoc")
 public class RoundTripObjectsWithSpecialMethodsTest extends RoundTripTest {
 
-	public RoundTripObjectsWithSpecialMethodsTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripObjectsWithSpecialMethodsTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitiveObjectBeansTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitiveObjectBeansTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitiveObjectBeansTest.java
index a8eefcb..fb3f952 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitiveObjectBeansTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitiveObjectBeansTest.java
@@ -27,7 +27,7 @@ import org.junit.*;
 @SuppressWarnings("javadoc")
 public class RoundTripPrimitiveObjectBeansTest extends RoundTripTest {
 
-	public RoundTripPrimitiveObjectBeansTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripPrimitiveObjectBeansTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitivesBeansTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitivesBeansTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitivesBeansTest.java
index 49b18f8..54e0374 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitivesBeansTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripPrimitivesBeansTest.java
@@ -27,7 +27,7 @@ import org.junit.*;
 @SuppressWarnings({"serial","javadoc"})
 public class RoundTripPrimitivesBeansTest extends RoundTripTest {
 
-	public RoundTripPrimitivesBeansTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripPrimitivesBeansTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripReadOnlyBeansTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripReadOnlyBeansTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripReadOnlyBeansTest.java
index 1f8f8cf..ce4e5c4 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripReadOnlyBeansTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripReadOnlyBeansTest.java
@@ -26,7 +26,7 @@ import org.junit.*;
 @SuppressWarnings("javadoc")
 public class RoundTripReadOnlyBeansTest extends RoundTripTest {
 
-	public RoundTripReadOnlyBeansTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripReadOnlyBeansTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
index 33cbe28..d3339a8 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripSimpleObjectsTest.java
@@ -28,7 +28,7 @@ import org.junit.*;
 @SuppressWarnings({"unchecked","rawtypes","javadoc"})
 public class RoundTripSimpleObjectsTest extends RoundTripTest {
 
-	public RoundTripSimpleObjectsTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripSimpleObjectsTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
index 25c8222..f5ed6be 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTest.java
@@ -14,7 +14,7 @@ package org.apache.juneau.a.rttests;
 
 import static org.apache.juneau.a.rttests.RoundTripTest.Flags.*;
 
-import java.lang.reflect.Type;
+import java.lang.reflect.*;
 import java.util.*;
 import java.util.Map.*;
 
@@ -25,6 +25,7 @@ import org.apache.juneau.json.*;
 import org.apache.juneau.msgpack.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
+import org.apache.juneau.uon.*;
 import org.apache.juneau.urlencoding.*;
 import org.apache.juneau.xml.*;
 import org.junit.runner.*;
@@ -48,136 +49,136 @@ public abstract class RoundTripTest {
 			// Full round-trip testing
 			{ /* 0 */
 				"Json - default",
-				new JsonSerializer().setTrimNullProperties(false),
-				JsonParser.DEFAULT,
+				new JsonSerializerBuilder().trimNullProperties(false),
+				new JsonParserBuilder(),
 				0
 			},
 			{ /* 1 */
 				"Json - lax",
-				new JsonSerializer.Simple().setTrimNullProperties(false),
-				JsonParser.DEFAULT,
+				new JsonSerializerBuilder().simple().trimNullProperties(false),
+				new JsonParserBuilder(),
 				0
 			},
 			{ /* 2 */
 				"Json - lax, readable",
-				new JsonSerializer.SimpleReadable().setTrimNullProperties(false),
-				JsonParser.DEFAULT,
+				new JsonSerializerBuilder().simple().ws().trimNullProperties(false),
+				new JsonParserBuilder(),
 				0
 			},
 			{ /* 3 */
 				"Xml - namespaces, validation, readable",
-				new XmlSerializer.NsSq().setTrimNullProperties(false).setAddNamespaceUrisToRoot(true).setUseWhitespace(true),
-				XmlParser.DEFAULT,
+				new XmlSerializerBuilder().ns().sq().trimNullProperties(false).addNamespaceUrisToRoot(true).useWhitespace(true),
+				new XmlParserBuilder(),
 				CHECK_XML_WHITESPACE | VALIDATE_XML
 			},
 			{ /* 4 */
 				"Xml - no namespaces, validation",
-				new XmlSerializer.Sq().setTrimNullProperties(false),
-				XmlParser.DEFAULT,
+				new XmlSerializerBuilder().sq().trimNullProperties(false),
+				new XmlParserBuilder(),
 				CHECK_XML_WHITESPACE
 			},
 			{ /* 5 */
 				"Html - default",
-				new HtmlSerializer().setTrimNullProperties(false),
-				HtmlParser.DEFAULT,
+				new HtmlSerializerBuilder().trimNullProperties(false),
+				new HtmlParserBuilder(),
 				CHECK_XML_WHITESPACE
 			},
 			{ /* 6 */
 				"Html - readable",
-				new HtmlSerializer.SqReadable().setTrimNullProperties(false),
-				HtmlParser.DEFAULT,
+				new HtmlSerializerBuilder().sq().ws().trimNullProperties(false),
+				new HtmlParserBuilder(),
 				CHECK_XML_WHITESPACE
 			},
 			{ /* 7 */
 				"Html - with key/value headers",
-				new HtmlSerializer().setAddKeyValueTableHeaders(true),
-				HtmlParser.DEFAULT,
+				new HtmlSerializerBuilder().addKeyValueTableHeaders(true),
+				new HtmlParserBuilder(),
 				CHECK_XML_WHITESPACE
 			},
 			{ /* 8 */
 				"Uon - default",
-				new UonSerializer().setTrimNullProperties(false),
-				UonParser.DEFAULT,
+				new UonSerializerBuilder().trimNullProperties(false),
+				new UonParserBuilder(),
 				0
 			},
 			{ /* 9 */
 				"Uon - readable",
-				new UonSerializer.Readable().setTrimNullProperties(false),
-				UonParser.DEFAULT,
+				new UonSerializerBuilder().ws().trimNullProperties(false),
+				new UonParserBuilder(),
 				0
 			},
 			{ /* 10 */
 				"Uon - encoded",
-				new UonSerializer.Encoding().setTrimNullProperties(false),
-				UonParser.DEFAULT_DECODING,
+				new UonSerializerBuilder().encoding().trimNullProperties(false),
+				new UonParserBuilder().decoding(),
 				0
 			},
 			{ /* 11 */
 				"UrlEncoding - default",
-				new UrlEncodingSerializer().setTrimNullProperties(false),
-				UrlEncodingParser.DEFAULT,
+				new UrlEncodingSerializerBuilder().trimNullProperties(false),
+				new UrlEncodingParserBuilder(),
 				0
 			},
 			{ /* 12 */
 				"UrlEncoding - readable",
-				new UrlEncodingSerializer.Readable().setTrimNullProperties(false),
-				UrlEncodingParser.DEFAULT,
+				new UrlEncodingSerializerBuilder().ws().trimNullProperties(false),
+				new UrlEncodingParserBuilder(),
 				0
 			},
 			{ /* 13 */
 				"UrlEncoding - expanded params",
-				new UrlEncodingSerializer().setExpandedParams(true),
-				new UrlEncodingParser().setExpandedParams(true),
+				new UrlEncodingSerializerBuilder().expandedParams(true),
+				new UrlEncodingParserBuilder().expandedParams(true),
 				0
 			},
 			{ /* 14 */
 				"Rdf.Xml",
-				new RdfSerializer.Xml().setTrimNullProperties(false).setAddLiteralTypes(true),
-				RdfParser.DEFAULT_XML,
+				new RdfSerializerBuilder().trimNullProperties(false).addLiteralTypes(true),
+				new RdfParserBuilder().xml(),
 				0
 			},
 			{ /* 15 */
 				"Rdf.XmlAbbrev",
-				new RdfSerializer.XmlAbbrev().setTrimNullProperties(false).setAddLiteralTypes(true),
-				RdfParser.DEFAULT_XML,
+				new RdfSerializerBuilder().xmlabbrev().trimNullProperties(false).addLiteralTypes(true),
+				new RdfParserBuilder().xml(),
 				0
 			},
 			{ /* 16 */
 				"Rdf.Turtle",
-				new RdfSerializer.Turtle().setTrimNullProperties(false).setAddLiteralTypes(true),
-				RdfParser.DEFAULT_TURTLE,
+				new RdfSerializerBuilder().turtle().trimNullProperties(false).addLiteralTypes(true),
+				new RdfParserBuilder().turtle(),
 				0
 			},
 			{ /* 17 */
 				"Rdf.NTriple",
-				new RdfSerializer.NTriple().setTrimNullProperties(false).setAddLiteralTypes(true),
-				RdfParser.DEFAULT_NTRIPLE,
+				new RdfSerializerBuilder().ntriple().trimNullProperties(false).addLiteralTypes(true),
+				new RdfParserBuilder().ntriple(),
 				0
 			},
 			{ /* 18 */
 				"Rdf.N3",
-				new RdfSerializer.N3().setTrimNullProperties(false).setAddLiteralTypes(true),
-				RdfParser.DEFAULT_N3,
+				new RdfSerializerBuilder().n3().trimNullProperties(false).addLiteralTypes(true),
+				new RdfParserBuilder().n3(),
 				0
 			},
 			{ /* 19 */
 				"MsgPack",
-				new MsgPackSerializer().setTrimNullProperties(false),
-				MsgPackParser.DEFAULT,
+				new MsgPackSerializerBuilder().trimNullProperties(false),
+				new MsgPackParserBuilder(),
 				0
 			},
 
 			// Validation testing only
 			{ /* 20 */
 				"Json schema",
-				new JsonSchemaSerializer().setTrimNullProperties(false),
+				new JsonSchemaSerializerBuilder().trimNullProperties(false),
 				null,
 				RETURN_ORIGINAL_OBJECT
 			},
 			{ /* 21 */
 				"Xml schema",
-				new XmlSchemaSerializer().setTrimNullProperties(false),
-				new XmlValidatorParser(),
+				new XmlSchemaSerializerBuilder().trimNullProperties(false),
+				new XmlValidatorParserBuilder(),
 				RETURN_ORIGINAL_OBJECT | CHECK_XML_WHITESPACE
 			},
 		});
@@ -191,19 +192,19 @@ public abstract class RoundTripTest {
 	protected String label;
 	public boolean debug = false;
 
-	public RoundTripTest(String label, Serializer s, Parser p, int flags) throws Exception {
-		this.s = s.clone().addBeanFilters(getBeanFilters()).addPojoSwaps(getPojoSwaps()).addToBeanDictionary(getDictionary()).setProperties(getProperties());
-		this.p = p == null ? null : p.clone().addBeanFilters(getBeanFilters()).addPojoSwaps(getPojoSwaps()).addToBeanDictionary(getDictionary()).setProperties(getProperties());
+	public RoundTripTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		this.label = label;
 
 		Map<Class<Object>, Class<? extends Object>> m = getImplClasses();
 		if (m != null) {
 			for (Entry<Class<Object>, Class<? extends Object>> e : m.entrySet()) {
-				this.s.addImplClass(e.getKey(), e.getValue());
-				if (this.p != null)
-					this.p.addImplClass(e.getKey(), e.getValue());
+				s.implClass(e.getKey(), e.getValue());
+				if (p != null)
+					p.implClass(e.getKey(), e.getValue());
 			}
 		}
+		this.s = s.beanFilters(getBeanFilters()).pojoSwaps(getPojoSwaps()).beanDictionary(getDictionary()).properties(getProperties()).build();
+		this.p = p == null ? null : p.beanFilters(getBeanFilters()).pojoSwaps(getPojoSwaps()).beanDictionary(getDictionary()).properties(getProperties()).build();
 		this.validateXmlWhitespace = (flags & CHECK_XML_WHITESPACE) > 0;
 		this.validateXml = (flags & VALIDATE_XML) > 0;
 		this.returnOriginalObject = (flags & RETURN_ORIGINAL_OBJECT) > 0;
@@ -258,22 +259,22 @@ public abstract class RoundTripTest {
 		return p;
 	}
 
-	protected void addBeanFilters(Class<?>...c) {
-		s.addBeanFilters(c);
+	protected void beanFilters(Class<?>...c) {
+		s = s.builder().beanFilters(c).build();
 		if (p != null)
-			p.addBeanFilters(c);
+			p = p.builder().beanFilters(c).build();
 	}
 
-	protected void addPojoSwaps(Class<?>...c) {
-		s.addPojoSwaps(c);
+	protected void pojoSwaps(Class<?>...c) {
+		s = s.builder().pojoSwaps(c).build();
 		if (p != null)
-			p.addPojoSwaps(c);
+			p = p.builder().pojoSwaps(c).build();
 	}
 
-	protected void addToBeanDictionary(Class<?>...c) {
-		s.addToBeanDictionary(c);
+	protected void beanDictionary(Class<?>...c) {
+		s = s.builder().beanDictionary(c).build();
 		if (p != null)
-			p.addToBeanDictionary(c);
+			p = p.builder().beanDictionary(c).build();
 	}
 
 	public boolean isValidationOnly() {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java
index a3aa3b6..a5cf645 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripToObjectMapsTest.java
@@ -28,7 +28,7 @@ import org.junit.*;
 @SuppressWarnings("javadoc")
 public class RoundTripToObjectMapsTest extends RoundTripTest {
 
-	public RoundTripToObjectMapsTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripToObjectMapsTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
index cc6c1b9..a3af81d 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
@@ -21,7 +21,6 @@ import javax.xml.datatype.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.annotation.Pojo;
 import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
@@ -36,7 +35,7 @@ import org.junit.*;
 @SuppressWarnings({"unchecked","rawtypes","serial","javadoc"})
 public class RoundTripTransformBeansTest extends RoundTripTest {
 
-	public RoundTripTransformBeansTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripTransformBeansTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 
@@ -50,9 +49,7 @@ public class RoundTripTransformBeansTest extends RoundTripTest {
 			CalendarSwap.ISO8601DTZ.class,
 			DateSwap.ISO8601DTZ.class
 		};
-		s.addPojoSwaps(f);
-		if (p != null)
-			p.addPojoSwaps(f);
+		pojoSwaps(f);
 		A t = new A().init();
 		t = roundTrip(t, A.class);
 
@@ -170,9 +167,7 @@ public class RoundTripTransformBeansTest extends RoundTripTest {
 			CalendarSwap.DateMedium.class,
 			DateSwap.RFC2822DT.class,
 		};
-		s.addPojoSwaps(f);
-		if (p != null)
-			p.addPojoSwaps(f);
+		pojoSwaps(f);
 		A t = new A().init();
 		t = roundTrip(t, A.class);
 
@@ -258,8 +253,8 @@ public class RoundTripTransformBeansTest extends RoundTripTest {
 		GregorianCalendar gc = new GregorianCalendar();
 		XMLGregorianCalendar c = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc);
 
-		Serializer s = getSerializer().clone().addPojoSwaps(XMLGregorianCalendarSwap.class);
-		Parser p = getParser().clone().addPojoSwaps(XMLGregorianCalendarSwap.class);
+		Serializer s = getSerializer().builder().pojoSwaps(XMLGregorianCalendarSwap.class).build();
+		Parser p = getParser().builder().pojoSwaps(XMLGregorianCalendarSwap.class).build();
 
 		Object r = s.serialize(c);
 		XMLGregorianCalendar c2 = p.parse(r, XMLGregorianCalendar.class);
@@ -333,10 +328,10 @@ public class RoundTripTransformBeansTest extends RoundTripTest {
 	//====================================================================================================
 	@Test
 	public void testSurrogates() throws Exception {
-		addPojoSwaps(D2.class);
+		pojoSwaps(D2.class);
 
-		JsonSerializer s = new JsonSerializer.Simple().addPojoSwaps(D2.class);
-		JsonParser p = new JsonParser().addPojoSwaps(D2.class);
+		JsonSerializer s = new JsonSerializerBuilder().simple().pojoSwaps(D2.class).build();
+		JsonParser p = new JsonParserBuilder().pojoSwaps(D2.class).build();
 		Object r;
 		D1 d1 = D1.create();
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTrimStringsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTrimStringsTest.java b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTrimStringsTest.java
index 37c1d10..dfac4fe 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTrimStringsTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/a/rttests/RoundTripTrimStringsTest.java
@@ -25,7 +25,7 @@ import org.junit.*;
 @SuppressWarnings("javadoc")
 public class RoundTripTrimStringsTest extends RoundTripTest {
 
-	public RoundTripTrimStringsTest(String label, Serializer s, Parser p, int flags) throws Exception {
+	public RoundTripTrimStringsTest(String label, SerializerBuilder s, ParserBuilder p, int flags) throws Exception {
 		super(label, s, p, flags);
 	}
 
@@ -40,8 +40,8 @@ public class RoundTripTrimStringsTest extends RoundTripTest {
 		Parser p = getParser();
 		Object in, a, e;
 
-		Serializer s2 = s.clone().setTrimStrings(true);
-		Parser p2 = p.clone().setTrimStrings(true);
+		Serializer s2 = s.builder().trimStrings(true).build();
+		Parser p2 = p.builder().trimStrings(true).build();
 
 		in = " foo bar ";
 		e = "foo bar";

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/csv/CsvTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/csv/CsvTest.java b/juneau-core-test/src/test/java/org/apache/juneau/csv/CsvTest.java
index 1ca1fbd..84f9abf 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/csv/CsvTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/csv/CsvTest.java
@@ -31,7 +31,7 @@ public class CsvTest {
 		l.add(new A("b1",1));
 		l.add(new A("b2",2));
 
-		WriterSerializer s = new CsvSerializer();
+		WriterSerializer s = CsvSerializer.DEFAULT;
 		String r;
 
 		r = s.serialize(l);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/dto/atom/AtomTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/dto/atom/AtomTest.java b/juneau-core-test/src/test/java/org/apache/juneau/dto/atom/AtomTest.java
index 362aa8a..fdc8206 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/dto/atom/AtomTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/dto/atom/AtomTest.java
@@ -13,8 +13,8 @@
 package org.apache.juneau.dto.atom;
 
 import static org.apache.juneau.TestUtils.*;
-import static org.junit.Assert.*;
 import static org.apache.juneau.dto.atom.AtomBuilder.*;
+import static org.junit.Assert.*;
 
 import java.net.*;
 
@@ -98,7 +98,7 @@ public class AtomTest {
 			+"	<updated>2016-12-31T01:02:03-04:00</updated>\n"
 			+"</feed>\n";
 
-		s = new XmlSerializer.SqReadable().setEnableNamespaces(false).setSortProperties(true);
+		s = new XmlSerializerBuilder().sq().ws().enableNamespaces(false).sortProperties(true).build();
 		r = s.serialize(f);
 		assertEquals(expected, r);
 		f2 = p.parse(r, Feed.class);
@@ -144,7 +144,7 @@ public class AtomTest {
 			+"	<atom:updated>2016-12-31T01:02:03-04:00</atom:updated>\n"
 			+"</atom:feed>\n";
 
-		s = new XmlSerializer.SqReadable().setEnableNamespaces(true).setAddNamespaceUrisToRoot(true).setSortProperties(true);
+		s = new XmlSerializerBuilder().sq().ws().enableNamespaces(true).addNamespaceUrisToRoot(true).sortProperties(true).build();
 		r = s.serialize(f);
 		assertEquals(expected, r);
 		f2 = p.parse(r, Feed.class);
@@ -190,7 +190,7 @@ public class AtomTest {
 			+"	<updated>2016-12-31T01:02:03-04:00</updated>\n"
 			+"</feed>\n";
 
-		s = new XmlSerializer.SqReadable().setDefaultNamespace("atom").setEnableNamespaces(true).setAddNamespaceUrisToRoot(true).setSortProperties(true);
+		s = new XmlSerializerBuilder().sq().ws().defaultNamespace("atom").enableNamespaces(true).addNamespaceUrisToRoot(true).sortProperties(true).build();
 		r = s.serialize(f);
 		assertEquals(expected, r);
 		f2 = p.parse(r, Feed.class);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java b/juneau-core-test/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java
index 358d8e3..0f0bdd4 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/dto/cognos/CognosXmlTest.java
@@ -72,12 +72,13 @@ public class CognosXmlTest {
 			new Column("productLineCode", "xs:int")
 		};
 
-		XmlSerializer s = new XmlSerializer()
-			.setUseWhitespace(true)
-			.setQuoteChar('\'')
-			.setDefaultNamespace("cognos")
-			.setEnableNamespaces(true)
-			.setAddNamespaceUrisToRoot(true);
+		XmlSerializer s = new XmlSerializerBuilder()
+			.ws()
+			.sq()
+			.defaultNamespace("cognos")
+			.ns()
+			.addNamespaceUrisToRoot(true)
+			.build();
 
 		DataSet ds = new DataSet(c, rows, BeanContext.DEFAULT.createSession());
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java
index 15d45d2..de68b7a 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5ComboTest.java
@@ -16,7 +16,7 @@ import static org.apache.juneau.dto.html5.HtmlBuilder.*;
 
 import java.util.*;
 
-import org.apache.juneau.ComboTest;
+import org.apache.juneau.*;
 import org.junit.runner.*;
 import org.junit.runners.*;
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
index cf9ad84..3d43c1e 100644
--- a/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/dto/html5/Html5TemplateComboTest.java
@@ -16,9 +16,8 @@ import static org.apache.juneau.dto.html5.HtmlBuilder.*;
 
 import java.util.*;
 
-import org.apache.juneau.BeanSession;
-import org.apache.juneau.ComboTest;
-import org.apache.juneau.annotation.Bean;
+import org.apache.juneau.*;
+import org.apache.juneau.annotation.*;
 import org.junit.runner.*;
 import org.junit.runners.*;
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java b/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
index 9f2d1a8..1700106 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/dto/jsonschema/JsonSchemaTest.java
@@ -24,7 +24,7 @@ public class JsonSchemaTest {
 
 	@Test
 	public void testSchema1() throws Exception {
-		JsonSerializer s = JsonSerializer.DEFAULT_LAX_READABLE.clone().setAddBeanTypeProperties(false);
+		JsonSerializer s = new JsonSerializerBuilder().simple().ws().addBeanTypeProperties(false).build();
 		JsonParser p = JsonParser.DEFAULT;
 		String r;
 		Schema t, t2;
@@ -118,7 +118,7 @@ public class JsonSchemaTest {
 
 	@Test
 	public void testSchema2() throws Exception {
-		JsonSerializer s = JsonSerializer.DEFAULT_LAX_READABLE.clone().setAddBeanTypeProperties(false);
+		JsonSerializer s = new JsonSerializerBuilder().simple().ws().addBeanTypeProperties(false).build();
 		JsonParser p = JsonParser.DEFAULT;
 		String r;
 		Schema t, t2;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/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 12a6707..e6fec70 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
@@ -17,9 +17,8 @@ import static org.junit.Assert.*;
 import java.util.*;
 
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.html.annotation.Html;
-import org.apache.juneau.xml.annotation.Xml;
-import org.apache.juneau.xml.annotation.XmlFormat;
+import org.apache.juneau.html.annotation.*;
+import org.apache.juneau.xml.annotation.*;
 import org.junit.*;
 import org.junit.runner.*;
 import org.junit.runners.*;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/html/CommonParserTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/html/CommonParserTest.java b/juneau-core-test/src/test/java/org/apache/juneau/html/CommonParserTest.java
index b03bd57..90f5c5c 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/html/CommonParserTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/html/CommonParserTest.java
@@ -29,7 +29,7 @@ public class CommonParserTest {
 	//====================================================================================================
 	@Test
 	public void testFromSerializer() throws Exception {
-		ReaderParser p = HtmlParser.DEFAULT.clone().addToBeanDictionary(A1.class);
+		ReaderParser p = new HtmlParserBuilder().beanDictionary(A1.class).build();
 		Map m = null;
 		String in;
 
@@ -63,7 +63,7 @@ public class CommonParserTest {
 		t2.add(new A3("name0","value0"));
 		t2.add(new A3("name1","value1"));
 		t1.list = t2;
-		in = new HtmlSerializer().setAddBeanTypeProperties(true).serialize(t1);
+		in = new HtmlSerializerBuilder().addBeanTypeProperties(true).build().serialize(t1);
 		t1 = (A1)p.parse(in, Object.class);
 		assertEquals("value1", t1.list.get(1).value);
 
@@ -94,7 +94,7 @@ public class CommonParserTest {
 	//====================================================================================================
 	@Test
 	public void testCorrectHandlingOfUnknownProperties() throws Exception {
-		ReaderParser p = new HtmlParser().setIgnoreUnknownBeanProperties(true);
+		ReaderParser p = new HtmlParserBuilder().ignoreUnknownBeanProperties(true).build();
 		B t;
 
 		String in = "<table _type='object'><tr><th><string>key</string></th><th><string>value</string></th></tr><tr><td><string>a</string></td><td><number>1</number></td></tr><tr><td><string>unknown</string></td><td><number>1</number></td></tr><tr><td><string>b</string></td><td><number>2</number></td></tr></table>";
@@ -103,7 +103,7 @@ public class CommonParserTest {
 		assertEquals(t.b, 2);
 
 		try {
-			p = new HtmlParser();
+			p = HtmlParser.DEFAULT;
 			p.parse(in, B.class);
 			fail("Exception expected");
 		} catch (ParseException e) {}
@@ -143,7 +143,7 @@ public class CommonParserTest {
 	@Test
 	public void testParserListeners() throws Exception {
 		final List<String> events = new LinkedList<String>();
-		HtmlParser p = new HtmlParser().setIgnoreUnknownBeanProperties(true);
+		HtmlParser p = new HtmlParserBuilder().ignoreUnknownBeanProperties(true).build();
 		p.addListener(
 			new ParserListener() {
 				@Override /* ParserListener */

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/html/CommonTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/html/CommonTest.java b/juneau-core-test/src/test/java/org/apache/juneau/html/CommonTest.java
index d4e29a5..0f1e267 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/html/CommonTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/html/CommonTest.java
@@ -34,18 +34,18 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimNullsFromBeans() throws Exception {
-		HtmlSerializer s = new HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+		HtmlSerializerBuilder s = new HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true);
 		HtmlParser p = HtmlParser.DEFAULT;
 		A t1 = A.create(), t2;
 
-		s.setTrimNullProperties(false);
-		String r = s.serialize(t1);
+		s.trimNullProperties(false);
+		String r = s.build().serialize(t1);
 		assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>s1</td><td><null/></td></tr><tr><td>s2</td><td>s2</td></tr></table>", r);
 		t2 = p.parse(r, A.class);
 		assertEqualObjects(t1, t2);
 
-		s.setTrimNullProperties(true);
-		r = s.serialize(t1);
+		s.trimNullProperties(true);
+		r = s.build().serialize(t1);
 		assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>s2</td><td>s2</td></tr></table>", r);
 		t2 = p.parse(r, A.class);
 		assertEqualObjects(t1, t2);
@@ -66,19 +66,19 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimEmptyMaps() throws Exception {
-		HtmlSerializer s = new HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+		HtmlSerializerBuilder s = new HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true);
 		HtmlParser p = HtmlParser.DEFAULT;
 		B t1 = B.create(), t2;
 		String r;
 
-		s.setTrimEmptyMaps(false);
-		r = s.serialize(t1);
+		s.trimEmptyMaps(false);
+		r = s.build().serialize(t1);
 		assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f1</td><td><table><tr><th>key</th><th>value</th></tr></table></td></tr><tr><td>f2</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>f2a</td><td><null/></td></tr><tr><td>f2b</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>s2</td><td>s2</td></tr></table></td></tr></table></td></tr></table>", r);
 		t2 = p.parse(r, B.class);
 		assertEqualObjects(t1, t2);
 
-		s.setTrimEmptyMaps(true);
-		r = s.serialize(t1);
+		s.trimEmptyMaps(true);
+		r = s.build().serialize(t1);
 		assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f2</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>f2a</td><td><null/></td></tr><tr><td>f2b</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>s2</td><td>s2</td></tr></table></td></tr></table></td></tr></table>", r);
 		t2 = p.parse(r, B.class);
 		assertNull(t2.f1);
@@ -100,19 +100,19 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimEmptyLists() throws Exception {
-		HtmlSerializer s = new HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+		HtmlSerializerBuilder s = new HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true);
 		HtmlParser p = HtmlParser.DEFAULT;
 		C t1 = C.create(), t2;
 		String r;
 
-		s.setTrimEmptyCollections(false);
-		r = s.serialize(t1);
+		s.trimEmptyCollections(false);
+		r = s.build().serialize(t1);
 		assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f1</td><td><ul></ul></td></tr><tr><td>f2</td><td><table _type='array'><tr><th>s2</th></tr><tr><null/></tr><tr><td>s2</td></tr></table></td></tr></table>", r);
 		t2 = p.parse(r, C.class);
 		assertEqualObjects(t1, t2);
 
-		s.setTrimEmptyCollections(true);
-		r = s.serialize(t1);
+		s.trimEmptyCollections(true);
+		r = s.build().serialize(t1);
 		assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>f2</td><td><table _type='array'><tr><th>s2</th></tr><tr><null/></tr><tr><td>s2</td></tr></table></td></tr></table>", r);
 		t2 = p.parse(r, C.class);
 		assertNull(t2.f1);
@@ -134,13 +134,13 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimEmptyArrays() throws Exception {
-		HtmlSerializer s = new HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+		HtmlSerializerBuilder s = new HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true);
 		HtmlParser p = HtmlParser.DEFAULT;
 		D t1 = D.create(), t2;
 		String r;
 
-		s.setTrimEmptyCollections(false);
-		r = s.serialize(t1);
+		s.trimEmptyCollections(false);
+		r = s.build().serialize(t1);
 		assertEquals(
 			"<table>"
 				+"<tr><th>key</th><th>value</th></tr>"
@@ -163,8 +163,8 @@ public class CommonTest {
 		t2 = p.parse(r, D.class);
 		assertEqualObjects(t1, t2);
 
-		s.setTrimEmptyCollections(true);
-		r = s.serialize(t1);
+		s.trimEmptyCollections(true);
+		r = s.build().serialize(t1);
 		assertEquals(
 			"<table>"
 				+"<tr><th>key</th><th>value</th></tr>"
@@ -200,7 +200,7 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testBeanPropertyProperties() throws Exception {
-		HtmlSerializer s = HtmlSerializer.DEFAULT_SQ.clone().setAddKeyValueTableHeaders(true);
+		HtmlSerializer s = new HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true).build();
 		E1 t = new E1();
 		String r;
 
@@ -353,13 +353,13 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testUris() throws Exception {
-		HtmlSerializer s = new HtmlSerializer.Sq().setUriAnchorText(PROPERTY_NAME).setUseWhitespace(false).setAddKeyValueTableHeaders(true);
+		HtmlSerializerBuilder s = new HtmlSerializerBuilder().sq().uriAnchorText(PROPERTY_NAME).useWhitespace(false).addKeyValueTableHeaders(true);
 		TestURI t = new TestURI();
 		String r;
 		String expected;
 
-		s.setRelativeUriBase(null);
-		r = strip(s.serialize(t));
+		s.relativeUriBase(null);
+		r = strip(s.build().serialize(t));
 		expected = ""
 			+"\n[f0]=<a href='f0/x0'>f0</a>"
 			+"\n[f1]=<a href='f1/x1'>f1</a>"
@@ -379,8 +379,8 @@ public class CommonTest {
 		;
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("");  // Same as null.
-		r = strip(s.serialize(t));
+		s.relativeUriBase("");  // Same as null.
+		r = strip(s.build().serialize(t));
 		expected = ""
 			+"\n[f0]=<a href='f0/x0'>f0</a>"
 			+"\n[f1]=<a href='f1/x1'>f1</a>"
@@ -400,8 +400,8 @@ public class CommonTest {
 		;
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("/cr");
-		r = strip(s.serialize(t));
+		s.relativeUriBase("/cr");
+		r = strip(s.build().serialize(t));
 		expected = ""
 			+"\n[f0]=<a href='/cr/f0/x0'>f0</a>"
 			+"\n[f1]=<a href='/cr/f1/x1'>f1</a>"
@@ -421,8 +421,8 @@ public class CommonTest {
 		;
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("/cr/");  // Same as above
-		r = strip(s.serialize(t));
+		s.relativeUriBase("/cr/");  // Same as above
+		r = strip(s.build().serialize(t));
 		expected = ""
 			+"\n[f0]=<a href='/cr/f0/x0'>f0</a>"
 			+"\n[f1]=<a href='/cr/f1/x1'>f1</a>"
@@ -442,8 +442,8 @@ public class CommonTest {
 		;
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("/");
-		r = strip(s.serialize(t));
+		s.relativeUriBase("/");
+		r = strip(s.build().serialize(t));
 		expected = ""
 			+"\n[f0]=<a href='/f0/x0'>f0</a>"
 			+"\n[f1]=<a href='/f1/x1'>f1</a>"
@@ -463,10 +463,10 @@ public class CommonTest {
 		;
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase(null);
+		s.relativeUriBase(null);
 
-		s.setAbsolutePathUriBase("http://foo");
-		r = strip(s.serialize(t));
+		s.absolutePathUriBase("http://foo");
+		r = strip(s.build().serialize(t));
 		expected = ""
 			+"\n[f0]=<a href='f0/x0'>f0</a>"
 			+"\n[f1]=<a href='f1/x1'>f1</a>"
@@ -486,8 +486,8 @@ public class CommonTest {
 		;
 		assertEquals(expected, r);
 
-		s.setAbsolutePathUriBase("http://foo/");
-		r = strip(s.serialize(t));
+		s.absolutePathUriBase("http://foo/");
+		r = strip(s.build().serialize(t));
 		expected = ""
 			+"\n[f0]=<a href='f0/x0'>f0</a>"
 			+"\n[f1]=<a href='f1/x1'>f1</a>"
@@ -507,8 +507,8 @@ public class CommonTest {
 		;
 		assertEquals(expected, r);
 
-		s.setAbsolutePathUriBase("");  // Same as null.
-		r = strip(s.serialize(t));
+		s.absolutePathUriBase("");  // Same as null.
+		r = strip(s.build().serialize(t));
 		expected = ""
 			+"\n[f0]=<a href='f0/x0'>f0</a>"
 			+"\n[f1]=<a href='f1/x1'>f1</a>"
@@ -539,31 +539,11 @@ public class CommonTest {
 	}
 
 	//====================================================================================================
-	// Validate that you cannot update properties on locked serializer.
-	//====================================================================================================
-	@Test
-	public void testLockedSerializer() throws Exception {
-		HtmlSerializer s = new HtmlSerializer().lock();
-		try {
-			s.setEnableNamespaces(true);
-			fail("Locked exception not thrown");
-		} catch (LockedException e) {}
-		try {
-			s.setAddBeanTypeProperties(true);
-			fail("Locked exception not thrown");
-		} catch (LockedException e) {}
-		try {
-			s.setBeanMapPutReturnsOldValue(true);
-			fail("Locked exception not thrown");
-		} catch (LockedException e) {}
-	}
-
-	//====================================================================================================
 	// Recursion
 	//====================================================================================================
 	@Test
 	public void testRecursion() throws Exception {
-		HtmlSerializer s = new HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+		HtmlSerializerBuilder s = new HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true);
 
 		R1 r1 = new R1();
 		R2 r2 = new R2();
@@ -574,7 +554,7 @@ public class CommonTest {
 
 		// No recursion detection
 		try {
-			s.serialize(r1);
+			s.build().serialize(r1);
 			fail("Exception expected!");
 		} catch (Exception e) {
 			String msg = e.getLocalizedMessage();
@@ -582,9 +562,9 @@ public class CommonTest {
 		}
 
 		// Recursion detection, no ignore
-		s.setDetectRecursions(true);
+		s.detectRecursions(true);
 		try {
-			s.serialize(r1);
+			s.build().serialize(r1);
 			fail("Exception expected!");
 		} catch (Exception e) {
 			String msg = e.getLocalizedMessage();
@@ -594,12 +574,14 @@ public class CommonTest {
 			assertTrue(msg.contains("->[3]r1:org.apache.juneau.html.CommonTest$R1"));
 		}
 
-		s.setIgnoreRecursions(true);
-		assertEquals("<table><tr><th>key</th><th>value</th></tr><tr><td>name</td><td>foo</td></tr><tr><td>r2</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>name</td><td>bar</td></tr><tr><td>r3</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>name</td><td>baz</td></tr></table></td></tr></table></td></tr></table>",
-			s.serialize(r1));
+		s.ignoreRecursions(true);
+		assertEquals(
+			"<table><tr><th>key</th><th>value</th></tr><tr><td>name</td><td>foo</td></tr><tr><td>r2</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>name</td><td>bar</td></tr><tr><td>r3</td><td><table><tr><th>key</th><th>value</th></tr><tr><td>name</td><td>baz</td></tr></table></td></tr></table></td></tr></table>",
+			s.build().serialize(r1)
+		);
 
 		// Make sure this doesn't blow up.
-		s.getSchemaSerializer().serialize(r1);
+		s.build().getSchemaSerializer().serialize(r1);
 	}
 
 	public static class R1 {
@@ -620,7 +602,7 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testBasicBean() throws Exception {
-		WriterSerializer s = new HtmlSerializer.Sq().setTrimNullProperties(false).setSortProperties(true).setAddKeyValueTableHeaders(true);
+		WriterSerializer s = new HtmlSerializerBuilder().sq().trimNullProperties(false).sortProperties(true).addKeyValueTableHeaders(true).build();
 
 		J a = new J();
 		a.setF1("J");

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/html/HtmlTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/html/HtmlTest.java b/juneau-core-test/src/test/java/org/apache/juneau/html/HtmlTest.java
index 2025430..5a48716 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/html/HtmlTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/html/HtmlTest.java
@@ -49,13 +49,13 @@ public class HtmlTest {
 	//====================================================================================================
 	@Test
 	public void testAnchorTextOptions() throws Exception {
-		HtmlSerializer s = new HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+		HtmlSerializerBuilder s = new HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true);
 		TestURI t = new TestURI();
 		String r;
 		String expected = null;
 
-		s.setUriAnchorText(TO_STRING);
-		r = strip(s.serialize(t));
+		s.uriAnchorText(TO_STRING);
+		r = strip(s.build().serialize(t));
 		expected = ""
 			+"\n[f0]=<a href='f0/x0'>f0/x0</a>"
 			+"\n[f1]=<a href='f1/x1'>f1/x1</a>"
@@ -74,10 +74,10 @@ public class HtmlTest {
 			+"\n[fe]=<a href='http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL'>http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL</a>";
 		assertEquals(expected, r);
 
-		s.setAbsolutePathUriBase("http://myhost");
-		s.setRelativeUriBase("/cr");
-		s.setUriAnchorText(TO_STRING);
-		r = strip(s.serialize(t));
+		s.absolutePathUriBase("http://myhost");
+		s.relativeUriBase("/cr");
+		s.uriAnchorText(TO_STRING);
+		r = strip(s.build().serialize(t));
 		expected = ""
 			+"\n[f0]=<a href='/cr/f0/x0'>f0/x0</a>"
 			+"\n[f1]=<a href='/cr/f1/x1'>f1/x1</a>"
@@ -96,8 +96,8 @@ public class HtmlTest {
 			+"\n[fe]=<a href='http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL'>http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL</a>";
 		assertEquals(expected, r);
 
-		s.setUriAnchorText(URI);
-		r = strip(s.serialize(t));
+		s.uriAnchorText(URI);
+		r = strip(s.build().serialize(t));
 		expected = ""
 			+"\n[f0]=<a href='/cr/f0/x0'>/cr/f0/x0</a>"
 			+"\n[f1]=<a href='/cr/f1/x1'>/cr/f1/x1</a>"
@@ -116,8 +116,8 @@ public class HtmlTest {
 			+"\n[fe]=<a href='http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL'>http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL</a>";
 		assertEquals(expected, r);
 
-		s.setUriAnchorText(LAST_TOKEN);
-		r = strip(s.serialize(t));
+		s.uriAnchorText(LAST_TOKEN);
+		r = strip(s.build().serialize(t));
 		expected = ""
 			+"\n[f0]=<a href='/cr/f0/x0'>x0</a>"
 			+"\n[f1]=<a href='/cr/f1/x1'>x1</a>"
@@ -136,8 +136,8 @@ public class HtmlTest {
 			+"\n[fe]=<a href='http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL'>xe</a>";
 		assertEquals(expected, r);
 
-		s.setUriAnchorText(URI_ANCHOR);
-		r = strip(s.serialize(t));
+		s.uriAnchorText(URI_ANCHOR);
+		r = strip(s.build().serialize(t));
 		expected = ""
 			+"\n[f0]=<a href='/cr/f0/x0'>f0/x0</a>"
 			+"\n[f1]=<a href='/cr/f1/x1'>f1/x1</a>"
@@ -156,8 +156,8 @@ public class HtmlTest {
 			+"\n[fe]=<a href='http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL'>http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL</a>";
 		assertEquals(expected, r);
 
-		s.setLabelParameter("label2");
-		r = strip(s.serialize(t));
+		s.labelParameter("label2");
+		r = strip(s.build().serialize(t));
 		expected = ""
 			+"\n[f0]=<a href='/cr/f0/x0'>f0/x0</a>"
 			+"\n[f1]=<a href='/cr/f1/x1'>f1/x1</a>"
@@ -176,8 +176,8 @@ public class HtmlTest {
 			+"\n[fe]=<a href='http://www.apache.org/fe/xe?foo=bar&label2=MY_LABEL'>MY_LABEL</a>";
 		assertEquals(expected, r);
 
-		s.setDetectLinksInStrings(false);
-		r = strip(s.serialize(t));
+		s.detectLinksInStrings(false);
+		r = strip(s.build().serialize(t));
 		expected = ""
 			+"\n[f0]=<a href='/cr/f0/x0'>f0/x0</a>"
 			+"\n[f1]=<a href='/cr/f1/x1'>f1/x1</a>"
@@ -196,9 +196,9 @@ public class HtmlTest {
 			+"\n[fe]=http://www.apache.org/fe/xe?foo=bar&amp;label2=MY_LABEL";
 			assertEquals(expected, r);
 
-			s.setDetectLinksInStrings(true);
-			s.setLookForLabelParameters(false);
-			r = strip(s.serialize(t));
+			s.detectLinksInStrings(true);
+			s.lookForLabelParameters(false);
+			r = strip(s.build().serialize(t));
 			expected = ""
 				+"\n[f0]=<a href='/cr/f0/x0'>f0/x0</a>"
 				+"\n[f1]=<a href='/cr/f1/x1'>f1/x1</a>"
@@ -232,7 +232,7 @@ public class HtmlTest {
 	//====================================================================================================
 	@Test
 	public void testHtmlAnnotationAsPlainText() throws Exception {
-		HtmlSerializer s = new HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+		HtmlSerializer s = new HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true).build();
 		Object o = null;
 		String r;
 
@@ -264,7 +264,7 @@ public class HtmlTest {
 	//====================================================================================================
 	@Test
 	public void testHtmlAnnotationAsXml() throws Exception {
-		HtmlSerializer s = new HtmlSerializer.Sq().setAddKeyValueTableHeaders(true);
+		HtmlSerializer s = new HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true).build();
 		Object o = null;
 		String r;
 
@@ -292,7 +292,7 @@ public class HtmlTest {
 	//====================================================================================================
 	@Test
 	public void testNoTableHeaders() throws Exception {
-		HtmlSerializer s = new HtmlSerializer.Sq();
+		HtmlSerializer s = HtmlSerializer.DEFAULT_SQ;
 		Object o = null;
 		String r;
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileTest.java b/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileTest.java
index 6ea5a29..8c423ef 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/ini/ConfigFileTest.java
@@ -2046,7 +2046,7 @@ public class ConfigFileTest {
 		cf.put("d", "$B{$A{X}}");
 		cf.put("e", "$D{X}");
 
-		VarResolver vr = new VarResolver().addVars(ALVar.class, BLVar.class);
+		VarResolver vr = new VarResolverBuilder().vars(ALVar.class, BLVar.class).build();
 
 		cf = cf.getResolving(vr);
 
@@ -2057,7 +2057,7 @@ public class ConfigFileTest {
 		assertEquals("$D{X}", cf.getString("e"));
 
 		// Create new resolver that addx $C and overrides $A
-		VarResolver vr2 = vr.clone().addVars(AUVar.class, DUVar.class);
+		VarResolver vr2 = vr.builder().vars(AUVar.class, DUVar.class).build();
 
 		// true == augment by adding existing as parent to the new resolver
 		cf = cf.getResolving(vr2);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonParserTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonParserTest.java b/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonParserTest.java
index 9dc89d2..8c77649 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonParserTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonParserTest.java
@@ -18,7 +18,7 @@ import static org.junit.Assert.*;
 import java.util.*;
 
 import org.apache.juneau.*;
-import org.apache.juneau.annotation.Bean;
+import org.apache.juneau.annotation.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.junit.*;
@@ -40,14 +40,14 @@ public class CommonParserTest {
 		return s.replaceFirst("<rdf:RDF[^>]+>\\s*", "").replaceAll("</rdf:RDF>$", "").trim().replaceAll("[\\r\\n]", "");
 	}
 
-	private RdfSerializer getBasicSerializer() {
-		return new RdfSerializer()
-			.setQuoteChar('\'')
-			.setAddLiteralTypes(true)
-			.setUseWhitespace(false)
-			.setProperty(RDF_rdfxml_allowBadUris, true)
-			.setProperty(RDF_rdfxml_showDoctypeDeclaration, false)
-			.setProperty(RDF_rdfxml_showXmlDeclaration, false);
+	private RdfSerializerBuilder getBasicSerializer() {
+		return new RdfSerializerBuilder()
+			.sq()
+			.addLiteralTypes(true)
+			.useWhitespace(false)
+			.property(RDF_rdfxml_allowBadUris, true)
+			.property(RDF_rdfxml_showDoctypeDeclaration, false)
+			.property(RDF_rdfxml_showXmlDeclaration, false);
 	}
 
 	//====================================================================================================
@@ -55,8 +55,8 @@ public class CommonParserTest {
 	//====================================================================================================
 	@Test
 	public void testFromSerializer() throws Exception {
-		WriterSerializer s = getBasicSerializer();
-		ReaderParser p = new RdfParser.Xml().setTrimWhitespace(true);
+		WriterSerializer s = getBasicSerializer().build();
+		ReaderParser p = new RdfParserBuilder().xml().trimWhitespace(true).build();
 		Map m = null;
 		String in;
 		Integer one = Integer.valueOf(1);
@@ -109,7 +109,7 @@ public class CommonParserTest {
 		t2.add(new A3("name1","value1"));
 		t1.list = t2;
 
-		s.setAddBeanTypeProperties(true);
+		s = getBasicSerializer().addBeanTypeProperties(true).build();
 		in = strip(s.serialize(t1));
 		assertEquals("<rdf:Description><jp:_type>A1</jp:_type><jp:list><rdf:Seq><rdf:li rdf:parseType='Resource'><jp:name>name0</jp:name><jp:value>value0</jp:value></rdf:li><rdf:li rdf:parseType='Resource'><jp:name>name1</jp:name><jp:value>value1</jp:value></rdf:li></rdf:Seq></jp:list></rdf:Description>", in);
 		in = wrap(in);
@@ -139,7 +139,7 @@ public class CommonParserTest {
 	//====================================================================================================
 	@Test
 	public void testCorrectHandlingOfUnknownProperties() throws Exception {
-		ReaderParser p = new RdfParser.Xml().setIgnoreUnknownBeanProperties(true);
+		ReaderParser p = new RdfParserBuilder().xml().ignoreUnknownBeanProperties(true).build();
 		B t;
 
 		String in = wrap("<rdf:Description><jp:a rdf:datatype='http://www.w3.org/2001/XMLSchema#int'>1</jp:a><jp:unknownProperty>foo</jp:unknownProperty><jp:b rdf:datatype='http://www.w3.org/2001/XMLSchema#int'>2</jp:b></rdf:Description>");
@@ -148,7 +148,7 @@ public class CommonParserTest {
 		assertEquals(t.b, 2);
 
 		try {
-			p = new RdfParser.Xml();
+			p = new RdfParserBuilder().xml().build();
 			p.parse(in, B.class);
 			fail("Exception expected");
 		} catch (ParseException e) {}
@@ -163,7 +163,7 @@ public class CommonParserTest {
 	//====================================================================================================
 	@Test
 	public void testCollectionPropertiesWithNoSetters() throws Exception {
-		RdfParser p = new RdfParser.Xml();
+		RdfParser p = new RdfParserBuilder().xml().build();
 		String in = wrap("<rdf:Description><jp:ints><rdf:Seq><rdf:li>1</rdf:li><rdf:li>2</rdf:li></rdf:Seq></jp:ints><jp:beans><rdf:Seq><rdf:li rdf:parseType='Resource'><jp:a>1</jp:a><jp:b>2</jp:b></rdf:li></rdf:Seq></jp:beans></rdf:Description>");
 		C t = p.parse(in, C.class);
 		assertEquals(t.getInts().size(), 2);
@@ -187,7 +187,7 @@ public class CommonParserTest {
 	@Test
 	public void testParserListeners() throws Exception {
 		final List<String> events = new LinkedList<String>();
-		RdfParser p = new RdfParser.Xml().setIgnoreUnknownBeanProperties(true);
+		RdfParser p = new RdfParserBuilder().xml().ignoreUnknownBeanProperties(true).build();
 		p.addListener(
 			new ParserListener() {
 				@Override /* ParserListener */