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 2016/08/28 16:23:58 UTC

[1/4] incubator-juneau git commit: Eliminate Tranform class.

Repository: incubator-juneau
Updated Branches:
  refs/heads/master e7ab5a47b -> 5b8990ed5


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
index ea6378a..7eaa10f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializerSession.java
@@ -76,7 +76,7 @@ public class UrlEncodingSerializerSession extends UonSerializerSession {
 	public final boolean shouldUseExpandedParams(Object value) {
 		if (value == null || ! expandedParams)
 			return false;
-		ClassMeta<?> cm = getBeanContext().getClassMetaForObject(value).getTransformedClassMeta();
+		ClassMeta<?> cm = getBeanContext().getClassMetaForObject(value).getSerializedClassMeta();
 		if (cm.isArray() || cm.isCollection()) {
 			if (expandedParams)
 				return true;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/urlencoding/package.html
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/package.html b/juneau-core/src/main/java/org/apache/juneau/urlencoding/package.html
index f67d1ed..269c7c1 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/package.html
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/package.html
@@ -206,7 +206,7 @@
 		<p>
 			Refer to the <a href='doc-files/rfc_uon.txt'>UON specification</a> for a complete set of syntax rules.		
 		<p>
-			Transforms can be used to convert non-serializable POJOs into serializable forms, such as converting 
+			<code>PojoSwaps</code> can be used to convert non-serializable POJOs into serializable forms, such as converting 
 				<code>Calendar</code> object to ISO8601 strings, or <code><jk>byte</jk>[]</code> arrays to Base-64 encoded strings.<br>
 			These transforms can be associated at various levels:
 		</p>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
index 53c8ac4..0efb85f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlParser.java
@@ -68,7 +68,7 @@ public class XmlParser extends ReaderParser {
 		if (nt == null)
 			nt = (ClassMeta<T>)object();
 		PojoSwap<T,Object> transform = (PojoSwap<T,Object>)nt.getPojoSwap();
-		ClassMeta<?> ft = nt.getTransformedClassMeta();
+		ClassMeta<?> ft = nt.getSerializedClassMeta();
 		session.setCurrentClass(ft);
 
 		String wrapperAttr = (isRoot && session.isPreserveRootElement()) ? r.getName().getLocalPart() : null;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
index dc74bba..fcd644d 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSchemaSerializer.java
@@ -292,7 +292,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
 				return false;
 			processedElements.add(name);
 
-			ClassMeta<?> ft = cm.getTransformedClassMeta();
+			ClassMeta<?> ft = cm.getSerializedClassMeta();
 			int i = session.getIndent() + 1;
 			if (name == null)
 				name = getElementName(ft);
@@ -332,7 +332,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
 
 			int i = session.getIndent() + 1;
 
-			cm = cm.getTransformedClassMeta();
+			cm = cm.getSerializedClassMeta();
 
 			w.oTag(i, "complexType")
 				.attr("name", name);
@@ -520,7 +520,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
 		}
 
 		private String getElementName(ClassMeta<?> cm) {
-			cm = cm.getTransformedClassMeta();
+			cm = cm.getSerializedClassMeta();
 			String name = cm.getExtendedMeta(XmlClassMeta.class).getElementName();
 
 			if (name == null) {
@@ -550,7 +550,7 @@ public class XmlSchemaSerializer extends XmlSerializer {
 
 		private String getXmlType(Namespace currentNs, ClassMeta<?> cm) {
 			String name = null;
-			cm = cm.getTransformedClassMeta();
+			cm = cm.getSerializedClassMeta();
 			if (currentNs == targetNs && ! session.isAddJsonTypeAttrs()) {
 				if (cm.isBoolean())
 					name = "boolean";

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
index ff06da1..a30d902 100644
--- a/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/xml/XmlSerializer.java
@@ -324,20 +324,20 @@ public class XmlSerializer extends WriterSerializer {
 				aType = ((Delegate)o).getClassMeta();
 			}
 
-			gType = aType.getTransformedClassMeta();
+			gType = aType.getSerializedClassMeta();
 
-			// Transform if necessary
-			PojoSwap transform = aType.getPojoSwap();
-			if (transform != null) {
-				o = transform.swap(o, bc);
+			// Swap if necessary
+			PojoSwap swap = aType.getPojoSwap();
+			if (swap != null) {
+				o = swap.swap(o, bc);
 
-				// If the transform's getTransformedClass() method returns Object, we need to figure out
+				// If the getSwapClass() method returns Object, we need to figure out
 				// the actual type now.
 				if (gType.isObject())
 					gType = bc.getClassMetaForObject(o);
 			}
 		} else {
-			gType = eType.getTransformedClassMeta();
+			gType = eType.getSerializedClassMeta();
 		}
 
 		String classAttr = null;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/overview.html
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/overview.html b/juneau-core/src/main/java/overview.html
index c8163c6..568fe9b 100644
--- a/juneau-core/src/main/java/overview.html
+++ b/juneau-core/src/main/java/overview.html
@@ -421,10 +421,10 @@
 			<tr class='dark bb' style='background-color:lightyellow'>
 				<td style='text-align:center'>4</td>
 				<td>
-					<b>Transformed objects</b><br>
+					<b>Swapped objects</b><br>
 					These are objects that are not directly serializable, but have {@link org.apache.juneau.transform.PojoSwap PojoSwaps} associated with them.  
-					The purpose of an object transform is to convert an object to another object that is easier to serialize and parse.  
-					For example, the {@link org.apache.juneau.transforms.DateSwap.ISO8601DT} transform can be used to serialize {@link java.util.Date} objects 
+					The purpose of a POJO swap is to convert an object to another object that is easier to serialize and parse.  
+					For example, the {@link org.apache.juneau.transforms.DateSwap.ISO8601DT} class can be used to serialize {@link java.util.Date} objects 
 						to ISO8601 strings, and parse them back into {@link java.util.Date} objects.
 				</td>
 				<td>&nbsp;</td>
@@ -434,8 +434,8 @@
 			<tr class='light bb'>
 				<td style='text-align:center'>4a</td>
 				<td>
-					<b>2-way transformed to group [1, 2a, 3a] objects</b><br>
-					For example, a transform that converts a {@code Date} to a {@code String}.
+					<b>2-way swapped to group [1, 2a, 3a] objects</b><br>
+					For example, a swap that converts a {@code Date} to a {@code String}.
 				</td>
 				<td>&nbsp;</td>
 				<td style='background-color:lightgreen;text-align:center'><b>yes</b></td>
@@ -444,8 +444,8 @@
 			<tr class='light bb'>
 				<td style='text-align:center'>4b</td>
 				<td>
-					<b>1-way transformed to group [1, 2, 3] objects</b><br>
-					For example, a transform that converts an {@code Iterator} to a {@code List}.  
+					<b>1-way swapped to group [1, 2, 3] objects</b><br>
+					For example, a swap that converts an {@code Iterator} to a {@code List}.  
 					This would be one way, since you cannot reconstruct an {@code Iterator}.
 				</td>
 				<td>&nbsp;</td>
@@ -496,7 +496,7 @@
 		</p>
 		<p>
 			Default serialization support is provided for Java primitives, <l>Maps</l>, <l>Collections</l>, beans, and arrays. <br> 
-			Extensible support for other data types such as <l>Calendars</l>, <l>Dates</l>, <l>Iterators</l> is available through the use of transforms.
+			Extensible support for other data types such as <l>Calendars</l>, <l>Dates</l>, <l>Iterators</l> is available through the use of POJO swaps.
 		</p>
 		<p>
 			In most cases, you can serialize objects in one line of code by using one of the default serializers:
@@ -808,11 +808,11 @@
 	
 		<h6 class='topic'>Additional Information</h6>
 		<ul class='javahierarchy'>
+			<li class='n'>{@link org.apache.juneau.annotation.Pojo @Pojo} - Used to tailor how non-bean POJOs get interpreted by the framework.
 			<li class='n'>{@link org.apache.juneau.annotation.Bean @Bean} - Used to tailor how beans get interpreted by the framework.
 			<li class='n'>{@link org.apache.juneau.annotation.BeanConstructor @BeanConstructor} - Maps constructor arguments to property names on beans with read-only properties.
 			<li class='n'>{@link org.apache.juneau.annotation.BeanIgnore @BeanIgnore} - Ignore classes, fields, and methods from being interpreted as bean or bean components.
 			<li class='n'>{@link org.apache.juneau.annotation.BeanProperty @BeanProperty} - Used to tailor how bean properties get interpreted by the framework.
-			<li class='n'>{@link org.apache.juneau.annotation.Transform @Transform} - Annotation that can be applied to a class to associate a transform with it.
 			<li class='n'>{@link org.apache.juneau.annotation.NameProperty @NameProperty} - Identifies a setter as a method for setting the name of a POJO as it's known by its parent object.
 			<li class='n'>{@link org.apache.juneau.annotation.ParentProperty @ParentProperty} - Identifies a setter as a method for adding a parent reference to a child object.
 			<li class='n'>{@link org.apache.juneau.annotation.URI @URI} - Used to identify a class or bean property as a URI.
@@ -831,14 +831,14 @@
 			The following example is equivalent to specifying the <l>@Bean</l> annotation in the previous example using a bean filter:
 		</p>
 		<p class='bcode'>
-	<jc>// Define transform that returns properties in the following order: "street", "city", "state"</jc>
+	<jc>// Define bean filter that returns properties in the following order: "street", "city", "state"</jc>
 	<jk>public class</jk> AddressFilter <jk>extends</jk> BeanFilter&lt;Address&gt; {
 		<jk>public</jk> AddressFilter() {
 			setProperties(<js>"street"</js>,<js>"city"</js>,<js>"state"</js>);
 		}
 	}
 	
-	WriterSerializer s = <jk>new</jk> JsonSerializer().addTransforms(AddressFilter.<jk>class</jk>);
+	WriterSerializer s = <jk>new</jk> JsonSerializer().addBeanFilters(AddressFilter.<jk>class</jk>);
 	Address a = getAddress();
 	String json = s.serialize(a);  <jc>// Prints "{street:'...',city:'...',state;'...'}"</jc>
 		</p>
@@ -853,7 +853,7 @@
 			The following POJO swap can be used to represent dates in ISO8601 format:
 		</p>
 		<p class='bcode'>
-	<jc>// Sample transform for converting Dates to ISO8601 strings.</jc>
+	<jc>// Sample swap for converting Dates to ISO8601 strings.</jc>
 	<jk>public class</jk> MyDateSwap <jk>extends</jk> PojoSwap&lt;Date,String&gt; {
 		
 		<jc>// ISO8601 formatter.</jc>
@@ -867,7 +867,7 @@
 		
 		<jd>/** Converts an ISO8601 string to a Date object. */</jd>
 		<ja>@Override</ja>
-		<jk>public</jk> Date unswap(String o, ClassMeta&lt;?&gt; hint) <jk>throws</jk> ParseException {
+		<jk>public</jk> Date unswap(String o) <jk>throws</jk> ParseException {
 			<jk>try</jk> {
 				<jk>return</jk> <jf>format</jf>.parse(o);
 			} <jk>catch</jk> (java.text.ParseException e) {
@@ -877,7 +877,7 @@
 	}
 		</p>
 		<p>
-			The transform above can then be associated with serializers and parsers as the following example shows:
+			The swap above can then be associated with serializers and parsers as the following example shows:
 		</p>
 		<p class='bcode'>
 	<jc>// Sample bean with a Date field.</jc>
@@ -885,12 +885,12 @@
 		<jk>public</jk> Date <jf>date</jf> = <jk>new</jk> Date(112, 2, 3, 4, 5, 6);
 	}
 
-	<jc>// Create a new JSON serializer, associate our date transform with it, and serialize a sample bean.</jc>
-	Serializer serializer = <jk>new</jk> JsonSerializer().addTransforms(MyDateSwap.<jk>class</jk>);
+	<jc>// Create a new JSON serializer, associate our date swap with it, and serialize a sample bean.</jc>
+	Serializer serializer = <jk>new</jk> JsonSerializer().addPojoSwaps(MyDateSwap.<jk>class</jk>);
 	String json = serializer.serialize(<jk>new</jk> MyBean());	<jc>// == "{date:'2012-03-03T04:05:06-0500'}"</jc>
 	
-	<jc>// Create a JSON parser, associate our date transform with it, and reconstruct our bean (including the date).</jc>
-	ReaderParser parser = <jk>new</jk> JsonParser().addTransforms(MyDateSwap.<jk>class</jk>);
+	<jc>// Create a JSON parser, associate our date swap with it, and reconstruct our bean (including the date).</jc>
+	ReaderParser parser = <jk>new</jk> JsonParser().addPojoSwaps(MyDateSwap.<jk>class</jk>);
 	MyBean bean = parser.parse(json, MyBean.<jk>class</jk>);
 	<jk>int</jk> day = bean.<jf>date</jf>.getDay(); 						<jc>// == 3</jc>
 		</p>
@@ -903,7 +903,7 @@
 	</div>
 			
 	<!-- ======================================================================================================== -->
-	<a id="Core.Transforms"></a>
+	<a id="Core.SVL"></a>
 	<h4 class='topic' onclick='toggle(this)'>2.8 - Simple Variable Language</h4>
 	<div class='topic'>
 		<p>
@@ -1245,7 +1245,7 @@
 		<jk>public</jk> URI <jf>addressBookUri</jf>; 
 		<jk>public int</jk> <jf>id</jf>; 
 		<jk>public</jk> String <jf>name</jf>; 
-		<ja>@BeanProperty</ja>(transform=CalendarSwap.Medium.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>; 
+		<ja>@BeanProperty</ja>(pojoSwaps=CalendarSwap.Medium.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>; 
 		<jk>public</jk> LinkedList&lt;Address&gt; <jf>addresses</jf>; 
 	} 
 	&nbsp;
@@ -2088,7 +2088,7 @@
 		<jk>public static class</jk> FormInputBean { 
 			<jk>public</jk> String aString; 
 			<jk>public int</jk> aNumber; 
-			<ja>@BeanProperty</ja>(transform=CalendarSwap.<jsf>ISO8601DT</jsf>.<jk>class</jk>) 
+			<ja>@BeanProperty</ja>(pojoSwaps=CalendarSwap.<jsf>ISO8601DT</jsf>.<jk>class</jk>) 
 			<jk>public</jk> Calendar aDate; 
 		} 
 	}		
@@ -2195,8 +2195,8 @@
 		<ul class='spaced-list'>
 			<li>Using the {@link org.apache.juneau.server.annotation.RestResource#properties() @RestResource.properties()}
 				annotation to set serializer properties.
-			<li>Using the {@link org.apache.juneau.server.annotation.RestResource#transforms() @RestResource.transforms()}
-				annotation to set serializer transforms.
+			<li>Using the {@link org.apache.juneau.server.annotation.RestResource#beanFilters() @RestResource.beanFilters()} and {@link org.apache.juneau.server.annotation.RestResource#pojoSwaps() @RestResource.pojoSwaps()}
+				annotations to set serializer transforms.
 			<li>Using the {@link org.apache.juneau.server.annotation.Properties @Properties} annotation to set serializers properties
 				programmatically on a request.
 		</ul>
@@ -2216,10 +2216,12 @@
 			<ja>@Property</ja>(name=<jsf>SERIALIZER_detectRecursions</jsf>, value=<js>"true"</js>),
 			<ja>@Property</ja>(name=<jsf>HTMLDOC_links</jsf>, value=<js>"{up:'$R{requestParentURI}',options:'?method=OPTIONS',source:'$R{servletParentURI}/source?classes=(org.apache.juneau.server.samples.RequestEchoResource)'}"</js>)
 		},
-		transforms={
+		beanFilters={
 			<jc>// Interpret these as their parent classes, not subclasses</jc>
 			HttpServletRequest.<jk>class</jk>, HttpSession.<jk>class</jk>, ServletContext.<jk>class</jk>,
-			<jc>// Add a special transform for Enumerations</jc>
+		},
+		pojoSwaps={
+			<jc>// Add a special POJO swap for Enumerations</jc>
 			EnumerationSwap.<jk>class</jk>
 		}
 	)
@@ -2246,8 +2248,9 @@
 				not implementation-specific (i.e. WAS or Jetty) fields which can get messy.
 		</p>
 		<p>
-			The {@link org.apache.juneau.server.annotation.RestResource#properties() @RestResource.properties()} and 
-				{@link org.apache.juneau.server.annotation.RestResource#transforms() @RestResopurce.transforms()} annotations are used 
+			The {@link org.apache.juneau.server.annotation.RestResource#properties() @RestResource.properties()}, 
+				{@link org.apache.juneau.server.annotation.RestResource#beanFilters() @RestResopurce.beanFilters()}, and
+				{@link org.apache.juneau.server.annotation.RestResource#pojoSwaps() @RestResopurce.pojoSwaps()} annotations are used 
 				to set behavior properties on the resource's underlying bean context, serializers, and parsers.  
 			You're using them here to modify the behavior of serialization for all content types.  
 			The annotations are functionally equivalent to overriding the {@link org.apache.juneau.server.RestServlet#createSerializers(ObjectMap,Class[])} method, as follows:
@@ -2263,12 +2266,12 @@
 		
 		<jc>// Add bean filters for the HttpServletRequest, HttpSession, and ServletContext objects
 		//		so that you don't show vendor-specific properties on subclasses.
-		// Add Enumeration transform to be able to render the contents of Enumeration properties.
+		// Add Enumeration POJO swap to be able to render the contents of Enumeration properties.
 		// The max depth and detect recursion options prevent any possible runaway serializations.  
 		// This shouldn't happen, but future JEE APIs may introduce deep hierarchies or loops.</jc>
 		serializerGroup
-			.addTransforms(HttpServletRequest.<jk>class</jk>, HttpSession.<jk>class</jk>, ServletContext.<jk>class</jk>)
-			.addTransforms(EnumerationSwap.<jk>class</jk>)
+			.addBeanFilters(HttpServletRequest.<jk>class</jk>, HttpSession.<jk>class</jk>, ServletContext.<jk>class</jk>)
+			.addPojoSwaps(EnumerationSwap.<jk>class</jk>)
 			.setProperty(<jsf>SERIALIZER_maxDepth</jsf>, 10)
 			.setProperty(<jsf>SERIALIZER_detectRecursions</jsf>, <jk>true</jk>);
 			.setProperty(<jsf>HTMLDOC_links</jsf>, <js>"{...}"</js>);
@@ -2522,7 +2525,7 @@
 		<jk>public</jk> URI <jf>addressBookUri</jf>;
 		<jk>public</jk> String <jf>id</jf>;
 		<jk>public</jk> String <jf>name</jf>;
-		<ja>@BeanProperty</ja>(transform=CalendarSwap.Medium.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>;
+		<ja>@BeanProperty</ja>(pojoSwap=CalendarSwap.Medium.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>;
 		<jk>public</jk> LinkedList&lt;Address&gt; <jf>addresses</jf> = new LinkedList&lt;Address&gt;();
 		
 		<jd>/** Bean constructor - Needed for instantiating on server side */</jd> 
@@ -2566,7 +2569,7 @@
 						resource.  
 					This property has special meaning for the XML and RDF serializizers.  The XML serializer serializes this as a <l>uri</l> attribute instead of an <l>&lt;uri&gt;</l> element, and 
 						the RDF serializer uses this property for the value of the <l>rdf:resource</l> attribute.
-				<li>The <code><ja>@BeanProperty</ja>(transform=CalendarSwap.Medium.<jk>class</jk>)</code> annotation causes the date field to 
+				<li>The <code><ja>@BeanProperty</ja>(pojoSwap=CalendarSwap.Medium.<jk>class</jk>)</code> annotation causes the date field to 
 						be serialized in the format <l>"MM dd, yyyy"</l>.
 					This could have also been specified globally on the resource level through the {@link org.apache.juneau.server.annotation.RestResource#properties} annotation.
 			</ul>
@@ -2625,7 +2628,7 @@
 		
 		<jc>// Bean properties</jc>
 		<jk>public</jk> String <jf>name</jf>;
-		<ja>@BeanProperty(</ja>transform=CalendarSwap.Medium.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>;
+		<ja>@BeanProperty(</ja>pojoSwap=CalendarSwap.Medium.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>;
 		<jk>public</jk> LinkedList&lt;CreateAddress&gt; <jf>addresses</jf>;
 		
 		<jd>/** Bean constructor - Needed for instantiating on server side */</jd>
@@ -2899,7 +2902,7 @@
 				<jk>new</jk> Column(<js>"name"</js>, <js>"xs:String"</js>, 255), 
 				<jk>new</jk> Column(<js>"age"</js>, <js>"xs:int"</js>), 
 				<jk>new</jk> Column(<js>"numAddresses"</js>, <js>"xs:int"</js>) 
-				.addTransform( 
+				.addPojoSwap( 
 					<jk>new</jk> PojoSwap&lt;Person,Integer&gt;() { 
 						<ja>@Override</ja> /* PojoSwap */ 
 						<jk>public</jk> Integer swap(Person p) { 
@@ -4451,11 +4454,11 @@
 	<h3 class='topic' onclick='toggle(this)'>8.2 - Server API</h3>
 	<div class='topic'>
 		<!-- ======================================================================================================== -->
-		<a id="Cookbook.Server.applyDoubletransform"></a>
+		<a id="Cookbook.Server.applyDoubleTransform"></a>
 		<h3 class='topic' onclick='toggle(this)'>8.2.1 - Apply a transform that changes the format of doubles</h3>
 		<div class='topic'>
 			<p>
-				The {@link org.apache.juneau.server.annotation.RestResource#transforms()} annotation can be used to add 
+				The {@link org.apache.juneau.server.annotation.RestResource#pojoSwaps()} annotation can be used to add 
 				POJO swaps to all the serializers and parsers registered with a servlet.
 			</p>
 			<p>
@@ -4464,7 +4467,7 @@
 			</p>
 			<p class='bcode'>
 	<ja>@RestResource</ja>(
-		transforms={
+		pojoSwaps={
 			MyRestService.DoubleSwap.<jk>class</jk>
 		}
 	)
@@ -4486,20 +4489,20 @@
 		<h3 class='topic' onclick='toggle(this)'>8.2.2 - Apply transforms to a subset of serializers or parsers</h3>
 		<div class='topic'>
 			<p>
-				The {@link org.apache.juneau.server.RestServlet#createSerializers(ObjectMap,Class[])} and {@link org.apache.juneau.server.RestServlet#createParsers(ObjectMap,Class[])}
+				The {@link org.apache.juneau.server.RestServlet#createSerializers(ObjectMap,Class[],Class[])} and {@link org.apache.juneau.server.RestServlet#createParsers(ObjectMap,Class[],Class[])}
 				methods are the servlet methods that get called during servlet initialization to create the serializer and
 				parser groups.
 				These methods can be overridden to customize individual serializers and parsers in a way that can't be done using annotations.
 			</p>
 			<p>
-				In this example, you want to apply the transform from the previous example to change the rendered format for doubles.
-				However, in this case, you apply the transform to only the HTML serializer.
+				In this example, you want to apply the swap from the previous example to change the rendered format for doubles.
+				However, in this case, you apply the swao to only the HTML serializer.
 			</p>
 			<p class='bcode'>
 	<ja>@Override</ja>
-	<jk>protected</jk> SerializerGroup createSerializers(ObjectMap properties, Class[] transforms) <jk>throws</jk> Exception {
-		SerializerGroup g = <jk>super</jk>.createSerializers(properties, transforms);
-		g.getSerializer(<js>"text/html"</js>).addTransforms(DoubleSwap.<jk>class</jk>); 
+	<jk>protected</jk> SerializerGroup createSerializers(ObjectMap properties, Class[] beanFilters, Class[] pojoSwaps) <jk>throws</jk> Exception {
+		SerializerGroup g = <jk>super</jk>.createSerializers(properties, beanFilters, pojoSwaps);
+		g.getSerializer(<js>"text/html"</js>).addPojoSwaps(DoubleSwap.<jk>class</jk>); 
 		<jk>return</jk> g;
 	}
 			</p>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/test/java/org/apache/juneau/BeanFilterTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/BeanFilterTest.java b/juneau-core/src/test/java/org/apache/juneau/BeanFilterTest.java
index 5c92efc..78fe620 100755
--- a/juneau-core/src/test/java/org/apache/juneau/BeanFilterTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/BeanFilterTest.java
@@ -93,10 +93,10 @@ public class BeanFilterTest {
 	}
 
 	//====================================================================================================
-	// Test parent class used as transform
+	// Test parent class used as filter
 	//====================================================================================================
 	@Test
-	public void testParentClassTransform() throws Exception {
+	public void testParentClassFilter() throws Exception {
 		JsonSerializer s = new JsonSerializer.Simple().addBeanFilters(C1.class);
 
 		C1 c1 = new C2();
@@ -118,10 +118,10 @@ public class BeanFilterTest {
 	}
 
 	//====================================================================================================
-	// Test non-static parent class used as transform
+	// Test non-static parent class used as filter
 	//====================================================================================================
 	@Test
-	public void testParentClassTransform2() throws Exception {
+	public void testParentClassFilter2() throws Exception {
 		JsonSerializer s = new JsonSerializer.Simple().addBeanFilters(D1.class);
 
 		D1 d1 = new D2();

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java b/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java
index 5f7be6f..e6f6f28 100755
--- a/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java
@@ -1481,10 +1481,10 @@ public class BeanMapTest {
 	}
 
 	//====================================================================================================
-	// testCastToLinkedListUsingTransform - cast() to LinkedList<Calendar> using CalendarSwap
+	// testCastToLinkedListUsingSwap - cast() to LinkedList<Calendar> using CalendarSwap
 	//====================================================================================================
 	@Test
-	public void testCastToLinkedListUsingTransform() throws Exception {
+	public void testCastToLinkedListUsingSwap() throws Exception {
 		BeanContext bc = ContextFactory.create().addPojoSwaps(CalendarSwap.ISO8601DTZ.class).getBeanContext();
 
 		// With _class

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/test/java/org/apache/juneau/ClassMetaTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/ClassMetaTest.java b/juneau-core/src/test/java/org/apache/juneau/ClassMetaTest.java
index 97fab32..d884564 100755
--- a/juneau-core/src/test/java/org/apache/juneau/ClassMetaTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/ClassMetaTest.java
@@ -107,11 +107,11 @@ public class ClassMetaTest {
 	}
 
 	//====================================================================================================
-	// testTransforms
-	// Ensure filters on parent and child classes are properly detected.
+	// testSwaps
+	// Ensure swaps on parent and child classes are properly detected.
 	//====================================================================================================
 	@Test
-	public void testTransforms() throws Exception {
+	public void testSwaps() throws Exception {
 		BeanContext bc;
 		ClassMeta<?> ooo, hi1, hc1, hi2, hc2;
 
@@ -131,11 +131,11 @@ public class ClassMetaTest {
 		assertNull(hc1.getPojoSwap());
 		assertNull(hi2.getPojoSwap());
 		assertNull(hc2.getPojoSwap());
-		assertEquals(ooo.getTransformedClassMeta().getInnerClass(), Object.class);
-		assertEquals(hi1.getTransformedClassMeta().getInnerClass(), HI1.class);
-		assertEquals(hc1.getTransformedClassMeta().getInnerClass(), HC1.class);
-		assertEquals(hi2.getTransformedClassMeta().getInnerClass(), HI2.class);
-		assertEquals(hc2.getTransformedClassMeta().getInnerClass(), HC2.class);
+		assertEquals(ooo.getSerializedClassMeta().getInnerClass(), Object.class);
+		assertEquals(hi1.getSerializedClassMeta().getInnerClass(), HI1.class);
+		assertEquals(hc1.getSerializedClassMeta().getInnerClass(), HC1.class);
+		assertEquals(hi2.getSerializedClassMeta().getInnerClass(), HI2.class);
+		assertEquals(hc2.getSerializedClassMeta().getInnerClass(), HC2.class);
 
 		bc = ContextFactory.create().addPojoSwaps(HI1Swap.class).getBeanContext();
 		ooo = bc.getClassMeta(Object.class);
@@ -153,11 +153,11 @@ public class ClassMetaTest {
 		assertEquals(hc1.getPojoSwap().getClass(), HI1Swap.class);
 		assertEquals(hi2.getPojoSwap().getClass(), HI1Swap.class);
 		assertEquals(hc2.getPojoSwap().getClass(), HI1Swap.class);
-		assertEquals(ooo.getTransformedClassMeta().getInnerClass(), Object.class);
-		assertEquals(hi1.getTransformedClassMeta().getInnerClass(), Map.class);
-		assertEquals(hc1.getTransformedClassMeta().getInnerClass(), Map.class);
-		assertEquals(hi2.getTransformedClassMeta().getInnerClass(), Map.class);
-		assertEquals(hc2.getTransformedClassMeta().getInnerClass(), Map.class);
+		assertEquals(ooo.getSerializedClassMeta().getInnerClass(), Object.class);
+		assertEquals(hi1.getSerializedClassMeta().getInnerClass(), Map.class);
+		assertEquals(hc1.getSerializedClassMeta().getInnerClass(), Map.class);
+		assertEquals(hi2.getSerializedClassMeta().getInnerClass(), Map.class);
+		assertEquals(hc2.getSerializedClassMeta().getInnerClass(), Map.class);
 
 		bc = ContextFactory.create().addPojoSwaps(HC1Swap.class).getBeanContext();
 		ooo = bc.getClassMeta(Object.class);
@@ -175,11 +175,11 @@ public class ClassMetaTest {
 		assertEquals(hc1.getPojoSwap().getClass(), HC1Swap.class);
 		assertNull(hi2.getPojoSwap());
 		assertEquals(hc2.getPojoSwap().getClass(), HC1Swap.class);
-		assertEquals(ooo.getTransformedClassMeta().getInnerClass(), Object.class);
-		assertEquals(hi1.getTransformedClassMeta().getInnerClass(), HI1.class);
-		assertEquals(hc1.getTransformedClassMeta().getInnerClass(), Map.class);
-		assertEquals(hi2.getTransformedClassMeta().getInnerClass(), HI2.class);
-		assertEquals(hc2.getTransformedClassMeta().getInnerClass(), Map.class);
+		assertEquals(ooo.getSerializedClassMeta().getInnerClass(), Object.class);
+		assertEquals(hi1.getSerializedClassMeta().getInnerClass(), HI1.class);
+		assertEquals(hc1.getSerializedClassMeta().getInnerClass(), Map.class);
+		assertEquals(hi2.getSerializedClassMeta().getInnerClass(), HI2.class);
+		assertEquals(hc2.getSerializedClassMeta().getInnerClass(), Map.class);
 
 		bc = ContextFactory.create().addPojoSwaps(HI2Swap.class).getBeanContext();
 		ooo = bc.getClassMeta(Object.class);
@@ -197,11 +197,11 @@ public class ClassMetaTest {
 		assertNull(hc1.getPojoSwap());
 		assertEquals(hi2.getPojoSwap().getClass(), HI2Swap.class);
 		assertEquals(hc2.getPojoSwap().getClass(), HI2Swap.class);
-		assertEquals(ooo.getTransformedClassMeta().getInnerClass(), Object.class);
-		assertEquals(hi1.getTransformedClassMeta().getInnerClass(), HI1.class);
-		assertEquals(hc1.getTransformedClassMeta().getInnerClass(), HC1.class);
-		assertEquals(hi2.getTransformedClassMeta().getInnerClass(), Map.class);
-		assertEquals(hc2.getTransformedClassMeta().getInnerClass(), Map.class);
+		assertEquals(ooo.getSerializedClassMeta().getInnerClass(), Object.class);
+		assertEquals(hi1.getSerializedClassMeta().getInnerClass(), HI1.class);
+		assertEquals(hc1.getSerializedClassMeta().getInnerClass(), HC1.class);
+		assertEquals(hi2.getSerializedClassMeta().getInnerClass(), Map.class);
+		assertEquals(hc2.getSerializedClassMeta().getInnerClass(), Map.class);
 
 		bc = ContextFactory.create().addPojoSwaps(HC2Swap.class).getBeanContext();
 		ooo = bc.getClassMeta(Object.class);
@@ -219,11 +219,11 @@ public class ClassMetaTest {
 		assertNull(hc1.getPojoSwap());
 		assertNull(hi2.getPojoSwap());
 		assertEquals(hc2.getPojoSwap().getClass(), HC2Swap.class);
-		assertEquals(ooo.getTransformedClassMeta().getInnerClass(), Object.class);
-		assertEquals(hi1.getTransformedClassMeta().getInnerClass(), HI1.class);
-		assertEquals(hc1.getTransformedClassMeta().getInnerClass(), HC1.class);
-		assertEquals(hi2.getTransformedClassMeta().getInnerClass(), HI2.class);
-		assertEquals(hc2.getTransformedClassMeta().getInnerClass(), Map.class);
+		assertEquals(ooo.getSerializedClassMeta().getInnerClass(), Object.class);
+		assertEquals(hi1.getSerializedClassMeta().getInnerClass(), HI1.class);
+		assertEquals(hc1.getSerializedClassMeta().getInnerClass(), HC1.class);
+		assertEquals(hi2.getSerializedClassMeta().getInnerClass(), HI2.class);
+		assertEquals(hc2.getSerializedClassMeta().getInnerClass(), Map.class);
 
 		bc = ContextFactory.create().addPojoSwaps(HI1Swap.class,HC1Swap.class,HI2Swap.class,HC2Swap.class).getBeanContext();
 		ooo = bc.getClassMeta(Object.class);
@@ -241,11 +241,11 @@ public class ClassMetaTest {
 		assertEquals(hc1.getPojoSwap().getClass(), HI1Swap.class);
 		assertEquals(hi2.getPojoSwap().getClass(), HI1Swap.class);
 		assertEquals(hc2.getPojoSwap().getClass(), HI1Swap.class);
-		assertEquals(ooo.getTransformedClassMeta().getInnerClass(), Object.class);
-		assertEquals(hi1.getTransformedClassMeta().getInnerClass(), Map.class);
-		assertEquals(hc1.getTransformedClassMeta().getInnerClass(), Map.class);
-		assertEquals(hi2.getTransformedClassMeta().getInnerClass(), Map.class);
-		assertEquals(hc2.getTransformedClassMeta().getInnerClass(), Map.class);
+		assertEquals(ooo.getSerializedClassMeta().getInnerClass(), Object.class);
+		assertEquals(hi1.getSerializedClassMeta().getInnerClass(), Map.class);
+		assertEquals(hc1.getSerializedClassMeta().getInnerClass(), Map.class);
+		assertEquals(hi2.getSerializedClassMeta().getInnerClass(), Map.class);
+		assertEquals(hc2.getSerializedClassMeta().getInnerClass(), Map.class);
 
 		bc = ContextFactory.create().addPojoSwaps(HC2Swap.class,HI2Swap.class,HC1Swap.class,HI1Swap.class).getBeanContext();
 		ooo = bc.getClassMeta(Object.class);
@@ -263,11 +263,11 @@ public class ClassMetaTest {
 		assertEquals(hc1.getPojoSwap().getClass(), HC1Swap.class);
 		assertEquals(hi2.getPojoSwap().getClass(), HI2Swap.class);
 		assertEquals(hc2.getPojoSwap().getClass(), HC2Swap.class);
-		assertEquals(ooo.getTransformedClassMeta().getInnerClass(), Object.class);
-		assertEquals(hi1.getTransformedClassMeta().getInnerClass(), Map.class);
-		assertEquals(hc1.getTransformedClassMeta().getInnerClass(), Map.class);
-		assertEquals(hi2.getTransformedClassMeta().getInnerClass(), Map.class);
-		assertEquals(hc2.getTransformedClassMeta().getInnerClass(), Map.class);
+		assertEquals(ooo.getSerializedClassMeta().getInnerClass(), Object.class);
+		assertEquals(hi1.getSerializedClassMeta().getInnerClass(), Map.class);
+		assertEquals(hc1.getSerializedClassMeta().getInnerClass(), Map.class);
+		assertEquals(hi2.getSerializedClassMeta().getInnerClass(), Map.class);
+		assertEquals(hc2.getSerializedClassMeta().getInnerClass(), Map.class);
 	}
 
 	public interface HI1 {}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/test/java/org/apache/juneau/DataConversionTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/DataConversionTest.java b/juneau-core/src/test/java/org/apache/juneau/DataConversionTest.java
index e217850..9137bf9 100755
--- a/juneau-core/src/test/java/org/apache/juneau/DataConversionTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/DataConversionTest.java
@@ -129,10 +129,10 @@ public class DataConversionTest {
 	}
 
 	//====================================================================================================
-	// Data conversions with object transforms.
+	// Data conversions with swaps.
 	//====================================================================================================
 	@Test
-	public void testObjectTransforms() throws Exception {
+	public void testObjectSwaps() throws Exception {
 		String s = "Jan 12, 2001";
 		BeanContext bc = ContextFactory.create().addPojoSwaps(CalendarSwap.Medium.class).getBeanContext();
 		Calendar c = bc.convertToType(s, GregorianCalendar.class);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/test/java/org/apache/juneau/JacocoDummyTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/JacocoDummyTest.java b/juneau-core/src/test/java/org/apache/juneau/JacocoDummyTest.java
index 3e6ca8d..85ede56 100755
--- a/juneau-core/src/test/java/org/apache/juneau/JacocoDummyTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/JacocoDummyTest.java
@@ -17,7 +17,6 @@ import java.lang.reflect.*;
 import org.apache.juneau.ini.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.jena.*;
-import org.apache.juneau.transform.*;
 import org.apache.juneau.xml.annotation.*;
 import org.junit.*;
 
@@ -41,7 +40,6 @@ public class JacocoDummyTest {
 		}
 
 		ConfigFileFormat.valueOf(ConfigFileFormat.INI.toString());
-		Transform.TransformType.valueOf(Transform.TransformType.POJO.toString());
 		RdfCollectionFormat.valueOf(RdfCollectionFormat.DEFAULT.toString());
 		XmlFormat.valueOf(XmlFormat.NORMAL.toString());
 		Visibility.valueOf(Visibility.DEFAULT.toString());

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java b/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
index 18e5386..972054f 100755
--- a/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java
@@ -495,7 +495,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 	// Test @Bean(properties=xxx) using BeanFilter
 	//====================================================================================================
 	@Test
-	public void testPropertiesUsingTransform() throws Exception {
+	public void testPropertiesUsingBeanFilter() throws Exception {
 		JsonSerializer js = JsonSerializer.DEFAULT_LAX.clone().addBeanFilters(D2Filter.class);
 
 		// Skip validation-only tests
@@ -560,7 +560,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 	// Test @Bean(excludeProperties=xxx) using BeanFilter
 	//====================================================================================================
 	@Test
-	public void testExcludePropertiesUsingTransform() throws Exception {
+	public void testExcludePropertiesUsingBeanFilter() throws Exception {
 		// Skip validation-only tests
 		if (isValidationOnly())
 			return;
@@ -625,7 +625,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 	// Test @Bean(interfaceClass=xxx) using BeanFilter
 	//====================================================================================================
 	@Test
-	public void testInterfaceClassUsingTransform() throws Exception {
+	public void testInterfaceClassUsingBeanFilter() throws Exception {
 		Serializer s;
 		Parser p;
 		FB2 t;
@@ -635,7 +635,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 		if (isValidationOnly())
 			return;
 
-		// --- Transform defined on parent class ---
+		// --- BeanFilter defined on parent class ---
 		s = getSerializer().clone().addBeanFilters(FB1Filter.class);
 		p = getParser().clone().addBeanFilters(FB1Filter.class);
 
@@ -644,7 +644,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 		t = p.parse(r, FB2.class);
 		assertObjectEquals("{f1:'f1'}", t);
 
-		// --- Transform defined on child class class ---
+		// --- BeanFilter defined on child class class ---
 		s = getSerializer().clone().addBeanFilters(FB2Filter.class);
 		p = getParser().clone().addBeanFilters(FB2Filter.class);
 
@@ -653,7 +653,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest {
 		t = p.parse(r, FB2.class);
 		assertObjectEquals("{f1:'f1'}", t);
 
-		// --- Transform defined as plain class ---
+		// --- BeanFilter defined as plain class ---
 		s = getSerializer().clone().addBeanFilters(FB1.class);
 		p = getParser().clone().addBeanFilters(FB1.class);
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java b/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
index eb03b41..14414e8 100755
--- a/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
@@ -217,10 +217,10 @@ public class RoundTripTransformBeansTest extends RoundTripTest {
 	}
 
 	//====================================================================================================
-	// testTransform - Bean.transform annotation
+	// testSwaps - Bean.pojoSwaps annotation
 	//====================================================================================================
 	@Test
-	public void testTransform() throws Exception {
+	public void testSwaps() throws Exception {
 		B t = new B();
 		t.f1 = "bar";
 		t = roundTrip(t, B.class);
@@ -336,7 +336,7 @@ public class RoundTripTransformBeansTest extends RoundTripTest {
 	// Surrogate transforms
 	//====================================================================================================
 	@Test
-	public void testSurrogateTransform() throws Exception {
+	public void testSurrogates() throws Exception {
 		addPojoSwaps(D2.class);
 
 		JsonSerializer s = new JsonSerializer.Simple().addPojoSwaps(D2.class);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java b/juneau-core/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java
index 18f6a0f..23b196d 100755
--- a/juneau-core/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java
@@ -23,10 +23,10 @@ import org.junit.*;
 public class BeanFilterTest {
 
 	//====================================================================================================
-	// Transformed interfaces
+	// Interface bean filters
 	//====================================================================================================
 	@Test
-	public void testTransformedInterfaces() throws Exception {
+	public void testInterfaceBeanFilters() throws Exception {
 		BeanContext bc;
 		BeanMap<A3> bm;
 
@@ -66,10 +66,10 @@ public class BeanFilterTest {
 	}
 
 	//====================================================================================================
-	// Transformed abstract classes
+	// Abstract class bean filters
 	//====================================================================================================
 	@Test
-	public void testTransformedAbstractClasses() throws Exception {
+	public void testAbstractClassBeanFilters() throws Exception {
 		BeanContext bc;
 		BeanMap<Test2> bm;
 
@@ -111,10 +111,10 @@ public class BeanFilterTest {
 	}
 
 	//====================================================================================================
-	// Transformed with stop classes
+	// Filtered with stop classes
 	//====================================================================================================
 	@Test
-	public void testTransformedWithStopClass() throws Exception {
+	public void testFilteredWithStopClass() throws Exception {
 		C3 c3 = new C3();
 		assertObjectEquals("{f3:3,p3:3}", c3);
 	}
@@ -136,7 +136,7 @@ public class BeanFilterTest {
 	}
 
 	@Test
-	public void testTransformedWithStopClassOnParentClass() throws Exception {
+	public void testFilterWithStopClassOnParentClass() throws Exception {
 		D3 d3 = new D3();
 		assertObjectEquals("{f3:3,p3:3}", d3);
 	}
@@ -158,7 +158,7 @@ public class BeanFilterTest {
 	}
 
 	@Test
-	public void testTransformedWithStopClassOnParentClassWithOverriddenAnnotation() throws Exception {
+	public void testFilteredWithStopClassOnParentClassWithOverriddenAnnotation() throws Exception {
 		E3 e3 = new E3();
 		assertObjectEquals("{f3:3,p3:3}", e3);
 	}
@@ -181,7 +181,7 @@ public class BeanFilterTest {
 	}
 
 	@Test
-	public void testTransformedWithStopClassesAtMulitpleLevels() throws Exception {
+	public void testFilteredWithStopClassesAtMulitpleLevels() throws Exception {
 		F3 e3 = new F3();
 		assertObjectEquals("{f3:3,p3:3}", e3);
 	}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/test/java/org/apache/juneau/transforms/DateFilterTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/transforms/DateFilterTest.java b/juneau-core/src/test/java/org/apache/juneau/transforms/DateFilterTest.java
index 2d93b12..38f5334 100755
--- a/juneau-core/src/test/java/org/apache/juneau/transforms/DateFilterTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/transforms/DateFilterTest.java
@@ -154,7 +154,7 @@ public class DateFilterTest {
 		final DateSwap.ISO8601DT dateSwap = new DateSwap.ISO8601DT();
 		// this works
 		final String sValue = data.getString("birthday"); //$NON-NLS-1$
-		dateSwap.unswap(sValue, data.getBeanContext().getClassMeta(Date.class));
+		dateSwap.unswap(sValue, data.getBeanContext().getClassMeta(Date.class), null);
 		// this does not work
 		data.get(dateSwap, "birthday"); //$NON-NLS-1$
 	}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-samples/src/main/java/org/apache/juneau/server/samples/addressbook/AddressBookResource.java
----------------------------------------------------------------------
diff --git a/juneau-samples/src/main/java/org/apache/juneau/server/samples/addressbook/AddressBookResource.java b/juneau-samples/src/main/java/org/apache/juneau/server/samples/addressbook/AddressBookResource.java
index 3593680..cd1777e 100755
--- a/juneau-samples/src/main/java/org/apache/juneau/server/samples/addressbook/AddressBookResource.java
+++ b/juneau-samples/src/main/java/org/apache/juneau/server/samples/addressbook/AddressBookResource.java
@@ -273,7 +273,7 @@ public class AddressBookResource extends ResourceJena {
 			new Column("name", "xs:String", 255),
 			new Column("age", "xs:int"),
 			new Column("numAddresses", "xs:int")
-				.addTransform(
+				.addPojoSwap(
 					new PojoSwap<Person,Integer>() {
 						@Override /* PojoSwap */
 						public Integer swap(Person p) {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-server/src/main/java/org/apache/juneau/server/RestServlet.java
----------------------------------------------------------------------
diff --git a/juneau-server/src/main/java/org/apache/juneau/server/RestServlet.java b/juneau-server/src/main/java/org/apache/juneau/server/RestServlet.java
index 1eb84df..be5e604 100755
--- a/juneau-server/src/main/java/org/apache/juneau/server/RestServlet.java
+++ b/juneau-server/src/main/java/org/apache/juneau/server/RestServlet.java
@@ -436,7 +436,7 @@ public abstract class RestServlet extends HttpServlet {
 	protected Class<?>[] createPojoSwaps() {
 		List<Class<?>> l = new LinkedList<Class<?>>();
 
-		// Transforms are loaded in parent-to-child order to allow overrides.
+		// Swaps are loaded in parent-to-child order to allow overrides.
 		for (RestResource r : restResourceAnnotationsChildFirst.values())
 			for (Class c : r.pojoSwaps())
 				l.add(c);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-server/src/main/java/org/apache/juneau/server/labels/BeanDescription.java
----------------------------------------------------------------------
diff --git a/juneau-server/src/main/java/org/apache/juneau/server/labels/BeanDescription.java b/juneau-server/src/main/java/org/apache/juneau/server/labels/BeanDescription.java
index 31621df..a57342d 100755
--- a/juneau-server/src/main/java/org/apache/juneau/server/labels/BeanDescription.java
+++ b/juneau-server/src/main/java/org/apache/juneau/server/labels/BeanDescription.java
@@ -66,7 +66,7 @@ public final class BeanDescription {
 		 */
 		public BeanPropertyDescription(String name, ClassMeta<?> type) {
 			this.name = name;
-			this.type = type.getTransformedClassMeta().toString();
+			this.type = type.getSerializedClassMeta().toString();
 		}
 	}
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-server/src/main/java/org/apache/juneau/server/package.html
----------------------------------------------------------------------
diff --git a/juneau-server/src/main/java/org/apache/juneau/server/package.html b/juneau-server/src/main/java/org/apache/juneau/server/package.html
index 62a7897..43f8fab 100755
--- a/juneau-server/src/main/java/org/apache/juneau/server/package.html
+++ b/juneau-server/src/main/java/org/apache/juneau/server/package.html
@@ -893,7 +893,7 @@
 		<jk>public static class</jk> FormInputBean {
 			<jk>public</jk> String <jf>aString</jf>;
 			<jk>public int</jk> <jf>aNumber</jf>;
-			<ja>@BeanProperty</ja>(transform=CalendarSwap.<jsf>ISO8601DT</jsf>.<jk>class</jk>)
+			<ja>@BeanProperty</ja>(pojoSwaps=CalendarSwap.<jsf>ISO8601DT</jsf>.<jk>class</jk>)
 			<jk>public</jk> Calendar <jf>aDate</jf>;
 		}
 	}		
@@ -1538,20 +1538,22 @@
 			(See <a class='doclink' href='../../../../overview-summary.html#Core.Transforms'>Transforms</a>)
 		</p>
 		<p>
-			The {@link org.apache.juneau.server.annotation.RestResource#transforms() @RestResource.transforms()} annotation 
-			can be used as a convenient way to add POJO swaps to the serializers and parsers
+			The {@link org.apache.juneau.server.annotation.RestResource#beanFilters() @RestResource.beanFilters()} 
+			and {@link org.apache.juneau.server.annotation.RestResource#pojoSwaps() @RestResource.pojoSwaps()} annotations 
+			can be used as a convenient way to add bean filters and POJO swaps to the serializers and parsers
 			registered with the servlet.
 		</p>
 		<p class='bcode'>
 	<jc>// Servlet with transforms applied</jc>
 	<ja>@RestResource</ja>(
-		transforms={
+		pojoSwaps={
 			<jc>// Calendars should be serialized/parsed as ISO8601 date-time strings</jc>
 			CalendarSwap.<jsf>DEFAULT_ISO8601DT</jsf>.<jk>class</jk>,
 
 			<jc>// Byte arrays should be serialized/parsed as BASE64-encoded strings</jc>
 			ByteArrayBase64Swap.<jk>class</jk>,
-
+		},
+		beanFilters={
 			<jc>// Subclasses of MyInterface will be treated as MyInterface objects.</jc>
 			<jc>// Bean properties not defined on that interface will be ignored.</jc>
 			MyInterface.<jk>class</jk>
@@ -1569,9 +1571,9 @@
 			Transforms can also be defined programmatically through the following:
 		</p>
 		<ul class='spaced-list'>
-			<li>By overriding the {@link org.apache.juneau.server.RestServlet#createTransforms()} method.
-			<li>By overriding the {@link org.apache.juneau.server.RestServlet#createSerializers(ObjectMap,Class[])} and 
-				{@link org.apache.juneau.server.RestServlet#createParsers(ObjectMap,Class[])} methods and setting transforms on the 
+			<li>By overriding the {@link org.apache.juneau.server.RestServlet#createBeanFilters()} and {@link org.apache.juneau.server.RestServlet#createPojoSwaps()} methods.
+			<li>By overriding the {@link org.apache.juneau.server.RestServlet#createSerializers(ObjectMap,Class[],Class[])} and 
+				{@link org.apache.juneau.server.RestServlet#createParsers(ObjectMap,Class[],Class[])} methods and setting transforms on the 
 				serializers and parsers directly.
 			
 		</ul>
@@ -2217,7 +2219,7 @@
 		<jk>public static class</jk> FormInputBean { 
 			<jk>public</jk> String <jf>aString</jf>; 
 			<jk>public int</jk> <jf>aNumber</jf>; 
-			<ja>@BeanProperty</ja>(transform=CalendarSwap.<jsf>ISO8601DT</jsf>.<jk>class</jk>) 
+			<ja>@BeanProperty</ja>(pojoSwaps=CalendarSwap.<jsf>ISO8601DT</jsf>.<jk>class</jk>) 
 			<jk>public</jk> Calendar <jf>aDate</jf>; 
 		} 
 	}
@@ -2671,9 +2673,15 @@
 				</td>
 			</tr>
 			<tr>
-				<td>{@link org.apache.juneau.server.annotation.RestResource#transforms() transforms()}</td>
+				<td>{@link org.apache.juneau.server.annotation.RestResource#beanFilters() beanFilters()}</td>
+				<td>
+					Bean filters on child are combined with those on parent class.
+				</td>
+			</tr>
+			<tr>
+				<td>{@link org.apache.juneau.server.annotation.RestResource#pojoSwaps() pojoSwaps()}</td>
 				<td>
-					Transforms on child are combined with those on parent class.
+					POJO swaps on child are combined with those on parent class.
 				</td>
 			</tr>
 			<tr>
@@ -3207,7 +3215,7 @@
 			<li><code><jk>public</jk> T(String in);</code>
 		</ul>
 		<li>Has a {@link org.apache.juneau.transform.PojoSwap} associated with the servlet
-			with a transformed type of <l>String</l>.
+			with a swapped type of <l>String</l>.
 	</ul>
 </div>
 


[4/4] incubator-juneau git commit: Fix conflicts 2

Posted by ja...@apache.org.
Fix conflicts 2


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

Branch: refs/heads/master
Commit: 5b8990ed5013656fd67a687d70505f67f982cc16
Parents: c04b161 e7ab5a4
Author: jamesbognar <ja...@gmail.com>
Authored: Sun Aug 28 12:23:49 2016 -0400
Committer: jamesbognar <ja...@gmail.com>
Committed: Sun Aug 28 12:23:49 2016 -0400

----------------------------------------------------------------------

----------------------------------------------------------------------



[3/4] incubator-juneau git commit: Fix conflicts.

Posted by ja...@apache.org.
Fix conflicts.


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

Branch: refs/heads/master
Commit: c04b1611a671367ad90dde7fe24818cbc6c402be
Parents: ceeb673
Author: jamesbognar <ja...@gmail.com>
Authored: Sun Aug 28 12:22:19 2016 -0400
Committer: jamesbognar <ja...@gmail.com>
Committed: Sun Aug 28 12:22:19 2016 -0400

----------------------------------------------------------------------
 .../src/main/java/org/apache/juneau/transform/BeanFilter.java    | 4 ++--
 .../src/main/java/org/apache/juneau/transform/PojoSwap.java      | 2 +-
 2 files changed, 3 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/c04b1611/juneau-core/src/main/java/org/apache/juneau/transform/BeanFilter.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transform/BeanFilter.java b/juneau-core/src/main/java/org/apache/juneau/transform/BeanFilter.java
index f9c7b37..80d8fd7 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transform/BeanFilter.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transform/BeanFilter.java
@@ -34,8 +34,8 @@ import org.apache.juneau.internal.*;
  *
  * <h6 class='topic'>Example</h6>
  * <p class='bcode'>
- * 	<jc>// Create our serializer with a bean filter.</jc>
- * 	WriterSerializer s = <jk>new</jk> JsonSerializer().addBeanFilters(AddressFilter.<jk>class</jk>);
+ * 	<jc>// Create our serializer with a bean filter.</jc> 
+ * 	WriterSerializer s = <jk>new</jk> JsonSerializer().addBeanFilters(AddressFilter.<jk>class</jk>); 
  *
  * 	Address a = <jk>new</jk> Address();
  * 	String json = s.serialize(a); <jc>// Serializes only street, city, state.</jc>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/c04b1611/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java b/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
index f9aba47..6e846dc 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
@@ -199,7 +199,7 @@ public abstract class PojoSwap<T,S> {
 	}
 
 	/**
-	 *	Same as {@link #unswap(Object)}, but override this method if you need access to the real class type or the bean context that created this swap.
+	 *	Same as {@link #unswap(Object)}, but override this method if you need access to the real class type or the bean context that created this swap. 
 	 *
 	 * @param f The transformed object.
 	 * @param hint If possible, the parser will try to tell you the object type being created.  For example,


[2/4] incubator-juneau git commit: Eliminate Tranform class.

Posted by ja...@apache.org.
Eliminate Tranform class.

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

Branch: refs/heads/master
Commit: ceeb6738639e28a9c7e508e422b9a2abcab9855a
Parents: d872407
Author: jamesbognar <ja...@gmail.com>
Authored: Sun Aug 28 11:19:09 2016 -0400
Committer: jamesbognar <ja...@gmail.com>
Committed: Sun Aug 28 12:15:39 2016 -0400

----------------------------------------------------------------------
 .../java/org/apache/juneau/client/package.html  |   2 +-
 .../java/org/apache/juneau/BeanContext.java     |  20 +--
 .../main/java/org/apache/juneau/BeanMap.java    |   6 +-
 .../org/apache/juneau/BeanPropertyMeta.java     |   2 +-
 .../main/java/org/apache/juneau/ClassMeta.java  |  63 +++++----
 .../java/org/apache/juneau/annotation/Pojo.java |   4 +-
 .../org/apache/juneau/dto/cognos/Column.java    |   4 +-
 .../org/apache/juneau/dto/cognos/DataSet.java   |   2 +-
 .../org/apache/juneau/dto/cognos/package.html   |   2 +-
 .../java/org/apache/juneau/html/HtmlParser.java |   2 +-
 .../juneau/html/HtmlSchemaDocSerializer.java    |   2 +-
 .../org/apache/juneau/html/HtmlSerializer.java  |  18 +--
 .../java/org/apache/juneau/jena/RdfParser.java  |   2 +-
 .../org/apache/juneau/jena/RdfSerializer.java   |  14 +-
 .../java/org/apache/juneau/json/JsonParser.java |   2 +-
 .../juneau/json/JsonSchemaSerializer.java       |   2 +-
 .../org/apache/juneau/json/JsonSerializer.java  |  12 +-
 .../apache/juneau/msgpack/MsgPackParser.java    |   2 +-
 .../juneau/msgpack/MsgPackSerializer.java       |  12 +-
 .../main/java/org/apache/juneau/package.html    |   6 +-
 .../java/org/apache/juneau/parser/Parser.java   |   2 +-
 .../org/apache/juneau/parser/ParserGroup.java   |   2 +-
 .../juneau/serializer/SerializerGroup.java      |   2 +-
 .../juneau/serializer/SerializerSession.java    |   4 +-
 .../org/apache/juneau/transform/BeanFilter.java |  44 +++---
 .../juneau/transform/InterfaceBeanFilter.java   |   2 +-
 .../org/apache/juneau/transform/PojoSwap.java   |  26 +---
 .../apache/juneau/transform/SurrogateSwap.java  |  14 +-
 .../org/apache/juneau/transform/Transform.java  |  82 -----------
 .../org/apache/juneau/transform/package.html    | 140 ++++++++++---------
 .../apache/juneau/transforms/CalendarSwap.java  |   6 +-
 .../apache/juneau/transforms/DateLongSwap.java  |   2 +-
 .../apache/juneau/transforms/DateMapSwap.java   |   2 +-
 .../org/apache/juneau/transforms/DateSwap.java  |   6 +-
 .../apache/juneau/urlencoding/UonParser.java    |   2 +-
 .../juneau/urlencoding/UonSerializer.java       |  12 +-
 .../juneau/urlencoding/UrlEncodingParser.java   |   2 +-
 .../urlencoding/UrlEncodingSerializer.java      |  12 +-
 .../UrlEncodingSerializerSession.java           |   2 +-
 .../org/apache/juneau/urlencoding/package.html  |   2 +-
 .../java/org/apache/juneau/xml/XmlParser.java   |   2 +-
 .../apache/juneau/xml/XmlSchemaSerializer.java  |   8 +-
 .../org/apache/juneau/xml/XmlSerializer.java    |  14 +-
 juneau-core/src/main/java/overview.html         |  89 ++++++------
 .../java/org/apache/juneau/BeanFilterTest.java  |   8 +-
 .../java/org/apache/juneau/BeanMapTest.java     |   4 +-
 .../java/org/apache/juneau/ClassMetaTest.java   |  76 +++++-----
 .../org/apache/juneau/DataConversionTest.java   |   4 +-
 .../java/org/apache/juneau/JacocoDummyTest.java |   2 -
 .../juneau/a/rttests/RoundTripBeanMapsTest.java |  12 +-
 .../a/rttests/RoundTripTransformBeansTest.java  |   6 +-
 .../juneau/transforms/BeanFilterTest.java       |  18 +--
 .../juneau/transforms/DateFilterTest.java       |   2 +-
 .../addressbook/AddressBookResource.java        |   2 +-
 .../org/apache/juneau/server/RestServlet.java   |   2 +-
 .../juneau/server/labels/BeanDescription.java   |   2 +-
 .../java/org/apache/juneau/server/package.html  |  32 +++--
 57 files changed, 373 insertions(+), 455 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-client/src/main/java/org/apache/juneau/client/package.html
----------------------------------------------------------------------
diff --git a/juneau-client/src/main/java/org/apache/juneau/client/package.html b/juneau-client/src/main/java/org/apache/juneau/client/package.html
index 7fb2581..9e05091 100755
--- a/juneau-client/src/main/java/org/apache/juneau/client/package.html
+++ b/juneau-client/src/main/java/org/apache/juneau/client/package.html
@@ -185,7 +185,7 @@
 		.getResponse(Boolean.<jk>class</jk>);
 			
 	<jc>// GET request, getting a filtered object</jc>
-	client.getParser().addTransforms(CalendarSwap.<jsf>ISO8601</jsf>.<jk>class</jk>);
+	client.getParser().addPojoSwaps(CalendarSwap.<jsf>ISO8601</jsf>.<jk>class</jk>);
 	Calendar birthDate = client.doGet(<js>"http://localhost:9080/sample/addressBook/0/birthDate"</js>)
 		.getResponse(GregorianCalendar.<jk>class</jk>);
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanContext.java b/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
index b21270e..113e1f8 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
@@ -37,7 +37,7 @@ import org.apache.juneau.transform.*;
  * 	This class servers multiple purposes:
  * 	<ul class='spaced-list'>
  * 		<li>Provides the ability to wrap beans inside {@link Map} interfaces.
- * 		<li>Serves as a repository for metadata on POJOs, such as associated {@link Transform transforms}, {@link PropertyNamer property namers}, etc...
+ * 		<li>Serves as a repository for metadata on POJOs, such as associated {@link BeanFilter beanFilters}, {@link PropertyNamer property namers}, etc...
  * 			which are used to tailor how POJOs are serialized and parsed.
  * 		<li>Serves as a common utility class for all {@link Serializer Serializers} and {@link Parser Parsers}
  * 				for serializing and parsing Java beans.
@@ -158,15 +158,15 @@ import org.apache.juneau.transform.*;
  * 	See {@link BeanConstructor @BeanConstructor} for more information.
  *
  *
- * <h5 class='topic'>Transforms</h5>
+ * <h5 class='topic'>BeanFilters and PojoSwaps</h5>
  * <p>
- * 	{@link Transform Transforms} are used to tailor how beans and non-beans are handled.<br>
- * 	There are two subclasses of transforms:
+ * 	{@link BeanFilter BeanFilters} and {@link PojoSwap PojoSwaps} are used to tailor how beans and POJOs are handled.<br>
  * 	<ol class='spaced-list'>
  * 		<li>{@link BeanFilter} - Allows you to tailor handling of bean classes.
  * 			This class can be considered a programmatic equivalent to the {@link Bean} annotation when
  * 			annotating classes are not possible (e.g. you don't have access to the source).
- * 		<li>{@link PojoSwap} - Allows you to convert objects to serializable forms.
+ * 			This includes specifying which properties are visible and the ability to programmatically override the execution of properties.
+ * 		<li>{@link PojoSwap} - Allows you to swap out non-serializable objects with serializable replacements.
  * 	</ol>
  * <p>
  * 	See {@link org.apache.juneau.transform} for more information.
@@ -608,7 +608,7 @@ public class BeanContext extends Context {
 				if (isParentClass(PojoSwap.class, c))
 					lpf.add((PojoSwap<?,?>)c.newInstance());
 				else
-					lpf.addAll(SurrogateSwap.findTransforms(c));
+					lpf.addAll(SurrogateSwap.findPojoSwaps(c));
 			}
 		} catch (Exception e) {
 			throw new RuntimeException(e);
@@ -1412,7 +1412,7 @@ public class BeanContext extends Context {
 
 	/**
 	 * Returns the {@link PojoSwap} associated with the specified class, or <jk>null</jk> if there is no
-	 * pojo transform associated with the class.
+	 * pojo swap associated with the class.
 	 *
 	 * @param <T> The class associated with the transform.
 	 * @param c The class associated with the transform.
@@ -1422,7 +1422,7 @@ public class BeanContext extends Context {
 		// Note:  On first
 		if (c != null)
 			for (PojoSwap f : pojoSwaps)
-				if (isParentClass(f.forClass(), c))
+				if (isParentClass(f.getNormalClass(), c))
 					return f;
 		return null;
 	}
@@ -1435,7 +1435,7 @@ public class BeanContext extends Context {
 	protected boolean hasChildPojoSwaps(Class<?> c) {
 		if (c != null)
 			for (PojoSwap f : pojoSwaps)
-				if (isParentClass(c, f.forClass()))
+				if (isParentClass(c, f.getNormalClass()))
 					return true;
 		return false;
 	}
@@ -1451,7 +1451,7 @@ public class BeanContext extends Context {
 	protected <T> BeanFilter findBeanFilter(Class<T> c) {
 		if (c != null)
 			for (BeanFilter f : beanFilters)
-				if (isParentClass(f.forClass(), c))
+				if (isParentClass(f.getBeanClass(), c))
 					return f;
 		return null;
 	}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/BeanMap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanMap.java b/juneau-core/src/main/java/org/apache/juneau/BeanMap.java
index cc8ab29..fac7b92 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanMap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanMap.java
@@ -193,7 +193,7 @@ public class BeanMap<T> extends AbstractMap<String,Object> implements Delegate<T
 	 * 	Person p = <jk>new</jk> Person();
 	 *
 	 * 	<jc>// Create a bean context and add the ISO8601 date-time transform</jc>
-	 * 	BeanContext beanContext = <jk>new</jk> BeanContext().addTransform(DateSwap.ISO8601DT.<jk>class</jk>);
+	 * 	BeanContext beanContext = <jk>new</jk> BeanContext().addPojoSwaps(DateSwap.ISO8601DT.<jk>class</jk>);
 	 *
 	 * 	<jc>// Wrap our bean in a bean map</jc>
 	 * 	BeanMap&lt;Person&gt; b = beanContext.forBean(p);
@@ -279,8 +279,8 @@ public class BeanMap<T> extends AbstractMap<String,Object> implements Delegate<T
 	 * 	Person p = <jk>new</jk> Person();
 	 * 	p.setBirthDate(<jk>new</jk> Date(1, 2, 3, 4, 5, 6));
 	 *
-	 * 	<jc>// Create a bean context and add the ISO8601 date-time transform</jc>
-	 * 	BeanContext beanContext = <jk>new</jk> BeanContext().addTransform(DateSwap.ISO8601DT.<jk>class</jk>);
+	 * 	<jc>// Create a bean context and add the ISO8601 date-time swap</jc>
+	 * 	BeanContext beanContext = <jk>new</jk> BeanContext().addPojoSwaps(DateSwap.ISO8601DT.<jk>class</jk>);
 	 *
 	 * 	<jc>// Wrap our bean in a bean map</jc>
 	 * 	BeanMap&lt;Person&gt; b = beanContext.forBean(p);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java b/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
index 7a52c86..f35ce12 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
@@ -138,7 +138,7 @@ public class BeanPropertyMeta {
 	 */
 	public ClassMeta<?> getClassMeta() {
 		if (typeMeta == null)
-			typeMeta = (transform != null ? transform.getSwapClassMeta(beanMeta.ctx) : rawTypeMeta == null ? beanMeta.ctx.object() : rawTypeMeta.getTransformedClassMeta());
+			typeMeta = (transform != null ? transform.getSwapClassMeta(beanMeta.ctx) : rawTypeMeta == null ? beanMeta.ctx.object() : rawTypeMeta.getSerializedClassMeta());
 		return typeMeta;
 	}
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java b/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
index b97ffad..c2aa67f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
@@ -59,7 +59,7 @@ public final class ClassMeta<T> implements Type {
 	ClassCategory classCategory = UNKNOWN;            // The class category.
 	final Class<T> innerClass;                        // The class being wrapped.
 	ClassMeta<?>
-		transformedClassMeta,                             // The transformed class type (in class has transform associated with it.
+		serializedClassMeta,                             // The transformed class type (in class has transform associated with it.
 		elementType = null,                            // If ARRAY or COLLECTION, the element class type.
 		keyType = null,                                // If MAP, the key class type.
 		valueType = null;                              // If MAP, the value class type.
@@ -126,16 +126,11 @@ public final class ClassMeta<T> implements Type {
 	ClassMeta init() {
 
 		try {
-			Transform transform = findTransform(beanContext);
-			if (transform != null) {
-				if (transform.getType() == Transform.TransformType.BEAN)
-					beanFilter = (BeanFilter)transform;
-				else
-					pojoSwap = (PojoSwap)transform;
-				transformedClassMeta = (pojoSwap == null ? this : beanContext.getClassMeta(pojoSwap.getSwapClass()));
-			}
-			if (transformedClassMeta == null)
-				transformedClassMeta = this;
+			beanFilter = findBeanFilter(beanContext);
+			pojoSwap = findPojoSwap(beanContext);
+			serializedClassMeta = (pojoSwap == null ? this : beanContext.getClassMeta(pojoSwap.getSwapClass()));
+			if (serializedClassMeta == null)
+				serializedClassMeta = this;
 
 			if (innerClass != Object.class) {
 				this.noArgConstructor = beanContext.getImplClassConstructor(innerClass, Visibility.PUBLIC);
@@ -428,23 +423,12 @@ public final class ClassMeta<T> implements Type {
 		return hasChildPojoSwaps;
 	}
 
-	private Transform findTransform(BeanContext context) {
+	@SuppressWarnings("unchecked")
+	private BeanFilter<? extends T> findBeanFilter(BeanContext context) {
 		try {
-			org.apache.juneau.annotation.Pojo b = innerClass.getAnnotation(org.apache.juneau.annotation.Pojo.class);
-			if (b != null) {
-				Class<?> c = b.swap();
-				if (c != Null.class) {
-					if (ClassUtils.isParentClass(PojoSwap.class, c)) 
-						return (Transform)c.newInstance();
-					throw new RuntimeException("TODO - Surrogate classes not yet supported.");
-				}
-			}
 			if (context == null)
 				return null;
-			Transform f = context.findBeanFilter(innerClass);
-			if (f != null)
-				return f;
-			f = context.findPojoSwap(innerClass);
+			BeanFilter<? extends T> f = context.findBeanFilter(innerClass);
 			if (f != null)
 				return f;
 			List<Bean> ba = ReflectionUtils.findAnnotations(Bean.class, innerClass);
@@ -456,6 +440,27 @@ public final class ClassMeta<T> implements Type {
 		}
 	}
 
+	@SuppressWarnings("unchecked")
+	private PojoSwap<T,?> findPojoSwap(BeanContext context) {
+		try {
+			Pojo p = innerClass.getAnnotation(Pojo.class);
+			if (p != null) {
+				Class<?> c = p.swap();
+				if (c != Null.class) {
+					if (ClassUtils.isParentClass(PojoSwap.class, c))
+						return (PojoSwap<T,?>)c.newInstance();
+					throw new RuntimeException("TODO - Surrogate classes not yet supported.");
+				}
+			}
+			if (context == null)
+				return null;
+			PojoSwap<T,?> f = context.findPojoSwap(innerClass);
+			return f;
+		} catch (Exception e) {
+			throw new RuntimeException(e);
+		}
+	}
+
 	/**
 	 * Locates the no-arg constructor for the specified class.
 	 * Constructor must match the visibility requirements specified by parameter 'v'.
@@ -523,13 +528,13 @@ public final class ClassMeta<T> implements Type {
 	}
 
 	/**
-	 * Returns the generalized form of this class if there is an {@link PojoSwap} associated with it.
+	 * Returns the serialized (swapped) form of this class if there is an {@link PojoSwap} associated with it.
 	 *
-	 * @return The transformed class type, or this object if no transform is associated with the class.
+	 * @return The serialized class type, or this object if no swap is associated with the class.
 	 */
 	@BeanIgnore
-	public ClassMeta<?> getTransformedClassMeta() {
-		return transformedClassMeta;
+	public ClassMeta<?> getSerializedClassMeta() {
+		return serializedClassMeta;
 	}
 
 	/**

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java b/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
index 64143e0..af001f5 100644
--- a/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
+++ b/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
@@ -78,8 +78,8 @@ public @interface Pojo {
 	 * <p>
 	 * 	Note that using this annotation is functionally equivalent to adding swaps to the serializers and parsers:
 	 * <p class='bcode'>
-	 * 	WriterSerializer s = <jk>new</jk> JsonSerializer.addTransforms(BSwap.<jk>class</jk>);
-	 * 	ReaderParser p = <jk>new</jk> JsonParser.addTransforms(BSwap.<jk>class</jk>);
+	 * 	WriterSerializer s = <jk>new</jk> JsonSerializer.addPojoSwaps(BSwap.<jk>class</jk>);
+	 * 	ReaderParser p = <jk>new</jk> JsonParser.addPojoSwaps(BSwap.<jk>class</jk>);
 	 * </p>
 	 */
 	Class<?> swap() default Null.class;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/dto/cognos/Column.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/cognos/Column.java b/juneau-core/src/main/java/org/apache/juneau/dto/cognos/Column.java
index 8356f70..3607451 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/cognos/Column.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/cognos/Column.java
@@ -71,7 +71,7 @@ public class Column {
 	 * 		on the serialized beans.
 	 * <p class='bcode'>
 	 * 	Column c = <jk>new</jk> Column(<js>"numAddresses"</js>, <js>"xs:int"</js>)
-	 * 		.addTransform(
+	 * 		.addPojoSwaps(
 	 * 			<jk>new</jk> PojoSwap<Person,Integer>() {
 	 * 				<ja>@Override</ja>
 	 * 				<jk>public</jk> Integer swap(Person p) {
@@ -84,7 +84,7 @@ public class Column {
 	 * @param transform The transform to associate with the column.
 	 * @return This object (for method chaining).
 	 */
-	public Column addTransform(PojoSwap transform) {
+	public Column addPojoSwap(PojoSwap transform) {
 		this.transform = transform;
 		return this;
 	}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/dto/cognos/DataSet.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/cognos/DataSet.java b/juneau-core/src/main/java/org/apache/juneau/dto/cognos/DataSet.java
index 66ed6c8..3228495 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/cognos/DataSet.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/cognos/DataSet.java
@@ -57,7 +57,7 @@ import org.apache.juneau.xml.annotation.*;
  * 		<jk>new</jk> Column(<js>"name"</js>, <js>"xs:String"</js>, 255),
  * 		<jk>new</jk> Column(<js>"age"</js>, <js>"xs:int"</js>),
  * 		<jk>new</jk> Column(<js>"numAddresses"</js>, <js>"xs:int"</js>)
- * 			.addTransform(
+ * 			.addPojoSwap(
  * 				<jk>new</jk> PojoSwap&ltPerson,Integer&gt;() {
  * 					<ja>@Override</ja>
  * 					<jk>public</jk> Integer swap(Person p) {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/dto/cognos/package.html
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/dto/cognos/package.html b/juneau-core/src/main/java/org/apache/juneau/dto/cognos/package.html
index ed03606..3604359 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/cognos/package.html
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/cognos/package.html
@@ -107,7 +107,7 @@
 		<jk>new</jk> Column(<js>"name"</js>, <js>"xs:String"</js>, 255),
 		<jk>new</jk> Column(<js>"age"</js>, <js>"xs:int"</js>),
 		<jk>new</jk> Column(<js>"numAddresses"</js>, <js>"xs:int"</js>)
-			.addTransform(
+			.addPojoSwap(
 				<jk>new</jk> PojoSwap&lt;Person,Integer&gt;() {
 					<ja>@Override</ja>
 					<jk>public</jk> Integer swap(Person p) {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/html/HtmlParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlParser.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlParser.java
index a5c3be0..60c8f5e 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlParser.java
@@ -73,7 +73,7 @@ public final class HtmlParser extends ReaderParser {
 		if (nt == null)
 			nt = (ClassMeta<T>)object();
 		PojoSwap<T,Object> transform = (PojoSwap<T,Object>)nt.getPojoSwap();
-		ClassMeta<?> ft = nt.getTransformedClassMeta();
+		ClassMeta<?> ft = nt.getSerializedClassMeta();
 		session.setCurrentClass(ft);
 
 		Object o = null;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
index 0ba6005..bc96967 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSchemaDocSerializer.java
@@ -98,7 +98,7 @@ public final class HtmlSchemaDocSerializer extends HtmlDocSerializer {
 
 		aType = session.push(attrName, eType, null);
 
-		gType = eType.getTransformedClassMeta();
+		gType = eType.getSerializedClassMeta();
 		String type = null;
 
 		if (gType.isEnum() || gType.isCharSequence() || gType.isChar())

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
index 4be1d0b..8b8c070 100644
--- a/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/html/HtmlSerializer.java
@@ -216,17 +216,17 @@ public class HtmlSerializer extends XmlSerializer {
 			out.tag(i, "null").nl();
 		else {
 
-			gType = aType.getTransformedClassMeta();
+			gType = aType.getSerializedClassMeta();
 			String classAttr = null;
 			if (session.isAddClassAttrs() && ! eType.equals(aType))
 				classAttr = aType.toString();
 
-			// Transform if necessary
-			PojoSwap transform = aType.getPojoSwap();
-			if (transform != null) {
-				o = transform.swap(o, bc);
+			// Swap if necessary
+			PojoSwap swap = aType.getPojoSwap();
+			if (swap != null) {
+				o = swap.swap(o, bc);
 
-				// If the transforms getTransformedClass() method returns Object, we need to figure out
+				// If the getSwapClass() method returns Object, we need to figure out
 				// the actual type now.
 				if (gType.isObject())
 					gType = bc.getClassMetaForObject(o);
@@ -412,7 +412,7 @@ public class HtmlSerializer extends XmlSerializer {
 				if (cm != null && cm.getPojoSwap() != null) {
 					PojoSwap f = cm.getPojoSwap();
 					o = f.swap(o, bc);
-					cm = cm.getTransformedClassMeta();
+					cm = cm.getSerializedClassMeta();
 				}
 
 				if (cm != null && session.isAddClassAttrs() && elementType.getInnerClass() != o.getClass())
@@ -490,7 +490,7 @@ public class HtmlSerializer extends XmlSerializer {
 		if (cm.getPojoSwap() != null) {
 			PojoSwap f = cm.getPojoSwap();
 			o1 = f.swap(o1, bc);
-			cm = cm.getTransformedClassMeta();
+			cm = cm.getSerializedClassMeta();
 		}
 		if (cm == null || ! (cm.isMap() || cm.isBean()))
 			return null;
@@ -526,7 +526,7 @@ public class HtmlSerializer extends XmlSerializer {
 			if (cm != null && cm.getPojoSwap() != null) {
 				PojoSwap f = cm.getPojoSwap();
 				o = f.swap(o);
-				cm = cm.getTransformedClassMeta();
+				cm = cm.getSerializedClassMeta();
 			}
 			if (prevC.contains(cm))
 				continue;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/jena/RdfParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/jena/RdfParser.java b/juneau-core/src/main/java/org/apache/juneau/jena/RdfParser.java
index b4e9d3e..80349d8 100644
--- a/juneau-core/src/main/java/org/apache/juneau/jena/RdfParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/jena/RdfParser.java
@@ -244,7 +244,7 @@ public class RdfParser extends ReaderParser {
 		if (nt == null)
 			nt = (ClassMeta<T>)object();
 		PojoSwap<T,Object> transform = (PojoSwap<T,Object>)nt.getPojoSwap();
-		ClassMeta<?> ft = nt.getTransformedClassMeta();
+		ClassMeta<?> ft = nt.getSerializedClassMeta();
 		session.setCurrentClass(ft);
 
 		if (! ft.canCreateNewInstance(outer)) {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/jena/RdfSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/jena/RdfSerializer.java b/juneau-core/src/main/java/org/apache/juneau/jena/RdfSerializer.java
index 080ecac..400e742 100644
--- a/juneau-core/src/main/java/org/apache/juneau/jena/RdfSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/jena/RdfSerializer.java
@@ -177,20 +177,20 @@ public class RdfSerializer extends WriterSerializer {
 				aType = ((Delegate)o).getClassMeta();
 			}
 
-			gType = aType.getTransformedClassMeta();
+			gType = aType.getSerializedClassMeta();
 
-			// Transform if necessary
-			PojoSwap transform = aType.getPojoSwap();
-			if (transform != null) {
-				o = transform.swap(o, bc);
+			// Swap if necessary
+			PojoSwap swap = aType.getPojoSwap();
+			if (swap != null) {
+				o = swap.swap(o, bc);
 
-				// If the transforms getTransformedClass() method returns Object, we need to figure out
+				// If the getSwapClass() method returns Object, we need to figure out
 				// the actual type now.
 				if (gType.isObject())
 					gType = bc.getClassMetaForObject(o);
 			}
 		} else {
-			gType = eType.getTransformedClassMeta();
+			gType = eType.getSerializedClassMeta();
 		}
 
 		RDFNode n = null;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/json/JsonParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/JsonParser.java b/juneau-core/src/main/java/org/apache/juneau/json/JsonParser.java
index 104b6bf..c3ed510 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonParser.java
@@ -105,7 +105,7 @@ public final class JsonParser extends ReaderParser {
 		if (nt == null)
 			nt = (ClassMeta<T>)object();
 		PojoSwap<T,Object> transform = (PojoSwap<T,Object>)nt.getPojoSwap();
-		ClassMeta<?> ft = nt.getTransformedClassMeta();
+		ClassMeta<?> ft = nt.getSerializedClassMeta();
 		session.setCurrentClass(ft);
 		String wrapperAttr = ft.getExtendedMeta(JsonClassMeta.class).getWrapperAttr();
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java b/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
index b264762..8b2ba03 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonSchemaSerializer.java
@@ -94,7 +94,7 @@ public final class JsonSchemaSerializer extends JsonSerializer {
 
 		aType = session.push(attrName, eType, null);
 
-		gType = eType.getTransformedClassMeta();
+		gType = eType.getSerializedClassMeta();
 		String type = null;
 
 		if (gType.isEnum() || gType.isCharSequence() || gType.isChar())

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java b/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
index 3bffde6..24c3913 100644
--- a/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/json/JsonSerializer.java
@@ -184,15 +184,15 @@ public class JsonSerializer extends WriterSerializer {
 			aType = object();
 		}
 
-		gType = aType.getTransformedClassMeta();
+		gType = aType.getSerializedClassMeta();
 		addClassAttr = (session.isAddClassAttrs() && ! eType.equals(aType));
 
-		// Transform if necessary
-		PojoSwap transform = aType.getPojoSwap();				// The transform
-		if (transform != null) {
-			o = transform.swap(o, bc);
+		// Swap if necessary
+		PojoSwap swap = aType.getPojoSwap();
+		if (swap != null) {
+			o = swap.swap(o, bc);
 
-			// If the transform's getTransformedClass() method returns Object, we need to figure out
+			// If the getSwapClass() method returns Object, we need to figure out
 			// the actual type now.
 			if (gType.isObject())
 				gType = bc.getClassMetaForObject(o);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
index 54aea46..b90f34c 100644
--- a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackParser.java
@@ -57,7 +57,7 @@ public final class MsgPackParser extends InputStreamParser {
 		if (nt == null)
 			nt = (ClassMeta<T>)object();
 		PojoSwap<T,Object> transform = (PojoSwap<T,Object>)nt.getPojoSwap();
-		ClassMeta<?> ft = nt.getTransformedClassMeta();
+		ClassMeta<?> ft = nt.getSerializedClassMeta();
 		session.setCurrentClass(ft);
 
 		Object o = null;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
index 025617f..a62ac79 100644
--- a/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/msgpack/MsgPackSerializer.java
@@ -74,15 +74,15 @@ public class MsgPackSerializer extends OutputStreamSerializer {
 			aType = object();
 		}
 
-		gType = aType.getTransformedClassMeta();
+		gType = aType.getSerializedClassMeta();
 		addClassAttr = (session.isAddClassAttrs() && ! eType.equals(aType));
 
-		// Transform if necessary
-		PojoSwap transform = aType.getPojoSwap();				// The transform
-		if (transform != null) {
-			o = transform.swap(o, bc);
+		// Swap if necessary
+		PojoSwap swap = aType.getPojoSwap();
+		if (swap != null) {
+			o = swap.swap(o, bc);
 
-			// If the transform's getTransformedClass() method returns Object, we need to figure out
+			// If the getSwapClass() method returns Object, we need to figure out
 			// the actual type now.
 			if (gType.isObject())
 				gType = bc.getClassMetaForObject(o);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/package.html
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/package.html b/juneau-core/src/main/java/org/apache/juneau/package.html
index ca30bd5..558c8a4 100644
--- a/juneau-core/src/main/java/org/apache/juneau/package.html
+++ b/juneau-core/src/main/java/org/apache/juneau/package.html
@@ -77,7 +77,7 @@
 	</p>
 	<ul class='normal'>
 		<li>It provides the ability to create instances of {@link org.apache.juneau.BeanMap BeanMaps}.
-		<li>It serves as a repository for {@link org.apache.juneau.transform.Transform Transforms}, which are used to tailor how beans and non-beans are handled. 
+		<li>It serves as a repository for {@link org.apache.juneau.transform.BeanFilter BeanFilters} and {@link org.apache.juneau.transform.PojoSwap PojoSwaps}, which are used to tailor how Java objects are handled. 
 		<li>It's used by all built-in {@link org.apache.juneau.serializer.Serializer Serializers} and {@link org.apache.juneau.parser.Parser Parsers} for working with POJOs in a consistent way.
 	</ul>
 	
@@ -157,10 +157,10 @@
 	BeanContext beanContext = BeanContext.<jsf>DEFAULT</jsf>;
 	
 	<jc>// Create a context from scratch with your own settings.</jc>
-	beanContext = <jk>new</jk> BeanContext().addTransforms(DateSwap.ISO8601DT.<jk>class</jk>);
+	beanContext = <jk>new</jk> BeanContext().addPojoSwaps(DateSwap.ISO8601DT.<jk>class</jk>);
 	
 	<jc>// Clone and modify an existing context.</jc>
-	beanContext = BeanContext.<jsf>DEFAULT</jsf>.clone().addTransforms(DateSwap.ISO8601DT.<jk>class</jk>);
+	beanContext = BeanContext.<jsf>DEFAULT</jsf>.clone().addPojoSwaps(DateSwap.ISO8601DT.<jk>class</jk>);
 		</p>
 		<p>
 			The {@link org.apache.juneau.BeanContext} class is a highly-customizable class.  

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/parser/Parser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/parser/Parser.java b/juneau-core/src/main/java/org/apache/juneau/parser/Parser.java
index 5d66b76..c90bc3f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/parser/Parser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/parser/Parser.java
@@ -580,7 +580,7 @@ public abstract class Parser extends CoreApi {
 		if (type == null)
 			type = (ClassMeta<T>)object();
 		PojoSwap transform = type.getPojoSwap();
-		ClassMeta<?> gType = type.getTransformedClassMeta();
+		ClassMeta<?> gType = type.getSerializedClassMeta();
 
 		Object o = s;
 		if (gType.isChar())

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/parser/ParserGroup.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/parser/ParserGroup.java b/juneau-core/src/main/java/org/apache/juneau/parser/ParserGroup.java
index 77cd77b..22990b7 100644
--- a/juneau-core/src/main/java/org/apache/juneau/parser/ParserGroup.java
+++ b/juneau-core/src/main/java/org/apache/juneau/parser/ParserGroup.java
@@ -56,7 +56,7 @@ import org.apache.juneau.*;
  *
  * 	<jc>// Change settings on parsers simultaneously</jc>
  * 	g.setProperty(BeanContext.<jsf>BEAN_beansRequireSerializable</jsf>, <jk>true</jk>)
- * 		.addTransforms(CalendarSwap.ISO8601DT.<jk>class</jk>)
+ * 		.addPojoSwaps(CalendarSwap.ISO8601DT.<jk>class</jk>)
  * 		.lock();
  *
  * 	<jc>// Find the appropriate parser by Content-Type</jc>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerGroup.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerGroup.java b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerGroup.java
index b693125..6678cd0 100644
--- a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerGroup.java
+++ b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerGroup.java
@@ -56,7 +56,7 @@ import org.apache.juneau.*;
  *
  * 	<jc>// Change settings for all serializers in the group and lock it.</jc>
  * 	g.setProperty(SerializerContext.<jsf>SERIALIZER_useIndentation</jsf>, <jk>true</jk>)
- * 		.addTransforms(CalendarSwap.ISO8601DT.<jk>class</jk>)
+ * 		.addPojoSwaps(CalendarSwap.ISO8601DT.<jk>class</jk>)
  * 		.lock();
  *
  * 	<jc>// Find the appropriate serializer by Accept type</jc>

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerSession.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerSession.java b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerSession.java
index 5595a7e..0d9a917 100644
--- a/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerSession.java
+++ b/juneau-core/src/main/java/org/apache/juneau/serializer/SerializerSession.java
@@ -702,8 +702,8 @@ public class SerializerSession extends Session {
 			StringBuilder sb = new StringBuilder().append('[').append(depth).append(']');
 			sb.append(StringUtils.isEmpty(name) ? "<noname>" : name).append(':');
 			sb.append(aType.toString(simple));
-			if (aType != aType.getTransformedClassMeta())
-				sb.append('/').append(aType.getTransformedClassMeta().toString(simple));
+			if (aType != aType.getSerializedClassMeta())
+				sb.append('/').append(aType.getSerializedClassMeta().toString(simple));
 			return sb.toString();
 		}
 	}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/transform/BeanFilter.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transform/BeanFilter.java b/juneau-core/src/main/java/org/apache/juneau/transform/BeanFilter.java
index 0464fef..f9c7b37 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transform/BeanFilter.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transform/BeanFilter.java
@@ -28,17 +28,14 @@ import org.apache.juneau.internal.*;
  * 	This class can be considered a programmatic equivalent to using the {@link Bean @Bean} annotation on bean classes.
  * 	Thus, it can be used to perform the same function as the <code>@Bean</code> annotation when you don't have
  * 		the ability to annotate those classes (e.g. you don't have access to the source code).
- * <p>
- * 	Note that value returned by the {@link Transform#forClass()} method is automatically determined through reflection
- * 		when the no-arg constructor is used.
  *
  * <p>
  * 	When defining bean filters, you can either call the setters in the contructor, or override getters.
  *
  * <h6 class='topic'>Example</h6>
  * <p class='bcode'>
- * 	<jc>// Create our serializer with a filter.</jc>
- * 	WriterSerializer s = <jk>new</jk> JsonSerializer().addTransforms(AddressFilter.<jk>class</jk>);
+ * 	<jc>// Create our serializer with a bean filter.</jc>
+ * 	WriterSerializer s = <jk>new</jk> JsonSerializer().addBeanFilters(AddressFilter.<jk>class</jk>);
  *
  * 	Address a = <jk>new</jk> Address();
  * 	String json = s.serialize(a); <jc>// Serializes only street, city, state.</jc>
@@ -67,8 +64,9 @@ import org.apache.juneau.internal.*;
  * @author James Bognar (james.bognar@salesforce.com)
  * @param <T> The class type that this filter applies to.
  */
-public abstract class BeanFilter<T> extends Transform {
+public abstract class BeanFilter<T> {
 
+	private Class<T> beanClass;
 	private String[] properties, excludeProperties;
 	private LinkedHashMap<Class<?>, String> subTypes;
 	private String subTypeAttr;
@@ -82,7 +80,6 @@ public abstract class BeanFilter<T> extends Transform {
 	@SuppressWarnings("unchecked")
 	public BeanFilter() {
 		super();
-		this.type = TransformType.BEAN;
 
 		Class<?> c = this.getClass().getSuperclass();
 		Type t = this.getClass().getGenericSuperclass();
@@ -98,7 +95,7 @@ public abstract class BeanFilter<T> extends Transform {
 			if (pta.length > 0) {
 				Type nType = pta[0];
 				if (nType instanceof Class)
-					this.forClass = (Class<T>)nType;
+					this.beanClass = (Class<T>)nType;
 
 				else
 					throw new RuntimeException("Unsupported parameter type: " + nType);
@@ -125,11 +122,18 @@ public abstract class BeanFilter<T> extends Transform {
 	 * 	</dd>
 	 * </dl>
 	 *
-	 * @param forClass The class that this bean filter applies to.
+	 * @param beanClass The class that this bean filter applies to.
+	 */
+	public BeanFilter(Class<T> beanClass) {
+		this.beanClass = beanClass;
+	}
+
+	/**
+	 * Returns the bean class that this filter applies to.
+	 * @return The bean class that this filter applies to.
 	 */
-	public BeanFilter(Class<T> forClass) {
-		super(forClass);
-		this.type = TransformType.BEAN;
+	public Class<T> getBeanClass() {
+		return beanClass;
 	}
 
 	/**
@@ -153,13 +157,13 @@ public abstract class BeanFilter<T> extends Transform {
 	 * 	<dt>Example:</dt>
 	 * 	<dd>
 	 * 		<p class='bcode'>
-	 * 	<jc>// Create our serializer with a filter.</jc>
-	 * 	WriterSerializer s = <jk>new</jk> JsonSerializer().addTransforms(AddressFilter.<jk>class</jk>);
+	 * 	<jc>// Create our serializer with a bean filter.</jc>
+	 * 	WriterSerializer s = <jk>new</jk> JsonSerializer().addBeanFilters(AddressFilter.<jk>class</jk>);
 	 *
 	 * 	Address a = <jk>new</jk> Address();
 	 * 	String json = s.serialize(a); <jc>// Serializes only street, city, state.</jc>
 	 *
-	 * 	<jc>// Transform class</jc>
+	 * 	<jc>// Filter class</jc>
 	 * 	<jk>public class</jk> AddressFilter <jk>extends</jk> BeanFilter&lt;Address&gt; {
 	 * 		<jk>public</jk> AddressFilter() {
 	 * 			setProperties(<js>"street"</js>,<js>"city"</js>,<js>"state"</js>);
@@ -234,13 +238,13 @@ public abstract class BeanFilter<T> extends Transform {
 	 * 	<dt>Example:</dt>
 	 * 	<dd>
 	 * 		<p class='bcode'>
-	 * 	<jc>// Create our serializer with a filter.</jc>
-	 * 	WriterSerializer s = <jk>new</jk> JsonSerializer().addTransforms(NoCityOrStateFilter.<jk>class</jk>);
+	 * 	<jc>// Create our serializer with a bean filter.</jc>
+	 * 	WriterSerializer s = <jk>new</jk> JsonSerializer().addBeanFilters(NoCityOrStateFilter.<jk>class</jk>);
 	 *
 	 * 	Address a = <jk>new</jk> Address();
 	 * 	String json = s.serialize(a); <jc>// Excludes city and state.</jc>
 	 *
-	 * 	<jc>// Transform class</jc>
+	 * 	<jc>// Filter class</jc>
 	 * 	<jk>public class</jk> NoCityOrStateFilter <jk>extends</jk> BeanFilter&lt;Address&gt; {
 	 * 		<jk>public</jk> AddressFilter() {
 	 * 			setExcludeProperties(<js>"city"</js>,<js>"state"</js>);
@@ -327,7 +331,7 @@ public abstract class BeanFilter<T> extends Transform {
 	 * 		<jk>public</jk> String <jf>f2</jf>;
 	 * 	}
 	 *
-	 * 	<jc>// Transform for defining subtypes</jc>
+	 * 	<jc>// Filter for defining subtypes</jc>
 	 * 	<jk>public class</jk> AFilter <jk>extends</jk> BeanFilter&lt;A&gt; {
 	 * 		<jk>public</jk> AFilter() {
 	 * 			setSubTypeProperty(<js>"subType"</js>);
@@ -428,7 +432,7 @@ public abstract class BeanFilter<T> extends Transform {
 	 * 		<jk>public</jk> String <jf>f1</jf> = <js>"f1"</js>;
 	 * 	}
 	 *
-	 * 	<jc>// Transform class</jc>
+	 * 	<jc>// Filter class</jc>
 	 * 	<jk>public class</jk> AFilter <jk>extends</jk> BeanFilter&lt;A&gt; {
 	 * 		<jk>public</jk> AFilter() {
 	 * 			setInterfaceClass(A.<jk>class</jk>);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/transform/InterfaceBeanFilter.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transform/InterfaceBeanFilter.java b/juneau-core/src/main/java/org/apache/juneau/transform/InterfaceBeanFilter.java
index 2e9f95c..908d959 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transform/InterfaceBeanFilter.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transform/InterfaceBeanFilter.java
@@ -19,7 +19,7 @@ import org.apache.juneau.*;
  * Simple bean filter that simply identifies a class to be used as an interface
  * 	class for all child classes.
  * <p>
- * 	These objects are created when you pass in non-<code>Transform</code> classes to {@link ContextFactory#addToProperty(String,Object)},
+ * 	These objects are created when you pass in non-<code>BeanFilter</code> classes to {@link ContextFactory#addToProperty(String,Object)},
  * 		and are equivalent to adding a <code><ja>@Bean</ja>(interfaceClass=Foo.<jk>class</jk>)</code> annotation on the <code>Foo</code> class.
  *
  * @author James Bognar (james.bognar@salesforce.com)

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java b/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
index deb9092..f9aba47 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
@@ -89,7 +89,7 @@ import org.apache.juneau.serializer.*;
  * @param <T> The normal form of the class.
  * @param <S> The swapped form of the class.
  */
-public abstract class PojoSwap<T,S> extends Transform {
+public abstract class PojoSwap<T,S> {
 
 	Class<T> normalClass;
 	Class<S> swapClass;
@@ -199,22 +199,7 @@ public abstract class PojoSwap<T,S> extends Transform {
 	}
 
 	/**
-	 *	Same as {@link #unswap(Object)}, but override this method if you need access to the expected class type
-	 *		to be created.
-	 *
-	 * @param f The transformed object.
-	 * @param hint If possible, the parser will try to tell you the object type being created.  For example,
-	 * 	on a serialized date, this may tell you that the object being created must be of type {@code GregorianCalendar}.<br>
-	 * 	This may be <jk>null</jk> if the parser cannot make this determination.
-	 * @return The narrowed object.
-	 * @throws ParseException If this method is not implemented.
-	 */
-	public T unswap(S f, ClassMeta<?> hint) throws ParseException {
-		return unswap(f);
-	}
-
-	/**
-	 *	Same as {@link #unswap(Object, ClassMeta)}, but override this method if you need access to the bean context that created this swap.
+	 *	Same as {@link #unswap(Object)}, but override this method if you need access to the real class type or the bean context that created this swap.
 	 *
 	 * @param f The transformed object.
 	 * @param hint If possible, the parser will try to tell you the object type being created.  For example,
@@ -226,7 +211,7 @@ public abstract class PojoSwap<T,S> extends Transform {
 	 * @throws ParseException If this method is not implemented.
 	 */
 	public T unswap(S f, ClassMeta<?> hint, BeanContext beanContext) throws ParseException {
-		return unswap(f, hint);
+		return unswap(f);
 	}
 
 	/**
@@ -294,11 +279,6 @@ public abstract class PojoSwap<T,S> extends Transform {
 	// Overridden methods
 	//--------------------------------------------------------------------------------
 
-	@Override /* Transform */
-	public Class<?> forClass() {
-		return normalClass;
-	}
-
 	@Override /* Object */
 	public String toString() {
 		return getClass().getSimpleName() + '<' + getNormalClass().getSimpleName() + "," + getSwapClass().getSimpleName() + '>';

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/transform/SurrogateSwap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transform/SurrogateSwap.java b/juneau-core/src/main/java/org/apache/juneau/transform/SurrogateSwap.java
index 2705dec..c5f7bdc 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transform/SurrogateSwap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transform/SurrogateSwap.java
@@ -64,8 +64,8 @@ import org.apache.juneau.serializer.*;
  * <p class='bcode'>
  * 	<ja>@Test</ja>
  * 	<jk>public void</jk> test() <jk>throws</jk> Exception {
- * 		JsonSerializer s = <jk>new</jk> JsonSerializer.Simple().addTransforms(Surrogate.<jk>class</jk>);
- * 		JsonParser p = <jk>new</jk> JsonParser().addTransforms(Surrogate.<jk>class</jk>);
+ * 		JsonSerializer s = <jk>new</jk> JsonSerializer.Simple().addPojoSwaps(Surrogate.<jk>class</jk>);
+ * 		JsonParser p = <jk>new</jk> JsonParser().addPojoSwaps(Surrogate.<jk>class</jk>);
  * 		String r;
  * 		Normal n = Normal.<jsm>create</jsm>();
  *
@@ -151,7 +151,7 @@ public class SurrogateSwap<T,F> extends PojoSwap<T,F> {
 	 * @return The list of POJO swaps that apply to this class.
 	 */
 	@SuppressWarnings({"unchecked", "rawtypes"})
-	public static List<SurrogateSwap<?,?>> findTransforms(Class<?> c) {
+	public static List<SurrogateSwap<?,?>> findPojoSwaps(Class<?> c) {
 		List<SurrogateSwap<?,?>> l = new LinkedList<SurrogateSwap<?,?>>();
 		for (Constructor<?> cc : c.getConstructors()) {
 			if (cc.getAnnotation(BeanIgnore.class) == null) {
@@ -163,20 +163,20 @@ public class SurrogateSwap<T,F> extends PojoSwap<T,F> {
 					int mod = cc.getModifiers();
 					if (Modifier.isPublic(mod)) {  // Only public constructors.
 
-						// Find the untransform method if there is one.
-						Method untransformMethod = null;
+						// Find the unswap method if there is one.
+						Method unswapMethod = null;
 						for (Method m : c.getMethods()) {
 							if (pt[0].equals(m.getReturnType())) {
 								Class<?>[] mpt = m.getParameterTypes();
 								if (mpt.length == 1 && mpt[0].equals(c)) { // Only methods with one parameter and where the return type matches this class.
 									int mod2 = m.getModifiers();
 									if (Modifier.isPublic(mod2) && Modifier.isStatic(mod2))  // Only public static methods.
-										untransformMethod = m;
+										unswapMethod = m;
 								}
 							}
 						}
 
-						l.add(new SurrogateSwap(pt[0], cc, untransformMethod));
+						l.add(new SurrogateSwap(pt[0], cc, unswapMethod));
 					}
 				}
 			}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/transform/Transform.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transform/Transform.java b/juneau-core/src/main/java/org/apache/juneau/transform/Transform.java
deleted file mode 100644
index 0fa213e..0000000
--- a/juneau-core/src/main/java/org/apache/juneau/transform/Transform.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/***************************************************************************************************************************
- * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements.  See the NOTICE file
- * distributed with this work for additional information regarding copyright ownership.  The ASF licenses this file
- * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
- * with the License.  You may obtain a copy of the License at
- *
- *  http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
- * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.  See the License for the
- * specific language governing permissions and limitations under the License.
- ***************************************************************************************************************************/
-package org.apache.juneau.transform;
-
-/**
- * Parent class for all bean and POJO swaps.
- *
- *
- * <h6 class='topic'>Description</h6>
- * <p>
- * 	Transforms are used to alter how POJOs are handled by bean contexts (and subsequently serializers and parsers).
- * 	The are a very powerful feature of the Juneau framework that allows virtually any POJO to be serialized and parsed.
- * 	For example, they can be used to...
- * <ul class='spaced-list'>
- * 	<li>Convert a non-serializable POJO into a serializable POJO during serialization (and optionally vis-versa during parsing).
- * 	<li>Control various aspects of beans, such as what properties are visible, bean subclasses, etc...
- * </ul>
- * <p>
- * 	There are 2 subclasses of transforms:
- * <ul class='spaced-list'>
- * 	<li>{@link PojoSwap} - Non-bean filters for converting POJOs into serializable equivalents.
- * 	<li>{@link BeanFilter} - Bean filters for configuring how beans are handled.
- * </ul>
- *
- *
- * <h6 class='topic'>Additional information</h6>
- * 	See {@link org.apache.juneau.transform} for more information.
- *
- *
- * @author James Bognar (james.bognar@salesforce.com)
- */
-public class Transform {
-
-	/** The transform subtype */
-	public static enum TransformType {
-		/** PojoSwap */
-		POJO,
-		/** BeanFilter */
-		BEAN
-	}
-
-	/** The class that this transform applies to. */
-	protected Class<?> forClass;
-
-	/** Whether this is a BeanFilter or PojoSwap. */
-	protected TransformType type = TransformType.POJO;
-
-	Transform() {}
-
-	Transform(Class<?> forClass) {
-		this.forClass = forClass;
-	}
-
-
-	/**
-	 * Returns the class that this transform applies to.
-	 *
-	 * @return The class that this transform applies to.
-	 */
-	public Class<?> forClass() {
-		return forClass;
-	}
-
-	/**
-	 * Returns whether this is an instance of {@link PojoSwap} or {@link BeanFilter}.
-	 *
-	 * @return The transform type.
-	 */
-	public TransformType getType() {
-		return type;
-	}
-}

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/transform/package.html
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transform/package.html b/juneau-core/src/main/java/org/apache/juneau/transform/package.html
index 059b769..d63458e 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transform/package.html
+++ b/juneau-core/src/main/java/org/apache/juneau/transform/package.html
@@ -75,32 +75,29 @@
 <div class='topic'>
 	<p>
 		By default, the Juneau framework can serialize and parse a wide variety of POJOs out-of-the-box.  
-		However, a <code>Transform</code> API is provided to tailor how certain Java objects are handled by the framework.
-		The class hierarchy is shown here:
+		However, two special classes are provided tailor how certain Java objects are handled by the framework.
+		These classes are:
 	</p>
 	<ul class='spaced-list'>
-		<li>{@link org.apache.juneau.transform.Transform} - Top-level interface for all transforms.
-	<ul class='spaced-list'>
 		<li>{@link org.apache.juneau.transform.BeanFilter} - Transforms that alter the way beans are handled.
 		<li>{@link org.apache.juneau.transform.PojoSwap} - Transforms that swap non-serializable POJOs with serializable POJOs during serialization 
 			(and optionally vis-versa during parsing).
-		</ul>
 	</ul>
 	<p>
 		Transforms are added to serializers and parsers in a variety of ways:
 	</p> 
 	<ul class='spaced-list'>
-		<li>{@link org.apache.juneau.serializer.Serializer#addTransforms(Class[])} - On serializers.
-		<li>{@link org.apache.juneau.serializer.SerializerGroup#addTransforms(Class[])} - On groups of serializers.
-		<li>{@link org.apache.juneau.parser.Parser#addTransforms(Class[])} - On parsers.
-		<li>{@link org.apache.juneau.parser.ParserGroup#addTransforms(Class[])} - On groups of parsers.
-		<li>{@link org.apache.juneau.client.RestClient#addTransforms(Class[])} - On the serializer and parser registered on a REST client.
-		<li>{@link org.apache.juneau.server.annotation.RestResource#transforms() @RestResource.transforms()} - On all serializers and parsers defined on a REST servlet.
-		<li>{@link org.apache.juneau.server.annotation.RestMethod#transforms() @RestMethod.transforms()} - On all serializers and parsers defined on a method in a REST servlet.
-		<li>{@link org.apache.juneau.server.jaxrs.JuneauProvider#transforms()} - On all serializers and parsers defined on a JAX-RS provider.
+		<li>{@link org.apache.juneau.serializer.Serializer#addBeanFilters(Class[])} / {@link org.apache.juneau.serializer.Serializer#addPojoSwaps(Class[])} - On serializers.
+		<li>{@link org.apache.juneau.serializer.SerializerGroup#addBeanFilters(Class[])} / {@link org.apache.juneau.serializer.SerializerGroup#addPojoSwaps(Class[])} - On groups of serializers.
+		<li>{@link org.apache.juneau.parser.Parser#addBeanFilters(Class[])} / {@link org.apache.juneau.parser.Parser#addPojoSwaps(Class[])} - On parsers.
+		<li>{@link org.apache.juneau.parser.ParserGroup#addBeanFilters(Class[])} / {@link org.apache.juneau.parser.ParserGroup#addPojoSwaps(Class[])} - On groups of parsers.
+		<li>{@link org.apache.juneau.client.RestClient#addBeanFilters(Class[])} / {@link org.apache.juneau.client.RestClient#addPojoSwaps(Class[])} - On the serializer and parser registered on a REST client.
+		<li>{@link org.apache.juneau.server.annotation.RestResource#beanFilters() @RestResource.beanFilters()} / {@link org.apache.juneau.server.annotation.RestResource#pojoSwaps() @RestResource.pojoSwaps()}- On all serializers and parsers defined on a REST servlet.
+		<li>{@link org.apache.juneau.server.annotation.RestMethod#beanFilters() @RestMethod.beanFilters()} / {@link org.apache.juneau.server.annotation.RestMethod#pojoSwaps() @RestMethod.pojoSwaps()} - On all serializers and parsers defined on a method in a REST servlet.
+		<li>{@link org.apache.juneau.server.jaxrs.JuneauProvider#beanFilters() @JuneauProvider.beanFilters()} / {@link org.apache.juneau.server.jaxrs.JuneauProvider#pojoSwaps() @JuneauProvider.pojoSwaps()} - On all serializers and parsers defined on a JAX-RS provider.
 	</ul>
 	<p>
-		Swaps can also be associated with classes through the {@link org.apache.juneau.annotation.Pojo @Pojo} annotation. 
+		Swaps can also be associated with classes through the {@link org.apache.juneau.annotation.Pojo#pojoSwaps @Pojo.pojoSwaps()} annotation. 
 	</p>
 		
 	<!-- ======================================================================================================== -->
@@ -127,14 +124,14 @@
 
 		<h6 class='topic'>Explicitly specify which properties are visible on a bean class</h6>
 		<p class='bcode'>
-	<jc>// Define transform that orders properties by "age" then "name"</jc>
+	<jc>// Define bean filter that orders properties by "age" then "name"</jc>
 	<jk>public class</jk> MyBeanFilter <jk>extends</jk> BeanFilter&lt;Person&gt; {
 		<jk>public</jk> MyBeanFilter() {
 			setProperties(<js>"age"</js>,<js>"name"</js>);
 		}
 	}
 	
-	WriterSerializer s = <jk>new</jk> JsonSerializer().addTransforms(MyBeanFilter.<jk>class</jk>);
+	WriterSerializer s = <jk>new</jk> JsonSerializer().addBeanFilters(MyBeanFilter.<jk>class</jk>);
 	Person p = getPerson();
 	String json = s.serialize(p);  <jc>// Prints "{age:45,name:'John Smith'}"</jc>
 		</p>
@@ -150,14 +147,14 @@
 
 		<h6 class='topic'>Exclude which properties are visible on a bean class</h6>
 		<p class='bcode'>
-	<jc>// Define transform that excludes "name"</jc>
+	<jc>// Define bean filter that excludes "name"</jc>
 	<jk>public class</jk> MyBeanFilter <jk>extends</jk> BeanFilter&lt;Person&gt; {
 		<jk>public</jk> MyBeanFilter() {
 			setExcludeProperties(<js>"name"</js>);
 		}
 	}
 	
-	WriterSerializer s = <jk>new</jk> JsonSerializer().addTransforms(MyBeanFilter.<jk>class</jk>);
+	WriterSerializer s = <jk>new</jk> JsonSerializer().addBeanFilters(MyBeanFilter.<jk>class</jk>);
 	Person p = getPerson();
 	String json = s.serialize(p);  <jc>// Prints "{age:45}"</jc>
 		</p>
@@ -173,7 +170,7 @@
 
 		<h6 class='topic'>Define specialized property namers</h6>
 		<p class='bcode'>
-	<jc>// Define transform with our own property namer.</jc>
+	<jc>// Define bean filter with our own property namer.</jc>
 	<jk>public class</jk> MyBeanFilter <jk>extends</jk> BeanFilter&lt;Person&gt; {
 		<jk>public</jk> MyBeanFilter() {
 			setPropertyNamer(UpperCasePropertyNamer.<jk>class</jk>);
@@ -190,12 +187,12 @@
 	}
 	
 	<jc>// Serialize to JSON</jc>
-	WriterSerializer s = <jk>new</jk> JsonSerializer().addTransforms(MyBeanFilter.<jk>class</jk>);
+	WriterSerializer s = <jk>new</jk> JsonSerializer().addBeanFilters(MyBeanFilter.<jk>class</jk>);
 	Person person = getPerson();
 	String json = s.serialize(p);  <jc>// Prints "{AGE:45,NAME:'John Smith'}"</jc>
 	
 	<jc>// Parse back into bean</jc>
-	ReaderParser p = <jk>new</jk> JsonParser().addTransforms(MyBeanFilter.<jk>class</jk>);
+	ReaderParser p = <jk>new</jk> JsonParser().addBeanFilters(MyBeanFilter.<jk>class</jk>);
 	person = p.parse(json, Person.class); <jc>// Read back into original object</jc>
 		</p>
 		<p>
@@ -234,10 +231,10 @@
 		</p>
 		<p>
 			Normally, when parsing a serialized <code>MyClass</code> object, the parser does not know what subtype to create.
-			This can be fixed by defining the following transform:
+			This can be fixed by defining the following bean filter:
 		</p>		
 		<p class='bcode'>
-	<jc>// Define transform with our own property namer.</jc>
+	<jc>// Define bean filter with our own property namer.</jc>
 	<jk>public class</jk> MyBeanFilter <jk>extends</jk> BeanFilter&lt;MyClass&gt; {
 		<jk>public</jk> MyBeanFilter() {
 			setSubTypeProperty(<js>"subType"</js>);
@@ -252,12 +249,12 @@
 		</p>
 		<p class='bcode'>
 	<jc>// Serialize to JSON</jc>
-	WriterSerializer s = <jk>new</jk> JsonSerializer().addTransforms(MyBeanFilter.<jk>class</jk>);
+	WriterSerializer s = <jk>new</jk> JsonSerializer().addBeanFilters(MyBeanFilter.<jk>class</jk>);
 	MyClass c = <jk>new</jk> MyClassBar();
 	String json = s.serialize(p);  <jc>// Prints "{subType:'BAR',foo:'foo',bar:'bar'}"</jc>
 	
 	<jc>// Parse back into bean</jc>
-	ReaderParser p = <jk>new</jk> JsonParser().addTransforms(MyBeanFilter.<jk>class</jk>);
+	ReaderParser p = <jk>new</jk> JsonParser().addBeanFilters(MyBeanFilter.<jk>class</jk>);
 	c = p.parse(json, MyClass.<jk>class</jk>); <jc>// c is an instance of MyClassBar</jc>
 		</p>	
 		<p>
@@ -268,7 +265,7 @@
 			but with reduced efficiency since it must cache the incoming data until the bean can be instantiated.
 		</p>
 		<p>
-			Note that this transform is equivalent to specifying the following annotation on the bean class:
+			Note that this bean filter is equivalent to specifying the following annotation on the bean class:
 		</p>
 		<p class='bcode'>
 	<ja>@Bean</ja>(
@@ -308,10 +305,10 @@
 		</p>
 		<p>
 			Suppose we only want to render the properties defined on <code>MyClass</code>, not those defined on child classes.
-			To do so, we can define the following transform:
+			To do so, we can define the following bean filter:
 		</p>
 		<p class='bcode'>
-	<jc>// Define transform that limits properties to only those defined on MyClass</jc>
+	<jc>// Define bean filter that limits properties to only those defined on MyClass</jc>
 	<jk>public class</jk> MyBeanFilter <jk>extends</jk> BeanFilter&lt;MyClass&gt; {
 		<jk>public</jk> MyBeanFilter() {
 			setInterfaceClass(MyClass.<jk>class</jk>);
@@ -323,7 +320,7 @@
 		</p>
 		<p class='bcode'>
 	<jc>// Serialize to JSON</jc>
-	WriterSerializer s = <jk>new</jk> JsonSerializer().addTransforms(MyBeanFilter.<jk>class</jk>);
+	WriterSerializer s = <jk>new</jk> JsonSerializer().addBeanFilters(MyBeanFilter.<jk>class</jk>);
 	MyClass c = <jk>new</jk> MyClassBar();
 	String json = s.serialize(p);  <jc>// Prints "{foo:'foo'}"</jc>
 		</p>	
@@ -346,21 +343,21 @@
 	}
 		</p>
 		<p>
-			Also, the <code>addTransforms(...)</code> methods will automatically interpret any non-<code>Transform</code> classes
+			Also, the <code>addBeanFilters(...)</code> methods will automatically interpret any non-<code>BeanFilter</code> classes
 				passed in as meaning interface classes.  
 			So in the previous example, the <code>BeanFilter</code> class could have been avoided altogether by just 
 				passing in <code>MyClass.<jk>class</jk></code> to the serializer, like so:
 		</p>
 		<p class='bcode'>
 	<jc>// Serialize to JSON</jc>
-	WriterSerializer s = <jk>new</jk> JsonSerializer().addTransforms(MyClass.<jk>class</jk>);
+	WriterSerializer s = <jk>new</jk> JsonSerializer().addBeanFilters(MyClass.<jk>class</jk>);
 		</p>
 		<p>
 			In fact, this is the shortcut used in the <code>RequestEchoResource</code> sample class:
 		</p>
 		<p class='bcode'>
 	<ja>@RestResource</ja>(
-		transforms={
+		beanFilters={
 			<jc>// Interpret these as their parent classes, not subclasses</jc>
 			HttpServletRequest.<jk>class</jk>, HttpSession.<jk>class</jk>, ServletContext.<jk>class</jk>
 		}
@@ -425,10 +422,10 @@
 			The purpose of an <code>PojoSwap</code> is to convert a non-serializable object to a serializable surrogate form during serialization, and to optionally convert that surrogate form back into the original object during parsing.
 		</p>
 		<p>
-			For example, the following transform can be used to convert {@link java.util.Date} objects to ISO8601 strings during serialization, and {@link java.util.Date} objects from ISO8601 string during parsing:
+			For example, the following swap can be used to convert {@link java.util.Date} objects to ISO8601 strings during serialization, and {@link java.util.Date} objects from ISO8601 string during parsing:
 		</p>
 		<p class='bcode'>
-	<jc>// Sample transform for converting Dates to ISO8601 strings.</jc>
+	<jc>// Sample swap for converting Dates to ISO8601 strings.</jc>
 	<jk>public class</jk> MyDateSwap <jk>extends</jk> PojoSwap&lt;Date,String&gt; {
 		
 		<jc>// ISO8601 formatter.</jc>
@@ -442,7 +439,7 @@
 		
 		<jd>/** Converts an ISO8601 string to a Date object. */</jd>
 		<ja>@Override</ja>
-		<jk>public</jk> Date unswap(String o, ClassMeta&lt;?&gt; hint) <jk>throws</jk> ParseException {
+		<jk>public</jk> Date unswap(String o) <jk>throws</jk> ParseException {
 			<jk>try</jk> {
 				<jk>return</jk> <jf>format</jf>.parse(o);
 			} <jk>catch</jk> (java.text.ParseException e) {
@@ -452,7 +449,7 @@
 	}
 		</p>
 		<p>
-			The transform above can then be associated with serializers and parsers as the following example shows:
+			The swap above can then be associated with serializers and parsers as the following example shows:
 		</p>
 		<p class='bcode'>
 	<jc>// Sample bean with a Date field.</jc>
@@ -460,21 +457,21 @@
 		<jk>public</jk> Date <jf>date</jf> = <jk>new</jk> Date(112, 2, 3, 4, 5, 6);
 	}
 
-	<jc>// Create a new JSON serializer, associate our date transform with it, and serialize a sample bean.</jc>
-	Serializer serializer = <jk>new</jk> JsonSerializer().addTransforms(MyDateSwap.<jk>class</jk>);
+	<jc>// Create a new JSON serializer, associate our date swap with it, and serialize a sample bean.</jc>
+	Serializer serializer = <jk>new</jk> JsonSerializer().addPojoSwaps(MyDateSwap.<jk>class</jk>);
 	String json = serializer.serialize(<jk>new</jk> MyBean());	<jc>// == "{date:'2012-03-03T04:05:06-0500'}"</jc>
 	
-	<jc>// Create a JSON parser, associate our date transform with it, and reconstruct our bean (including the date).</jc>
-	ReaderParser parser = <jk>new</jk> JsonParser().addTransforms(MyDateSwap.<jk>class</jk>);
+	<jc>// Create a JSON parser, associate our date swap with it, and reconstruct our bean (including the date).</jc>
+	ReaderParser parser = <jk>new</jk> JsonParser().addPojoSwaps(MyDateSwap.<jk>class</jk>);
 	MyBean bean = parser.parse(json, MyBean.<jk>class</jk>);
 	<jk>int</jk> day = bean.<jf>date</jf>.getDay(); 						<jc>// == 3</jc>
 		</p>
 		<p>
-			In addition, the {@link org.apache.juneau.BeanMap#get(Object)} and {@link org.apache.juneau.BeanMap#put(String,Object)} methods will automatically convert to transformed values as the following example shows:
+			In addition, the {@link org.apache.juneau.BeanMap#get(Object)} and {@link org.apache.juneau.BeanMap#put(String,Object)} methods will automatically convert to swapped values as the following example shows:
 		</p>
 		<p class='bcode'>
-	<jc>// Create a new bean context and add our transform.</jc>
-	BeanContext beanContext = <jk>new</jk> BeanContext().addTransforms(MyDateSwap.<jk>class</jk>);
+	<jc>// Create a new bean context and add our swap.</jc>
+	BeanContext beanContext = <jk>new</jk> BeanContext().addPojoSwaps(MyDateSwap.<jk>class</jk>);
 
 	<jc>// Create a new bean.</jc>
 	MyBean myBean = <jk>new</jk> MyBean();
@@ -528,12 +525,12 @@
 	}
 		</p>
 		<p>
-			The following example shows the BASE64 transform in use:
+			The following example shows the BASE64 swap in use:
 		</p>
 		<p class='bcode'>
-	<jc>// Create a JSON serializer and register the BASE64 encoding transform with it.</jc>
-	Serializer serializer = <jk>new</jk> JsonSerializer().addTransforms(ByteArrayBase64Swap.<jk>class</jk>);
-	ReaderParser parser = <jk>new</jk> JsonParser().addTransforms(ByteArrayBase64Swap.<jk>class</jk>);
+	<jc>// Create a JSON serializer and register the BASE64 encoding swap with it.</jc>
+	Serializer serializer = <jk>new</jk> JsonSerializer().addPojoSwaps(ByteArrayBase64Swap.<jk>class</jk>);
+	ReaderParser parser = <jk>new</jk> JsonParser().addPojoSwaps(ByteArrayBase64Swap.<jk>class</jk>);
 	
 	<jk>byte</jk>[] a1 = {1,2,3};
 	String s1 = serializer.serialize(a1);		<jc>// Produces "'AQID'"</jc>
@@ -544,22 +541,22 @@
 	a2 = parser.parse(s2, <jk>byte</jk>[][].<jk>class</jk>);		<jc>// Reproduces {{1,2,3},{4,5,6},null}</jc>
 		</p>
 		<p>
-			It should be noted that the sample transforms shown above have already been implemented in the {@link org.apache.juneau.transforms} package.
-			The following are a list of out-of-the-box transforms:
+			It should be noted that the sample swaps shown above have already been implemented in the {@link org.apache.juneau.transforms} package.
+			The following are a list of out-of-the-box swaps:
 		</p>
 		<ul class='spaced-list'>
 			<li>{@link org.apache.juneau.transforms.ByteArrayBase64Swap} - Converts byte arrays to BASE64 encoded strings.
-			<li>{@link org.apache.juneau.transforms.CalendarSwap} - Transforms for converting <code>Calendar</code> objects to various date format strings.
-			<li>{@link org.apache.juneau.transforms.DateSwap} - Transforms for converting <code>Date</code> objects to various date format strings.
-			<li>{@link org.apache.juneau.transforms.EnumerationSwap} - Transforms for converting <code>Enumeration</code> objects to arrays.
-			<li>{@link org.apache.juneau.transforms.IteratorSwap} - Transforms for converting <code>Iterator</code> objects to arrays.
-			<li>{@link org.apache.juneau.transforms.ReaderSwap} - Transforms for converting <code>Readers</code> to objects before serialization.
-			<li>{@link org.apache.juneau.transforms.XMLGregorianCalendarSwap} - Transforms for converting <code>XMLGregorianCalendar</code> objects to ISO8601 strings.
+			<li>{@link org.apache.juneau.transforms.CalendarSwap} - Swaps for converting <code>Calendar</code> objects to various date format strings.
+			<li>{@link org.apache.juneau.transforms.DateSwap} - Swaps for converting <code>Date</code> objects to various date format strings.
+			<li>{@link org.apache.juneau.transforms.EnumerationSwap} - Swaps for converting <code>Enumeration</code> objects to arrays.
+			<li>{@link org.apache.juneau.transforms.IteratorSwap} - Swaps for converting <code>Iterator</code> objects to arrays.
+			<li>{@link org.apache.juneau.transforms.ReaderSwap} - Swaps for converting <code>Readers</code> to objects before serialization.
+			<li>{@link org.apache.juneau.transforms.XMLGregorianCalendarSwap} - Swaps for converting <code>XMLGregorianCalendar</code> objects to ISO8601 strings.
 		</ul>
 		
-		<h6 class='topic'>Valid transformed class types</h6>
+		<h6 class='topic'>Valid swapped class types</h6>
 		<p>
-			The transformed class type can be any serializable class type as defined in the <a href='../package-summary.html#PojoCategories'>POJO categories</a> table.
+			The swapped class type can be any serializable class type as defined in the <a href='../package-summary.html#PojoCategories'>POJO categories</a> table.
 		</p>
 	</div>
 	
@@ -569,13 +566,17 @@
 	<h3 class='topic' onclick='toggle(this)'>1.3 - One-Way PojoSwaps</h3>
 	<div class='topic'>
 		<p>
-			In the previous section, we defined two-way transforms, meaning transforms where the original objects could be reconstructing during parsing.  However, there are certain kinds of POJOs that we may want to support for serializing, but that are not possible to reconstruct during parsing.  For these, we can use one-way object transforms.
+			In the previous section, we defined two-way swaps, meaning swaps where the original objects could be reconstructing during parsing.  '
+			However, there are certain kinds of POJOs that we may want to support for serializing, but that are not possible to reconstruct during parsing.  
+			For these, we can use one-way object swaps.
 		</p>
 		<p>
-			A one-way object transform is simply an object transform that only implements the {@code swap()} method.  The {@code unswap()} method is simply left unimplemented.
+			A one-way POJO swap is simply an object transform that only implements the {@code swap()} method.  
+			The {@code unswap()} method is simply left unimplemented.
 		</p>
 		<p>
-			An example of a one-way transform would be one that allows {@code Iterators} to be serialized as JSON arrays.  It can make sense to be able to render {@code Iterators} as arrays, but in general it's not possible to reconstruct an {@code Iterator} during parsing. 
+			An example of a one-way swaps would be one that allows {@code Iterators} to be serialized as JSON arrays.  
+			It can make sense to be able to render {@code Iterators} as arrays, but in general it's not possible to reconstruct an {@code Iterator} during parsing. 
 		</p>
 		<p class='bcode'>
 	<jk>public class</jk> IteratorSwap <jk>extends</jk> PojoSwap&lt;Iterator,List&gt; {
@@ -590,11 +591,12 @@
 	}
 		</p>
 		<p>
-			Here is an example of our one-way transform being used.  Note that trying to parse the original object will cause a {@link org.apache.juneau.parser.ParseException} to be thrown.
+			Here is an example of our one-way swap being used.  
+			Note that trying to parse the original object will cause a {@link org.apache.juneau.parser.ParseException} to be thrown.
 		</p>
 		<p class='bcode'>
 	<jc>// Create a JSON serializer that can serialize Iterators.</jc>
-	Serializer serializer = <jk>new</jk> JsonSerializer().addTransforms(IteratorSwap.<jk>class</jk>);
+	Serializer serializer = <jk>new</jk> JsonSerializer().addPojoSwaps(IteratorSwap.<jk>class</jk>);
 	
 	<jc>// Construct an iterator we want to serialize.</jc>
 	Iterator iterator = <jk>new</jk> ObjectList(1,2,3).iterator();
@@ -603,7 +605,7 @@
 	String s = serializer.serialize(iterator);		<jc>// Produces "[1,2,3]"</jc>
 	
 	<jc>// Try to parse it.</jc>
-	ReaderParser parser = <jk>new</jk> JsonParser().addTransforms(IteratorSwap.<jk>class</jk>);
+	ReaderParser parser = <jk>new</jk> JsonParser().addPojoSwaps(IteratorSwap.<jk>class</jk>);
 	iterator = parser.parse(s, Iterator.<jk>class</jk>);		<jc>// Throws ParseException!!!</jc>
 		</p>
 	</div>
@@ -632,7 +634,7 @@
 		</p>
 		<p>
 			Suppose we only want to render the properties defined on <code>MyClass</code>, not those defined on child classes. 
-			To do so, we can define the following transform:
+			To do so, we can define the following bean filter:
 		</p>
 		<p class='bcode'>
 	<jc>// Define transform that limits properties to only those defined on MyClass</jc>
@@ -647,7 +649,7 @@
 		</p>
 		<p class='bcode'>
 	<jc>// Serialize to JSON</jc>
-	WriterSerializer s = <jk>new</jk> JsonSerializer().addTransforms(MyBeanFilter.<jk>class</jk>);
+	WriterSerializer s = <jk>new</jk> JsonSerializer().addBeanFilters(MyBeanFilter.<jk>class</jk>);
 	MyClass c = <jk>new</jk> MyClassBar();
 	String json = s.serialize(p);  <jc>// Prints "{foo:'foo'}"</jc>
 		</p>	
@@ -670,12 +672,12 @@
 	}
 		</p>
 		<p>
-			Also, the <code>addTransforms()</code> methods will automatically interpret any non-Transform classes passed in as meaning interface classes. 
+			Also, the <code>addBeanFilters()</code> methods will automatically interpret any non-<code>BeanFilter</code> classes passed in as meaning interface classes. 
 			So in the previous example, the <code>BeanFilter</code> class could have been avoided altogether by just passing in <code>MyClass.<jk>class</jk></code> to the serializer, like so:
 		</p>
 		<p class='bcode'>
 	<jc>// Serialize to JSON</jc>
-	WriterSerializer s = <jk>new</jk> JsonSerializer().addTransforms(MyClass.<jk>class</jk>);
+	WriterSerializer s = <jk>new</jk> JsonSerializer().addBeanFilters(MyClass.<jk>class</jk>);
 		</p>
 	</div>
 
@@ -725,11 +727,11 @@
 	}
 		</p>
 		<p>
-			The surrogate class is registered just like any other transform:
+			The surrogate class is registered in the same way as a <code>PojoSwap</code>:
 		</p>
 		<p class='bcode'>
 	<jc>// Create a JSON serializer that can serialize Iterators.</jc>
-	Serializer serializer = <jk>new</jk> JsonSerializer().addTransforms(MySerializableSurrogate.<jk>class</jk>);
+	Serializer serializer = <jk>new</jk> JsonSerializer().addPojoSwaps(MySerializableSurrogate.<jk>class</jk>);
 		</p>
 		<p>
 			When the serializer encounters the non-serializable class, it will serialize an instance of the surrogate instead.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarSwap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarSwap.java b/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarSwap.java
index 62af394..50d1cb2 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarSwap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarSwap.java
@@ -97,7 +97,7 @@ public class CalendarSwap extends PojoSwap<Calendar,String> {
 		public ISO8601DT() {}
 
 		@Override /* PojoSwap */
-		public Calendar unswap(String o, ClassMeta<?> hint) throws ParseException {
+		public Calendar unswap(String o, ClassMeta<?> hint, BeanContext bc) throws ParseException {
 			try {
 				if (StringUtils.isEmpty(o))
 					return null;
@@ -124,7 +124,7 @@ public class CalendarSwap extends PojoSwap<Calendar,String> {
 		public ISO8601DTZ() {}
 
 		@Override /* PojoSwap */
-		public Calendar unswap(String o, ClassMeta<?> hint) throws ParseException {
+		public Calendar unswap(String o, ClassMeta<?> hint, BeanContext bc) throws ParseException {
 			try {
 				if (StringUtils.isEmpty(o))
 					return null;
@@ -264,7 +264,7 @@ public class CalendarSwap extends PojoSwap<Calendar,String> {
 	 * Converts the specified {@link String} to a {@link Calendar}.
 	 */
 	@Override /* PojoSwap */
-	public Calendar unswap(String o, ClassMeta<?> hint) throws ParseException {
+	public Calendar unswap(String o, ClassMeta<?> hint, BeanContext bc) throws ParseException {
 		try {
 			if (StringUtils.isEmpty(o))
 				return null;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/transforms/DateLongSwap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transforms/DateLongSwap.java b/juneau-core/src/main/java/org/apache/juneau/transforms/DateLongSwap.java
index 06c0310..f40601f 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transforms/DateLongSwap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transforms/DateLongSwap.java
@@ -37,7 +37,7 @@ public class DateLongSwap extends PojoSwap<Date,Long> {
 	 * Converts the specified {@link Long} to a {@link Date}.
 	 */
 	@Override /* PojoSwap */
-	public Date unswap(Long o, ClassMeta<?> hint) throws ParseException {
+	public Date unswap(Long o, ClassMeta<?> hint, BeanContext bc) throws ParseException {
 		Class<?> c = (hint == null ? java.util.Date.class : hint.getInnerClass());
 		if (c == java.util.Date.class)
 			return new java.util.Date(o);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/transforms/DateMapSwap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transforms/DateMapSwap.java b/juneau-core/src/main/java/org/apache/juneau/transforms/DateMapSwap.java
index 4120547..c1e579d 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transforms/DateMapSwap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transforms/DateMapSwap.java
@@ -40,7 +40,7 @@ public class DateMapSwap extends PojoSwap<Date,Map> {
 	 * Converts the specified {@link Map} to a {@link Date}.
 	 */
 	@Override /* PojoSwap */
-	public Date unswap(Map o, ClassMeta<?> hint) throws ParseException {
+	public Date unswap(Map o, ClassMeta<?> hint, BeanContext bc) throws ParseException {
 		Class<?> c = (hint == null ? java.util.Date.class : hint.getInnerClass());
 		long l = Long.parseLong(((Map<?,?>)o).get("time").toString());
 		if (c == java.util.Date.class)

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/transforms/DateSwap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/transforms/DateSwap.java b/juneau-core/src/main/java/org/apache/juneau/transforms/DateSwap.java
index dd66c13..fc60bc6 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transforms/DateSwap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transforms/DateSwap.java
@@ -110,7 +110,7 @@ public class DateSwap extends PojoSwap<Date,String> {
 		}
 
 		@Override /* PojoSwap */
-		public Date unswap(String o, ClassMeta<?> hint) throws ParseException {
+		public Date unswap(String o, ClassMeta<?> hint, BeanContext bc) throws ParseException {
 			try {
 				if (StringUtils.isEmpty(o))
 					return null;
@@ -180,7 +180,7 @@ public class DateSwap extends PojoSwap<Date,String> {
 		}
 
 		@Override /* PojoSwap */
-		public Date unswap(String o, ClassMeta<?> hint) throws ParseException {
+		public Date unswap(String o, ClassMeta<?> hint, BeanContext bc) throws ParseException {
 			try {
 				if (StringUtils.isEmpty(o))
 					return null;
@@ -338,7 +338,7 @@ public class DateSwap extends PojoSwap<Date,String> {
 	 * Converts the specified {@link String} to a {@link Date}.
 	 */
 	@Override /* PojoSwap */
-	public Date unswap(String o, ClassMeta<?> hint) throws ParseException {
+	public Date unswap(String o, ClassMeta<?> hint, BeanContext bc) throws ParseException {
 		try {
 			if (StringUtils.isEmpty(o))
 				return null;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonParser.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonParser.java
index 29dc2bb..7fb1fb0 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonParser.java
@@ -94,7 +94,7 @@ public class UonParser extends ReaderParser {
 		if (nt == null)
 			nt = (ClassMeta<T>)object();
 		PojoSwap<T,Object> transform = (PojoSwap<T,Object>)nt.getPojoSwap();
-		ClassMeta<?> ft = nt.getTransformedClassMeta();
+		ClassMeta<?> ft = nt.getSerializedClassMeta();
 
 		Object o = null;
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java
index a1d1598..2e5ef25 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UonSerializer.java
@@ -270,15 +270,15 @@ public class UonSerializer extends WriterSerializer {
 			aType = object();
 		}
 
-		gType = aType.getTransformedClassMeta();
+		gType = aType.getSerializedClassMeta();
 		addClassAttr = (session.isAddClassAttrs() && ! eType.equals(aType));
 
-		// Transform if necessary
-		PojoSwap transform = aType.getPojoSwap();				// The transform
-		if (transform != null) {
-			o = transform.swap(o, bc);
+		// Swap if necessary
+		PojoSwap swap = aType.getPojoSwap();
+		if (swap != null) {
+			o = swap.swap(o, bc);
 
-			// If the transform's getTransformedClass() method returns Object, we need to figure out
+			// If the getSwapClass() method returns Object, we need to figure out
 			// the actual type now.
 			if (gType.isObject())
 				gType = bc.getClassMetaForObject(o);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
index a278ea9..460a0a1 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingParser.java
@@ -75,7 +75,7 @@ public class UrlEncodingParser extends UonParser {
 		if (nt == null)
 			nt = (ClassMeta<T>)object();
 		PojoSwap<T,Object> transform = (PojoSwap<T,Object>)nt.getPojoSwap();
-		ClassMeta<?> ft = nt.getTransformedClassMeta();
+		ClassMeta<?> ft = nt.getSerializedClassMeta();
 
 		int c = r.peek();
 		if (c == '?')

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/ceeb6738/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
index c0114dc..4b9f4fd 100644
--- a/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
+++ b/juneau-core/src/main/java/org/apache/juneau/urlencoding/UrlEncodingSerializer.java
@@ -237,15 +237,15 @@ public class UrlEncodingSerializer extends UonSerializer {
 		if (aType == null)
 			aType = object();
 
-		gType = aType.getTransformedClassMeta();
+		gType = aType.getSerializedClassMeta();
 		addClassAttr = (session.isAddClassAttrs());
 
-		// Transform if necessary
-		PojoSwap transform = aType.getPojoSwap();				// The transform
-		if (transform != null) {
-			o = transform.swap(o, bc);
+		// Swap if necessary
+		PojoSwap swap = aType.getPojoSwap();
+		if (swap != null) {
+			o = swap.swap(o, bc);
 
-			// If the transform's getTransformedClass() method returns Object, we need to figure out
+			// If the getSwapClass() method returns Object, we need to figure out
 			// the actual type now.
 			if (gType.isObject())
 				gType = bc.getClassMetaForObject(o);