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