Repository: incubator-juneau
Updated Branches:
  refs/heads/master 0161c8295 -> 3a87c80b0


Simplify construction of Transform objects.

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

Branch: refs/heads/master
Commit: 3a87c80b0a17d4d8dc3fea68ff15bb05c7f6b7d6
Parents: 0161c82
Author: jamesbognar <jamesbog...@gmail.com>
Authored: Sat Aug 27 12:33:09 2016 -0400
Committer: jamesbognar <jamesbog...@gmail.com>
Committed: Sat Aug 27 15:04:19 2016 -0400

----------------------------------------------------------------------
 .../java/org/apache/juneau/BeanContext.java     | 29 +++----
 .../org/apache/juneau/BeanPropertyMeta.java     | 18 ++--
 .../main/java/org/apache/juneau/ClassMeta.java  |  9 +-
 .../main/java/org/apache/juneau/ObjectMap.java  |  2 +-
 .../org/apache/juneau/dto/cognos/DataSet.java   |  2 +-
 .../apache/juneau/dto/jsonschema/Schema.java    | 12 +--
 .../java/org/apache/juneau/html/HtmlParser.java |  2 +-
 .../org/apache/juneau/html/HtmlSerializer.java  |  6 +-
 .../java/org/apache/juneau/jena/RdfParser.java  |  2 +-
 .../org/apache/juneau/jena/RdfSerializer.java   |  4 +-
 .../java/org/apache/juneau/json/JsonParser.java |  4 +-
 .../org/apache/juneau/json/JsonSerializer.java  |  2 +-
 .../apache/juneau/msgpack/MsgPackParser.java    |  2 +-
 .../juneau/msgpack/MsgPackSerializer.java       |  2 +-
 .../java/org/apache/juneau/parser/Parser.java   |  2 +-
 .../juneau/serializer/SerializerSession.java    |  2 +-
 .../org/apache/juneau/transform/PojoSwap.java   | 90 +++++++++++++++-----
 .../apache/juneau/transform/SurrogateSwap.java  |  2 +-
 .../org/apache/juneau/transform/Transform.java  | 33 -------
 .../juneau/transforms/ByteArrayBase64Swap.java  |  3 +-
 .../juneau/transforms/CalendarLongSwap.java     |  4 +-
 .../juneau/transforms/CalendarMapSwap.java      |  4 +-
 .../apache/juneau/transforms/ReaderSwap.java    |  5 +-
 .../transforms/XMLGregorianCalendarSwap.java    |  3 +-
 .../apache/juneau/urlencoding/UonParser.java    |  2 +-
 .../juneau/urlencoding/UonSerializer.java       |  2 +-
 .../juneau/urlencoding/UrlEncodingParser.java   |  2 +-
 .../urlencoding/UrlEncodingSerializer.java      |  2 +-
 .../java/org/apache/juneau/xml/XmlParser.java   |  2 +-
 .../org/apache/juneau/xml/XmlSerializer.java    |  2 +-
 .../java/org/apache/juneau/PojoSwapTest.java    |  2 +-
 .../a/rttests/RoundTripTransformBeansTest.java  |  2 +-
 .../apache/juneau/server/TestTransforms.java    |  7 +-
 .../server/converters/Introspectable.java       |  2 +-
 .../juneau/server/converters/Queryable.java     |  2 +-
 .../juneau/server/converters/Traversable.java   |  2 +-
 36 files changed, 132 insertions(+), 141 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 f32e46e..a43c36b 100644
--- a/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanContext.java
@@ -583,15 +583,10 @@ public class BeanContext extends Context {
                for (Class<?> c : pm.get(BEAN_transforms, Class[].class, new 
Class[0])) {
                        if (isParentClass(Transform.class, c)) {
                                try {
-                                       if (isParentClass(BeanFilter.class, c)) 
{
-                                               BeanFilter<?> f = 
(BeanFilter<?>)c.newInstance();
-                                               //f.setBeanContext(this);
-                                               lbf.add(f);
-                                       } else if 
(isParentClass(PojoSwap.class, c)) {
-                                               PojoSwap<?,?> f = 
(PojoSwap<?,?>)c.newInstance();
-                                               f.setBeanContext(this);
-                                               lpf.add(f);
-                                       }
+                                       if (isParentClass(BeanFilter.class, c)) 
+                                               
lbf.add((BeanFilter<?>)c.newInstance());
+                                       else if (isParentClass(PojoSwap.class, 
c)) 
+                                               
lpf.add((PojoSwap<?,?>)c.newInstance());
                                } catch (Exception e) {
                                        throw new RuntimeException(e);
                                }
@@ -599,16 +594,12 @@ public class BeanContext extends Context {
                                if (! c.getClass().isInterface()) {
                                        List<SurrogateSwap<?,?>> l = 
SurrogateSwap.findTransforms(c);
                                        if (! l.isEmpty()) {
-                                               for (SurrogateSwap<?,?> f : l) {
-                                                       f.setBeanContext(this);
+                                               for (SurrogateSwap<?,?> f : l)
                                                        lpf.add(f);
-                                               }
                                                continue;
                                        }
                                }
-                               BeanFilter<?> f = new InterfaceBeanFilter(c);
-                               f.setBeanContext(this);
-                               lbf.add(f);
+                               lbf.add(new InterfaceBeanFilter(c));
                        }
                }
                beanFilters = lbf.toArray(new BeanFilter[0]);
@@ -1736,17 +1727,17 @@ public class BeanContext extends Context {
 
                        if (type.getPojoSwap() != null) {
                                PojoSwap f = type.getPojoSwap();
-                               Class<?> nc = f.getNormalClass(), fc = 
f.getTransformedClass();
+                               Class<?> nc = f.getNormalClass(), fc = 
f.getSwapClass();
                                if (isParentClass(nc, tc) && isParentClass(fc, 
value.getClass()))
-                                       return (T)f.unswap(value, type);
+                                       return (T)f.unswap(value, type, this);
                        }
 
                        ClassMeta<?> vt = getClassMetaForObject(value);
                        if (vt.getPojoSwap() != null) {
                                PojoSwap f = vt.getPojoSwap();
-                               Class<?> nc = f.getNormalClass(), fc = 
f.getTransformedClass();
+                               Class<?> nc = f.getNormalClass(), fc = 
f.getSwapClass();
                                if (isParentClass(nc, vt.getInnerClass()) && 
isParentClass(fc, tc))
-                                       return (T)f.swap(value);
+                                       return (T)f.swap(value, this);
                        }
 
                        if (type.isPrimitive()) {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 52c7898..7a52c86 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.getTransformedClassMeta() : rawTypeMeta == null ? 
beanMeta.ctx.object() : rawTypeMeta.getTransformedClassMeta());
+                       typeMeta = (transform != null ? 
transform.getSwapClassMeta(beanMeta.ctx) : rawTypeMeta == null ? 
beanMeta.ctx.object() : rawTypeMeta.getTransformedClassMeta());
                return typeMeta;
        }
 
@@ -305,9 +305,7 @@ public class BeanPropertyMeta {
                        return null;
                try {
                        if (ClassUtils.isParentClass(PojoSwap.class, c)) {
-                               PojoSwap f = (PojoSwap)c.newInstance();
-                               f.setBeanContext(this.beanMeta.ctx);
-                               return f;
+                               return (PojoSwap)c.newInstance();
                        }
                        throw new RuntimeException("TODO - Surrogate swaps not 
yet supported.");
                } catch (Exception e) {
@@ -551,8 +549,8 @@ public class BeanPropertyMeta {
                                }
 
                        } else {
-                               if (transform != null && value != null && 
isParentClass(transform.getTransformedClass(), value.getClass())) {
-                                               value = transform.unswap(value, 
rawTypeMeta);
+                               if (transform != null && value != null && 
isParentClass(transform.getSwapClass(), value.getClass())) {
+                                               value = transform.unswap(value, 
rawTypeMeta, beanMeta.ctx);
                                } else {
                                                value = 
beanMeta.ctx.convertToType(value, rawTypeMeta);
                                        }
@@ -724,7 +722,7 @@ public class BeanPropertyMeta {
        private Object transform(Object o) throws SerializeException {
                // First use transform defined via @BeanProperty.
                if (transform != null)
-                       return transform.swap(o);
+                       return transform.swap(o, beanMeta.ctx);
                if (o == null)
                        return null;
                // Otherwise, look it up via bean context.
@@ -733,14 +731,14 @@ public class BeanPropertyMeta {
                        ClassMeta<?> cm = rawTypeMeta.innerClass == c ? 
rawTypeMeta : beanMeta.ctx.getClassMeta(c);
                        PojoSwap f = cm.getPojoSwap();
                        if (f != null)
-                               return f.swap(o);
+                               return f.swap(o, beanMeta.ctx);
                }
                return o;
        }
 
        private Object unswap(Object o) throws ParseException {
                if (transform != null)
-                       return transform.unswap(o, rawTypeMeta);
+                       return transform.unswap(o, rawTypeMeta, beanMeta.ctx);
                if (o == null)
                        return null;
                if (rawTypeMeta.hasChildPojoSwaps()) {
@@ -748,7 +746,7 @@ public class BeanPropertyMeta {
                        ClassMeta<?> cm = rawTypeMeta.innerClass == c ? 
rawTypeMeta : beanMeta.ctx.getClassMeta(c);
                        PojoSwap f = cm.getPojoSwap();
                        if (f != null)
-                               return f.unswap(o, rawTypeMeta);
+                               return f.unswap(o, rawTypeMeta, beanMeta.ctx);
                }
                return o;
        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 d234b84..c603855 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
@@ -133,7 +133,7 @@ public final class ClassMeta<T> implements Type {
                                        beanFilter = (BeanFilter)transform;
                                else
                                        pojoSwap = (PojoSwap)transform;
-                               transformedClassMeta = (pojoSwap == null ? this 
: beanContext.getClassMeta(pojoSwap.getTransformedClass()));
+                               transformedClassMeta = (pojoSwap == null ? this 
: beanContext.getClassMeta(pojoSwap.getSwapClass()));
                        }
                        if (transformedClassMeta == null)
                                transformedClassMeta = this;
@@ -435,11 +435,8 @@ public final class ClassMeta<T> implements Type {
                        if (b != null) {
                                Class<?> c = b.swap();
                                if (c != Null.class) {
-                                       if 
(ClassUtils.isParentClass(PojoSwap.class, c)) {
-                                               Transform f = 
(Transform)c.newInstance();
-                                               f.setBeanContext(context);
-                                               return f;
-                                       }
+                                       if 
(ClassUtils.isParentClass(PojoSwap.class, c)) 
+                                               return 
(Transform)c.newInstance();
                                        throw new RuntimeException("TODO - 
Surrogate classes not yet supported.");
                                }
                        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java 
b/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
index 507c827..7237cf5 100644
--- a/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ObjectMap.java
@@ -361,7 +361,7 @@ public class ObjectMap extends LinkedHashMap<String,Object> 
{
                if (o == null)
                        return null;
                PojoSwap f = transform;
-               return (T)f.unswap(o, null);
+               return (T)f.unswap(o, null, beanContext);
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 77c770f..66ed6c8 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
@@ -112,7 +112,7 @@ public class DataSet {
                                        for (Column col : columns) {
                                                Object v;
                                                if (col.transform != null)
-                                                       v = 
col.transform.swap(o2);
+                                                       v = 
col.transform.swap(o2, beanContext);
                                                else
                                                        v = 
m.get(col.getName());
                                                r.add(v == null ? null : 
v.toString());

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/Schema.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/Schema.java 
b/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/Schema.java
index bcbee9d..45dcf6c 100644
--- a/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/Schema.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/Schema.java
@@ -300,8 +300,7 @@ public class Schema {
                }
 
                @Override /* PojoSwap */
-               public Object unswap(Object o, ClassMeta<?> hint) throws 
ParseException {
-                       BeanContext bc = getBeanContext();
+               public Object unswap(Object o, ClassMeta<?> hint, BeanContext 
bc) throws ParseException {
                        ClassMeta<?> cm = (o instanceof Collection ? 
bc.getClassMeta(JsonTypeArray.class) : bc.getClassMeta(JsonType.class));
                        return bc.convertToType(o, cm);
                }
@@ -561,8 +560,7 @@ public class Schema {
                }
 
                @Override /* PojoSwap */
-               public Object unswap(Object o, ClassMeta<?> hint) throws 
ParseException {
-                       BeanContext bc = getBeanContext();
+               public Object unswap(Object o, ClassMeta<?> hint, BeanContext 
bc) throws ParseException {
                        ClassMeta<?> cm = (o instanceof Collection ? 
bc.getClassMeta(SchemaArray.class) : bc.getClassMeta(Schema.class));
                        return bc.convertToType(o, cm);
                }
@@ -856,8 +854,7 @@ public class Schema {
                }
 
                @Override /* PojoSwap */
-               public Object unswap(Object o, ClassMeta<?> hint) throws 
ParseException {
-                       BeanContext bc = getBeanContext();
+               public Object unswap(Object o, ClassMeta<?> hint, BeanContext 
bc) throws ParseException {
                        ClassMeta<?> cm = (o instanceof Collection ? 
bc.getClassMeta(SchemaArray.class) : bc.getClassMeta(Boolean.class));
                        return bc.convertToType(o, cm);
                }
@@ -1101,8 +1098,7 @@ public class Schema {
                }
 
                @Override /* PojoSwap */
-               public Object unswap(Object o, ClassMeta<?> hint) throws 
ParseException {
-                       BeanContext bc = getBeanContext();
+               public Object unswap(Object o, ClassMeta<?> hint, BeanContext 
bc) throws ParseException {
                        ClassMeta<?> cm = (o instanceof Boolean ? 
bc.getClassMeta(Boolean.class) : bc.getClassMeta(Schema.class));
                        return bc.convertToType(o, cm);
                }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 6cdc4cd..3f74cd4 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
@@ -195,7 +195,7 @@ public final class HtmlParser extends ReaderParser {
 
 
                if (transform != null && o != null)
-                       o = transform.unswap(o, nt);
+                       o = transform.unswap(o, nt, bc);
 
                if (outer != null)
                        setParent(nt, o, outer);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 664f266..361509f 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
@@ -224,7 +224,7 @@ public class HtmlSerializer extends XmlSerializer {
                        // Transform if necessary
                        PojoSwap transform = aType.getPojoSwap();
                        if (transform != null) {
-                               o = transform.swap(o);
+                               o = transform.swap(o, bc);
 
                                // If the transforms getTransformedClass() 
method returns Object, we need to figure out
                                // the actual type now.
@@ -411,7 +411,7 @@ public class HtmlSerializer extends XmlSerializer {
 
                                if (cm != null && cm.getPojoSwap() != null) {
                                        PojoSwap f = cm.getPojoSwap();
-                                       o = f.swap(o);
+                                       o = f.swap(o, bc);
                                        cm = cm.getTransformedClassMeta();
                                }
 
@@ -489,7 +489,7 @@ public class HtmlSerializer extends XmlSerializer {
                ClassMeta<?> cm = bc.getClassMetaForObject(o1);
                if (cm.getPojoSwap() != null) {
                        PojoSwap f = cm.getPojoSwap();
-                       o1 = f.swap(o1);
+                       o1 = f.swap(o1, bc);
                        cm = cm.getTransformedClassMeta();
                }
                if (cm == null || ! (cm.isMap() || cm.isBean()))

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 3b7ae14..d968f61 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
@@ -353,7 +353,7 @@ public class RdfParser extends ReaderParser {
                }
 
                if (transform != null && o != null)
-                       o = transform.unswap(o, nt);
+                       o = transform.unswap(o, nt, bc);
 
                if (outer != null)
                        setParent(nt, o, outer);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 5f464e1..3612162 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
@@ -182,7 +182,7 @@ public class RdfSerializer extends WriterSerializer {
                        // Transform if necessary
                        PojoSwap transform = aType.getPojoSwap();
                        if (transform != null) {
-                               o = transform.swap(o);
+                               o = transform.swap(o, bc);
 
                                // If the transforms getTransformedClass() 
method returns Object, we need to figure out
                                // the actual type now.
@@ -244,7 +244,7 @@ public class RdfSerializer extends WriterSerializer {
                        RdfCollectionFormat f = session.getCollectionFormat();
                        RdfClassMeta rcm = 
gType.getExtendedMeta(RdfClassMeta.class);
                        if (rcm.getCollectionFormat() != 
RdfCollectionFormat.DEFAULT)
-                               f = rcm.getCollectionFormat(); 
+                               f = rcm.getCollectionFormat();
                        if (bpm != null && 
bpm.getExtendedMeta(RdfBeanPropertyMeta.class).getCollectionFormat() != 
RdfCollectionFormat.DEFAULT)
                                f = 
bpm.getExtendedMeta(RdfBeanPropertyMeta.class).getCollectionFormat();
                        switch (f) {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 1930874..adfe20a 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
@@ -109,7 +109,7 @@ public final class JsonParser extends ReaderParser {
                session.setCurrentClass(ft);
                String wrapperAttr = 
ft.getExtendedMeta(JsonClassMeta.class).getWrapperAttr();
 
-               Object o = null; 
+               Object o = null;
 
                skipCommentsAndSpace(session, r);
                if (wrapperAttr != null)
@@ -202,7 +202,7 @@ public final class JsonParser extends ReaderParser {
                        skipWrapperAttrEnd(session, r);
 
                if (transform != null && o != null)
-                       o = transform.unswap(o, nt);
+                       o = transform.unswap(o, nt, bc);
 
                if (outer != null)
                        setParent(nt, o, outer);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 119c9e4..6b78de4 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
@@ -190,7 +190,7 @@ public class JsonSerializer extends WriterSerializer {
                // Transform if necessary
                PojoSwap transform = aType.getPojoSwap();                       
        // The transform
                if (transform != null) {
-                       o = transform.swap(o);
+                       o = transform.swap(o, bc);
 
                        // If the transform's getTransformedClass() method 
returns Object, we need to figure out
                        // the actual type now.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 a22242b..893d0a4 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
@@ -182,7 +182,7 @@ public final class MsgPackParser extends InputStreamParser {
                }
 
                if (transform != null && o != null)
-                       o = transform.unswap(o, nt);
+                       o = transform.unswap(o, nt, bc);
 
                if (outer != null)
                        setParent(nt, o, outer);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 8795869..66905ae 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
@@ -80,7 +80,7 @@ public class MsgPackSerializer extends OutputStreamSerializer 
{
                // Transform if necessary
                PojoSwap transform = aType.getPojoSwap();                       
        // The transform
                if (transform != null) {
-                       o = transform.swap(o);
+                       o = transform.swap(o, bc);
 
                        // If the transform's getTransformedClass() method 
returns Object, we need to figure out
                        // the actual type now.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 9a858b1..5ce5aac 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
@@ -600,7 +600,7 @@ public abstract class Parser extends CoreApi {
                }
 
                if (transform != null)
-                       o = transform.unswap(o, type);
+                       o = transform.unswap(o, type, session.getBeanContext());
 
                return (T)o;
        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 f7d070a..5595a7e 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
@@ -540,7 +540,7 @@ public class SerializerSession extends Session {
                PojoSwap f = (type == null || type.isObject() ? 
getBeanContext().getClassMeta(o.getClass()).getPojoSwap() : type.getPojoSwap());
                if (f == null)
                        return o;
-               return f.swap(o);
+               return f.swap(o, getBeanContext());
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 1fefd2c..c208e96 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
@@ -21,7 +21,7 @@ import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 
 /**
- * Used to convert non-serializable objects to a serializable form.
+ * Used to swap out non-serializable objects with serializable replacements 
during serialization, and vis-versa during parsing.
  *
  *
  * <h6 class='topic'>Description</h6>
@@ -72,10 +72,10 @@ import org.apache.juneau.serializer.*;
  * <h6 class='topic'>One-way vs. Two-way Serialization</h6>
  * <p>
  *     Note that while there is a unified interface for handling swaps during 
both serialization and parsing,
- *     in many cases only one of the {@link #swap(Object)} or {@link 
#unswap(Object, ClassMeta)} methods will be defined
+ *     in many cases only one of the {@link #swap(Object)} or {@link 
#unswap(Object)} methods will be defined
  *     because the swap is one-way.  For example, a swap may be defined to 
convert an {@code Iterator} to a {@code ObjectList}, but
- *     it's not possible to unswap an {@code Iterator}.  In that case, the 
{@code generalize(Object}} method would
- *     be implemented, but the {@code narrow(ObjectMap)} object would not, and 
the swap would be associated on
+ *     it's not possible to unswap an {@code Iterator}.  In that case, the 
{@code swap(Object}} method would
+ *     be implemented, but the {@code unswap(ObjectMap)} object would not, and 
the swap would be associated on
  *     the serializer, but not the parser.  Also, you may choose to serialize 
objects like {@code Dates} to readable {@code Strings},
  *     in which case it's not possible to reparse it back into a {@code Date}, 
since there is no way for the {@code Parser} to
  *     know it's a {@code Date} from just the JSON or XML text.
@@ -92,8 +92,8 @@ import org.apache.juneau.serializer.*;
 public abstract class PojoSwap<T,S> extends Transform {
 
        Class<T> normalClass;
-       Class<S> transformedClass;
-       ClassMeta<S> transformedClassMeta;
+       Class<S> swapClass;
+       ClassMeta<S> swapClassMeta;
 
        /**
         * Constructor.
@@ -131,9 +131,9 @@ public abstract class PojoSwap<T,S> extends Transform {
                                } else
                                        throw new RuntimeException("Unsupported 
parameter type: " + nType);
                                if (pta[1] instanceof Class)
-                                       this.transformedClass = 
(Class<S>)pta[1];
+                                       this.swapClass = (Class<S>)pta[1];
                                else if (pta[1] instanceof ParameterizedType)
-                                       this.transformedClass = 
(Class<S>)((ParameterizedType)pta[1]).getRawType();
+                                       this.swapClass = 
(Class<S>)((ParameterizedType)pta[1]).getRawType();
                                else
                                        throw new RuntimeException("Unexpected 
transformed class type: " + pta[1].getClass().getName());
                        }
@@ -144,11 +144,11 @@ public abstract class PojoSwap<T,S> extends Transform {
         * Constructor for when the normal and transformed classes are already 
known.
         *
         * @param normalClass The normal class (cannot be serialized).
-        * @param transformedClass The transformed class (serializable).
+        * @param swapClass The transformed class (serializable).
         */
-       protected PojoSwap(Class<T> normalClass, Class<S> transformedClass) {
+       protected PojoSwap(Class<T> normalClass, Class<S> swapClass) {
                this.normalClass = normalClass;
-               this.transformedClass = transformedClass;
+               this.swapClass = swapClass;
        }
 
        /**
@@ -174,9 +174,35 @@ public abstract class PojoSwap<T,S> extends Transform {
        }
 
        /**
+        *      Same as {@link #swap(Object)}, but override this method instead 
if you want access to the bean context that created this swap.
+        *
+        * @param o The object to be transformed.
+        * @param beanContext The bean context to use to get the class meta.
+        *      This is always going to be the same bean context that created 
this swap.
+        * @return The transformed object.
+        * @throws SerializeException If a problem occurred trying to convert 
the output.
+        */
+       public S swap(T o, BeanContext beanContext) throws SerializeException {
+               return swap(o);
+       }
+
+       /**
         * If this transform is to be used to reconstitute POJOs that aren't 
true Java beans, it must implement this method.
         *
         * @param f The transformed object.
+        *      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) throws ParseException {
+               throw new ParseException("Narrow method not implemented on 
transform ''{0}''", this.getClass().getName());
+       }
+
+       /**
+        *      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.
@@ -184,7 +210,23 @@ public abstract class PojoSwap<T,S> extends Transform {
         * @throws ParseException If this method is not implemented.
         */
        public T unswap(S f, ClassMeta<?> hint) throws ParseException {
-               throw new ParseException("Narrow method not implemented on 
transform ''{0}''", this.getClass().getName());
+               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.
+        *
+        * @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.
+        * @param beanContext The bean context to use to get the class meta.
+        *      This is always going to be the same bean context that created 
this swap.
+        * @return The narrowed object.
+        * @throws ParseException If this method is not implemented.
+        */
+       public T unswap(S f, ClassMeta<?> hint, BeanContext beanContext) throws 
ParseException {
+               return unswap(f, hint);
        }
 
        /**
@@ -204,24 +246,26 @@ public abstract class PojoSwap<T,S> extends Transform {
         *
         * @return The transformed form of this class.
         */
-       public Class<S> getTransformedClass() {
-               return transformedClass;
+       public Class<S> getSwapClass() {
+               return swapClass;
        }
 
        /**
         * Returns the {@link ClassMeta} of the transformed class type.
         * This value is cached for quick lookup.
         *
+        * @param beanContext The bean context to use to get the class meta.
+        *      This is always going to be the same bean context that created 
this swap.
         * @return The {@link ClassMeta} of the transformed class type.
         */
-       public ClassMeta<S> getTransformedClassMeta() {
-               if (transformedClassMeta == null)
-                       transformedClassMeta = 
beanContext.getClassMeta(transformedClass);
-               return transformedClassMeta;
+       public ClassMeta<S> getSwapClassMeta(BeanContext beanContext) {
+               if (swapClassMeta == null)
+                       swapClassMeta = beanContext.getClassMeta(swapClass);
+               return swapClassMeta;
        }
 
        /**
-        * Checks if the specified object is an instance of the normal class 
defined on this transform.
+        * Checks if the specified object is an instance of the normal class 
defined on this swap.
         *
         * @param o The object to check.
         * @return <jk>true</jk> if the specified object is a subclass of the 
normal class defined on this transform.
@@ -234,16 +278,16 @@ public abstract class PojoSwap<T,S> extends Transform {
        }
 
        /**
-        * Checks if the specified object is an instance of the transformed 
class defined on this transform.
+        * Checks if the specified object is an instance of the swap class 
defined on this swap.
         *
         * @param o The object to check.
         * @return <jk>true</jk> if the specified object is a subclass of the 
transformed class defined on this transform.
         *      <jk>null</jk> always return <jk>false</jk>.
         */
-       public boolean isTransformedObject(Object o) {
+       public boolean isSwappedObject(Object o) {
                if (o == null)
                        return false;
-               return ClassUtils.isParentClass(transformedClass, o.getClass());
+               return ClassUtils.isParentClass(swapClass, o.getClass());
        }
 
        
//--------------------------------------------------------------------------------
@@ -257,6 +301,6 @@ public abstract class PojoSwap<T,S> extends Transform {
 
        @Override /* Object */
        public String toString() {
-               return getClass().getSimpleName() + '<' + 
getNormalClass().getSimpleName() + "," + getTransformedClass().getSimpleName() 
+ '>';
+               return getClass().getSimpleName() + '<' + 
getNormalClass().getSimpleName() + "," + getSwapClass().getSimpleName() + '>';
        }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 f1164cc..5071121 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
@@ -195,7 +195,7 @@ public class SurrogateSwap<T,F> extends PojoSwap<T,F> {
 
        @Override /* PojoSwap */
        @SuppressWarnings("unchecked")
-       public T unswap(F f, ClassMeta<?> hint) throws ParseException {
+       public T unswap(F f) throws ParseException {
                if (untransformMethod == null)
                        throw new ParseException("static valueOf({0}) method 
not implement on surrogate class ''{1}''", f.getClass().getName(), 
getNormalClass().getName());
                try {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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
index c6ea8a4..010b3d1 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transform/Transform.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transform/Transform.java
@@ -57,9 +57,6 @@ public class Transform {
        /** The class that this transform applies to. */
        protected Class<?> forClass;
 
-       /** The bean context that this transform instance belongs to. */
-       protected BeanContext beanContext;
-
        /** Whether this is a BeanFilter or PojoSwap. */
        protected TransformType type = TransformType.POJO;
 
@@ -98,38 +95,8 @@ public class Transform {
                return type;
        }
 
-       /**
-        * Returns the {@link BeanContext} that created this transform.
-        *
-        * @return The bean context that created this transform.
-        */
-       protected BeanContext getBeanContext() {
-               return beanContext;
-       }
-
-       /**
-        * Sets the bean context that this transform instance was created by.
-        *
-        * @param beanContext The bean context that created this transform.
-        * @return This object (for method chaining).
-        */
-       public Transform setBeanContext(BeanContext beanContext) {
-               this.beanContext = beanContext;
-               return this;
-       }
-
        @Override /* Object */
        public int hashCode() {
                return getClass().getName().hashCode() + 
forClass().getName().hashCode();
        }
-
-       /**
-        * Checks if the specified transform class is the same as this one.
-        *
-        * @param f The transform to check.
-        * @return <jk>true</jk> if the specified transform is equivalent to 
this one.
-        */
-       public boolean isSameAs(Transform f) {
-               return f.getClass().equals(getClass()) && 
f.forClass().equals(forClass());
-       }
 }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/juneau-core/src/main/java/org/apache/juneau/transforms/ByteArrayBase64Swap.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/transforms/ByteArrayBase64Swap.java
 
b/juneau-core/src/main/java/org/apache/juneau/transforms/ByteArrayBase64Swap.java
index 5f8e584..597d909 100644
--- 
a/juneau-core/src/main/java/org/apache/juneau/transforms/ByteArrayBase64Swap.java
+++ 
b/juneau-core/src/main/java/org/apache/juneau/transforms/ByteArrayBase64Swap.java
@@ -12,7 +12,6 @@
  
***************************************************************************************************************************/
 package org.apache.juneau.transforms;
 
-import org.apache.juneau.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
@@ -41,7 +40,7 @@ public class ByteArrayBase64Swap extends 
PojoSwap<byte[],String> {
         * Converts the specified {@link String} to a 
<code><jk>byte</jk>[]</code>.
         */
        @Override /* PojoSwap */
-       public byte[] unswap(String s, ClassMeta<?> hint) throws ParseException 
{
+       public byte[] unswap(String s) throws ParseException {
                try {
                        return StringUtils.base64Decode(s);
                } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarLongSwap.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarLongSwap.java 
b/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarLongSwap.java
index 551c31c..ae5e8d0 100644
--- 
a/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarLongSwap.java
+++ 
b/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarLongSwap.java
@@ -38,11 +38,11 @@ public class CalendarLongSwap extends 
PojoSwap<Calendar,Long> {
         */
        @Override /* PojoSwap */
        @SuppressWarnings("unchecked")
-       public Calendar unswap(Long o, ClassMeta<?> hint) throws ParseException 
{
+       public Calendar unswap(Long o, ClassMeta<?> hint, BeanContext bc) 
throws ParseException {
                ClassMeta<? extends Calendar> tt;
                try {
                        if (hint == null || ! hint.canCreateNewInstance())
-                               hint = 
getBeanContext().getClassMeta(GregorianCalendar.class);
+                               hint = bc.getClassMeta(GregorianCalendar.class);
                        tt = (ClassMeta<? extends Calendar>)hint;
                        Calendar c = tt.newInstance();
                        c.setTimeInMillis(o);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarMapSwap.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarMapSwap.java 
b/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarMapSwap.java
index 0dcd0d7..0bce08c 100644
--- 
a/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarMapSwap.java
+++ 
b/juneau-core/src/main/java/org/apache/juneau/transforms/CalendarMapSwap.java
@@ -42,11 +42,11 @@ public class CalendarMapSwap extends PojoSwap<Calendar,Map> 
{
         */
        @Override /* PojoSwap */
        @SuppressWarnings("unchecked")
-       public Calendar unswap(Map o, ClassMeta<?> hint) throws ParseException {
+       public Calendar unswap(Map o, ClassMeta<?> hint, BeanContext bc) throws 
ParseException {
                ClassMeta<? extends Calendar> tt;
                try {
                        if (hint == null || ! hint.canCreateNewInstance())
-                               hint = 
getBeanContext().getClassMeta(GregorianCalendar.class);
+                               hint = bc.getClassMeta(GregorianCalendar.class);
                        tt = (ClassMeta<? extends Calendar>)hint;
                        long time = Long.parseLong(o.get("time").toString());
                        String timeZone = o.get("timeZone").toString();

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/juneau-core/src/main/java/org/apache/juneau/transforms/ReaderSwap.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/transforms/ReaderSwap.java 
b/juneau-core/src/main/java/org/apache/juneau/transforms/ReaderSwap.java
index f291521..930ef91 100644
--- a/juneau-core/src/main/java/org/apache/juneau/transforms/ReaderSwap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transforms/ReaderSwap.java
@@ -14,6 +14,7 @@ package org.apache.juneau.transforms;
 
 import java.io.*;
 
+import org.apache.juneau.*;
 import org.apache.juneau.html.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.json.*;
@@ -98,11 +99,11 @@ public class ReaderSwap extends PojoSwap<Reader,Object> {
         * by the contents of the reader.
         */
        @Override /* PojoSwap */
-       public Object swap(Reader o) throws SerializeException {
+       public Object swap(Reader o, BeanContext bc) throws SerializeException {
                try {
                        if (parser == null)
                                return IOUtils.read(o);
-                       return parser.parse(o, beanContext.object());
+                       return parser.parse(o, bc.object());
                } catch (IOException e) {
                        return e.getLocalizedMessage();
                } catch (Exception e) {

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/juneau-core/src/main/java/org/apache/juneau/transforms/XMLGregorianCalendarSwap.java
----------------------------------------------------------------------
diff --git 
a/juneau-core/src/main/java/org/apache/juneau/transforms/XMLGregorianCalendarSwap.java
 
b/juneau-core/src/main/java/org/apache/juneau/transforms/XMLGregorianCalendarSwap.java
index c0d369c..7fcb4a8 100644
--- 
a/juneau-core/src/main/java/org/apache/juneau/transforms/XMLGregorianCalendarSwap.java
+++ 
b/juneau-core/src/main/java/org/apache/juneau/transforms/XMLGregorianCalendarSwap.java
@@ -14,7 +14,6 @@ package org.apache.juneau.transforms;
 
 import javax.xml.datatype.*;
 
-import org.apache.juneau.*;
 import org.apache.juneau.internal.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
@@ -56,7 +55,7 @@ public class XMLGregorianCalendarSwap extends 
PojoSwap<XMLGregorianCalendar,Stri
         * Converts the specified {@link String} to an 
<code>XMLGregorianCalendar</code>.
         */
        @Override /* PojoSwap */
-       public XMLGregorianCalendar unswap(String s, ClassMeta<?> hint) throws 
ParseException {
+       public XMLGregorianCalendar unswap(String s) throws ParseException {
                if (StringUtils.isEmpty(s))
                        return null;
                return dtf.newXMLGregorianCalendar(s);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 05a4311..30d976f 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
@@ -202,7 +202,7 @@ public class UonParser extends ReaderParser {
                }
 
                if (transform != null && o != null)
-                       o = transform.unswap(o, nt);
+                       o = transform.unswap(o, nt, bc);
 
                if (outer != null)
                        setParent(nt, o, outer);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 db3c13c..f886369 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
@@ -276,7 +276,7 @@ public class UonSerializer extends WriterSerializer {
                // Transform if necessary
                PojoSwap transform = aType.getPojoSwap();                       
        // The transform
                if (transform != null) {
-                       o = transform.swap(o);
+                       o = transform.swap(o, bc);
 
                        // If the transform's getTransformedClass() method 
returns Object, we need to figure out
                        // the actual type now.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 9e081c3..0a177f5 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
@@ -126,7 +126,7 @@ public class UrlEncodingParser extends UonParser {
                }
 
                if (transform != null && o != null)
-                       o = transform.unswap(o, nt);
+                       o = transform.unswap(o, nt, bc);
 
                if (outer != null)
                        setParent(nt, o, outer);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 9b7541d..2f059ef 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
@@ -243,7 +243,7 @@ public class UrlEncodingSerializer extends UonSerializer {
                // Transform if necessary
                PojoSwap transform = aType.getPojoSwap();                       
        // The transform
                if (transform != null) {
-                       o = transform.swap(o);
+                       o = transform.swap(o, bc);
 
                        // If the transform's getTransformedClass() method 
returns Object, we need to figure out
                        // the actual type now.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 f4b27af..250f7e7 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
@@ -171,7 +171,7 @@ public class XmlParser extends ReaderParser {
                }
 
                if (transform != null && o != null)
-                       o = transform.unswap(o, nt);
+                       o = transform.unswap(o, nt, bc);
 
                if (outer != null)
                        setParent(nt, o, outer);

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 2d9c285..7fb2135 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
@@ -329,7 +329,7 @@ public class XmlSerializer extends WriterSerializer {
                        // Transform if necessary
                        PojoSwap transform = aType.getPojoSwap();
                        if (transform != null) {
-                               o = transform.swap(o);
+                               o = transform.swap(o, bc);
 
                                // If the transform's getTransformedClass() 
method returns Object, we need to figure out
                                // the actual type now.

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/juneau-core/src/test/java/org/apache/juneau/PojoSwapTest.java
----------------------------------------------------------------------
diff --git a/juneau-core/src/test/java/org/apache/juneau/PojoSwapTest.java 
b/juneau-core/src/test/java/org/apache/juneau/PojoSwapTest.java
index 3867a34..acc702f 100755
--- a/juneau-core/src/test/java/org/apache/juneau/PojoSwapTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/PojoSwapTest.java
@@ -50,7 +50,7 @@ public class PojoSwapTest {
                }
 
                @Override
-               public String unswap(String f, ClassMeta<?> hint) throws 
ParseException {
+               public String unswap(String f) throws ParseException {
                        return f.substring(1, f.length()-1);
                }
        }

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/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 9eeb56c..12561cb 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
@@ -239,7 +239,7 @@ public class RoundTripTransformBeansTest extends 
RoundTripTest {
                        return o.f1;
                }
                @Override /* PojoSwap */
-               public B unswap(String f, ClassMeta<?> hint) throws 
ParseException {
+               public B unswap(String f) throws ParseException {
                        B b1 = new B();
                        b1.f1 = f;
                        return b1;

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/juneau-server-test/src/main/java/org/apache/juneau/server/TestTransforms.java
----------------------------------------------------------------------
diff --git 
a/juneau-server-test/src/main/java/org/apache/juneau/server/TestTransforms.java 
b/juneau-server-test/src/main/java/org/apache/juneau/server/TestTransforms.java
index 81a7b05..5918f06 100755
--- 
a/juneau-server-test/src/main/java/org/apache/juneau/server/TestTransforms.java
+++ 
b/juneau-server-test/src/main/java/org/apache/juneau/server/TestTransforms.java
@@ -13,7 +13,6 @@
 package org.apache.juneau.server;
 
 
-import org.apache.juneau.*;
 import org.apache.juneau.parser.*;
 import org.apache.juneau.serializer.*;
 import org.apache.juneau.server.annotation.*;
@@ -74,7 +73,7 @@ public class TestTransforms extends TestTransformsParent {
                        return "A1-" + a.f1;
                }
                @Override /* PojoSwap */
-               public A unswap(String in, ClassMeta<?> hint) throws 
ParseException {
+               public A unswap(String in) throws ParseException {
                        if (! in.startsWith("A1"))
                                throw new RuntimeException("Invalid input for 
SwapA1!");
                        A a = new A();
@@ -89,7 +88,7 @@ public class TestTransforms extends TestTransformsParent {
                        return "A2-" + a.f1;
                }
                @Override /* PojoSwap */
-               public A unswap(String in, ClassMeta<?> hint) throws 
ParseException {
+               public A unswap(String in) throws ParseException {
                        if (! in.startsWith("A2"))
                                throw new RuntimeException("Invalid input for 
SwapA2!");
                        A a = new A();
@@ -104,7 +103,7 @@ public class TestTransforms extends TestTransformsParent {
                        return "A3-" + a.f1;
                }
                @Override /* PojoSwap */
-               public A unswap(String in, ClassMeta<?> hint) throws 
ParseException {
+               public A unswap(String in) throws ParseException {
                        if (! in.startsWith("A3"))
                                throw new RuntimeException("Invalid input for 
SwapA3!");
                        A a = new A();

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/juneau-server/src/main/java/org/apache/juneau/server/converters/Introspectable.java
----------------------------------------------------------------------
diff --git 
a/juneau-server/src/main/java/org/apache/juneau/server/converters/Introspectable.java
 
b/juneau-server/src/main/java/org/apache/juneau/server/converters/Introspectable.java
index 0e05efa..effa3dc 100755
--- 
a/juneau-server/src/main/java/org/apache/juneau/server/converters/Introspectable.java
+++ 
b/juneau-server/src/main/java/org/apache/juneau/server/converters/Introspectable.java
@@ -46,7 +46,7 @@ public final class Introspectable implements RestConverter {
                        return o;
                try {
                        if (cm.getPojoSwap() != null)
-                               o = cm.getPojoSwap().swap(o);
+                               o = cm.getPojoSwap().swap(o, 
req.getBeanContext());
                        return new PojoIntrospector(o, 
JsonParser.DEFAULT).invokeMethod(method, args);
                } catch (Exception e) {
                        e.printStackTrace();

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/juneau-server/src/main/java/org/apache/juneau/server/converters/Queryable.java
----------------------------------------------------------------------
diff --git 
a/juneau-server/src/main/java/org/apache/juneau/server/converters/Queryable.java
 
b/juneau-server/src/main/java/org/apache/juneau/server/converters/Queryable.java
index 4aefba9..2e8de1b 100755
--- 
a/juneau-server/src/main/java/org/apache/juneau/server/converters/Queryable.java
+++ 
b/juneau-server/src/main/java/org/apache/juneau/server/converters/Queryable.java
@@ -65,7 +65,7 @@ public final class Queryable implements RestConverter {
                                BeanContext bc = req.getBeanContext();
 
                                if (cm.getPojoSwap() != null)
-                                       o = cm.getPojoSwap().swap(o);
+                                       o = cm.getPojoSwap().swap(o, bc);
 
                                PojoQuery f = new PojoQuery(o, bc);
 

http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/3a87c80b/juneau-server/src/main/java/org/apache/juneau/server/converters/Traversable.java
----------------------------------------------------------------------
diff --git 
a/juneau-server/src/main/java/org/apache/juneau/server/converters/Traversable.java
 
b/juneau-server/src/main/java/org/apache/juneau/server/converters/Traversable.java
index 2aa36ef..fe01e0d 100755
--- 
a/juneau-server/src/main/java/org/apache/juneau/server/converters/Traversable.java
+++ 
b/juneau-server/src/main/java/org/apache/juneau/server/converters/Traversable.java
@@ -52,7 +52,7 @@ public final class Traversable implements RestConverter {
                if (req.getPathRemainder() != null) {
                        try {
                                if (cm.getPojoSwap() != null)
-                                       o = cm.getPojoSwap().swap(o);
+                                       o = cm.getPojoSwap().swap(o, 
req.getBeanContext());
                                PojoRest p = new PojoRest(o, 
req.getReaderParser());
                                o = p.get(req.getPathRemainder());
                        } catch (SerializeException e) {

Reply via email to