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

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

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