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:25 UTC

[29/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/jena/CommonTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonTest.java b/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonTest.java
index 63db46c..538a2d6 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonTest.java
@@ -24,20 +24,19 @@ import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.jena.annotation.*;
-import org.apache.juneau.serializer.*;
 import org.apache.juneau.testbeans.*;
 import org.junit.*;
 
 @SuppressWarnings({"serial","javadoc"})
 public class CommonTest {
 
-	private RdfSerializer getBasicSerializer() {
-		return new RdfSerializer()
-			.setQuoteChar('\'')
-			.setUseWhitespace(false)
-			.setProperty(RDF_rdfxml_allowBadUris, true)
-			.setProperty(RDF_rdfxml_showDoctypeDeclaration, false)
-			.setProperty(RDF_rdfxml_showXmlDeclaration, false);
+	private RdfSerializerBuilder getBasicSerializer() {
+		return new RdfSerializerBuilder()
+			.sq()
+			.useWhitespace(false)
+			.property(RDF_rdfxml_allowBadUris, true)
+			.property(RDF_rdfxml_showDoctypeDeclaration, false)
+			.property(RDF_rdfxml_showXmlDeclaration, false);
 	}
 
 	private String strip(String s) {
@@ -49,18 +48,18 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimNullsFromBeans() throws Exception {
-		RdfSerializer s = getBasicSerializer();
+		RdfSerializerBuilder s = getBasicSerializer();
 		RdfParser p = RdfParser.DEFAULT_XML;
 		A t1 = A.create(), t2;
 
-		s.setTrimNullProperties(false);
-		String r = s.serialize(t1);
+		s.trimNullProperties(false);
+		String r = s.build().serialize(t1);
 		assertEquals("<rdf:Description><jp:s1 rdf:resource='http://www.w3.org/1999/02/22-rdf-syntax-ns#nil'/><jp:s2>s2</jp:s2></rdf:Description>", strip(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("<rdf:Description><jp:s2>s2</jp:s2></rdf:Description>", strip(r));
 		t2 = p.parse(r, A.class);
 		assertEqualObjects(t1, t2);
@@ -81,19 +80,19 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimEmptyMaps() throws Exception {
-		RdfSerializer s = getBasicSerializer();
+		RdfSerializerBuilder s = getBasicSerializer();
 		RdfParser p = RdfParser.DEFAULT_XML;
 		B t1 = B.create(), t2;
 		String r;
 
-		s.setTrimEmptyMaps(false);
-		r = s.serialize(t1);
+		s.trimEmptyMaps(false);
+		r = s.build().serialize(t1);
 		assertEquals("<rdf:Description><jp:f1 rdf:parseType='Resource'></jp:f1><jp:f2 rdf:parseType='Resource'><jp:f2a rdf:resource='http://www.w3.org/1999/02/22-rdf-syntax-ns#nil'/><jp:f2b rdf:parseType='Resource'><jp:s2>s2</jp:s2></jp:f2b></jp:f2></rdf:Description>", strip(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("<rdf:Description><jp:f2 rdf:parseType='Resource'><jp:f2a rdf:resource='http://www.w3.org/1999/02/22-rdf-syntax-ns#nil'/><jp:f2b rdf:parseType='Resource'><jp:s2>s2</jp:s2></jp:f2b></jp:f2></rdf:Description>", strip(r));
 		t2 = p.parse(r, B.class);
 		assertNull(t2.f1);
@@ -115,19 +114,19 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimEmptyLists() throws Exception {
-		RdfSerializer s = getBasicSerializer();
+		RdfSerializerBuilder s = getBasicSerializer();
 		RdfParser p = RdfParser.DEFAULT_XML;
 		C t1 = C.create(), t2;
 		String r;
 
-		s.setTrimEmptyCollections(false);
-		r = s.serialize(t1);
+		s.trimEmptyCollections(false);
+		r = s.build().serialize(t1);
 		assertEquals("<rdf:Description><jp:f1><rdf:Seq/></jp:f1><jp:f2><rdf:Seq><rdf:li rdf:resource='http://www.w3.org/1999/02/22-rdf-syntax-ns#nil'/><rdf:li rdf:parseType='Resource'><jp:s2>s2</jp:s2></rdf:li></rdf:Seq></jp:f2></rdf:Description>", strip(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("<rdf:Description><jp:f2><rdf:Seq><rdf:li rdf:resource='http://www.w3.org/1999/02/22-rdf-syntax-ns#nil'/><rdf:li rdf:parseType='Resource'><jp:s2>s2</jp:s2></rdf:li></rdf:Seq></jp:f2></rdf:Description>", strip(r));
 		t2 = p.parse(r, C.class);
 		assertNull(t2.f1);
@@ -150,19 +149,19 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimEmptyArrays() throws Exception {
-		RdfSerializer s = getBasicSerializer();
+		RdfSerializerBuilder s = getBasicSerializer();
 		RdfParser p = RdfParser.DEFAULT_XML;
 		D t1 = D.create(), t2;
 		String r;
 
-		s.setTrimEmptyCollections(false);
-		r = s.serialize(t1);
+		s.trimEmptyCollections(false);
+		r = s.build().serialize(t1);
 		assertEquals("<rdf:Description><jp:f1><rdf:Seq/></jp:f1><jp:f2><rdf:Seq><rdf:li rdf:resource='http://www.w3.org/1999/02/22-rdf-syntax-ns#nil'/><rdf:li rdf:parseType='Resource'><jp:s2>s2</jp:s2></rdf:li></rdf:Seq></jp:f2></rdf:Description>", strip(r));
 		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("<rdf:Description><jp:f2><rdf:Seq><rdf:li rdf:resource='http://www.w3.org/1999/02/22-rdf-syntax-ns#nil'/><rdf:li rdf:parseType='Resource'><jp:s2>s2</jp:s2></rdf:li></rdf:Seq></jp:f2></rdf:Description>", strip(r));
 		t2 = p.parse(r, D.class);
 		assertNull(t2.f1);
@@ -184,12 +183,12 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testBeanPropertyProperties() throws Exception {
-		RdfSerializer s = getBasicSerializer();
+		RdfSerializerBuilder s = getBasicSerializer();
 		RdfParser p = RdfParser.DEFAULT_XML;
 		E1 t1 = E1.create(), t2;
 		String r;
 
-		r = s.serialize(t1);
+		r = s.build().serialize(t1);
 		assertEquals("<rdf:Description><jp:x1 rdf:parseType='Resource'><jp:f1>1</jp:f1></jp:x1><jp:x2 rdf:parseType='Resource'><jp:f1>1</jp:f1></jp:x2><jp:x3><rdf:Seq><rdf:li rdf:parseType='Resource'><jp:f1>1</jp:f1></rdf:li></rdf:Seq></jp:x3><jp:x4><rdf:Seq><rdf:li rdf:parseType='Resource'><jp:f1>1</jp:f1></rdf:li></rdf:Seq></jp:x4><jp:x5><rdf:Seq><rdf:li rdf:parseType='Resource'><jp:f1>1</jp:f1></rdf:li></rdf:Seq></jp:x5><jp:x6><rdf:Seq><rdf:li rdf:parseType='Resource'><jp:f1>1</jp:f1></rdf:li></rdf:Seq></jp:x6></rdf:Description>", strip(r));
 		t2 = p.parse(r, E1.class);
 		assertEqualObjects(t1, t2);
@@ -225,14 +224,14 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testBeanPropertyProperiesOnListOfBeans() throws Exception {
-		RdfSerializer s = getBasicSerializer();
+		RdfSerializerBuilder s = getBasicSerializer();
 		RdfParser p = RdfParser.DEFAULT_XML;
 		List<F> l1 = new LinkedList<F>(), l2;
 		F t = F.create();
 		t.x1.add(F.create());
 		l1.add(t);
 
-		String r = s.serialize(l1);
+		String r = s.build().serialize(l1);
 		assertEquals("<rdf:Seq><rdf:li rdf:parseType='Resource'><jp:x1><rdf:Seq><rdf:li rdf:parseType='Resource'><jp:x2>2</jp:x2></rdf:li></rdf:Seq></jp:x1><jp:x2>2</jp:x2></rdf:li></rdf:Seq>", strip(r));
 		l2 = p.parse(r, LinkedList.class, F.class);
 		assertEqualObjects(l1, l2);
@@ -255,7 +254,7 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testURIAttr() throws Exception {
-		RdfSerializer s = getBasicSerializer();
+		RdfSerializerBuilder s = getBasicSerializer();
 		RdfParser p = RdfParser.DEFAULT_XML;
 
 		G t = new G();
@@ -263,7 +262,7 @@ public class CommonTest {
 		t.f1 = new URI("http://f1");
 		t.f2 = new URL("http://f2");
 
-		String xml = s.serialize(t);
+		String xml = s.build().serialize(t);
 		t = p.parse(xml, G.class);
 		assertEquals("http://uri", t.uri.toString());
 		assertEquals("http://f1", t.f1.toString());
@@ -281,13 +280,13 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testUris() throws Exception {
-		WriterSerializer s = getBasicSerializer();
+		RdfSerializerBuilder s = getBasicSerializer();
 		TestURI t = new TestURI();
 		String r;
 		String expected = "";
 
-		s.setRelativeUriBase(null);
-		r = stripAndSort(s.serialize(t));
+		s.relativeUriBase(null);
+		r = stripAndSort(s.build().serialize(t));
 		expected = ""
 			+"</rdf:Description>>"
 			+"\n<<rdf:Description rdf:about='f0/x0'>"
@@ -308,12 +307,12 @@ public class CommonTest {
 		;
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("");  // Same as null.
-		r = stripAndSort(s.serialize(t));
+		s.relativeUriBase("");  // Same as null.
+		r = stripAndSort(s.build().serialize(t));
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("/cr");
-		r = stripAndSort(s.serialize(t));
+		s.relativeUriBase("/cr");
+		r = stripAndSort(s.build().serialize(t));
 		expected = ""
 			+"</rdf:Description>>"
 			+"\n<<rdf:Description rdf:about='/cr/f0/x0'>"
@@ -334,12 +333,12 @@ public class CommonTest {
 		;
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("/cr/");  // Same as above
-		r = stripAndSort(s.serialize(t));
+		s.relativeUriBase("/cr/");  // Same as above
+		r = stripAndSort(s.build().serialize(t));
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("/");
-		r = stripAndSort(s.serialize(t));
+		s.relativeUriBase("/");
+		r = stripAndSort(s.build().serialize(t));
 		expected = ""
 			+"</rdf:Description>>"
 			+"\n<<rdf:Description rdf:about='/f0/x0'>"
@@ -360,10 +359,10 @@ public class CommonTest {
 		;
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase(null);
+		s.relativeUriBase(null);
 
-		s.setAbsolutePathUriBase("http://foo");
-		r = stripAndSort(s.serialize(t));
+		s.absolutePathUriBase("http://foo");
+		r = stripAndSort(s.build().serialize(t));
 		expected = ""
 			+"</rdf:Description>>"
 			+"\n<<rdf:Description rdf:about='f0/x0'>"
@@ -384,12 +383,12 @@ public class CommonTest {
 		;
 		assertEquals(expected, r);
 
-		s.setAbsolutePathUriBase("http://foo/");
-		r = stripAndSort(s.serialize(t));
+		s.absolutePathUriBase("http://foo/");
+		r = stripAndSort(s.build().serialize(t));
 		assertEquals(expected, r);
 
-		s.setAbsolutePathUriBase("");  // Same as null.
-		r = stripAndSort(s.serialize(t));
+		s.absolutePathUriBase("");  // Same as null.
+		r = stripAndSort(s.build().serialize(t));
 		expected = ""
 			+"</rdf:Description>>"
 			+"\n<<rdf:Description rdf:about='f0/x0'>"
@@ -420,27 +419,11 @@ public class CommonTest {
 	}
 
 	//====================================================================================================
-	// Validate that you cannot update properties on locked serializer.
-	//====================================================================================================
-	@Test
-	public void testLockedSerializer() throws Exception {
-		RdfSerializer s = getBasicSerializer().lock();
-		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 {
-		WriterSerializer s = new RdfSerializer.XmlAbbrev().setQuoteChar('\'');
+		RdfSerializerBuilder s = new RdfSerializerBuilder().xmlabbrev().sq();
 
 		R1 r1 = new R1();
 		R2 r2 = new R2();
@@ -451,7 +434,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();
@@ -459,9 +442,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();
@@ -471,8 +454,8 @@ public class CommonTest {
 			assertTrue(msg.contains("->[3]r1:org.apache.juneau.jena.CommonTest$R1"));
 		}
 
-		s.setIgnoreRecursions(true);
-		String r = s.serialize(r1).replace("\r", "");
+		s.ignoreRecursions(true);
+		String r = s.build().serialize(r1).replace("\r", "");
 		// Note...the order of the namespaces is not always the same depending on the JVM.
 		// The Jena libraries appear to use a hashmap for these.
 		assertTrue(r.contains(

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonXmlTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonXmlTest.java b/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonXmlTest.java
index bb5c8f0..00ccbb7 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonXmlTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/jena/CommonXmlTest.java
@@ -25,13 +25,13 @@ import org.junit.*;
 @SuppressWarnings("javadoc")
 public class CommonXmlTest {
 
-	private RdfSerializer getBasicSerializer() {
-		return new RdfSerializer()
-			.setQuoteChar('\'')
-			.setUseWhitespace(false)
-			.setProperty(RDF_rdfxml_allowBadUris, true)
-			.setProperty(RDF_rdfxml_showDoctypeDeclaration, false)
-			.setProperty(RDF_rdfxml_showXmlDeclaration, false);
+	private RdfSerializerBuilder getBasicSerializer() {
+		return new RdfSerializerBuilder()
+			.sq()
+			.useWhitespace(false)
+			.property(RDF_rdfxml_allowBadUris, true)
+			.property(RDF_rdfxml_showDoctypeDeclaration, false)
+			.property(RDF_rdfxml_showXmlDeclaration, false);
 	}
 
 	private String strip(String s) {
@@ -43,12 +43,12 @@ public class CommonXmlTest {
 	//====================================================================================================
 	@Test
 	public void testBeanUriAnnotation() throws Exception {
-		RdfSerializer s = getBasicSerializer();
+		RdfSerializerBuilder s = getBasicSerializer();
 		RdfParser p = RdfParser.DEFAULT_XML;
 		A t1 = A.create(), t2;
 		String r;
 
-		r = s.serialize(t1);
+		r = s.build().serialize(t1);
 		assertEquals("<rdf:Description rdf:about='http://foo'><jp:name>bar</jp:name></rdf:Description>", strip(r));
 		t2 = p.parse(r, A.class);
 		assertEqualObjects(t1, t2);
@@ -71,12 +71,12 @@ public class CommonXmlTest {
 	//====================================================================================================
 	@Test
 	public void testBeanUriAnnotationOnlyUriProperty() throws Exception {
-		RdfSerializer s = getBasicSerializer();
+		RdfSerializerBuilder s = getBasicSerializer();
 		RdfParser p = RdfParser.DEFAULT_XML;
 		B t1 = B.create(), t2;
 		String r;
 
-		r = s.serialize(t1);
+		r = s.build().serialize(t1);
 		assertEquals("<rdf:Description rdf:about='http://foo'><jp:url2 rdf:resource='http://foo/2'/></rdf:Description>", strip(r));
 		t2 = p.parse(r, B.class);
 		assertEqualObjects(t1, t2);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/jena/RdfParserTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/jena/RdfParserTest.java b/juneau-core-test/src/test/java/org/apache/juneau/jena/RdfParserTest.java
index 8bd50c7..ef4bca6 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/jena/RdfParserTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/jena/RdfParserTest.java
@@ -45,10 +45,11 @@ public class RdfParserTest {
 		A a = new A().init();
 
 		// Create a new serializer with readable output.
-		RdfSerializer s = new RdfSerializer.XmlAbbrev()
-		   .setProperty(RDF_rdfxml_tab, 3)
-		   .setQuoteChar('\'')
-		   .setAddRootProperty(true);
+		RdfSerializer s = new RdfSerializerBuilder().xmlabbrev()
+		   .property(RDF_rdfxml_tab, 3)
+		   .sq()
+		   .addRootProperty(true)
+		   .build();
 
 		String expected =
 			 "<rdf:RDF a='http://ns/' a1='http://ns2/' j='http://www.apache.org/juneau/' jp='http://www.apache.org/juneaubp/' rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>"

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/jena/RdfTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/jena/RdfTest.java b/juneau-core-test/src/test/java/org/apache/juneau/jena/RdfTest.java
index 678520f..c8bfebb 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/jena/RdfTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/jena/RdfTest.java
@@ -15,7 +15,7 @@ package org.apache.juneau.jena;
 import static org.apache.juneau.TestUtils.*;
 import static org.apache.juneau.jena.RdfCommonContext.*;
 
-import java.net.URI;
+import java.net.*;
 import java.util.*;
 
 import org.apache.juneau.jena.annotation.*;
@@ -32,11 +32,11 @@ public class RdfTest {
 		String rdfXml;
 		String expected;
 
-		RdfSerializer s = new RdfSerializer.XmlAbbrev()
-		   .setProperty(RDF_rdfxml_tab, 3)
-		   .setQuoteChar('\'')
-		   .setAddRootProperty(true);
-		RdfParser p = RdfParser.DEFAULT_XML.clone();
+		RdfSerializerBuilder s = new RdfSerializerBuilder().xmlabbrev()
+		   .property(RDF_rdfxml_tab, 3)
+		   .sq()
+		   .addRootProperty(true);
+		RdfParser p = new RdfParserBuilder().xml().build();
 
 		//--------------------------------------------------------------------------------
 		// Normal format - Sequence
@@ -59,7 +59,7 @@ public class RdfTest {
 			+ "\n      <j:root>true</j:root>"
 			+ "\n   </rdf:Description>"
 			+ "\n</rdf:RDF>";
-		rdfXml = s.serialize(a);
+		rdfXml = s.build().serialize(a);
 		assertXmlEquals(expected, rdfXml);
 
 		a2 = p.parse(rdfXml, A.class);
@@ -68,7 +68,7 @@ public class RdfTest {
 		//--------------------------------------------------------------------------------
 		// Explicit sequence
 		//--------------------------------------------------------------------------------
-		s.setCollectionFormat(RdfCollectionFormat.SEQ);
+		s.collectionFormat(RdfCollectionFormat.SEQ);
 		expected =
 			"<rdf:RDF a='http://ns/' j='http://www.apache.org/juneau/' jp='http://www.apache.org/juneaubp/' rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>"
 			+ "\n   <rdf:Description about='http://test/a'>"
@@ -87,7 +87,7 @@ public class RdfTest {
 			+ "\n      <j:root>true</j:root>"
 			+ "\n   </rdf:Description>"
 			+ "\n</rdf:RDF>";
-		rdfXml = s.serialize(a);
+		rdfXml = s.build().serialize(a);
 		assertXmlEquals(expected, rdfXml);
 
 		a2 = p.parse(rdfXml, A.class);
@@ -96,7 +96,7 @@ public class RdfTest {
 		//--------------------------------------------------------------------------------
 		// Bag
 		//--------------------------------------------------------------------------------
-		s.setCollectionFormat(RdfCollectionFormat.BAG);
+		s.collectionFormat(RdfCollectionFormat.BAG);
 		expected =
 			"<rdf:RDF a='http://ns/' j='http://www.apache.org/juneau/' jp='http://www.apache.org/juneaubp/' rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>"
 			+ "\n   <rdf:Description about='http://test/a'>"
@@ -115,7 +115,7 @@ public class RdfTest {
 			+ "\n      <j:root>true</j:root>"
 			+ "\n   </rdf:Description>"
 			+ "\n</rdf:RDF>";
-		rdfXml = s.serialize(a);
+		rdfXml = s.build().serialize(a);
 		assertXmlEquals(expected, rdfXml);
 
 		a2 = p.parse(rdfXml, A.class);
@@ -124,7 +124,7 @@ public class RdfTest {
 		//--------------------------------------------------------------------------------
 		// List
 		//--------------------------------------------------------------------------------
-		s.setCollectionFormat(RdfCollectionFormat.LIST);
+		s.collectionFormat(RdfCollectionFormat.LIST);
 		expected =
 			   "<rdf:RDF a='http://ns/' j='http://www.apache.org/juneau/' jp='http://www.apache.org/juneaubp/' rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>"
 			 + "\n   <rdf:Description about='http://test/a'>"
@@ -145,7 +145,7 @@ public class RdfTest {
 			 + "\n      <j:root>true</j:root>"
 			 + "\n   </rdf:Description>"
 			 + "\n</rdf:RDF>";
-		rdfXml = s.serialize(a);
+		rdfXml = s.build().serialize(a);
 		assertXmlEquals(expected, rdfXml);
 
 		a2 = p.parse(rdfXml, A.class);
@@ -154,7 +154,7 @@ public class RdfTest {
 		//--------------------------------------------------------------------------------
 		// Multi-properties
 		//--------------------------------------------------------------------------------
-		s.setCollectionFormat(RdfCollectionFormat.MULTI_VALUED);
+		s.collectionFormat(RdfCollectionFormat.MULTI_VALUED);
 		expected =
 			"<rdf:RDF a='http://ns/' j='http://www.apache.org/juneau/' jp='http://www.apache.org/juneaubp/' rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>"
 			+ "\n   <rdf:Description about='http://test/a'>"
@@ -165,11 +165,11 @@ public class RdfTest {
 			 + "\n      <j:root>true</j:root>"
 			 + "\n   </rdf:Description>"
 			+ "\n</rdf:RDF>";
-		rdfXml = s.serialize(a);
+		rdfXml = s.build().serialize(a);
 		assertXmlEquals(expected, rdfXml);
 
 		// Note - Must specify collection format on parser for it to be able to understand this layout.
-		p.setCollectionFormat(RdfCollectionFormat.MULTI_VALUED);
+		p = new RdfParserBuilder().xml().collectionFormat(RdfCollectionFormat.MULTI_VALUED).build();
 		a2 = p.parse(rdfXml, A.class);
 		assertEqualObjects(a, a2);
 	}
@@ -192,11 +192,11 @@ public class RdfTest {
 	public void testCollectionFormatAnnotations() throws Exception {
 		B b = new B().init(), b2;
 		String rdfXml, expected;
-		RdfSerializer s = new RdfSerializer.XmlAbbrev()
-		   .setProperty(RDF_rdfxml_tab, 3)
-		   .setQuoteChar('\'')
-		   .setAddRootProperty(true);
-		RdfParser p = RdfParser.DEFAULT_XML.clone();
+		RdfSerializerBuilder s = new RdfSerializerBuilder().xmlabbrev()
+		   .property(RDF_rdfxml_tab, 3)
+		   .sq()
+		   .addRootProperty(true);
+		RdfParser p = RdfParser.DEFAULT_XML;
 
 		//--------------------------------------------------------------------------------
 		// Normal format - Sequence
@@ -262,7 +262,7 @@ public class RdfTest {
 			 + "\n      <j:root>true</j:root>"
 			 + "\n   </rdf:Description>"
 			 + "\n</rdf:RDF>";
-		rdfXml = s.serialize(b);
+		rdfXml = s.build().serialize(b);
 		assertXmlEquals(expected, rdfXml);
 
 		b2 = p.parse(rdfXml, B.class);
@@ -271,7 +271,7 @@ public class RdfTest {
 		//--------------------------------------------------------------------------------
 		// Default is Bag - Should only affect DEFAULT properties.
 		//--------------------------------------------------------------------------------
-		s.setCollectionFormat(RdfCollectionFormat.BAG);
+		s.collectionFormat(RdfCollectionFormat.BAG);
 		expected =
 			 "<rdf:RDF b='http://ns/' j='http://www.apache.org/juneau/' jp='http://www.apache.org/juneaubp/' rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>"
 			 + "\n   <rdf:Description about='http://test/b'>"
@@ -333,7 +333,7 @@ public class RdfTest {
 			 + "\n   </rdf:Description>"
 			 + "\n</rdf:RDF>";
 
-		rdfXml = s.serialize(b);
+		rdfXml = s.build().serialize(b);
 		assertXmlEquals(expected, rdfXml);
 
 		b2 = p.parse(rdfXml, B.class);
@@ -425,16 +425,16 @@ public class RdfTest {
 	public void testCollectionFormatAnnotationOnClass() throws Exception {
 		C c = new C().init(), c2;
 		String rdfXml, expected;
-		RdfSerializer s = new RdfSerializer.XmlAbbrev()
-		   .setProperty(RDF_rdfxml_tab, 3)
-		   .setQuoteChar('\'')
-		   .setAddRootProperty(true);
-		RdfParser p = RdfParser.DEFAULT_XML.clone();
+		RdfSerializerBuilder s = new RdfSerializerBuilder().xmlabbrev()
+		   .property(RDF_rdfxml_tab, 3)
+		   .sq()
+		   .addRootProperty(true);
+		RdfParser p = RdfParser.DEFAULT_XML;
 
 		//--------------------------------------------------------------------------------
 		// Default on class is Bag - Should only affect DEFAULT properties.
 		//--------------------------------------------------------------------------------
-		s.setCollectionFormat(RdfCollectionFormat.BAG);
+		s.collectionFormat(RdfCollectionFormat.BAG);
 		expected =
 			 "<rdf:RDF b='http://ns/' j='http://www.apache.org/juneau/' jp='http://www.apache.org/juneaubp/' rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>"
 			 + "\n   <rdf:Description about='http://test/b'>"
@@ -496,7 +496,7 @@ public class RdfTest {
 			 + "\n   </rdf:Description>"
 			 + "\n</rdf:RDF>";
 
-		rdfXml = s.serialize(c);
+		rdfXml = s.build().serialize(c);
 		assertXmlEquals(expected, rdfXml);
 
 		c2 = p.parse(rdfXml, C.class);
@@ -524,8 +524,8 @@ public class RdfTest {
 
 	@Test
 	public void testLooseCollectionsOfBeans() throws Exception {
-		WriterSerializer s = new RdfSerializer.XmlAbbrev().setLooseCollections(true);
-		ReaderParser p = new RdfParser.Xml().setLooseCollections(true);
+		WriterSerializer s = new RdfSerializerBuilder().xmlabbrev().looseCollections(true).build();
+		ReaderParser p = new RdfParserBuilder().xml().looseCollections(true).build();
 		String rdfXml, expected;
 
 		List<D> l = new LinkedList<D>();

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/json/CommonParserTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/json/CommonParserTest.java b/juneau-core-test/src/test/java/org/apache/juneau/json/CommonParserTest.java
index 04d067d..c3e4688 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/json/CommonParserTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/json/CommonParserTest.java
@@ -29,7 +29,7 @@ public class CommonParserTest {
 	//====================================================================================================
 	@Test
 	public void testFromSerializer() throws Exception {
-		ReaderParser p = JsonParser.DEFAULT.clone().addToBeanDictionary(A1.class);
+		ReaderParser p = new JsonParserBuilder().beanDictionary(A1.class).build();
 
 		Map m = null;
 		m = (Map)p.parse("{a:1}", Object.class);
@@ -83,7 +83,7 @@ public class CommonParserTest {
 		tl.add(new A3("name0","value0"));
 		tl.add(new A3("name1","value1"));
 		b.list = tl;
-		String json = new JsonSerializer().setAddBeanTypeProperties(true).addToBeanDictionary(A1.class).serialize(b);
+		String json = new JsonSerializerBuilder().addBeanTypeProperties(true).beanDictionary(A1.class).build().serialize(b);
 		b = (A1)p.parse(json, Object.class);
 		assertEquals("value1", b.list.get(1).value);
 
@@ -114,7 +114,7 @@ public class CommonParserTest {
 	//====================================================================================================
 	@Test
 	public void testCorrectHandlingOfUnknownProperties() throws Exception {
-		ReaderParser p = new JsonParser().setIgnoreUnknownBeanProperties(true);
+		ReaderParser p = new JsonParserBuilder().ignoreUnknownBeanProperties(true).build();
 		B b;
 
 		String in =  "{a:1,unknown:3,b:2}";
@@ -123,7 +123,7 @@ public class CommonParserTest {
 		assertEquals(b.b, 2);
 
 		try {
-			p = new JsonParser();
+			p = JsonParser.DEFAULT;
 			p.parse(in, B.class);
 			fail("Exception expected");
 		} catch (ParseException e) {}
@@ -162,7 +162,7 @@ public class CommonParserTest {
 	@Test
 	public void testParserListeners() throws Exception {
 		final List<String> events = new LinkedList<String>();
-		JsonParser p = new JsonParser().setIgnoreUnknownBeanProperties(true);
+		JsonParser p = new JsonParserBuilder().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/json/CommonTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/json/CommonTest.java b/juneau-core-test/src/test/java/org/apache/juneau/json/CommonTest.java
index 460ec61..316f96e 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/json/CommonTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/json/CommonTest.java
@@ -21,7 +21,6 @@ import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.serializer.*;
 import org.apache.juneau.testbeans.*;
 import org.junit.*;
 
@@ -33,18 +32,18 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimNullsFromBeans() throws Exception {
-		JsonSerializer s = new JsonSerializer.Simple();
+		JsonSerializerBuilder s = new JsonSerializerBuilder().simple();
 		JsonParser p = JsonParser.DEFAULT;
 		A t1 = A.create(), t2;
 
-		s.setTrimNullProperties(false);
-		String r = s.serialize(t1);
+		s.trimNullProperties(false);
+		String r = s.build().serialize(t1);
 		assertEquals("{s1:null,s2:'s2'}", 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("{s2:'s2'}", r);
 		t2 = p.parse(r, A.class);
 		assertEqualObjects(t1, t2);
@@ -65,19 +64,19 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimEmptyMaps() throws Exception {
-		JsonSerializer s = new JsonSerializer.Simple();
+		JsonSerializerBuilder s = new JsonSerializerBuilder().simple();
 		JsonParser p = JsonParser.DEFAULT;
 		B t1 = B.create(), t2;
 		String r;
 
-		s.setTrimEmptyMaps(false);
-		r = s.serialize(t1);
+		s.trimEmptyMaps(false);
+		r = s.build().serialize(t1);
 		assertEquals("{f1:{},f2:{f2a:null,f2b:{s2:'s2'}}}", 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("{f2:{f2a:null,f2b:{s2:'s2'}}}", r);
 		t2 = p.parse(r, B.class);
 		assertNull(t2.f1);
@@ -99,19 +98,19 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimEmptyLists() throws Exception {
-		JsonSerializer s = new JsonSerializer.Simple();
+		JsonSerializerBuilder s = new JsonSerializerBuilder().simple();
 		JsonParser p = JsonParser.DEFAULT;
 		C t1 = C.create(), t2;
 		String r;
 
-		s.setTrimEmptyCollections(false);
-		r = s.serialize(t1);
+		s.trimEmptyCollections(false);
+		r = s.build().serialize(t1);
 		assertEquals("{f1:[],f2:[null,{s2:'s2'}]}", 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("{f2:[null,{s2:'s2'}]}", r);
 		t2 = p.parse(r, C.class);
 		assertNull(t2.f1);
@@ -133,19 +132,19 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimEmptyArrays() throws Exception {
-		JsonSerializer s = new JsonSerializer.Simple();
+		JsonSerializerBuilder s = new JsonSerializerBuilder().simple();
 		JsonParser p = JsonParser.DEFAULT;
 		D t1 = D.create(), t2;
 		String r;
 
-		s.setTrimEmptyCollections(false);
-		r = s.serialize(t1);
+		s.trimEmptyCollections(false);
+		r = s.build().serialize(t1);
 		assertEquals("{f1:[],f2:[null,{s2:'s2'}]}", r);
 		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("{f2:[null,{s2:'s2'}]}", r);
 		t2 = p.parse(r, D.class);
 		assertNull(t2.f1);
@@ -247,13 +246,13 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testUris() throws Exception {
-		WriterSerializer s = new JsonSerializer.Simple();
+		JsonSerializerBuilder s = new JsonSerializerBuilder().simple();
 		TestURI t = new TestURI();
 		String r;
 		String expected = "";
 
-		s.setRelativeUriBase(null);
-		r = s.serialize(t);
+		s.relativeUriBase(null);
+		r = s.build().serialize(t);
 		expected = "{"
 			+"f0:'f0/x0',"
 			+"f1:'f1/x1',"
@@ -273,12 +272,12 @@ public class CommonTest {
 			+"}";
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("");  // Same as null.
-		r = s.serialize(t);
+		s.relativeUriBase("");  // Same as null.
+		r = s.build().serialize(t);
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("/cr");
-		r = s.serialize(t);
+		s.relativeUriBase("/cr");
+		r = s.build().serialize(t);
 		expected = "{"
 			+"f0:'/cr/f0/x0',"
 			+"f1:'/cr/f1/x1',"
@@ -298,12 +297,12 @@ public class CommonTest {
 			+"}";
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("/cr/");  // Same as above
-		r = s.serialize(t);
+		s.relativeUriBase("/cr/");  // Same as above
+		r = s.build().serialize(t);
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("/");
-		r = s.serialize(t);
+		s.relativeUriBase("/");
+		r = s.build().serialize(t);
 		expected = "{"
 			+"f0:'/f0/x0',"
 			+"f1:'/f1/x1',"
@@ -323,10 +322,10 @@ public class CommonTest {
 			+"}";
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase(null);
+		s.relativeUriBase(null);
 
-		s.setAbsolutePathUriBase("http://foo");
-		r = s.serialize(t);
+		s.absolutePathUriBase("http://foo");
+		r = s.build().serialize(t);
 		expected = "{"
 			+"f0:'f0/x0',"
 			+"f1:'f1/x1',"
@@ -346,12 +345,12 @@ public class CommonTest {
 			+"}";
 		assertEquals(expected, r);
 
-		s.setAbsolutePathUriBase("http://foo/");
-		r = s.serialize(t);
+		s.absolutePathUriBase("http://foo/");
+		r = s.build().serialize(t);
 		assertEquals(expected, r);
 
-		s.setAbsolutePathUriBase("");  // Same as null.
-		r = s.serialize(t);
+		s.absolutePathUriBase("");  // Same as null.
+		r = s.build().serialize(t);
 		expected = "{"
 			+"f0:'f0/x0',"
 			+"f1:'f1/x1',"
@@ -373,31 +372,11 @@ public class CommonTest {
 	}
 
 	//====================================================================================================
-	// Validate that you cannot update properties on locked serializer.
-	//====================================================================================================
-	@Test
-	public void testLockedSerializer() throws Exception {
-		JsonSerializer s = new JsonSerializer().lock();
-		try {
-			s.setSimpleMode(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 {
-		JsonSerializer s = new JsonSerializer.Simple();
+		JsonSerializerBuilder s = new JsonSerializerBuilder().simple();
 
 		R1 r1 = new R1();
 		R2 r2 = new R2();
@@ -408,7 +387,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();
@@ -416,9 +395,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();
@@ -428,11 +407,11 @@ public class CommonTest {
 			assertTrue(msg.contains("->[3]r1:org.apache.juneau.json.CommonTest$R1"));
 		}
 
-		s.setIgnoreRecursions(true);
-		assertEquals("{name:'foo',r2:{name:'bar',r3:{name:'baz'}}}", s.serialize(r1));
+		s.ignoreRecursions(true);
+		assertEquals("{name:'foo',r2:{name:'bar',r3:{name:'baz'}}}", s.build().serialize(r1));
 
 		// Make sure this doesn't blow up.
-		s.getSchemaSerializer().serialize(r1);
+		s.build().getSchemaSerializer().serialize(r1);
 	}
 
 	public static class R1 {
@@ -453,7 +432,7 @@ public class CommonTest {
 	//====================================================================================================
 	@Test
 	public void testBasicBean() throws Exception {
-		JsonSerializer s = new JsonSerializer.Simple().setTrimNullProperties(false).setSortProperties(true);
+		JsonSerializer s = new JsonSerializerBuilder().simple().trimNullProperties(false).sortProperties(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/json/JsonParserEdgeCasesTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/json/JsonParserEdgeCasesTest.java b/juneau-core-test/src/test/java/org/apache/juneau/json/JsonParserEdgeCasesTest.java
index 9068ed5..0f6316f 100644
--- a/juneau-core-test/src/test/java/org/apache/juneau/json/JsonParserEdgeCasesTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/json/JsonParserEdgeCasesTest.java
@@ -366,11 +366,11 @@ public class JsonParserEdgeCasesTest {
 
 	@Test
 	public void testStrict() throws Exception {
-		Parser p = JsonParser.DEFAULT_STRICT;
+		JsonParser p = JsonParser.DEFAULT_STRICT;
 		if (name.contains("utf16LE"))
-			p = p.clone().setInputStreamCharset("UTF-16LE");
+			p = p.builder().inputStreamCharset("UTF-16LE").build();
 		else if (name.contains("utf16BE"))
-			p = p.clone().setInputStreamCharset("UTF-16BE");
+			p = p.builder().inputStreamCharset("UTF-16BE").build();
 
 		// 'y' tests should always succeed.
 		if (expected == 'y') {
@@ -405,11 +405,11 @@ public class JsonParserEdgeCasesTest {
 
 	@Test
 	public void testLax() throws Exception {
-		Parser p = JsonParser.DEFAULT;
+		JsonParser p = JsonParser.DEFAULT;
 		if (name.contains("utf16LE"))
-			p = p.clone().setInputStreamCharset("UTF-16LE");
+			p = p.builder().inputStreamCharset("UTF-16LE").build();
 		else if (name.contains("utf16BE"))
-			p = p.clone().setInputStreamCharset("UTF-16BE");
+			p = p.builder().inputStreamCharset("UTF-16BE").build();
 
 		// 'y' tests should always succeed.
 		if (expected == 'y') {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/json/JsonTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/json/JsonTest.java b/juneau-core-test/src/test/java/org/apache/juneau/json/JsonTest.java
index ecbcae7..120cde4 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/json/JsonTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/json/JsonTest.java
@@ -33,8 +33,8 @@ public class JsonTest {
 		Map<String,Object> m = new LinkedHashMap<String,Object>();
 		List<Object> l = new LinkedList<Object>();
 
-		WriterSerializer s1 = new JsonSerializer.Simple().setTrimNullProperties(false);
-		WriterSerializer s2 = new JsonSerializer.Simple().setTrimNullProperties(false).setQuoteChar('"');
+		WriterSerializer s1 = new JsonSerializerBuilder().simple().trimNullProperties(false).build();
+		WriterSerializer s2 = new JsonSerializerBuilder().simple().trimNullProperties(false).quoteChar('"').build();
 		String r;
 
 		// Null keys and values
@@ -109,7 +109,7 @@ public class JsonTest {
 	//====================================================================================================
 	@Test
 	public void testBackslashesInStrings() throws Exception {
-		JsonSerializer s = new JsonSerializer.Simple().setTrimNullProperties(false).setQuoteChar('"');
+		JsonSerializer s = new JsonSerializerBuilder().simple().trimNullProperties(false).quoteChar('"').build();
 		String r, r2;
 
 		// [\\]
@@ -275,7 +275,7 @@ public class JsonTest {
 	//====================================================================================================
 	@Test
 	public void testSubclassedList() throws Exception {
-		JsonSerializer s = new JsonSerializer();
+		JsonSerializer s = JsonSerializer.DEFAULT;
 		Map<String,Object> o = new HashMap<String,Object>();
 		o.put("c", new C());
 		assertEquals("{\"c\":[]}", s.serialize(o));
@@ -289,13 +289,13 @@ public class JsonTest {
 	//====================================================================================================
 	@Test
 	public void testEscapeSolidus() throws Exception {
-		JsonSerializer s = new JsonSerializer().setEscapeSolidus(false);
+		JsonSerializer s = new JsonSerializerBuilder().escapeSolidus(false).build();
 		String r = s.serialize("foo/bar");
 		assertEquals("\"foo/bar\"", r);
 		r = JsonParser.DEFAULT.parse(r, String.class);
 		assertEquals("foo/bar", r);
 
-		s = new JsonSerializer().setEscapeSolidus(true);
+		s = new JsonSerializerBuilder().escapeSolidus(true).build();
 		r = s.serialize("foo/bar");
 		assertEquals("\"foo\\/bar\"", r);
 		r = JsonParser.DEFAULT.parse(r, String.class);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/IfVarTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/IfVarTest.java b/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/IfVarTest.java
index 9acfb76..e81c826 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/IfVarTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/IfVarTest.java
@@ -14,7 +14,7 @@ package org.apache.juneau.svl.vars;
 
 import static org.junit.Assert.*;
 
-import org.apache.juneau.svl.VarResolver;
+import org.apache.juneau.svl.*;
 import org.junit.*;
 
 @SuppressWarnings("javadoc")
@@ -25,7 +25,7 @@ public class IfVarTest {
 	//====================================================================================================
 	@Test
 	public void test() throws Exception {
-		VarResolver vr = new VarResolver().addVars(IfVar.class, SystemPropertiesVar.class);
+		VarResolver vr = new VarResolverBuilder().vars(IfVar.class, SystemPropertiesVar.class).build();
 		
 		for (String test : new String[]{"","0","false","FALSE","f","F","foobar"}) {
 			System.setProperty("IfVarTest.test", test);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/SwitchVarTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/SwitchVarTest.java b/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/SwitchVarTest.java
index 75c004c..ab6d154 100644
--- a/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/SwitchVarTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/svl/vars/SwitchVarTest.java
@@ -14,7 +14,7 @@ package org.apache.juneau.svl.vars;
 
 import static org.junit.Assert.*;
 
-import org.apache.juneau.svl.VarResolver;
+import org.apache.juneau.svl.*;
 import org.junit.*;
 
 @SuppressWarnings("javadoc")
@@ -25,7 +25,7 @@ public class SwitchVarTest {
 	//====================================================================================================
 	@Test
 	public void test() throws Exception {
-		VarResolver vr = new VarResolver().addVars(SwitchVar.class, SystemPropertiesVar.class);
+		VarResolver vr = new VarResolverBuilder().vars(SwitchVar.class, SystemPropertiesVar.class).build();
 		
 		System.setProperty("SwitchVarTest.test", "foobar");
 		

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java b/juneau-core-test/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java
index a1d24df..e5fcc26 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java
@@ -30,13 +30,13 @@ public class BeanFilterTest {
 		BeanSession session;
 		BeanMap<A3> bm;
 
-		session = ContextFactory.create().addBeanFilters(A1.class).getBeanContext().createSession();
+		session = PropertyStore.create().setBeanFilters(A1.class).getBeanContext().createSession();
 		bm = session.newBeanMap(A3.class);
 		assertEquals("f1", bm.get("f1"));
 		assertNull(bm.get("f2"));
 		assertNull(bm.get("f3"));
 
-		session = ContextFactory.create().addBeanFilters(A2.class).getBeanContext().createSession();
+		session = PropertyStore.create().setBeanFilters(A2.class).getBeanContext().createSession();
 		bm = session.newBeanMap(A3.class);
 		assertEquals("f1", bm.get("f1"));
 		assertEquals("f2", bm.get("f2"));
@@ -73,13 +73,13 @@ public class BeanFilterTest {
 		BeanSession session;
 		BeanMap<Test2> bm;
 
-		session = ContextFactory.create().addBeanFilters(B1.class).getBeanContext().createSession();
+		session = PropertyStore.create().setBeanFilters(B1.class).getBeanContext().createSession();
 		bm = session.newBeanMap(Test2.class);
 		assertEquals("f1", bm.get("f1"));
 		assertNull(bm.get("f2"));
 		assertNull(bm.get("f3"));
 
-		session = ContextFactory.create().addBeanFilters(B2.class).getBeanContext().createSession();
+		session = PropertyStore.create().setBeanFilters(B2.class).getBeanContext().createSession();
 		bm = session.newBeanMap(Test2.class);
 		assertEquals("f1", bm.get("f1"));
 		assertEquals("f2", bm.get("f2"));

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/transforms/BeanMapTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/transforms/BeanMapTest.java b/juneau-core-test/src/test/java/org/apache/juneau/transforms/BeanMapTest.java
index 0f44984..1e5d375 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/transforms/BeanMapTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/transforms/BeanMapTest.java
@@ -26,7 +26,7 @@ public class BeanMapTest {
 	//====================================================================================================
 	@Test
 	public void testFilteredEntry() throws Exception {
-		BeanSession session = ContextFactory.create().addPojoSwaps(ByteArrayBase64Swap.class).getBeanContext().createSession();
+		BeanSession session = PropertyStore.create().setPojoSwaps(ByteArrayBase64Swap.class).getBeanContext().createSession();
 		BeanMap<A> m = session.toBeanMap(new A());
 
 		assertEquals("AQID", m.get("f1"));
@@ -48,12 +48,12 @@ public class BeanMapTest {
 	//====================================================================================================
 	@Test
 	public void testFilteredEntryWithMultipleMatchingFilters() throws Exception {
-		BeanSession session = ContextFactory.create().addPojoSwaps(B2Swap.class,B1Swap.class).getBeanContext().createSession();
+		BeanSession session = PropertyStore.create().setPojoSwaps(B2Swap.class,B1Swap.class).getBeanContext().createSession();
 		BeanMap<B> bm = session.toBeanMap(B.create());
 		ObjectMap om = (ObjectMap)bm.get("b1");
 		assertEquals("b2", om.getString("type"));
 
-		session = ContextFactory.create().addPojoSwaps(B1Swap.class,B2Swap.class).getBeanContext().createSession();
+		session = PropertyStore.create().setPojoSwaps(B1Swap.class,B2Swap.class).getBeanContext().createSession();
 		bm = session.toBeanMap(B.create());
 		om = (ObjectMap)bm.get("b1");
 		assertEquals("b1", om.getString("type"));

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/transforms/ByteArrayBase64SwapComboTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/transforms/ByteArrayBase64SwapComboTest.java b/juneau-core-test/src/test/java/org/apache/juneau/transforms/ByteArrayBase64SwapComboTest.java
index adc310e..b9ac9c3 100644
--- a/juneau-core-test/src/test/java/org/apache/juneau/transforms/ByteArrayBase64SwapComboTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/transforms/ByteArrayBase64SwapComboTest.java
@@ -12,18 +12,13 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.transforms;
 
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 
-import org.apache.juneau.ComboTest;
-import org.apache.juneau.parser.Parser;
-import org.apache.juneau.serializer.Serializer;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.apache.juneau.*;
+import org.apache.juneau.parser.*;
+import org.apache.juneau.serializer.*;
+import org.junit.runner.*;
+import org.junit.runners.*;
 
 /**
  * Exhaustive serialization tests for the CalendarSwap class.
@@ -348,16 +343,12 @@ public class ByteArrayBase64SwapComboTest extends ComboTest {
 	
 	@Override
 	protected Serializer applySettings(Serializer s) throws Exception {
-		if (s.isLocked())
-			 s = s.clone();
-		return s.addPojoSwaps(ByteArrayBase64Swap.class).setTrimNullProperties(false);
+		return s.builder().pojoSwaps(ByteArrayBase64Swap.class).trimNullProperties(false).build();
 	}
 	
 	@Override
 	protected Parser applySettings(Parser p) throws Exception {
-		if (p.isLocked())
-			p = p.clone();
-		return p.addPojoSwaps(ByteArrayBase64Swap.class);
+		return p.builder().pojoSwaps(ByteArrayBase64Swap.class).build();
 	}
 		
 	public static class BeanWithByteArrayField {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java b/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java
index 0da8c2a..c3453b3 100644
--- a/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapComboTest.java
@@ -12,22 +12,14 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.transforms;
 
-import java.util.Arrays;
-import java.util.Calendar;
-import java.util.Collection;
-import java.util.GregorianCalendar;
-import java.util.Locale;
-import java.util.TimeZone;
+import java.util.*;
 
-import org.apache.juneau.ComboTest;
-import org.apache.juneau.ObjectMap;
-import org.apache.juneau.TestUtils;
-import org.apache.juneau.parser.Parser;
-import org.apache.juneau.serializer.Serializer;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.apache.juneau.*;
+import org.apache.juneau.parser.*;
+import org.apache.juneau.serializer.*;
+import org.junit.*;
+import org.junit.runner.*;
+import org.junit.runners.*;
 
 /**
  * Exhaustive serialization tests for the CalendarSwap class.
@@ -563,15 +555,11 @@ public class CalendarSwapComboTest extends ComboTest {
 	
 	@Override
 	protected Serializer applySettings(Serializer s) throws Exception {
-		if (s.isLocked())
-			 s = s.clone();
-		return s.addPojoSwaps(swapClass);
+		return s.builder().pojoSwaps(swapClass).build();
 	}
 	
 	@Override
 	protected Parser applySettings(Parser p) throws Exception {
-		if (p.isLocked())
-			p = p.clone();
-		return p.addPojoSwaps(swapClass);
+		return p.builder().pojoSwaps(swapClass).build();
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java b/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
index d173c95..7ea6697 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
@@ -27,6 +27,7 @@ import org.apache.juneau.json.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.transform.*;
+import org.apache.juneau.uon.*;
 import org.apache.juneau.urlencoding.*;
 import org.apache.juneau.xml.*;
 import org.junit.*;
@@ -51,12 +52,13 @@ public class CalendarSwapTest {
 	}
 
 	private RdfSerializer getRdfSerializer() {
-		return new RdfSerializer()
-			.setQuoteChar('\'')
-			.setUseWhitespace(false)
-			.setProperty(RdfCommonContext.RDF_rdfxml_allowBadUris, true)
-			.setProperty(RdfCommonContext.RDF_rdfxml_showDoctypeDeclaration, false)
-			.setProperty(RdfCommonContext.RDF_rdfxml_showXmlDeclaration, false);
+		return new RdfSerializerBuilder()
+			.sq()
+			.useWhitespace(false)
+			.property(RdfCommonContext.RDF_rdfxml_allowBadUris, true)
+			.property(RdfCommonContext.RDF_rdfxml_showDoctypeDeclaration, false)
+			.property(RdfCommonContext.RDF_rdfxml_showXmlDeclaration, false)
+			.build();
 	}
 
 	private String stripRdf(String s) {
@@ -184,7 +186,7 @@ public class CalendarSwapTest {
 	//====================================================================================================
 	@Test
 	public void testBeanProperyFilterHtml() throws Exception {
-		WriterSerializer s = HtmlSerializer.DEFAULT_SQ.clone().setAddKeyValueTableHeaders(true);
+		WriterSerializer s = new HtmlSerializerBuilder().sq().addKeyValueTableHeaders(true).build();
 		ReaderParser p = HtmlParser.DEFAULT;
 
 		Calendar c = testDate;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/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 6d641bd..5965e94 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,20 +12,14 @@
 // ***************************************************************************************************************************
 package org.apache.juneau.transforms;
 
-import java.util.Arrays;
-import java.util.Collection;
-import java.util.Date;
-import java.util.Locale;
+import java.util.*;
 
-import org.apache.juneau.ComboTest;
-import org.apache.juneau.ObjectMap;
-import org.apache.juneau.TestUtils;
-import org.apache.juneau.parser.Parser;
-import org.apache.juneau.serializer.Serializer;
-import org.junit.AfterClass;
-import org.junit.BeforeClass;
-import org.junit.runner.RunWith;
-import org.junit.runners.Parameterized;
+import org.apache.juneau.*;
+import org.apache.juneau.parser.*;
+import org.apache.juneau.serializer.*;
+import org.junit.*;
+import org.junit.runner.*;
+import org.junit.runners.*;
 
 /**
  * Exhaustive serialization tests for the DateSwap class.
@@ -557,15 +551,11 @@ public class DateSwapComboTest extends ComboTest {
 	
 	@Override
 	protected Serializer applySettings(Serializer s) throws Exception {
-		if (s.isLocked())
-			 s = s.clone();
-		return s.addPojoSwaps(swapClass);
+		return s.builder().pojoSwaps(swapClass).build();
 	}
 	
 	@Override
 	protected Parser applySettings(Parser p) throws Exception {
-		if (p.isLocked())
-			p = p.clone();
-		return p.addPojoSwaps(swapClass);
+		return p.builder().pojoSwaps(swapClass).build();
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/transforms/DateSwapTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/transforms/DateSwapTest.java b/juneau-core-test/src/test/java/org/apache/juneau/transforms/DateSwapTest.java
index b0b57f0..40225ec 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/transforms/DateSwapTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/transforms/DateSwapTest.java
@@ -37,10 +37,14 @@ public class DateSwapTest {
 	public void testBeanWithDate() throws Exception {
 		A testBeanA = new A().init();
 
-		final String jsonData = new JsonSerializer().addPojoSwaps(
-			DateSwap.ISO8601DT.class).serialize(testBeanA);
-		final ObjectMap data = new JsonParser().addPojoSwaps(
-			DateSwap.ISO8601DT.class).parse(jsonData, ObjectMap.class);
+		final String jsonData = new JsonSerializerBuilder()
+			.pojoSwaps(DateSwap.ISO8601DT.class)
+			.build()
+			.serialize(testBeanA);
+		final ObjectMap data = new JsonParserBuilder()
+			.pojoSwaps(DateSwap.ISO8601DT.class)
+			.build()
+			.parse(jsonData, ObjectMap.class);
 
 		final DateSwap.ISO8601DT dateSwap = new DateSwap.ISO8601DT();
 		// this works

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/transforms/EnumerationSwapTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/transforms/EnumerationSwapTest.java b/juneau-core-test/src/test/java/org/apache/juneau/transforms/EnumerationSwapTest.java
index 5d96b15..207c5f1 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/transforms/EnumerationSwapTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/transforms/EnumerationSwapTest.java
@@ -28,7 +28,7 @@ public class EnumerationSwapTest {
 	//====================================================================================================
 	@Test
 	public void test() throws Exception {
-		WriterSerializer s = new JsonSerializer.Simple().addPojoSwaps(EnumerationSwap.class);
+		WriterSerializer s = new JsonSerializerBuilder().simple().pojoSwaps(EnumerationSwap.class).build();
 		Vector<String> v = new Vector<String>(Arrays.asList(new String[]{"foo","bar","baz"}));
 		Enumeration<String> e = v.elements();
 		assertEquals("['foo','bar','baz']", s.serialize(e));

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/transforms/IteratorSwapTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/transforms/IteratorSwapTest.java b/juneau-core-test/src/test/java/org/apache/juneau/transforms/IteratorSwapTest.java
index 3d72f5a..68db0b6 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/transforms/IteratorSwapTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/transforms/IteratorSwapTest.java
@@ -28,7 +28,7 @@ public class IteratorSwapTest {
 	//====================================================================================================
 	@Test
 	public void test() throws Exception {
-		WriterSerializer s = new JsonSerializer.Simple().addPojoSwaps(IteratorSwap.class);
+		WriterSerializer s = new JsonSerializerBuilder().simple().pojoSwaps(IteratorSwap.class).build();
 
 		// Iterators
 		List<String> l = new ArrayList<String>(Arrays.asList(new String[]{"foo","bar","baz"}));

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/transforms/LocalizedDatesTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/transforms/LocalizedDatesTest.java b/juneau-core-test/src/test/java/org/apache/juneau/transforms/LocalizedDatesTest.java
index 25fe320..9aaca66 100644
--- a/juneau-core-test/src/test/java/org/apache/juneau/transforms/LocalizedDatesTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/transforms/LocalizedDatesTest.java
@@ -606,7 +606,7 @@ public class LocalizedDatesTest {
 	@SuppressWarnings("unused")
 	private String label, expected;
 	private Object calendar;
-	private ContextFactory cf;
+	private PropertyStore ps;
 	private Locale sessionLocale;
 	private TimeZone sessionTimeZone;
 
@@ -616,16 +616,16 @@ public class LocalizedDatesTest {
 		this.calendar = calendar;
 		this.sessionLocale = sessionLocale;
 		this.sessionTimeZone = sessionTimeZone;
-		cf = ContextFactory.create().addPojoSwaps(swap);
+		ps = PropertyStore.create().setPojoSwaps(swap);
 		if (contextLocale != null)
-			cf.setProperty(BEAN_locale, contextLocale);
+			ps.setProperty(BEAN_locale, contextLocale);
 		if (contextTimeZone != null)
-			cf.setProperty(BEAN_timeZone, contextTimeZone);
+			ps.setProperty(BEAN_timeZone, contextTimeZone);
 	}
 
 	@Test
 	public void test() {
-		BeanSession session = cf.getBeanContext().createSession(null, sessionLocale, sessionTimeZone, null);
+		BeanSession session = ps.getBeanContext().createSession(null, sessionLocale, sessionTimeZone, null);
 		String actual = session.convertToType(calendar, String.class);
 		assertEquals(expected, actual);
 		Object c2 = session.convertToType(actual, calendar.getClass());

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java b/juneau-core-test/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
index 0398568..3e0999d 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/transforms/ReaderFilterTest.java
@@ -18,7 +18,6 @@ import java.io.*;
 import java.util.*;
 
 import org.apache.juneau.json.*;
-import org.apache.juneau.serializer.*;
 import org.junit.*;
 
 @SuppressWarnings("javadoc")
@@ -29,7 +28,7 @@ public class ReaderFilterTest {
 	//====================================================================================================
 	@Test
 	public void test() throws Exception {
-		WriterSerializer s = new JsonSerializer.Simple().addPojoSwaps(ReaderSwap.Json.class);
+		JsonSerializerBuilder s = new JsonSerializerBuilder().simple().pojoSwaps(ReaderSwap.Json.class);
 
 		Reader r;
 		Map<String,Object> m;
@@ -37,12 +36,12 @@ public class ReaderFilterTest {
 		r = new StringReader("{foo:'bar',baz:'quz'}");
 		m = new HashMap<String,Object>();
 		m.put("X", r);
-		assertEquals("{X:{foo:'bar',baz:'quz'}}", s.serialize(m));
+		assertEquals("{X:{foo:'bar',baz:'quz'}}", s.build().serialize(m));
 
-		s.addPojoSwaps(ReaderSwap.Xml.class);
+		s.pojoSwaps(ReaderSwap.Xml.class);
 		r = new StringReader("<object><foo _type='string'>bar</foo><baz _type='string'>quz</baz></object>");
 		m = new HashMap<String,Object>();
 		m.put("X", r);
-		assertEquals("{X:{foo:'bar',baz:'quz'}}", s.serialize(m));
+		assertEquals("{X:{foo:'bar',baz:'quz'}}", s.build().serialize(m));
 	}
 }
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UonTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UonTest.java b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UonTest.java
index 37f2376..62a5d9d 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UonTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UonTest.java
@@ -19,13 +19,14 @@ import java.util.*;
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.parser.*;
+import org.apache.juneau.uon.*;
 import org.junit.*;
 
 @SuppressWarnings({"rawtypes","serial","javadoc"})
 public class CommonParser_UonTest {
 
-	ReaderParser p = UonParser.DEFAULT.clone().addToBeanDictionary(A1.class);
-	ReaderParser pe = UonParser.DEFAULT_DECODING.clone();
+	ReaderParser p = new UonParserBuilder().beanDictionary(A1.class).build();
+	ReaderParser pe = UonParser.DEFAULT_DECODING;
 
 	//====================================================================================================
 	// testFromSerializer
@@ -69,7 +70,7 @@ public class CommonParser_UonTest {
 		tl.add(new A3("name1","value1"));
 		b.list = tl;
 
-		in = new UonSerializer().setAddBeanTypeProperties(true).serialize(b);
+		in = new UonSerializerBuilder().addBeanTypeProperties(true).build().serialize(b);
 		b = (A1)p.parse(in, Object.class);
 		assertEquals("value1", b.list.get(1).value);
 
@@ -100,7 +101,7 @@ public class CommonParser_UonTest {
 	//====================================================================================================
 	@Test
 	public void testCorrectHandlingOfUnknownProperties() throws Exception {
-		ReaderParser p = new UonParser().setIgnoreUnknownBeanProperties(true);
+		ReaderParser p = new UonParserBuilder().ignoreUnknownBeanProperties(true).build();
 		B t;
 
 		String in =  "(a=1,unknown=3,b=2)";
@@ -109,7 +110,7 @@ public class CommonParser_UonTest {
 		assertEquals(t.b, 2);
 
 		try {
-			p = new UonParser();
+			p = UonParser.DEFAULT;
 			p.parse(in, B.class);
 			fail("Exception expected");
 		} catch (ParseException e) {}
@@ -150,7 +151,7 @@ public class CommonParser_UonTest {
 	@Test
 	public void testParserListeners() throws Exception {
 		final List<String> events = new LinkedList<String>();
-		UonParser p = new UonParser().setIgnoreUnknownBeanProperties(true);
+		UonParser p = new UonParserBuilder().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/urlencoding/CommonParser_UrlEncodingTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
index e026be1..d480a1b 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/CommonParser_UrlEncodingTest.java
@@ -21,12 +21,13 @@ import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
+import org.apache.juneau.uon.*;
 import org.junit.*;
 
 @SuppressWarnings({"rawtypes","serial","javadoc"})
 public class CommonParser_UrlEncodingTest {
 
-	ReaderParser p = UrlEncodingParser.DEFAULT.clone().addToBeanDictionary(A1.class);
+	ReaderParser p = new UrlEncodingParserBuilder().beanDictionary(A1.class).build();
 
 	//====================================================================================================
 	// testFromSerializer
@@ -71,7 +72,7 @@ public class CommonParser_UrlEncodingTest {
 		tl.add(new A3("name1","value1"));
 		b.list = tl;
 
-		in = new UrlEncodingSerializer().setAddBeanTypeProperties(true).serialize(b);
+		in = new UrlEncodingSerializerBuilder().addBeanTypeProperties(true).build().serialize(b);
 		b = (A1)p.parse(in, Object.class);
 		assertEquals("value1", b.list.get(1).value);
 
@@ -102,7 +103,7 @@ public class CommonParser_UrlEncodingTest {
 	//====================================================================================================
 	@Test
 	public void testCorrectHandlingOfUnknownProperties() throws Exception {
-		ReaderParser p = new UrlEncodingParser().setIgnoreUnknownBeanProperties(true);
+		ReaderParser p = new UrlEncodingParserBuilder().ignoreUnknownBeanProperties(true).build();
 		B t;
 
 		String in =  "a=1&unknown=3&b=2";
@@ -111,7 +112,7 @@ public class CommonParser_UrlEncodingTest {
 		assertEquals(t.b, 2);
 
 		try {
-			p = new UrlEncodingParser();
+			p = UrlEncodingParser.DEFAULT;
 			p.parse(in, B.class);
 			fail("Exception expected");
 		} catch (ParseException e) {}
@@ -152,7 +153,7 @@ public class CommonParser_UrlEncodingTest {
 	@Test
 	public void testParserListeners() throws Exception {
 		final List<String> events = new LinkedList<String>();
-		UonParser p = new UrlEncodingParser().setIgnoreUnknownBeanProperties(true);
+		UonParser p = new UrlEncodingParserBuilder().ignoreUnknownBeanProperties(true).build();
 		p.addListener(
 			new ParserListener() {
 				@Override /* ParserListener */
@@ -170,8 +171,8 @@ public class CommonParser_UrlEncodingTest {
 
 	@Test
 	public void testCollections() throws Exception {
-		WriterSerializer s = new UrlEncodingSerializer();
-		ReaderParser p = new UrlEncodingParser();
+		WriterSerializer s = UrlEncodingSerializer.DEFAULT;
+		ReaderParser p = UrlEncodingParser.DEFAULT;
 
 		List l = new ObjectList("foo","bar");
 		assertEquals("0=foo&1=bar", s.serialize(l));

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/95e832e1/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/Common_UonTest.java
----------------------------------------------------------------------
diff --git a/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/Common_UonTest.java b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/Common_UonTest.java
index 00643d0..187e120 100755
--- a/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/Common_UonTest.java
+++ b/juneau-core-test/src/test/java/org/apache/juneau/urlencoding/Common_UonTest.java
@@ -21,8 +21,8 @@ import java.util.*;
 
 import org.apache.juneau.*;
 import org.apache.juneau.annotation.*;
-import org.apache.juneau.serializer.*;
 import org.apache.juneau.testbeans.*;
+import org.apache.juneau.uon.*;
 import org.junit.*;
 
 @SuppressWarnings({"serial","javadoc"})
@@ -35,17 +35,17 @@ public class Common_UonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimNullsFromBeans() throws Exception {
-		UonSerializer s = new UonSerializer.Encoding();
+		UonSerializerBuilder s = new UonSerializerBuilder().encoding();
 		A t1 = A.create(), t2;
 
-		s.setTrimNullProperties(false);
-		String r = s.serialize(t1);
+		s.trimNullProperties(false);
+		String r = s.build().serialize(t1);
 		assertEquals("(s1=null,s2=s2)", r);
 		t2 = pe.parse(r, A.class);
 		assertEqualObjects(t1, t2);
 
-		s.setTrimNullProperties(true);
-		r = s.serialize(t1);
+		s.trimNullProperties(true);
+		r = s.build().serialize(t1);
 		assertEquals("(s2=s2)", r);
 		t2 = p.parse(r, A.class);
 		assertEqualObjects(t1, t2);
@@ -66,18 +66,18 @@ public class Common_UonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimEmptyMaps() throws Exception {
-		UonSerializer s = UonSerializer.DEFAULT_ENCODING.clone();
+		UonSerializerBuilder s = new UonSerializerBuilder().encoding();
 		B t1 = B.create(), t2;
 		String r;
 
-		s.setTrimEmptyMaps(false);
-		r = s.serialize(t1);
+		s.trimEmptyMaps(false);
+		r = s.build().serialize(t1);
 		assertEquals("(f1=(),f2=(f2a=null,f2b=(s2=s2)))", r);
 		t2 = pe.parse(r, B.class);
 		assertEqualObjects(t1, t2);
 
-		s.setTrimEmptyMaps(true);
-		r = s.serialize(t1);
+		s.trimEmptyMaps(true);
+		r = s.build().serialize(t1);
 		assertEquals("(f2=(f2a=null,f2b=(s2=s2)))", r);
 		t2 = pe.parse(r, B.class);
 		assertNull(t2.f1);
@@ -99,18 +99,18 @@ public class Common_UonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimEmptyLists() throws Exception {
-		UonSerializer s = new UonSerializer.Encoding();
+		UonSerializerBuilder s = new UonSerializerBuilder().encoding();
 		C t1 = C.create(), t2;
 		String r;
 
-		s.setTrimEmptyCollections(false);
-		r = s.serialize(t1);
+		s.trimEmptyCollections(false);
+		r = s.build().serialize(t1);
 		assertEquals("(f1=@(),f2=@(null,(s2=s2)))", r);
 		t2 = pe.parse(r, C.class);
 		assertEqualObjects(t1, t2);
 
-		s.setTrimEmptyCollections(true);
-		r = s.serialize(t1);
+		s.trimEmptyCollections(true);
+		r = s.build().serialize(t1);
 		assertEquals("(f2=@(null,(s2=s2)))", r);
 		t2 = pe.parse(r, C.class);
 		assertNull(t2.f1);
@@ -132,18 +132,18 @@ public class Common_UonTest {
 	//====================================================================================================
 	@Test
 	public void testTrimEmptyArrays() throws Exception {
-		UonSerializer s = new UonSerializer.Encoding();
+		UonSerializerBuilder s = new UonSerializerBuilder().encoding();
 		D t1 = D.create(), t2;
 		String r;
 
-		s.setTrimEmptyCollections(false);
-		r = s.serialize(t1);
+		s.trimEmptyCollections(false);
+		r = s.build().serialize(t1);
 		assertEquals("(f1=@(),f2=@(null,(s2=s2)))", r);
 		t2 = pe.parse(r, D.class);
 		assertEqualObjects(t1, t2);
 
-		s.setTrimEmptyCollections(true);
-		r = s.serialize(t1);
+		s.trimEmptyCollections(true);
+		r = s.build().serialize(t1);
 		assertEquals("(f2=@(null,(s2=s2)))", r);
 		t2 = pe.parse(r, D.class);
 		assertNull(t2.f1);
@@ -240,13 +240,13 @@ public class Common_UonTest {
 	//====================================================================================================
 	@Test
 	public void testUris() throws Exception {
-		WriterSerializer s = new UonSerializer();
+		UonSerializerBuilder s = new UonSerializerBuilder();
 		TestURI t = new TestURI();
 		String r;
 		String expected;
 
-		s.setRelativeUriBase(null);
-		r = s.serialize(t);
+		s.relativeUriBase(null);
+		r = s.build().serialize(t);
 		expected = ""
 			+"("
 			+"f0=f0/x0,"
@@ -267,12 +267,12 @@ public class Common_UonTest {
 			+")";
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("");  // Same as null.
-		r = s.serialize(t);
+		s.relativeUriBase("");  // Same as null.
+		r = s.build().serialize(t);
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("/cr");
-		r = s.serialize(t);
+		s.relativeUriBase("/cr");
+		r = s.build().serialize(t);
 		expected = ""
 			+"("
 			+"f0=/cr/f0/x0,"
@@ -293,12 +293,12 @@ public class Common_UonTest {
 			+")";
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("/cr/");  // Same as above
-		r = s.serialize(t);
+		s.relativeUriBase("/cr/");  // Same as above
+		r = s.build().serialize(t);
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase("/");
-		r = s.serialize(t);
+		s.relativeUriBase("/");
+		r = s.build().serialize(t);
 		expected = ""
 			+"("
 			+"f0=/f0/x0,"
@@ -319,10 +319,10 @@ public class Common_UonTest {
 			+")";
 		assertEquals(expected, r);
 
-		s.setRelativeUriBase(null);
+		s.relativeUriBase(null);
 
-		s.setAbsolutePathUriBase("http://foo");
-		r = s.serialize(t);
+		s.absolutePathUriBase("http://foo");
+		r = s.build().serialize(t);
 		expected = ""
 			+"("
 			+"f0=f0/x0,"
@@ -343,12 +343,12 @@ public class Common_UonTest {
 			+")";
 		assertEquals(expected, r);
 
-		s.setAbsolutePathUriBase("http://foo/");
-		r = s.serialize(t);
+		s.absolutePathUriBase("http://foo/");
+		r = s.build().serialize(t);
 		assertEquals(expected, r);
 
-		s.setAbsolutePathUriBase("");  // Same as null.
-		r = s.serialize(t);
+		s.absolutePathUriBase("");  // Same as null.
+		r = s.build().serialize(t);
 		expected = ""
 			+"("
 			+"f0=f0/x0,"
@@ -371,31 +371,11 @@ public class Common_UonTest {
 	}
 
 	//====================================================================================================
-	// Validate that you cannot update properties on locked serializer.
-	//====================================================================================================
-	@Test
-	public void testLockedSerializer() throws Exception {
-		UonSerializer s = new UonSerializer().lock();
-		try {
-			s.setUseWhitespace(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 {
-		WriterSerializer s = new UonSerializer();
+		UonSerializerBuilder s = new UonSerializerBuilder();
 
 		R1 r1 = new R1();
 		R2 r2 = new R2();
@@ -406,7 +386,7 @@ public class Common_UonTest {
 
 		// No recursion detection
 		try {
-			s.serialize(r1);
+			s.build().serialize(r1);
 			fail("Exception expected!");
 		} catch (Exception e) {
 			String msg = e.getLocalizedMessage();
@@ -414,9 +394,9 @@ public class Common_UonTest {
 		}
 
 		// 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();
@@ -426,8 +406,8 @@ public class Common_UonTest {
 			assertTrue(msg.contains("->[3]r1:org.apache.juneau.urlencoding.Common_UonTest$R1"));
 		}
 
-		s.setIgnoreRecursions(true);
-		assertEquals("(name=foo,r2=(name=bar,r3=(name=baz)))", s.serialize(r1));
+		s.ignoreRecursions(true);
+		assertEquals("(name=foo,r2=(name=bar,r3=(name=baz)))", s.build().serialize(r1));
 	}
 
 	public static class R1 {