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 15:58:39 UTC
[1/2] incubator-juneau git commit: Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-juneau.git
Repository: incubator-juneau
Updated Branches:
refs/heads/master cb4a4f2a5 -> 0cf51a696
Merge branch 'master' of
https://git-wip-us.apache.org/repos/asf/incubator-juneau.git
Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/a91a56f5
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/a91a56f5
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/a91a56f5
Branch: refs/heads/master
Commit: a91a56f53b6b9444b3201e3f54e8de489af44f2a
Parents: 0ce0e66 ee27361
Author: jamesbognar <ja...@gmail.com>
Authored: Sat Aug 27 11:37:34 2016 -0400
Committer: jamesbognar <ja...@gmail.com>
Committed: Sat Aug 27 11:51:25 2016 -0400
----------------------------------------------------------------------
.../main/java/org/apache/juneau/BeanMap.java | 4 +-
.../java/org/apache/juneau/BeanMapEntry.java | 4 +-
.../org/apache/juneau/BeanPropertyMeta.java | 13 ++-
.../main/java/org/apache/juneau/ClassMeta.java | 13 ++-
.../apache/juneau/annotation/BeanProperty.java | 9 +-
.../java/org/apache/juneau/annotation/Pojo.java | 101 +++++++++----------
.../org/apache/juneau/dto/atom/CommonEntry.java | 2 +-
.../java/org/apache/juneau/dto/atom/Entry.java | 2 +-
.../apache/juneau/dto/jsonschema/Schema.java | 8 +-
.../java/org/apache/juneau/internal/Null.java | 21 ++++
.../org/apache/juneau/transform/PojoSwap.java | 3 -
.../org/apache/juneau/transform/Transform.java | 3 -
.../a/rttests/RoundTripTransformBeansTest.java | 4 +-
.../java/org/apache/juneau/html/HtmlTest.java | 4 +-
.../org/apache/juneau/jena/RdfParserTest.java | 4 +-
.../juneau/transforms/CalendarSwapTest.java | 6 +-
.../resources/DirectoryResource.java | 2 +-
.../microservice/resources/LogsResource.java | 2 +-
.../samples/addressbook/CreatePerson.java | 2 +-
.../juneau/samples/addressbook/Person.java | 2 +-
.../server/samples/UrlEncodedFormResource.java | 2 +-
21 files changed, 115 insertions(+), 96 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/main/java/org/apache/juneau/BeanMap.java
----------------------------------------------------------------------
diff --cc juneau-core/src/main/java/org/apache/juneau/BeanMap.java
index d796367,d796367..cc8ab29
--- a/juneau-core/src/main/java/org/apache/juneau/BeanMap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanMap.java
@@@ -182,7 -182,7 +182,7 @@@ public class BeanMap<T> extends Abstrac
* you must pass in a transformed value.
* For example, if the bean property type class is a {@link Date} and the bean property has the
* {@link org.apache.juneau.transforms.DateSwap.ISO8601DT} transform associated with it through the
-- * {@link BeanProperty#transform() @BeanProperty.transform()} annotation, the value being passed in must be
++ * {@link BeanProperty#swap() @BeanProperty.swap()} annotation, the value being passed in must be
* a String containing an ISO8601 date-time string value.
*
* <dl>
@@@ -268,7 -268,7 +268,7 @@@
* this method will return the transformed value.
* For example, if the bean property type class is a {@link Date} and the bean property has the
* {@link org.apache.juneau.transforms.DateSwap.ISO8601DT} transform associated with it through the
-- * {@link BeanProperty#transform() @BeanProperty.transform()} annotation, this method will return a String
++ * {@link BeanProperty#swap() @BeanProperty.swap()} annotation, this method will return a String
* containing an ISO8601 date-time string value.
*
* <dl>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/main/java/org/apache/juneau/BeanMapEntry.java
----------------------------------------------------------------------
diff --cc juneau-core/src/main/java/org/apache/juneau/BeanMapEntry.java
index 67b949f,67b949f..6eba4ef
--- a/juneau-core/src/main/java/org/apache/juneau/BeanMapEntry.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanMapEntry.java
@@@ -69,7 -69,7 +69,7 @@@ public class BeanMapEntry implements Ma
* this method will return the transformed value.
* For example, if the bean property type class is a {@link Date} and the bean property has the
* {@link org.apache.juneau.transforms.DateSwap.ISO8601DT} transform associated with it through the
-- * {@link BeanProperty#transform() @BeanProperty.transform()} annotation, this method will return a String
++ * {@link BeanProperty#swap() @BeanProperty.swap()} annotation, this method will return a String
* containing an ISO8601 date-time string value.
*/
@Override /* Map.Entry */
@@@ -88,7 -88,7 +88,7 @@@
* you must pass in a transformed value.
* For example, if the bean property type class is a {@link Date} and the bean property has the
* {@link org.apache.juneau.transforms.DateSwap.ISO8601DT} transform associated with it through the
-- * {@link BeanProperty#transform() @BeanProperty.transform()} annotation, the value being passed in must be
++ * {@link BeanProperty#swap() @BeanProperty.swap()} annotation, the value being passed in must be
* a String containing an ISO8601 date-time string value.
*
* @return The set value after it's been converted.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
----------------------------------------------------------------------
diff --cc juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
index e017939,e017939..52c7898
--- a/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/BeanPropertyMeta.java
@@@ -300,13 -300,13 +300,16 @@@ public class BeanPropertyMeta
}
private PojoSwap getPropertyPojoSwap(BeanProperty p) throws Exception {
-- Class<? extends PojoSwap> c = p.transform();
-- if (c == PojoSwap.NULL.class)
++ Class<?> c = p.swap();
++ if (c == Null.class)
return null;
try {
-- PojoSwap f = c.newInstance();
-- f.setBeanContext(this.beanMeta.ctx);
-- return f;
++ if (ClassUtils.isParentClass(PojoSwap.class, c)) {
++ PojoSwap f = (PojoSwap)c.newInstance();
++ f.setBeanContext(this.beanMeta.ctx);
++ return f;
++ }
++ throw new RuntimeException("TODO - Surrogate swaps not yet supported.");
} catch (Exception e) {
throw new BeanRuntimeException(this.beanMeta.c, "Could not instantiate PojoSwap ''{0}'' for bean property ''{1}''", c.getName(), this.name).initCause(e);
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
----------------------------------------------------------------------
diff --cc juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
index b4af534,b4af534..d234b84
--- a/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
+++ b/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java
@@@ -433,11 -433,11 +433,14 @@@ public final class ClassMeta<T> impleme
try {
org.apache.juneau.annotation.Pojo b = innerClass.getAnnotation(org.apache.juneau.annotation.Pojo.class);
if (b != null) {
-- Class<? extends Transform> c = b.transform();
-- if (c != Transform.NULL.class) {
-- Transform f = c.newInstance();
-- f.setBeanContext(context);
-- return f;
++ Class<?> c = b.swap();
++ if (c != Null.class) {
++ if (ClassUtils.isParentClass(PojoSwap.class, c)) {
++ Transform f = (Transform)c.newInstance();
++ f.setBeanContext(context);
++ return f;
++ }
++ throw new RuntimeException("TODO - Surrogate classes not yet supported.");
}
}
if (context == null)
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/main/java/org/apache/juneau/annotation/BeanProperty.java
----------------------------------------------------------------------
diff --cc juneau-core/src/main/java/org/apache/juneau/annotation/BeanProperty.java
index 587da9c,587da9c..3b91992
--- a/juneau-core/src/main/java/org/apache/juneau/annotation/BeanProperty.java
+++ b/juneau-core/src/main/java/org/apache/juneau/annotation/BeanProperty.java
@@@ -19,6 -19,6 +19,7 @@@ import java.lang.annotation.*
import java.util.*;
import org.apache.juneau.*;
++import org.apache.juneau.internal.*;
import org.apache.juneau.jena.*;
import org.apache.juneau.transform.*;
import org.apache.juneau.xml.*;
@@@ -110,10 -110,10 +111,10 @@@ public @interface BeanProperty
Class<?>[] params() default {};
/**
-- * Associates an object transform with this bean property that will convert it
-- * to a different value during serialization and parsing.
++ * Associates a {@link PojoSwap} or {@link SurrogateSwap} with this bean property that will swap the value object
++ * with another object during serialization and parsing.
* <p>
-- * This annotation supersedes any transform associated with the bean property type
++ * This annotation supersedes any swaps associated with the bean property type
* class itself.
* <p>
* Typically used for rendering {@link Date Dates} and {@link Calendar Calendars}
@@@ -133,7 -133,7 +134,7 @@@
* </dd>
* </dl>
*/
-- Class<? extends PojoSwap<?,?>> transform() default PojoSwap.NULL.class;
++ Class<?> swap() default Null.class;
/**
* Used to limit which child properties are rendered by the serializers.
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
----------------------------------------------------------------------
diff --cc juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
index 2027c55,16ec115..3a4d98e
--- a/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
+++ b/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
@@@ -17,61 -17,61 +17,11 @@@ import static java.lang.annotation.Rete
import java.lang.annotation.*;
--import org.apache.juneau.serializer.*;
++import org.apache.juneau.internal.*;
import org.apache.juneau.transform.*;
/**
* Used to tailor how POJOs get interpreted by the framework.
-- * <p>
-- * Annotation that can be applied to POJOs to associate transforms with them.
-- * <p>
-- * Typically used to associate {@link PojoSwap PojoSwaps} with classes using annotations
-- * instead of programatically through a method such as {@link Serializer#addTransforms(Class...)}.
-- *
-- * <h6 class='topic'>Example</h6>
-- * <p>
-- * In this case, a transform is being applied to a bean that will force it to be serialized as a <code>String</code>
-- * <p class='bcode'>
-- * <jc>// Our bean class</jc>
-- * <ja>@Pojo</ja>(transform=BSwap.<jk>class</jk>)
-- * <jk>public class</jk> B {
-- * <jk>public</jk> String <jf>f1</jf>;
-- * }
-- *
-- * <jc>// Our transform to force the bean to be serialized as a String</jc>
-- * <jk>public class</jk> BSwap <jk>extends</jk> PojoSwap<B,String> {
-- * <jk>public</jk> String swap(B o) <jk>throws</jk> SerializeException {
-- * <jk>return</jk> o.f1;
-- * }
-- * <jk>public</jk> B unswap(String f, ClassMeta<?> hint) <jk>throws</jk> ParseException {
-- * B b1 = <jk>new</jk> B();
-- * b1.<jf>f1</jf> = f;
-- * <jk>return</jk> b1;
-- * }
-- * }
-- *
-- * <jk>public void</jk> testTransform() <jk>throws</jk> Exception {
-- * WriterSerializer s = JsonSerializer.<jsf>DEFAULT</jsf>;
-- * B b = <jk>new</jk> B();
-- * b.<jf>f1</jf> = <js>"bar"</js>;
-- * String json = s.serialize(b);
-- * <jsm>assertEquals</jsm>(<js>"'bar'"</js>, json);
-- *
-- * ReaderParser p = JsonParser.<jsf>DEFAULT</jsf>;
-- * b = p.parse(json, B.<jk>class</jk>);
-- * <jsm>assertEquals</jsm>(<js>"bar"</js>, t.<jf>f1</jf>);
-- * }
-- * </p>
-- * <p>
-- * Note that using this annotation is functionally equivalent to adding transforms to the serializers and parsers:
-- * <p class='bcode'>
-- * WriterSerializer s = <jk>new</jk> JsonSerializer.addTransforms(BSwap.<jk>class</jk>);
-- * ReaderParser p = <jk>new</jk> JsonParser.addTransforms(BSwap.<jk>class</jk>);
-- * </p>
-- * <p>
-- * It is technically possible to associate a {@link BeanFilter} with a bean class using this annotation.
-- * However in practice, it's almost always less code to simply use the {@link Bean @Bean} annotation.
-- * </p>
*
* @author James Bognar (james.bognar@salesforce.com)
*/
@@@ -82,7 -82,7 +32,54 @@@
public @interface Pojo {
/**
- * The transform class.
+ * Associate a {@link PojoSwap} or {@link SurrogateSwap} with this class type.
++ * <p>
++ * Supports the following class types:
++ * <ul>
++ * <li>Subclasses of {@link PojoSwap}.
++ * <li>Any other class. Will get interpreted as a {@link SurrogateSwap}.
++ * </ul>
++ *
++ * <h6 class='topic'>Example</h6>
++ * <p>
++ * In this case, a swap is being applied to a bean that will force it to be serialized as a <code>String</code>
++ * <p class='bcode'>
++ * <jc>// Our bean class</jc>
++ * <ja>@Pojo</ja>(swap=BSwap.<jk>class</jk>)
++ * <jk>public class</jk> B {
++ * <jk>public</jk> String <jf>f1</jf>;
++ * }
++ *
++ * <jc>// Our transform to force the bean to be serialized as a String</jc>
++ * <jk>public class</jk> BSwap <jk>extends</jk> PojoSwap<B,String> {
++ * <jk>public</jk> String swap(B o) <jk>throws</jk> SerializeException {
++ * <jk>return</jk> o.f1;
++ * }
++ * <jk>public</jk> B unswap(String f) <jk>throws</jk> ParseException {
++ * B b1 = <jk>new</jk> B();
++ * b1.<jf>f1</jf> = f;
++ * <jk>return</jk> b1;
++ * }
++ * }
++ *
++ * <jk>public void</jk> test() <jk>throws</jk> Exception {
++ * WriterSerializer s = JsonSerializer.<jsf>DEFAULT</jsf>;
++ * B b = <jk>new</jk> B();
++ * b.<jf>f1</jf> = <js>"bar"</js>;
++ * String json = s.serialize(b);
++ * <jsm>assertEquals</jsm>(<js>"'bar'"</js>, json);
++ *
++ * ReaderParser p = JsonParser.<jsf>DEFAULT</jsf>;
++ * b = p.parse(json, B.<jk>class</jk>);
++ * <jsm>assertEquals</jsm>(<js>"bar"</js>, t.<jf>f1</jf>);
++ * }
++ * </p>
++ * <p>
++ * Note that using this annotation is functionally equivalent to adding swaps to the serializers and parsers:
++ * <p class='bcode'>
++ * WriterSerializer s = <jk>new</jk> JsonSerializer.addTransforms(BSwap.<jk>class</jk>);
++ * ReaderParser p = <jk>new</jk> JsonParser.addTransforms(BSwap.<jk>class</jk>);
++ * </p>
*/
-- Class<? extends Transform> transform() default Transform.NULL.class;
++ Class<?> swap() default Null.class;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/main/java/org/apache/juneau/dto/atom/CommonEntry.java
----------------------------------------------------------------------
diff --cc juneau-core/src/main/java/org/apache/juneau/dto/atom/CommonEntry.java
index 821193a,821193a..6ef4fc6
--- a/juneau-core/src/main/java/org/apache/juneau/dto/atom/CommonEntry.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/atom/CommonEntry.java
@@@ -262,7 -262,7 +262,7 @@@ public class CommonEntry extends Commo
*
* @return The update timestamp of this object.
*/
-- @BeanProperty(transform=CalendarSwap.ISO8601DT.class)
++ @BeanProperty(swap=CalendarSwap.ISO8601DT.class)
public Calendar getUpdated() {
return updated;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/main/java/org/apache/juneau/dto/atom/Entry.java
----------------------------------------------------------------------
diff --cc juneau-core/src/main/java/org/apache/juneau/dto/atom/Entry.java
index 2475372,2475372..a8141b6
--- a/juneau-core/src/main/java/org/apache/juneau/dto/atom/Entry.java
+++ b/juneau-core/src/main/java/org/apache/juneau/dto/atom/Entry.java
@@@ -100,7 -100,7 +100,7 @@@ public class Entry extends CommonEntry
*
* @return The publish timestamp of this entry.
*/
-- @BeanProperty(transform=CalendarSwap.ISO8601DT.class)
++ @BeanProperty(swap=CalendarSwap.ISO8601DT.class)
public Calendar getPublished() {
return published;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/Schema.java
----------------------------------------------------------------------
diff --cc juneau-core/src/main/java/org/apache/juneau/dto/jsonschema/Schema.java
index 2fbba1d,2fbba1d..bcbee9d
--- 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
@@@ -218,7 -218,7 +218,7 @@@ public class Schema
* @return The value of the <property>type</property> property on this bean, or <jk>null</jk> if it is not set.
* Can be either a {@link JsonType} or {@link JsonTypeArray} depending on what value was used to set it.
*/
-- @BeanProperty(transform=JsonTypeOrJsonTypeArraySwap.class)
++ @BeanProperty(swap=JsonTypeOrJsonTypeArraySwap.class)
public Object getType() {
if (typeJsonType != null)
return typeJsonType;
@@@ -514,7 -514,7 +514,7 @@@
* @return The value of the <property>items</property> property on this bean, or <jk>null</jk> if it is not set.
* Can be either a {@link Schema} or {@link SchemaArray} depending on what value was used to set it.
*/
-- @BeanProperty(transform=SchemaOrSchemaArraySwap.class)
++ @BeanProperty(swap=SchemaOrSchemaArraySwap.class)
public Object getItems() {
if (itemsSchema != null)
return itemsSchema;
@@@ -772,7 -772,7 +772,7 @@@
* @return The value of the <property>additionalItems</property> property on this bean, or <jk>null</jk> if it is not set.
* Can be either a {@link Boolean} or {@link SchemaArray} depending on what value was used to set it.
*/
-- @BeanProperty(transform=BooleanOrSchemaArraySwap.class)
++ @BeanProperty(swap=BooleanOrSchemaArraySwap.class)
public Object getAdditionalItems() {
if (additionalItemsBoolean != null)
return additionalItemsBoolean;
@@@ -1031,7 -1031,7 +1031,7 @@@
* @return The value of the <property>additionalProperties</property> property on this bean, or <jk>null</jk> if it is not set.
* Can be either a {@link Boolean} or {@link SchemaArray} depending on what value was used to set it.
*/
-- @BeanProperty(transform=BooleanOrSchemaSwap.class)
++ @BeanProperty(swap=BooleanOrSchemaSwap.class)
public Object getAdditionalProperties() {
if (additionalPropertiesBoolean != null)
return additionalItemsBoolean;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/main/java/org/apache/juneau/internal/Null.java
----------------------------------------------------------------------
diff --cc juneau-core/src/main/java/org/apache/juneau/internal/Null.java
index 0000000,0000000..1fc3888
new file mode 100644
--- /dev/null
+++ b/juneau-core/src/main/java/org/apache/juneau/internal/Null.java
@@@ -1,0 -1,0 +1,21 @@@
++/***************************************************************************************************************************
++ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file
++ * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file
++ * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance
++ * with the License. You may obtain a copy of the License at
++ *
++ * http://www.apache.org/licenses/LICENSE-2.0
++ *
++ * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an
++ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
++ * specific language governing permissions and limitations under the License.
++ ***************************************************************************************************************************/
++
++package org.apache.juneau.internal;
++
++/**
++ * Represents a null entry in a class annotation.
++ *
++ * @author james.bognar
++ */
++public class Null {}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
----------------------------------------------------------------------
diff --cc juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
index 3bde495,3bde495..1fefd2c
--- a/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transform/PojoSwap.java
@@@ -91,9 -91,9 +91,6 @@@ import org.apache.juneau.serializer.*
*/
public abstract class PojoSwap<T,S> extends Transform {
-- /** Represents no transform. */
-- public static class NULL extends PojoSwap<Object,Object> {}
--
Class<T> normalClass;
Class<S> transformedClass;
ClassMeta<S> transformedClassMeta;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/main/java/org/apache/juneau/transform/Transform.java
----------------------------------------------------------------------
diff --cc juneau-core/src/main/java/org/apache/juneau/transform/Transform.java
index 2c72c88,2c72c88..c6ea8a4
--- a/juneau-core/src/main/java/org/apache/juneau/transform/Transform.java
+++ b/juneau-core/src/main/java/org/apache/juneau/transform/Transform.java
@@@ -46,9 -46,9 +46,6 @@@ import org.apache.juneau.*
*/
public class Transform {
-- /** Represents no transform. */
-- public static class NULL extends Transform {}
--
/** The transform subtype */
public static enum TransformType {
/** PojoSwap */
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
----------------------------------------------------------------------
diff --cc juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripTransformBeansTest.java
index 3f3fc0d,3f3fc0d..9eeb56c
--- 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
@@@ -228,12 -228,12 +228,12 @@@ public class RoundTripTransformBeansTes
assertEquals("bar", t.f1);
}
-- @Pojo(transform=BTransform.class)
++ @Pojo(swap=BSwap.class)
public static class B {
public String f1;
}
-- public static class BTransform extends PojoSwap<B,String> {
++ public static class BSwap extends PojoSwap<B,String> {
@Override /* PojoSwap */
public String swap(B o) throws SerializeException {
return o.f1;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/test/java/org/apache/juneau/html/HtmlTest.java
----------------------------------------------------------------------
diff --cc juneau-core/src/test/java/org/apache/juneau/html/HtmlTest.java
index a988ea2,a988ea2..5916c7e
--- a/juneau-core/src/test/java/org/apache/juneau/html/HtmlTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/html/HtmlTest.java
@@@ -100,7 -100,7 +100,7 @@@ public class HtmlTest
public String f2 = "f2";
}
-- @Pojo(transform=A4Swap.class)
++ @Pojo(swap=A4Swap.class)
public static class A4 {
public String f2 = "f2";
}
@@@ -112,7 -112,7 +112,7 @@@
}
}
-- @Pojo(transform=A5Swap.class)
++ @Pojo(swap=A5Swap.class)
public static class A5 {
public String f2 = "f2";
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/test/java/org/apache/juneau/jena/RdfParserTest.java
----------------------------------------------------------------------
diff --cc juneau-core/src/test/java/org/apache/juneau/jena/RdfParserTest.java
index 24c9479,24c9479..21c4573
--- a/juneau-core/src/test/java/org/apache/juneau/jena/RdfParserTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/jena/RdfParserTest.java
@@@ -106,7 -106,7 +106,7 @@@ public class RdfParserTest
public String f2;
@BeanProperty(beanUri=true) public URI f3;
public URI f4a, f4b;
-- @BeanProperty(transform=CalendarSwap.ISO8601DTZ.class) public Calendar f5;
++ @BeanProperty(swap=CalendarSwap.ISO8601DTZ.class) public Calendar f5;
public LinkedList<A1> f6 = new LinkedList<A1>();
public A init() throws Exception {
@@@ -131,7 -131,7 +131,7 @@@
public String f2;
@BeanProperty(beanUri=true) public URI f3;
public URI f4a, f4b;
-- @BeanProperty(transform=CalendarSwap.ISO8601DTZ.class) public Calendar f5;
++ @BeanProperty(swap=CalendarSwap.ISO8601DTZ.class) public Calendar f5;
public A1 init() throws Exception {
f1 = 1;
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-core/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
----------------------------------------------------------------------
diff --cc juneau-core/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
index 4ed72cc,4ed72cc..72cf3eb
--- a/juneau-core/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
+++ b/juneau-core/src/test/java/org/apache/juneau/transforms/CalendarSwapTest.java
@@@ -648,7 -648,7 +648,7 @@@ public class CalendarSwapTest
@Bean(sort=true)
public static class A {
-- @BeanProperty(transform=CalendarSwap.ISO8601DTZ.class)
++ @BeanProperty(swap=CalendarSwap.ISO8601DTZ.class)
public Calendar d1;
private Calendar d2, d3;
public A(Calendar date) {
@@@ -657,7 -657,7 +657,7 @@@
public A() {}
-- @BeanProperty(transform=CalendarSwap.RFC2822DTZ.class)
++ @BeanProperty(swap=CalendarSwap.RFC2822DTZ.class)
public Calendar getD2() {
return d2;
}
@@@ -668,7 -668,7 +668,7 @@@
public Calendar getD3() {
return d3;
}
-- @BeanProperty(transform=CalendarLongSwap.class)
++ @BeanProperty(swap=CalendarLongSwap.class)
public void setD3(Calendar d3) {
this.d3 = d3;
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
----------------------------------------------------------------------
diff --cc juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
index 41bdb87,41bdb87..6b0f7ac
--- a/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
+++ b/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/DirectoryResource.java
@@@ -307,7 -307,7 +307,7 @@@ public class DirectoryResource extends
/**
* @return The file last modified timestamp.
*/
-- @BeanProperty(transform=DateSwap.ISO8601DTP.class)
++ @BeanProperty(swap=DateSwap.ISO8601DTP.class)
public Date getLastModified() {
return new Date(f.lastModified());
}
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
----------------------------------------------------------------------
diff --cc juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
index f08a5a2,f08a5a2..dd64a0d
--- a/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
+++ b/juneau-microservice/src/main/java/org/apache/juneau/microservice/resources/LogsResource.java
@@@ -262,7 -262,7 +262,7 @@@ public class LogsResource extends Resou
public String type;
public Object name;
public Long size;
-- @BeanProperty(transform=DateSwap.Medium.class) public Date lastModified;
++ @BeanProperty(swap=DateSwap.Medium.class) public Date lastModified;
public URL view, highlighted, parsed, download, delete;
public FileResource(File f, URL url) throws IOException {
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-samples/src/main/java/org/apache/juneau/samples/addressbook/CreatePerson.java
----------------------------------------------------------------------
diff --cc juneau-samples/src/main/java/org/apache/juneau/samples/addressbook/CreatePerson.java
index 666f5e0,666f5e0..4321c17
--- a/juneau-samples/src/main/java/org/apache/juneau/samples/addressbook/CreatePerson.java
+++ b/juneau-samples/src/main/java/org/apache/juneau/samples/addressbook/CreatePerson.java
@@@ -28,7 -28,7 +28,7 @@@ public class CreatePerson
// Bean properties
public String name;
-- @BeanProperty(transform=CalendarSwap.Medium.class) public Calendar birthDate;
++ @BeanProperty(swap=CalendarSwap.Medium.class) public Calendar birthDate;
public LinkedList<CreateAddress> addresses = new LinkedList<CreateAddress>();
/** Bean constructor - Needed for instantiating on server side */
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-samples/src/main/java/org/apache/juneau/samples/addressbook/Person.java
----------------------------------------------------------------------
diff --cc juneau-samples/src/main/java/org/apache/juneau/samples/addressbook/Person.java
index 0e1131d,0e1131d..f27b943
--- a/juneau-samples/src/main/java/org/apache/juneau/samples/addressbook/Person.java
+++ b/juneau-samples/src/main/java/org/apache/juneau/samples/addressbook/Person.java
@@@ -34,7 -34,7 +34,7 @@@ public class Person
public URI addressBookUri;
public int id;
public String name;
-- @BeanProperty(transform=CalendarSwap.Medium.class) public Calendar birthDate;
++ @BeanProperty(swap=CalendarSwap.Medium.class) public Calendar birthDate;
public LinkedList<Address> addresses = new LinkedList<Address>();
/** Bean constructor - Needed for instantiating on server side */
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/a91a56f5/juneau-samples/src/main/java/org/apache/juneau/server/samples/UrlEncodedFormResource.java
----------------------------------------------------------------------
diff --cc juneau-samples/src/main/java/org/apache/juneau/server/samples/UrlEncodedFormResource.java
index 66c8085,66c8085..8a87cd5
--- a/juneau-samples/src/main/java/org/apache/juneau/server/samples/UrlEncodedFormResource.java
+++ b/juneau-samples/src/main/java/org/apache/juneau/server/samples/UrlEncodedFormResource.java
@@@ -47,7 -47,7 +47,7 @@@ public class UrlEncodedFormResource ext
public static class FormInputBean {
public String aString;
public int aNumber;
-- @BeanProperty(transform=CalendarSwap.ISO8601DT.class)
++ @BeanProperty(swap=CalendarSwap.ISO8601DT.class)
public Calendar aDate;
}
}
[2/2] incubator-juneau git commit: Merge remote-tracking branch
'origin/master'
Posted by ja...@apache.org.
Merge remote-tracking branch 'origin/master'
Conflicts:
juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/0cf51a69
Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/0cf51a69
Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/0cf51a69
Branch: refs/heads/master
Commit: 0cf51a696ccaad667f83d93175cad31faf17fffd
Parents: a91a56f cb4a4f2
Author: jamesbognar <ja...@gmail.com>
Authored: Sat Aug 27 11:58:25 2016 -0400
Committer: jamesbognar <ja...@gmail.com>
Committed: Sat Aug 27 11:58:25 2016 -0400
----------------------------------------------------------------------
juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java | 4 ++++
1 file changed, 4 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0cf51a69/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
----------------------------------------------------------------------
diff --cc juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
index 3a4d98e,c417341..cd56ab9
--- a/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
+++ b/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java
@@@ -32,54 -82,7 +32,58 @@@ import org.apache.juneau.transform.*
public @interface Pojo {
/**
++<<<<<<< HEAD
+ * Associate a {@link PojoSwap} or {@link SurrogateSwap} with this class type.
+ * <p>
+ * Supports the following class types:
+ * <ul>
+ * <li>Subclasses of {@link PojoSwap}.
+ * <li>Any other class. Will get interpreted as a {@link SurrogateSwap}.
+ * </ul>
+ *
+ * <h6 class='topic'>Example</h6>
+ * <p>
+ * In this case, a swap is being applied to a bean that will force it to be serialized as a <code>String</code>
+ * <p class='bcode'>
+ * <jc>// Our bean class</jc>
+ * <ja>@Pojo</ja>(swap=BSwap.<jk>class</jk>)
+ * <jk>public class</jk> B {
+ * <jk>public</jk> String <jf>f1</jf>;
+ * }
+ *
+ * <jc>// Our transform to force the bean to be serialized as a String</jc>
+ * <jk>public class</jk> BSwap <jk>extends</jk> PojoSwap<B,String> {
+ * <jk>public</jk> String swap(B o) <jk>throws</jk> SerializeException {
+ * <jk>return</jk> o.f1;
+ * }
+ * <jk>public</jk> B unswap(String f) <jk>throws</jk> ParseException {
+ * B b1 = <jk>new</jk> B();
+ * b1.<jf>f1</jf> = f;
+ * <jk>return</jk> b1;
+ * }
+ * }
+ *
+ * <jk>public void</jk> test() <jk>throws</jk> Exception {
+ * WriterSerializer s = JsonSerializer.<jsf>DEFAULT</jsf>;
+ * B b = <jk>new</jk> B();
+ * b.<jf>f1</jf> = <js>"bar"</js>;
+ * String json = s.serialize(b);
+ * <jsm>assertEquals</jsm>(<js>"'bar'"</js>, json);
+ *
+ * ReaderParser p = JsonParser.<jsf>DEFAULT</jsf>;
+ * b = p.parse(json, B.<jk>class</jk>);
+ * <jsm>assertEquals</jsm>(<js>"bar"</js>, t.<jf>f1</jf>);
+ * }
+ * </p>
+ * <p>
+ * Note that using this annotation is functionally equivalent to adding swaps to the serializers and parsers:
+ * <p class='bcode'>
+ * WriterSerializer s = <jk>new</jk> JsonSerializer.addTransforms(BSwap.<jk>class</jk>);
+ * ReaderParser p = <jk>new</jk> JsonParser.addTransforms(BSwap.<jk>class</jk>);
+ * </p>
++=======
+ * Associate a {@link PojoSwap} or {@link SurrogateSwap} with this class type.
++>>>>>>> refs/remotes/origin/master
*/
- Class<? extends Transform> transform() default Transform.NULL.class;
+ Class<?> swap() default Null.class;
}