Rename @Transform to @Pojo(transform=x) Project: http://git-wip-us.apache.org/repos/asf/incubator-juneau/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-juneau/commit/7100939a Tree: http://git-wip-us.apache.org/repos/asf/incubator-juneau/tree/7100939a Diff: http://git-wip-us.apache.org/repos/asf/incubator-juneau/diff/7100939a
Branch: refs/heads/master Commit: 7100939a47bb6df15fb7aebcbd5f53f0e18e3b5e Parents: c039a53 Author: jamesbognar <[email protected]> Authored: Fri Aug 26 16:14:21 2016 -0400 Committer: jamesbognar <[email protected]> Committed: Fri Aug 26 16:14:21 2016 -0400 ---------------------------------------------------------------------- .../main/java/org/apache/juneau/ClassMeta.java | 6 +- .../java/org/apache/juneau/annotation/Pojo.java | 88 ++++++++++++++++++++ .../org/apache/juneau/annotation/Transform.java | 86 ------------------- juneau-core/src/main/java/overview.html | 3 +- .../a/rttests/RoundTripTransformBeansTest.java | 4 +- .../java/org/apache/juneau/html/HtmlTest.java | 6 +- 6 files changed, 98 insertions(+), 95 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7100939a/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 ae2bce5..f49b7ad 100644 --- a/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java +++ b/juneau-core/src/main/java/org/apache/juneau/ClassMeta.java @@ -26,7 +26,7 @@ import org.apache.juneau.annotation.*; import org.apache.juneau.internal.*; import org.apache.juneau.transform.*; import org.apache.juneau.transform.Transform; -import org.apache.juneau.utils.*; +import org.apache.juneau.utils.*; /** * A wrapper class around the {@link Class} object that provides cached information @@ -431,9 +431,9 @@ public final class ClassMeta<T> implements Type { private Transform findTransform(BeanContext context) { try { - org.apache.juneau.annotation.Transform b = innerClass.getAnnotation(org.apache.juneau.annotation.Transform.class); + org.apache.juneau.annotation.Pojo b = innerClass.getAnnotation(org.apache.juneau.annotation.Pojo.class); if (b != null) { - Class<? extends Transform> c = b.value(); + Class<? extends Transform> c = b.transform(); if (c != Transform.NULL.class) { Transform f = c.newInstance(); f.setBeanContext(context); http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7100939a/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java b/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java new file mode 100644 index 0000000..d4919ee --- /dev/null +++ b/juneau-core/src/main/java/org/apache/juneau/annotation/Pojo.java @@ -0,0 +1,88 @@ +/*************************************************************************************************************************** + * 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.annotation; + +import static java.lang.annotation.ElementType.*; +import static java.lang.annotation.RetentionPolicy.*; + +import java.lang.annotation.*; + +import org.apache.juneau.serializer.*; +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 PojoTransform PojoTransforms} 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=BTransform.<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> BTransform <jk>extends</jk> PojoTransform<B,String> { + * <jk>public</jk> String transform(B o) <jk>throws</jk> SerializeException { + * <jk>return</jk> o.f1; + * } + * <jk>public</jk> B normalize(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(BTransform.<jk>class</jk>); + * ReaderParser p = <jk>new</jk> JsonParser.addTransforms(BTransform.<jk>class</jk>); + * </p> + * <p> + * It is technically possible to associate a {@link BeanTransform} 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 ([email protected]) + */ +@Documented +@Target(TYPE) +@Retention(RUNTIME) +@Inherited +public @interface Pojo { + + /** + * The transform class. + */ + Class<? extends Transform> transform() default Transform.NULL.class; +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7100939a/juneau-core/src/main/java/org/apache/juneau/annotation/Transform.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/org/apache/juneau/annotation/Transform.java b/juneau-core/src/main/java/org/apache/juneau/annotation/Transform.java deleted file mode 100644 index f0029a6..0000000 --- a/juneau-core/src/main/java/org/apache/juneau/annotation/Transform.java +++ /dev/null @@ -1,86 +0,0 @@ -/*************************************************************************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the - * specific language governing permissions and limitations under the License. - ***************************************************************************************************************************/ -package org.apache.juneau.annotation; - -import static java.lang.annotation.ElementType.*; -import static java.lang.annotation.RetentionPolicy.*; - -import java.lang.annotation.*; - -import org.apache.juneau.serializer.*; -import org.apache.juneau.transform.*; - -/** - * Annotation that can be applied to a class to associate a transform with it. - * <p> - * Typically used to associate {@link PojoTransform PojoTransforms} 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>@Transform</ja>(BTransform.<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> BTransform <jk>extends</jk> PojoTransform<B,String> { - * <jk>public</jk> String transform(B o) <jk>throws</jk> SerializeException { - * <jk>return</jk> o.f1; - * } - * <jk>public</jk> B normalize(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(BTransform.<jk>class</jk>); - * ReaderParser p = <jk>new</jk> JsonParser.addTransforms(BTransform.<jk>class</jk>); - * </p> - * <p> - * It is technically possible to associate a {@link BeanTransform} 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 ([email protected]) - */ -@Documented -@Target(TYPE) -@Retention(RUNTIME) -@Inherited -public @interface Transform { - - /** - * The transform class. - */ - Class<? extends org.apache.juneau.transform.Transform> value() default org.apache.juneau.transform.Transform.NULL.class; -} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7100939a/juneau-core/src/main/java/overview.html ---------------------------------------------------------------------- diff --git a/juneau-core/src/main/java/overview.html b/juneau-core/src/main/java/overview.html index 4acf5c5..8d0c17f 100644 --- a/juneau-core/src/main/java/overview.html +++ b/juneau-core/src/main/java/overview.html @@ -4704,7 +4704,7 @@ <p> The major change is rebranding from "Juno" to "Juneau" in preparation for donation to the Apache Foundation. </p> - + <h6 class='topic'>org.apache.juneau</h6> <ul class='spaced-list'> <li>Major changes around how serializer and parser class properties are defined to improve performance @@ -4778,6 +4778,7 @@ <li>{@link org.apache.juneau.BeanPropertyMetaExtended} / {@link org.apache.juneau.BeanPropertyMetaMeta#getExtendedMeta(Class)} </ul> </li> + <li>Renamed <code>@Transform</code> annotation to {@link Pojo @Pojo} so that it can be used for various POJO-related behavior, not just associating transforms. </ul> <h6 class='topic'>org.apache.juneau.server</h6> http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7100939a/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 7f9d1c9..8433862 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 @@ -21,7 +21,7 @@ import javax.xml.datatype.*; import org.apache.juneau.*; import org.apache.juneau.annotation.*; -import org.apache.juneau.annotation.Transform; +import org.apache.juneau.annotation.Pojo; import org.apache.juneau.json.*; import org.apache.juneau.parser.*; import org.apache.juneau.serializer.*; @@ -228,7 +228,7 @@ public class RoundTripTransformBeansTest extends RoundTripTest { assertEquals("bar", t.f1); } - @Transform(BTransform.class) + @Pojo(transform=BTransform.class) public static class B { public String f1; } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/7100939a/juneau-core/src/test/java/org/apache/juneau/html/HtmlTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/test/java/org/apache/juneau/html/HtmlTest.java b/juneau-core/src/test/java/org/apache/juneau/html/HtmlTest.java index 17e3b4b..79c8748 100755 --- a/juneau-core/src/test/java/org/apache/juneau/html/HtmlTest.java +++ b/juneau-core/src/test/java/org/apache/juneau/html/HtmlTest.java @@ -19,7 +19,7 @@ import java.util.*; import org.apache.juneau.*; import org.apache.juneau.annotation.*; -import org.apache.juneau.annotation.Transform; +import org.apache.juneau.annotation.Pojo; import org.apache.juneau.html.annotation.*; import org.apache.juneau.serializer.*; import org.apache.juneau.testbeans.*; @@ -100,7 +100,7 @@ public class HtmlTest { public String f2 = "f2"; } - @Transform(A4Transform.class) + @Pojo(transform=A4Transform.class) public static class A4 { public String f2 = "f2"; } @@ -112,7 +112,7 @@ public class HtmlTest { } } - @Transform(A5Transform.class) + @Pojo(transform=A5Transform.class) public static class A5 { public String f2 = "f2"; }
