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/27 19:04:26 UTC
incubator-juneau git commit: Simplify construction of Transform
objects.
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 <ja...@gmail.com>
Authored: Sat Aug 27 12:33:09 2016 -0400
Committer: jamesbognar <ja...@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) {