http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/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 8d0c17f..c8163c6 100644 --- a/juneau-core/src/main/java/overview.html +++ b/juneau-core/src/main/java/overview.html @@ -422,9 +422,9 @@ <td style='text-align:center'>4</td> <td> <b>Transformed objects</b><br> - These are objects that are not directly serializable, but have {@link org.apache.juneau.transform.PojoTransform PojoTransforms} associated with them. + These are objects that are not directly serializable, but have {@link org.apache.juneau.transform.PojoSwap PojoSwaps} associated with them. The purpose of an object transform is to convert an object to another object that is easier to serialize and parse. - For example, the {@link org.apache.juneau.transforms.DateTransform.ISO8601DT} transform can be used to serialize {@link java.util.Date} objects + For example, the {@link org.apache.juneau.transforms.DateSwap.ISO8601DT} transform can be used to serialize {@link java.util.Date} objects to ISO8601 strings, and parse them back into {@link java.util.Date} objects. </td> <td> </td> @@ -824,50 +824,50 @@ <h4 class='topic' onclick='toggle(this)'>2.7 - Transforms</h4> <div class='topic'> <p> - The programmatic equivalent to the annotations are the {@link org.apache.juneau.transform.BeanTransform} and - {@link org.apache.juneau.transform.PojoTransform} classes. + The programmatic equivalent to the annotations are the {@link org.apache.juneau.transform.BeanFilter} and + {@link org.apache.juneau.transform.PojoSwap} classes. </p> <p> - The following example is equivalent to specifying the <l>@Bean</l> annotation in the previous example using a bean transform: + The following example is equivalent to specifying the <l>@Bean</l> annotation in the previous example using a bean filter: </p> <p class='bcode'> <jc>// Define transform that returns properties in the following order: "street", "city", "state"</jc> - <jk>public class</jk> AddressTransform <jk>extends</jk> BeanTransform<Address> { - <jk>public</jk> AddressTransform() { + <jk>public class</jk> AddressFilter <jk>extends</jk> BeanFilter<Address> { + <jk>public</jk> AddressFilter() { setProperties(<js>"street"</js>,<js>"city"</js>,<js>"state"</js>); } } - WriterSerializer s = <jk>new</jk> JsonSerializer().addTransforms(AddressTransform.<jk>class</jk>); + WriterSerializer s = <jk>new</jk> JsonSerializer().addTransforms(AddressFilter.<jk>class</jk>); Address a = getAddress(); String json = s.serialize(a); <jc>// Prints "{street:'...',city:'...',state;'...'}"</jc> </p> <p> - The {@link org.apache.juneau.transform.PojoTransform} class is a critical component of Juneau that allows serializers and parsers to + The {@link org.apache.juneau.transform.PojoSwap} class is a critical component of Juneau that allows serializers and parsers to be able to handle virtually any Java object. Simply put, they can be thought of as 'transformers' that convert non-serializable objects to serializable objects and vice versa. </p> <p> For example, <l>Date</l> objects are not normally serializable. (Technically, they look like beans with getters/setters and so get serialized as such, which typically is not the desired result.) - The following POJO transform can be used to represent dates in ISO8601 format: + The following POJO swap can be used to represent dates in ISO8601 format: </p> <p class='bcode'> <jc>// Sample transform for converting Dates to ISO8601 strings.</jc> - <jk>public class</jk> MyDateTransform <jk>extends</jk> PojoTransform<Date,String> { + <jk>public class</jk> MyDateSwap <jk>extends</jk> PojoSwap<Date,String> { <jc>// ISO8601 formatter.</jc> <jk>private</jk> DateFormat <jf>format</jf> = <jk>new</jk> SimpleDateFormat(<js>"yyyy-MM-dd'T'HH:mm:ssZ"</js>); <jd>/** Converts a Date object to an ISO8601 string. */</jd> <ja>@Override</ja> - <jk>public</jk> String transform(Date o) { + <jk>public</jk> String swap(Date o) { <jk>return</jk> <jf>format</jf>.format(o); } <jd>/** Converts an ISO8601 string to a Date object. */</jd> <ja>@Override</ja> - <jk>public</jk> Date normalize(String o, ClassMeta<?> hint) <jk>throws</jk> ParseException { + <jk>public</jk> Date unswap(String o, ClassMeta<?> hint) <jk>throws</jk> ParseException { <jk>try</jk> { <jk>return</jk> <jf>format</jf>.parse(o); } <jk>catch</jk> (java.text.ParseException e) { @@ -886,11 +886,11 @@ } <jc>// Create a new JSON serializer, associate our date transform with it, and serialize a sample bean.</jc> - Serializer serializer = <jk>new</jk> JsonSerializer().addTransforms(MyDateTransform.<jk>class</jk>); + Serializer serializer = <jk>new</jk> JsonSerializer().addTransforms(MyDateSwap.<jk>class</jk>); String json = serializer.serialize(<jk>new</jk> MyBean()); <jc>// == "{date:'2012-03-03T04:05:06-0500'}"</jc> <jc>// Create a JSON parser, associate our date transform with it, and reconstruct our bean (including the date).</jc> - ReaderParser parser = <jk>new</jk> JsonParser().addTransforms(MyDateTransform.<jk>class</jk>); + ReaderParser parser = <jk>new</jk> JsonParser().addTransforms(MyDateSwap.<jk>class</jk>); MyBean bean = parser.parse(json, MyBean.<jk>class</jk>); <jk>int</jk> day = bean.<jf>date</jf>.getDay(); <jc>// == 3</jc> </p> @@ -1245,7 +1245,7 @@ <jk>public</jk> URI <jf>addressBookUri</jf>; <jk>public int</jk> <jf>id</jf>; <jk>public</jk> String <jf>name</jf>; - <ja>@BeanProperty</ja>(transform=CalendarTransform.Medium.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>; + <ja>@BeanProperty</ja>(transform=CalendarSwap.Medium.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>; <jk>public</jk> LinkedList<Address> <jf>addresses</jf>; } @@ -2088,7 +2088,7 @@ <jk>public static class</jk> FormInputBean { <jk>public</jk> String aString; <jk>public int</jk> aNumber; - <ja>@BeanProperty</ja>(transform=CalendarTransform.<jsf>ISO8601DT</jsf>.<jk>class</jk>) + <ja>@BeanProperty</ja>(transform=CalendarSwap.<jsf>ISO8601DT</jsf>.<jk>class</jk>) <jk>public</jk> Calendar aDate; } } @@ -2220,7 +2220,7 @@ <jc>// Interpret these as their parent classes, not subclasses</jc> HttpServletRequest.<jk>class</jk>, HttpSession.<jk>class</jk>, ServletContext.<jk>class</jk>, <jc>// Add a special transform for Enumerations</jc> - EnumerationTransform.<jk>class</jk> + EnumerationSwap.<jk>class</jk> } ) <jk>public class</jk> RequestEchoResource <jk>extends</jk> Resource { @@ -2261,14 +2261,14 @@ <jc>// You'll just reuse the parent serializer group</jc> SerializerGroup serializerGroup = <jk>super</jk>.createSerializers(properties, transforms); - <jc>// Add bean transforms for the HttpServletRequest, HttpSession, and ServletContext objects + <jc>// Add bean filters for the HttpServletRequest, HttpSession, and ServletContext objects // so that you don't show vendor-specific properties on subclasses. // Add Enumeration transform to be able to render the contents of Enumeration properties. // The max depth and detect recursion options prevent any possible runaway serializations. // This shouldn't happen, but future JEE APIs may introduce deep hierarchies or loops.</jc> serializerGroup .addTransforms(HttpServletRequest.<jk>class</jk>, HttpSession.<jk>class</jk>, ServletContext.<jk>class</jk>) - .addTransforms(EnumerationTransform.<jk>class</jk>) + .addTransforms(EnumerationSwap.<jk>class</jk>) .setProperty(<jsf>SERIALIZER_maxDepth</jsf>, 10) .setProperty(<jsf>SERIALIZER_detectRecursions</jsf>, <jk>true</jk>); .setProperty(<jsf>HTMLDOC_links</jsf>, <js>"{...}"</js>); @@ -2522,7 +2522,7 @@ <jk>public</jk> URI <jf>addressBookUri</jf>; <jk>public</jk> String <jf>id</jf>; <jk>public</jk> String <jf>name</jf>; - <ja>@BeanProperty</ja>(transform=CalendarTransform.Medium.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>; + <ja>@BeanProperty</ja>(transform=CalendarSwap.Medium.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>; <jk>public</jk> LinkedList<Address> <jf>addresses</jf> = new LinkedList<Address>(); <jd>/** Bean constructor - Needed for instantiating on server side */</jd> @@ -2566,7 +2566,7 @@ resource. This property has special meaning for the XML and RDF serializizers. The XML serializer serializes this as a <l>uri</l> attribute instead of an <l><uri></l> element, and the RDF serializer uses this property for the value of the <l>rdf:resource</l> attribute. - <li>The <code><ja>@BeanProperty</ja>(transform=CalendarTransform.Medium.<jk>class</jk>)</code> annotation causes the date field to + <li>The <code><ja>@BeanProperty</ja>(transform=CalendarSwap.Medium.<jk>class</jk>)</code> annotation causes the date field to be serialized in the format <l>"MM dd, yyyy"</l>. This could have also been specified globally on the resource level through the {@link org.apache.juneau.server.annotation.RestResource#properties} annotation. </ul> @@ -2625,7 +2625,7 @@ <jc>// Bean properties</jc> <jk>public</jk> String <jf>name</jf>; - <ja>@BeanProperty(</ja>transform=CalendarTransform.Medium.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>; + <ja>@BeanProperty(</ja>transform=CalendarSwap.Medium.<jk>class</jk>) <jk>public</jk> Calendar <jf>birthDate</jf>; <jk>public</jk> LinkedList<CreateAddress> <jf>addresses</jf>; <jd>/** Bean constructor - Needed for instantiating on server side */</jd> @@ -2900,9 +2900,9 @@ <jk>new</jk> Column(<js>"age"</js>, <js>"xs:int"</js>), <jk>new</jk> Column(<js>"numAddresses"</js>, <js>"xs:int"</js>) .addTransform( - <jk>new</jk> PojoTransform<Person,Integer>() { - <ja>@Override</ja> /* PojoTransform */ - <jk>public</jk> Integer transform(Person p) { + <jk>new</jk> PojoSwap<Person,Integer>() { + <ja>@Override</ja> /* PojoSwap */ + <jk>public</jk> Integer swap(Person p) { <jk>return</jk> p.addresses.size(); } } @@ -4456,25 +4456,25 @@ <div class='topic'> <p> The {@link org.apache.juneau.server.annotation.RestResource#transforms()} annotation can be used to add - POJO transforms to all the serializers and parsers registered with a servlet. + POJO swaps to all the serializers and parsers registered with a servlet. </p> <p> - In this example, you define a POJO transform that converts doubles to localized-format strings using + In this example, you define a POJO swap that converts doubles to localized-format strings using the <l>NumberFormat</l> Java class. </p> <p class='bcode'> <ja>@RestResource</ja>( transforms={ - MyRestService.LongTransform.<jk>class</jk> + MyRestService.DoubleSwap.<jk>class</jk> } ) <jk>public class</jk> MyRestService <jk>extends</jk> JazzDefaultRestResource { <jk>private static final</jk> NumberFormat <jsf>FORMAT</jsf> = NumberFormat.<jsm>getInstance()</jsm>; - <jk>public static class</jk> DoubleTransform <jk>extends</jk> PojoTransform<Double,String> { - <ja>@Override</ja> <jc>/* PojoTransform */</jc> - <jk>public</jk> String transform(Double o) <jk>throws</jk> SerializeException { + <jk>public static class</jk> DoubleSwap <jk>extends</jk> PojoSwap<Double,String> { + <ja>@Override</ja> <jc>/* PojoSwap */</jc> + <jk>public</jk> String swap(Double o) <jk>throws</jk> SerializeException { <jk>return</jk> <jsf>FORMAT</jsf>.format(o); } } @@ -4499,7 +4499,7 @@ <ja>@Override</ja> <jk>protected</jk> SerializerGroup createSerializers(ObjectMap properties, Class[] transforms) <jk>throws</jk> Exception { SerializerGroup g = <jk>super</jk>.createSerializers(properties, transforms); - g.getSerializer(<js>"text/html"</js>).addTransforms(DoubleTransform.<jk>class</jk>); + g.getSerializer(<js>"text/html"</js>).addTransforms(DoubleSwap.<jk>class</jk>); <jk>return</jk> g; } </p> @@ -4733,7 +4733,7 @@ <li>Parsers can now parse directly from {@link java.io.File Files} and other types. See {@link org.apache.juneau.parser.Parser#parse(Object,ClassMeta)} <li>Parsers will automatically covert numeric input to POJOs that have numeric constructors (e.g. <code>java.util.Date</code>). - <li>Renamed 'Filters' to 'Transforms'. Filters is just too overloaded a term. + <li>Renamed 'Filters' to 'BeanFilters' and 'PojoSwaps'. Filters is just too overloaded a term. <li>Internal utility classes moved to a new <code>org.apache.juneau.internal</code> package. These internal utility classes are not meant for consumption outside the Juneau codebase. <li>New methods on {@link org.apache.juneau.parser.Parser}: @@ -4749,10 +4749,10 @@ </ul> </li> <li>New {@link org.apache.juneau.annotation.Bean#sort() @Bean.sort()} annotation. - <li>New methods on {@link org.apache.juneau.transform.BeanTransform}: + <li>New methods on {@link org.apache.juneau.transform.BeanFilter}: <ul> - <li>{@link org.apache.juneau.transform.BeanTransform#isSortProperties()} - <li>{@link org.apache.juneau.transform.BeanTransform#setSortProperties(boolean)} + <li>{@link org.apache.juneau.transform.BeanFilter#isSortProperties()} + <li>{@link org.apache.juneau.transform.BeanFilter#setSortProperties(boolean)} </ul> </li> <li>Added <ja>@Bean.properties</ja> annotations on various DTO beans to make the ordering consistent @@ -5037,7 +5037,7 @@ <li>New <del><code>StringVar.doResolve(String)</code></del> method. <li>New <del><code>StringVarResolver.DEFAULT</code></del> field. <li>Eliminated dependency on <code>javax.mail.internet.MimeUtility</code> by implementing our own {@link org.apache.juneau.internal.StringUtils#base64Encode(byte[])} method. - <li>{@link org.apache.juneau.transforms.CalendarTransform} and {@link org.apache.juneau.transforms.DateTransform} classes now handle blank input better. Returns <jk>null</jk> instead of throwing an exception. + <li>{@link org.apache.juneau.transforms.CalendarSwap} and {@link org.apache.juneau.transforms.DateSwap} classes now handle blank input better. Returns <jk>null</jk> instead of throwing an exception. <li>{@link org.apache.juneau.html.HtmlDocSerializer} specifies the default CSS location as <code>/servletPath/style.css</code> instead of <code>/servletPath/htdocs/juneau.css</code>. This coincides with enhancements made in the server code for specifying styles. <li>{@link org.apache.juneau.html.HtmlDocSerializer} wraps output in two div tags instead of one (e.g. <code><div class='outerdata'><div class='data' id='data'>...</div></div></code>). @@ -6031,11 +6031,11 @@ Juno 5.1.0.6 is a moderate update. </p> <ul class='spaced-list'> - <li>Simplified API for {@link org.apache.juneau.transform.PojoTransform}. - Since it's rarely used, the <code>beanContext</code> parameter was replaced with a {@link org.apache.juneau.transform.PojoTransform#getBeanContext()} method on + <li>Simplified API for {@link org.apache.juneau.transform.PojoSwap}. + Since it's rarely used, the <code>beanContext</code> parameter was replaced with a {@link org.apache.juneau.transform.PojoSwap#getBeanContext()} method on the class. - <li>New simplified way of defining POJO filters without needing to extend {@link org.apache.juneau.transform.PojoTransform}. - See {@link org.apache.juneau.transform.SurrogateTransform} for details. + <li>New simplified way of defining POJO filters without needing to extend {@link org.apache.juneau.transform.PojoSwap}. + See {@link org.apache.juneau.transform.SurrogateSwap} for details. <li>New {@link org.apache.juneau.html.annotation.Html @Html} annotation. Will allow the definition of standard XHTML DTOs in future releases. For now, {@link org.apache.juneau.html.dto.Img} is an example of defining an XHTML element using Juno DTOs. @@ -6126,8 +6126,8 @@ <li>New {@link org.apache.juneau.json.annotation.Json#wrapperAttr() @Json.wrapperAttr()} annotation that automatically wraps beans and objects in a wrapper attribute when serializing to or parsing from JSON. <li>Changed the default ordering of bean properties to be in parent-to-child class order. - <li>New {@link org.apache.juneau.transform.BeanTransform#readProperty(Object,String,Object) readProperty()} and {@link org.apache.juneau.transform.BeanTransform#writeProperty(Object,String,Object) writeProperty()} - methods added to {@link org.apache.juneau.transform.BeanTransform} class to allow individualized serialization and parsing behavior on a class-by-class basis. + <li>New {@link org.apache.juneau.transform.BeanFilter#readProperty(Object,String,Object) readProperty()} and {@link org.apache.juneau.transform.BeanFilter#writeProperty(Object,String,Object) writeProperty()} + methods added to {@link org.apache.juneau.transform.BeanFilter} class to allow individualized serialization and parsing behavior on a class-by-class basis. <li>Eliminated previous restriction where bean subtype attributes had to be listed first in JSON objects when using the {@link org.apache.juneau.annotation.Bean#subTypeProperty()} annotation. The previous behavior was not strictly JSON-compliant since JSON objects are supposed to consist of unordered lists of key/value pairs. While targeted for JSON, the restriction is also lifted for all other parsers. @@ -6346,7 +6346,7 @@ New {@link org.apache.juneau.annotation.Bean#stopClass @Bean.stopClass} annotation for specifying stop classes for bean properties. </li> <li> - New {@link org.apache.juneau.transform.BeanTransform#setStopClass(Class)} which is the program equivalent to the annotation above. + New {@link org.apache.juneau.transform.BeanFilter#setStopClass(Class)} which is the program equivalent to the annotation above. </li> <li> New methods on {@link org.apache.juneau.dto.ResultSetList}: @@ -6489,7 +6489,7 @@ The new class hierarchy is much simpler to understand. </li> <li> - Added {@link org.apache.juneau.transforms.XMLGregorianCalendarTransform} to convert these to ISO8601 strings during serialization, and vice versa during parsing. + Added {@link org.apache.juneau.transforms.XMLGregorianCalendarSwap} to convert these to ISO8601 strings during serialization, and vice versa during parsing. </li> <li> Added a {@link org.apache.juneau.json.JsonParserContext#JSON_strictMode strict} mode to {@link org.apache.juneau.json.JsonParser}. @@ -6528,7 +6528,7 @@ <li> Revamped the API for filter support: <ul> - <li>Updated {@link org.apache.juneau.transform.BeanTransform} class to mirror the {@link org.apache.juneau.annotation.Bean @Bean} annotation.</li> + <li>Updated {@link org.apache.juneau.transform.BeanFilter} class to mirror the {@link org.apache.juneau.annotation.Bean @Bean} annotation.</li> <li>Introduced support for bean {@link org.apache.juneau.annotation.Bean#subTypeProperty() subtypes}. </li> <li>Replaced <code><ja>@Bean</ja>(filter=xxx)</code> with new {@link org.apache.juneau.annotation.Transform @Transform} annotation.</li> </ul> @@ -6548,8 +6548,8 @@ <li> New predefined DateFilters with millisecond precision: <ul> - <li><code>org.apache.juneau.transforms.DateTransform.ISO8601DTP</code></li> - <li><code>org.apache.juneau.transforms.DateTransform.ISO8601DTZP</code></li> + <li><code>org.apache.juneau.transforms.DateSwap.ISO8601DTP</code></li> + <li><code>org.apache.juneau.transforms.DateSwap.ISO8601DTZP</code></li> </ul> </li> </ul> @@ -6686,7 +6686,7 @@ Removed <code><ja>@Xml</ja>.valAttr</code> annotation since it's now redundant with <code><ja>@Xml</ja>(format=<jsf>CONTENT</jsf>)</code>. </li> <li> - Fixed timezone bug in {@link org.apache.juneau.transforms.CalendarTransform}. + Fixed timezone bug in {@link org.apache.juneau.transforms.CalendarSwap}. </li> <li> Simplified <code>Serializer.serialize(Object,Object,SerializerContext)</code> method. @@ -6992,7 +6992,7 @@ New {@link org.apache.juneau.transform} package. <ul> <li>Cleaner class structure.</li> - <li>Improved {@link org.apache.juneau.transform.BeanTransform} class for defining property filters on beans.</li> + <li>Improved {@link org.apache.juneau.transform.BeanFilter} class for defining property filters on beans.</li> <li>Improved {@link org.apache.juneau.utils.PojoQuery} class for defining filters on objects (previously called <code>ObjectFilter</code>).</li> </ul> </li> @@ -7033,7 +7033,7 @@ <code>JsonMap</code> and <code>JsonList</code> changed to {@link org.apache.juneau.ObjectMap} and {@link org.apache.juneau.ObjectList} to better reflect that they're not limited to just JSON support. </li> <li> - Renamed <code>PojoTransform</code> to {@link org.apache.juneau.utils.PojoQuery} to not confuse it with the new Filter API. + Renamed <code>PojoSwap</code> to {@link org.apache.juneau.utils.PojoQuery} to not confuse it with the new Filter API. </li> </ul> <h6 class='topic'>REST server API changes</h6> @@ -7561,8 +7561,8 @@ The API for handling non-standard POJOs has been simplified by introducing the concept of a {@link org.apache.juneau.transform.Transform} class, which is associated with the <code>BeanContext</code> class (and thus the Serializer and Parser classes too) through the <code>BeanContext.addTransforms(Class[])</code> method.<br> Two new subclasses of {@link org.apache.juneau.transform.Transform}: <ul> - <li>{@link org.apache.juneau.transform.BeanTransform} - Filter POJO beans.</li> - <li>{@link org.apache.juneau.transform.PojoTransform} - Filter POJOs that aren't beans.</li> + <li>{@link org.apache.juneau.transform.BeanFilter} - Filter POJO beans.</li> + <li>{@link org.apache.juneau.transform.PojoSwap} - Filter POJOs that aren't beans.</li> </ul> This new API replaces the previous separate <code>Cast</code> and <code>BeanFilter</code> APIs which were considerably more complicated and puts them under a common API. </li>
http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/juneau-core/src/test/java/org/apache/juneau/BeanConfigTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/test/java/org/apache/juneau/BeanConfigTest.java b/juneau-core/src/test/java/org/apache/juneau/BeanConfigTest.java index e57abba..dab2579 100755 --- a/juneau-core/src/test/java/org/apache/juneau/BeanConfigTest.java +++ b/juneau-core/src/test/java/org/apache/juneau/BeanConfigTest.java @@ -732,31 +732,31 @@ public class BeanConfigTest { p2.setProperty(BEAN_notBeanPackages_remove, "bar"); assertSameCache(p1, p2); - p1.addTransforms(DummyPojoTransformA.class); + p1.addTransforms(DummyPojoSwapA.class); assertDifferentCache(p1, p2); - p2.addTransforms(DummyPojoTransformA.class); + p2.addTransforms(DummyPojoSwapA.class); assertSameCache(p1, p2); - p1.addTransforms(DummyPojoTransformB.class,DummyPojoTransformC.class); // Order of filters is important! - p2.addTransforms(DummyPojoTransformC.class,DummyPojoTransformB.class); + p1.addTransforms(DummyPojoSwapB.class,DummyPojoSwapC.class); // Order of filters is important! + p2.addTransforms(DummyPojoSwapC.class,DummyPojoSwapB.class); assertDifferentCache(p1, p2); p1 = new JsonParser(); p2 = new JsonParser(); - p1.addTransforms(DummyBeanTransformA.class); + p1.addTransforms(DummyBeanFilterA.class); assertDifferentCache(p1, p2); - p2.addTransforms(DummyBeanTransformA.class); + p2.addTransforms(DummyBeanFilterA.class); assertSameCache(p1, p2); - p1.addTransforms(DummyBeanTransformB.class,DummyBeanTransformC.class); // Order of filters is important! - p2.addTransforms(DummyBeanTransformC.class,DummyBeanTransformB.class); + p1.addTransforms(DummyBeanFilterB.class,DummyBeanFilterC.class); // Order of filters is important! + p2.addTransforms(DummyBeanFilterC.class,DummyBeanFilterB.class); assertDifferentCache(p1, p2); } - public static class DummyPojoTransformA extends PojoTransform<A,ObjectMap> {} - public static class DummyPojoTransformB extends PojoTransform<B,ObjectMap> {} - public static class DummyPojoTransformC extends PojoTransform<C,ObjectMap> {} - public static class DummyBeanTransformA extends BeanTransform<A> {} - public static class DummyBeanTransformB extends BeanTransform<B> {} - public static class DummyBeanTransformC extends BeanTransform<C> {} + public static class DummyPojoSwapA extends PojoSwap<A,ObjectMap> {} + public static class DummyPojoSwapB extends PojoSwap<B,ObjectMap> {} + public static class DummyPojoSwapC extends PojoSwap<C,ObjectMap> {} + public static class DummyBeanFilterA extends BeanFilter<A> {} + public static class DummyBeanFilterB extends BeanFilter<B> {} + public static class DummyBeanFilterC extends BeanFilter<C> {} public static class C {} private void assertSameCache(Parser p1, Parser p2) { http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/juneau-core/src/test/java/org/apache/juneau/BeanFilterTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/test/java/org/apache/juneau/BeanFilterTest.java b/juneau-core/src/test/java/org/apache/juneau/BeanFilterTest.java new file mode 100755 index 0000000..b1b1740 --- /dev/null +++ b/juneau-core/src/test/java/org/apache/juneau/BeanFilterTest.java @@ -0,0 +1,145 @@ +/*************************************************************************************************************************** + * 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; + +import static org.junit.Assert.*; + +import java.util.*; + +import org.apache.juneau.annotation.*; +import org.apache.juneau.json.*; +import org.junit.*; + +@SuppressWarnings("javadoc") +public class BeanFilterTest { + + //==================================================================================================== + // Test sub types + //==================================================================================================== + @Test + public void testSubTypes() throws Exception { + JsonSerializer s = JsonSerializer.DEFAULT_LAX; + JsonParser p = JsonParser.DEFAULT; + + A1 a1 = new A1(); + a1.f1 = "f1"; + a1.fb = new B2(); + ((B2)a1.fb).f2 = "f2"; + String r = s.serialize(a1); + assertEquals("{subType:'A1',f0:'f0',fb:{subType:'B2',f0b:'f0b',f2:'f2'},f1:'f1'}", r); + + A a = p.parse(r, A.class); + assertTrue(a instanceof A1); + assertTrue(a.fb instanceof B2); + assertEquals("f1", ((A1)a).f1); + assertEquals("f2", ((B2)a.fb).f2); + + // Try out-of-order creation. + r = "{f0:'f0',f1:'f1',subType:'A1',fb:{f0b:'f0b',f2:'f2',subType:'B2'}}"; + a = p.parse(r, A.class); + assertTrue(a instanceof A1); + assertTrue(a.fb instanceof B2); + assertEquals("f1", ((A1)a).f1); + assertEquals("f2", ((B2)a.fb).f2); + } + + @Bean( + subTypeProperty="subType", + subTypes={ + @BeanSubType(type=A1.class, id="A1"), + @BeanSubType(type=A2.class, id="A2") + } + ) + public static abstract class A { + public String f0 = "f0"; + public B fb; + } + + public static class A1 extends A { + public String f1; + } + + public static class A2 extends A { + public String f2; + } + + @Bean( + subTypeProperty="subType", + subTypes={ + @BeanSubType(type=B1.class, id="B1"), + @BeanSubType(type=B2.class, id="B2") + } + ) + public static abstract class B { + public String f0b = "f0b"; + } + + public static class B1 extends B { + public String f1; + } + + public static class B2 extends B { + public String f2; + } + + //==================================================================================================== + // Test parent class used as transform + //==================================================================================================== + @Test + public void testParentClassTransform() throws Exception { + JsonSerializer s = new JsonSerializer.Simple().addTransforms(C1.class); + + C1 c1 = new C2(); + String r = s.serialize(c1); + assertEquals("{f0:'f0'}", r); + + List<C1> l = new LinkedList<C1>(); + l.add(new C2()); + r = s.serialize(l); + assertEquals("[{f0:'f0'}]", r); + } + + public static class C1 { + public String f0 = "f0"; + } + + public static class C2 extends C1 { + public String f1 = "f1"; + } + + //==================================================================================================== + // Test non-static parent class used as transform + //==================================================================================================== + @Test + public void testParentClassTransform2() throws Exception { + JsonSerializer s = new JsonSerializer.Simple().addTransforms(D1.class); + + D1 d1 = new D2(); + String r = s.serialize(d1); + assertEquals("{f0:'f0'}", r); + + List<D1> l = new LinkedList<D1>(); + l.add(new D2()); + r = s.serialize(l); + assertEquals("[{f0:'f0'}]", r); + } + + public class D1 { + public String f0 = "f0"; + } + + public class D2 extends D1 { + public String f1 = "f1"; + } + +} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java b/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java index f7e3b12..b1c4b97 100755 --- a/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java +++ b/juneau-core/src/test/java/org/apache/juneau/BeanMapTest.java @@ -1481,11 +1481,11 @@ public class BeanMapTest { } //==================================================================================================== - // testCastToLinkedListUsingTransform - cast() to LinkedList<Calendar> using CalendarTransform + // testCastToLinkedListUsingTransform - cast() to LinkedList<Calendar> using CalendarSwap //==================================================================================================== @Test public void testCastToLinkedListUsingTransform() throws Exception { - BeanContext bc = ContextFactory.create().addTransforms(CalendarTransform.ISO8601DTZ.class).getBeanContext(); + BeanContext bc = ContextFactory.create().addTransforms(CalendarSwap.ISO8601DTZ.class).getBeanContext(); // With _class ObjectMap m = new ObjectMap(bc); http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/juneau-core/src/test/java/org/apache/juneau/BeanTransformTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/test/java/org/apache/juneau/BeanTransformTest.java b/juneau-core/src/test/java/org/apache/juneau/BeanTransformTest.java deleted file mode 100755 index 0ee689c..0000000 --- a/juneau-core/src/test/java/org/apache/juneau/BeanTransformTest.java +++ /dev/null @@ -1,145 +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; - -import static org.junit.Assert.*; - -import java.util.*; - -import org.apache.juneau.annotation.*; -import org.apache.juneau.json.*; -import org.junit.*; - -@SuppressWarnings("javadoc") -public class BeanTransformTest { - - //==================================================================================================== - // Test sub types - //==================================================================================================== - @Test - public void testSubTypes() throws Exception { - JsonSerializer s = JsonSerializer.DEFAULT_LAX; - JsonParser p = JsonParser.DEFAULT; - - A1 a1 = new A1(); - a1.f1 = "f1"; - a1.fb = new B2(); - ((B2)a1.fb).f2 = "f2"; - String r = s.serialize(a1); - assertEquals("{subType:'A1',f0:'f0',fb:{subType:'B2',f0b:'f0b',f2:'f2'},f1:'f1'}", r); - - A a = p.parse(r, A.class); - assertTrue(a instanceof A1); - assertTrue(a.fb instanceof B2); - assertEquals("f1", ((A1)a).f1); - assertEquals("f2", ((B2)a.fb).f2); - - // Try out-of-order creation. - r = "{f0:'f0',f1:'f1',subType:'A1',fb:{f0b:'f0b',f2:'f2',subType:'B2'}}"; - a = p.parse(r, A.class); - assertTrue(a instanceof A1); - assertTrue(a.fb instanceof B2); - assertEquals("f1", ((A1)a).f1); - assertEquals("f2", ((B2)a.fb).f2); - } - - @Bean( - subTypeProperty="subType", - subTypes={ - @BeanSubType(type=A1.class, id="A1"), - @BeanSubType(type=A2.class, id="A2") - } - ) - public static abstract class A { - public String f0 = "f0"; - public B fb; - } - - public static class A1 extends A { - public String f1; - } - - public static class A2 extends A { - public String f2; - } - - @Bean( - subTypeProperty="subType", - subTypes={ - @BeanSubType(type=B1.class, id="B1"), - @BeanSubType(type=B2.class, id="B2") - } - ) - public static abstract class B { - public String f0b = "f0b"; - } - - public static class B1 extends B { - public String f1; - } - - public static class B2 extends B { - public String f2; - } - - //==================================================================================================== - // Test parent class used as transform - //==================================================================================================== - @Test - public void testParentClassTransform() throws Exception { - JsonSerializer s = new JsonSerializer.Simple().addTransforms(C1.class); - - C1 c1 = new C2(); - String r = s.serialize(c1); - assertEquals("{f0:'f0'}", r); - - List<C1> l = new LinkedList<C1>(); - l.add(new C2()); - r = s.serialize(l); - assertEquals("[{f0:'f0'}]", r); - } - - public static class C1 { - public String f0 = "f0"; - } - - public static class C2 extends C1 { - public String f1 = "f1"; - } - - //==================================================================================================== - // Test non-static parent class used as transform - //==================================================================================================== - @Test - public void testParentClassTransform2() throws Exception { - JsonSerializer s = new JsonSerializer.Simple().addTransforms(D1.class); - - D1 d1 = new D2(); - String r = s.serialize(d1); - assertEquals("{f0:'f0'}", r); - - List<D1> l = new LinkedList<D1>(); - l.add(new D2()); - r = s.serialize(l); - assertEquals("[{f0:'f0'}]", r); - } - - public class D1 { - public String f0 = "f0"; - } - - public class D2 extends D1 { - public String f1 = "f1"; - } - -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/juneau-core/src/test/java/org/apache/juneau/ClassMetaTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/test/java/org/apache/juneau/ClassMetaTest.java b/juneau-core/src/test/java/org/apache/juneau/ClassMetaTest.java index 16daad9..d6a8dcd 100755 --- a/juneau-core/src/test/java/org/apache/juneau/ClassMetaTest.java +++ b/juneau-core/src/test/java/org/apache/juneau/ClassMetaTest.java @@ -121,148 +121,148 @@ public class ClassMetaTest { hc1 = bc.getClassMeta(HC1.class); hi2 = bc.getClassMeta(HI2.class); hc2 = bc.getClassMeta(HC2.class); - assertFalse(ooo.hasChildPojoTransforms()); - assertFalse(hi1.hasChildPojoTransforms()); - assertFalse(hc1.hasChildPojoTransforms()); - assertFalse(hi2.hasChildPojoTransforms()); - assertFalse(hc2.hasChildPojoTransforms()); - assertNull(ooo.getPojoTransform()); - assertNull(hi1.getPojoTransform()); - assertNull(hc1.getPojoTransform()); - assertNull(hi2.getPojoTransform()); - assertNull(hc2.getPojoTransform()); + assertFalse(ooo.hasChildPojoSwaps()); + assertFalse(hi1.hasChildPojoSwaps()); + assertFalse(hc1.hasChildPojoSwaps()); + assertFalse(hi2.hasChildPojoSwaps()); + assertFalse(hc2.hasChildPojoSwaps()); + assertNull(ooo.getPojoSwap()); + assertNull(hi1.getPojoSwap()); + assertNull(hc1.getPojoSwap()); + assertNull(hi2.getPojoSwap()); + assertNull(hc2.getPojoSwap()); assertEquals(ooo.getTransformedClassMeta().getInnerClass(), Object.class); assertEquals(hi1.getTransformedClassMeta().getInnerClass(), HI1.class); assertEquals(hc1.getTransformedClassMeta().getInnerClass(), HC1.class); assertEquals(hi2.getTransformedClassMeta().getInnerClass(), HI2.class); assertEquals(hc2.getTransformedClassMeta().getInnerClass(), HC2.class); - bc = ContextFactory.create().addTransforms(HI1Transform.class).getBeanContext(); + bc = ContextFactory.create().addTransforms(HI1Swap.class).getBeanContext(); ooo = bc.getClassMeta(Object.class); hi1 = bc.getClassMeta(HI1.class); hc1 = bc.getClassMeta(HC1.class); hi2 = bc.getClassMeta(HI2.class); hc2 = bc.getClassMeta(HC2.class); - assertTrue(ooo.hasChildPojoTransforms()); - assertTrue(hi1.hasChildPojoTransforms()); - assertFalse(hc1.hasChildPojoTransforms()); - assertFalse(hi2.hasChildPojoTransforms()); - assertFalse(hc2.hasChildPojoTransforms()); - assertNull(ooo.getPojoTransform()); - assertEquals(hi1.getPojoTransform().getClass(), HI1Transform.class); - assertEquals(hc1.getPojoTransform().getClass(), HI1Transform.class); - assertEquals(hi2.getPojoTransform().getClass(), HI1Transform.class); - assertEquals(hc2.getPojoTransform().getClass(), HI1Transform.class); + assertTrue(ooo.hasChildPojoSwaps()); + assertTrue(hi1.hasChildPojoSwaps()); + assertFalse(hc1.hasChildPojoSwaps()); + assertFalse(hi2.hasChildPojoSwaps()); + assertFalse(hc2.hasChildPojoSwaps()); + assertNull(ooo.getPojoSwap()); + assertEquals(hi1.getPojoSwap().getClass(), HI1Swap.class); + assertEquals(hc1.getPojoSwap().getClass(), HI1Swap.class); + assertEquals(hi2.getPojoSwap().getClass(), HI1Swap.class); + assertEquals(hc2.getPojoSwap().getClass(), HI1Swap.class); assertEquals(ooo.getTransformedClassMeta().getInnerClass(), Object.class); assertEquals(hi1.getTransformedClassMeta().getInnerClass(), Map.class); assertEquals(hc1.getTransformedClassMeta().getInnerClass(), Map.class); assertEquals(hi2.getTransformedClassMeta().getInnerClass(), Map.class); assertEquals(hc2.getTransformedClassMeta().getInnerClass(), Map.class); - bc = ContextFactory.create().addTransforms(HC1Transform.class).getBeanContext(); + bc = ContextFactory.create().addTransforms(HC1Swap.class).getBeanContext(); ooo = bc.getClassMeta(Object.class); hi1 = bc.getClassMeta(HI1.class); hc1 = bc.getClassMeta(HC1.class); hi2 = bc.getClassMeta(HI2.class); hc2 = bc.getClassMeta(HC2.class); - assertTrue(ooo.hasChildPojoTransforms()); - assertTrue(hi1.hasChildPojoTransforms()); - assertTrue(hc1.hasChildPojoTransforms()); - assertFalse(hi2.hasChildPojoTransforms()); - assertFalse(hc2.hasChildPojoTransforms()); - assertNull(ooo.getPojoTransform()); - assertNull(hi1.getPojoTransform()); - assertEquals(hc1.getPojoTransform().getClass(), HC1Transform.class); - assertNull(hi2.getPojoTransform()); - assertEquals(hc2.getPojoTransform().getClass(), HC1Transform.class); + assertTrue(ooo.hasChildPojoSwaps()); + assertTrue(hi1.hasChildPojoSwaps()); + assertTrue(hc1.hasChildPojoSwaps()); + assertFalse(hi2.hasChildPojoSwaps()); + assertFalse(hc2.hasChildPojoSwaps()); + assertNull(ooo.getPojoSwap()); + assertNull(hi1.getPojoSwap()); + assertEquals(hc1.getPojoSwap().getClass(), HC1Swap.class); + assertNull(hi2.getPojoSwap()); + assertEquals(hc2.getPojoSwap().getClass(), HC1Swap.class); assertEquals(ooo.getTransformedClassMeta().getInnerClass(), Object.class); assertEquals(hi1.getTransformedClassMeta().getInnerClass(), HI1.class); assertEquals(hc1.getTransformedClassMeta().getInnerClass(), Map.class); assertEquals(hi2.getTransformedClassMeta().getInnerClass(), HI2.class); assertEquals(hc2.getTransformedClassMeta().getInnerClass(), Map.class); - bc = ContextFactory.create().addTransforms(HI2Transform.class).getBeanContext(); + bc = ContextFactory.create().addTransforms(HI2Swap.class).getBeanContext(); ooo = bc.getClassMeta(Object.class); hi1 = bc.getClassMeta(HI1.class); hc1 = bc.getClassMeta(HC1.class); hi2 = bc.getClassMeta(HI2.class); hc2 = bc.getClassMeta(HC2.class); - assertTrue(ooo.hasChildPojoTransforms()); - assertTrue(hi1.hasChildPojoTransforms()); - assertFalse(hc1.hasChildPojoTransforms()); - assertTrue(hi2.hasChildPojoTransforms()); - assertFalse(hc2.hasChildPojoTransforms()); - assertNull(ooo.getPojoTransform()); - assertNull(hi1.getPojoTransform()); - assertNull(hc1.getPojoTransform()); - assertEquals(hi2.getPojoTransform().getClass(), HI2Transform.class); - assertEquals(hc2.getPojoTransform().getClass(), HI2Transform.class); + assertTrue(ooo.hasChildPojoSwaps()); + assertTrue(hi1.hasChildPojoSwaps()); + assertFalse(hc1.hasChildPojoSwaps()); + assertTrue(hi2.hasChildPojoSwaps()); + assertFalse(hc2.hasChildPojoSwaps()); + assertNull(ooo.getPojoSwap()); + assertNull(hi1.getPojoSwap()); + assertNull(hc1.getPojoSwap()); + assertEquals(hi2.getPojoSwap().getClass(), HI2Swap.class); + assertEquals(hc2.getPojoSwap().getClass(), HI2Swap.class); assertEquals(ooo.getTransformedClassMeta().getInnerClass(), Object.class); assertEquals(hi1.getTransformedClassMeta().getInnerClass(), HI1.class); assertEquals(hc1.getTransformedClassMeta().getInnerClass(), HC1.class); assertEquals(hi2.getTransformedClassMeta().getInnerClass(), Map.class); assertEquals(hc2.getTransformedClassMeta().getInnerClass(), Map.class); - bc = ContextFactory.create().addTransforms(HC2Transform.class).getBeanContext(); + bc = ContextFactory.create().addTransforms(HC2Swap.class).getBeanContext(); ooo = bc.getClassMeta(Object.class); hi1 = bc.getClassMeta(HI1.class); hc1 = bc.getClassMeta(HC1.class); hi2 = bc.getClassMeta(HI2.class); hc2 = bc.getClassMeta(HC2.class); - assertTrue(ooo.hasChildPojoTransforms()); - assertTrue(hi1.hasChildPojoTransforms()); - assertTrue(hc1.hasChildPojoTransforms()); - assertTrue(hi2.hasChildPojoTransforms()); - assertTrue(hc2.hasChildPojoTransforms()); - assertNull(ooo.getPojoTransform()); - assertNull(hi1.getPojoTransform()); - assertNull(hc1.getPojoTransform()); - assertNull(hi2.getPojoTransform()); - assertEquals(hc2.getPojoTransform().getClass(), HC2Transform.class); + assertTrue(ooo.hasChildPojoSwaps()); + assertTrue(hi1.hasChildPojoSwaps()); + assertTrue(hc1.hasChildPojoSwaps()); + assertTrue(hi2.hasChildPojoSwaps()); + assertTrue(hc2.hasChildPojoSwaps()); + assertNull(ooo.getPojoSwap()); + assertNull(hi1.getPojoSwap()); + assertNull(hc1.getPojoSwap()); + assertNull(hi2.getPojoSwap()); + assertEquals(hc2.getPojoSwap().getClass(), HC2Swap.class); assertEquals(ooo.getTransformedClassMeta().getInnerClass(), Object.class); assertEquals(hi1.getTransformedClassMeta().getInnerClass(), HI1.class); assertEquals(hc1.getTransformedClassMeta().getInnerClass(), HC1.class); assertEquals(hi2.getTransformedClassMeta().getInnerClass(), HI2.class); assertEquals(hc2.getTransformedClassMeta().getInnerClass(), Map.class); - bc = ContextFactory.create().addTransforms(HI1Transform.class,HC1Transform.class,HI2Transform.class,HC2Transform.class).getBeanContext(); + bc = ContextFactory.create().addTransforms(HI1Swap.class,HC1Swap.class,HI2Swap.class,HC2Swap.class).getBeanContext(); ooo = bc.getClassMeta(Object.class); hi1 = bc.getClassMeta(HI1.class); hc1 = bc.getClassMeta(HC1.class); hi2 = bc.getClassMeta(HI2.class); hc2 = bc.getClassMeta(HC2.class); - assertTrue(ooo.hasChildPojoTransforms()); - assertTrue(hi1.hasChildPojoTransforms()); - assertTrue(hc1.hasChildPojoTransforms()); - assertTrue(hi2.hasChildPojoTransforms()); - assertTrue(hc2.hasChildPojoTransforms()); - assertNull(ooo.getPojoTransform()); - assertEquals(hi1.getPojoTransform().getClass(), HI1Transform.class); - assertEquals(hc1.getPojoTransform().getClass(), HI1Transform.class); - assertEquals(hi2.getPojoTransform().getClass(), HI1Transform.class); - assertEquals(hc2.getPojoTransform().getClass(), HI1Transform.class); + assertTrue(ooo.hasChildPojoSwaps()); + assertTrue(hi1.hasChildPojoSwaps()); + assertTrue(hc1.hasChildPojoSwaps()); + assertTrue(hi2.hasChildPojoSwaps()); + assertTrue(hc2.hasChildPojoSwaps()); + assertNull(ooo.getPojoSwap()); + assertEquals(hi1.getPojoSwap().getClass(), HI1Swap.class); + assertEquals(hc1.getPojoSwap().getClass(), HI1Swap.class); + assertEquals(hi2.getPojoSwap().getClass(), HI1Swap.class); + assertEquals(hc2.getPojoSwap().getClass(), HI1Swap.class); assertEquals(ooo.getTransformedClassMeta().getInnerClass(), Object.class); assertEquals(hi1.getTransformedClassMeta().getInnerClass(), Map.class); assertEquals(hc1.getTransformedClassMeta().getInnerClass(), Map.class); assertEquals(hi2.getTransformedClassMeta().getInnerClass(), Map.class); assertEquals(hc2.getTransformedClassMeta().getInnerClass(), Map.class); - bc = ContextFactory.create().addTransforms(HC2Transform.class,HI2Transform.class,HC1Transform.class,HI1Transform.class).getBeanContext(); + bc = ContextFactory.create().addTransforms(HC2Swap.class,HI2Swap.class,HC1Swap.class,HI1Swap.class).getBeanContext(); ooo = bc.getClassMeta(Object.class); hi1 = bc.getClassMeta(HI1.class); hc1 = bc.getClassMeta(HC1.class); hi2 = bc.getClassMeta(HI2.class); hc2 = bc.getClassMeta(HC2.class); - assertTrue(ooo.hasChildPojoTransforms()); - assertTrue(hi1.hasChildPojoTransforms()); - assertTrue(hc1.hasChildPojoTransforms()); - assertTrue(hi2.hasChildPojoTransforms()); - assertTrue(hc2.hasChildPojoTransforms()); - assertNull(ooo.getPojoTransform()); - assertEquals(hi1.getPojoTransform().getClass(), HI1Transform.class); - assertEquals(hc1.getPojoTransform().getClass(), HC1Transform.class); - assertEquals(hi2.getPojoTransform().getClass(), HI2Transform.class); - assertEquals(hc2.getPojoTransform().getClass(), HC2Transform.class); + assertTrue(ooo.hasChildPojoSwaps()); + assertTrue(hi1.hasChildPojoSwaps()); + assertTrue(hc1.hasChildPojoSwaps()); + assertTrue(hi2.hasChildPojoSwaps()); + assertTrue(hc2.hasChildPojoSwaps()); + assertNull(ooo.getPojoSwap()); + assertEquals(hi1.getPojoSwap().getClass(), HI1Swap.class); + assertEquals(hc1.getPojoSwap().getClass(), HC1Swap.class); + assertEquals(hi2.getPojoSwap().getClass(), HI2Swap.class); + assertEquals(hc2.getPojoSwap().getClass(), HC2Swap.class); assertEquals(ooo.getTransformedClassMeta().getInnerClass(), Object.class); assertEquals(hi1.getTransformedClassMeta().getInnerClass(), Map.class); assertEquals(hc1.getTransformedClassMeta().getInnerClass(), Map.class); @@ -274,8 +274,8 @@ public class ClassMetaTest { public class HC1 implements HI1 {} public interface HI2 extends HI1 {} public class HC2 extends HC1 implements HI2 {} - public static class HC1Transform extends PojoTransform<HC1,Map> {} - public static class HI1Transform extends PojoTransform<HI1,Map> {} - public static class HC2Transform extends PojoTransform<HC2,Map> {} - public static class HI2Transform extends PojoTransform<HI2,Map> {} + public static class HC1Swap extends PojoSwap<HC1,Map> {} + public static class HI1Swap extends PojoSwap<HI1,Map> {} + public static class HC2Swap extends PojoSwap<HC2,Map> {} + public static class HI2Swap extends PojoSwap<HI2,Map> {} } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/juneau-core/src/test/java/org/apache/juneau/DataConversionTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/test/java/org/apache/juneau/DataConversionTest.java b/juneau-core/src/test/java/org/apache/juneau/DataConversionTest.java index 44b64c3..0c30966 100755 --- a/juneau-core/src/test/java/org/apache/juneau/DataConversionTest.java +++ b/juneau-core/src/test/java/org/apache/juneau/DataConversionTest.java @@ -134,7 +134,7 @@ public class DataConversionTest { @Test public void testObjectTransforms() throws Exception { String s = "Jan 12, 2001"; - BeanContext bc = ContextFactory.create().addTransforms(CalendarTransform.Medium.class).getBeanContext(); + BeanContext bc = ContextFactory.create().addTransforms(CalendarSwap.Medium.class).getBeanContext(); Calendar c = bc.convertToType(s, GregorianCalendar.class); assertEquals(2001, c.get(Calendar.YEAR)); c = bc.convertToType(s, Calendar.class); http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/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 new file mode 100755 index 0000000..3867a34 --- /dev/null +++ b/juneau-core/src/test/java/org/apache/juneau/PojoSwapTest.java @@ -0,0 +1,57 @@ +/*************************************************************************************************************************** + * 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; + +import static org.junit.Assert.*; + +import org.apache.juneau.json.*; +import org.apache.juneau.parser.*; +import org.apache.juneau.serializer.*; +import org.apache.juneau.transform.*; +import org.junit.*; + +@SuppressWarnings("javadoc") +public class PojoSwapTest { + + //==================================================================================================== + // Test same type + // If you define a PojoSwap<String,String> filter, then it should be invoked on all strings. + //==================================================================================================== + @Test + public void testSameType() throws Exception { + JsonSerializer s = JsonSerializer.DEFAULT_LAX.clone().addTransforms(ATransform.class); + JsonParser p = JsonParser.DEFAULT.clone().addTransforms(ATransform.class); + String r; + + r = s.serialize("foobar"); + assertEquals("'xfoobarx'", r); + r = p.parse(r, String.class); + assertEquals("foobar", r); + + ObjectMap m = new ObjectMap("{foo:'bar'}"); + r = s.serialize(m); + assertEquals("{xfoox:'xbarx'}", r); + } + + public static class ATransform extends PojoSwap<String,String> { + @Override + public String swap(String o) throws SerializeException { + return "x" + o + "x"; + } + + @Override + public String unswap(String f, ClassMeta<?> hint) throws ParseException { + return f.substring(1, f.length()-1); + } + } +} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/juneau-core/src/test/java/org/apache/juneau/PojoTransformTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/test/java/org/apache/juneau/PojoTransformTest.java b/juneau-core/src/test/java/org/apache/juneau/PojoTransformTest.java deleted file mode 100755 index 737adee..0000000 --- a/juneau-core/src/test/java/org/apache/juneau/PojoTransformTest.java +++ /dev/null @@ -1,57 +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; - -import static org.junit.Assert.*; - -import org.apache.juneau.json.*; -import org.apache.juneau.parser.*; -import org.apache.juneau.serializer.*; -import org.apache.juneau.transform.*; -import org.junit.*; - -@SuppressWarnings("javadoc") -public class PojoTransformTest { - - //==================================================================================================== - // Test same type - // If you define a PojoTransform<String,String> filter, then it should be invoked on all strings. - //==================================================================================================== - @Test - public void testSameType() throws Exception { - JsonSerializer s = JsonSerializer.DEFAULT_LAX.clone().addTransforms(ATransform.class); - JsonParser p = JsonParser.DEFAULT.clone().addTransforms(ATransform.class); - String r; - - r = s.serialize("foobar"); - assertEquals("'xfoobarx'", r); - r = p.parse(r, String.class); - assertEquals("foobar", r); - - ObjectMap m = new ObjectMap("{foo:'bar'}"); - r = s.serialize(m); - assertEquals("{xfoox:'xbarx'}", r); - } - - public static class ATransform extends PojoTransform<String,String> { - @Override - public String transform(String o) throws SerializeException { - return "x" + o + "x"; - } - - @Override - public String normalize(String f, ClassMeta<?> hint) throws ParseException { - return f.substring(1, f.length()-1); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/juneau-core/src/test/java/org/apache/juneau/TestUtils.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/test/java/org/apache/juneau/TestUtils.java b/juneau-core/src/test/java/org/apache/juneau/TestUtils.java index 2194571..18379cc 100755 --- a/juneau-core/src/test/java/org/apache/juneau/TestUtils.java +++ b/juneau-core/src/test/java/org/apache/juneau/TestUtils.java @@ -52,10 +52,10 @@ public class TestUtils { private static JsonSerializer js2 = new JsonSerializer.Simple() - .addTransforms(IteratorTransform.class, EnumerationTransform.class); + .addTransforms(IteratorSwap.class, EnumerationSwap.class); private static JsonSerializer js3 = new JsonSerializer.Simple() - .addTransforms(IteratorTransform.class, EnumerationTransform.class) + .addTransforms(IteratorSwap.class, EnumerationSwap.class) .setProperty(BEAN_sortProperties, true); /** http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java b/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java index 8fa5506..743c543 100755 --- a/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java +++ b/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripBeanMapsTest.java @@ -219,14 +219,14 @@ public class RoundTripBeanMapsTest extends RoundTripTest { //==================================================================================================== @Test public void testSubTypesUsingAnnotation() throws Exception { - JsonSerializer js = JsonSerializer.DEFAULT_LAX.clone().addTransforms(XMLGregorianCalendarTransform.class); + JsonSerializer js = JsonSerializer.DEFAULT_LAX.clone().addTransforms(XMLGregorianCalendarSwap.class); // Skip validation-only tests if (isValidationOnly()) return; - Serializer s = getSerializer().clone().addTransforms(XMLGregorianCalendarTransform.class); - Parser p = getParser().clone().addTransforms(XMLGregorianCalendarTransform.class); + Serializer s = getSerializer().clone().addTransforms(XMLGregorianCalendarSwap.class); + Parser p = getParser().clone().addTransforms(XMLGregorianCalendarSwap.class); B1 b1 = B1.create(); Object r = s.serialize(b1); @@ -290,18 +290,18 @@ public class RoundTripBeanMapsTest extends RoundTripTest { } //==================================================================================================== - // Test @Bean(subTypes=xxx) using BeanTransform + // Test @Bean(subTypes=xxx) using BeanFilter //==================================================================================================== @Test - public void testSubTypesUsingBeanTransform() throws Exception { - JsonSerializer js = JsonSerializer.DEFAULT_LAX.clone().addTransforms(XMLGregorianCalendarTransform.class); + public void testSubTypesUsingBeanFilter() throws Exception { + JsonSerializer js = JsonSerializer.DEFAULT_LAX.clone().addTransforms(XMLGregorianCalendarSwap.class); // Skip validation-only tests if (isValidationOnly()) return; - Serializer s = getSerializer().clone().addTransforms(CTransform.class, XMLGregorianCalendarTransform.class); - Parser p = getParser().clone().addTransforms(CTransform.class, XMLGregorianCalendarTransform.class); + Serializer s = getSerializer().clone().addTransforms(CTransform.class, XMLGregorianCalendarSwap.class); + Parser p = getParser().clone().addTransforms(CTransform.class, XMLGregorianCalendarSwap.class); C1 c1 = C1.create(); Object r = s.serialize(c1); @@ -356,7 +356,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest { } } - public static class CTransform extends BeanTransform<C> { + public static class CTransform extends BeanFilter<C> { public CTransform() { setSubTypeProperty("subType"); addSubType(C1.class, "C1"); @@ -414,16 +414,16 @@ public class RoundTripBeanMapsTest extends RoundTripTest { //==================================================================================================== - // Test @Bean(subTypes=xxx) with real bean property using BeanTransform + // Test @Bean(subTypes=xxx) with real bean property using BeanFilter //==================================================================================================== @Test - public void testSubTypePropertyWithRealPropertyUsingBeanTransform() throws Exception { + public void testSubTypePropertyWithRealPropertyUsingBeanFilter() throws Exception { // Skip validation-only tests if (isValidationOnly()) return; - Serializer s = getSerializer().clone().addTransforms(CATransform.class); - Parser p = getParser().clone().addTransforms(CATransform.class); + Serializer s = getSerializer().clone().addTransforms(CAFilter.class); + Parser p = getParser().clone().addTransforms(CAFilter.class); CA1 c1 = CA1.create(); Object r = s.serialize(c1); @@ -453,8 +453,8 @@ public class RoundTripBeanMapsTest extends RoundTripTest { public String f2; } - public static class CATransform extends BeanTransform<CA> { - public CATransform() { + public static class CAFilter extends BeanFilter<CA> { + public CAFilter() { setSubTypeProperty("subType"); addSubType(CA1.class, "CA1"); addSubType(CA2.class, "CA2"); @@ -492,18 +492,18 @@ public class RoundTripBeanMapsTest extends RoundTripTest { } //==================================================================================================== - // Test @Bean(properties=xxx) using BeanTransform + // Test @Bean(properties=xxx) using BeanFilter //==================================================================================================== @Test public void testPropertiesUsingTransform() throws Exception { - JsonSerializer js = JsonSerializer.DEFAULT_LAX.clone().addTransforms(D2Transform.class); + JsonSerializer js = JsonSerializer.DEFAULT_LAX.clone().addTransforms(D2Filter.class); // Skip validation-only tests if (isValidationOnly()) return; - Serializer s = getSerializer().clone().addTransforms(D2Transform.class); - Parser p = getParser().clone().addTransforms(D2Transform.class); + Serializer s = getSerializer().clone().addTransforms(D2Filter.class); + Parser p = getParser().clone().addTransforms(D2Filter.class); D2 d = new D2().init(); Object r = s.serialize(d); @@ -521,8 +521,8 @@ public class RoundTripBeanMapsTest extends RoundTripTest { return this; } } - public static class D2Transform extends BeanTransform<D2> { - public D2Transform() { + public static class D2Filter extends BeanFilter<D2> { + public D2Filter() { setProperties("f3","f2"); } } @@ -557,7 +557,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest { } //==================================================================================================== - // Test @Bean(excludeProperties=xxx) using BeanTransform + // Test @Bean(excludeProperties=xxx) using BeanFilter //==================================================================================================== @Test public void testExcludePropertiesUsingTransform() throws Exception { @@ -565,8 +565,8 @@ public class RoundTripBeanMapsTest extends RoundTripTest { if (isValidationOnly()) return; - Serializer s = getSerializer().clone().addTransforms(E2Transform.class); - Parser p = getParser().clone().addTransforms(E2Transform.class); + Serializer s = getSerializer().clone().addTransforms(E2Filter.class); + Parser p = getParser().clone().addTransforms(E2Filter.class); E2 e = new E2().init(); Object r = s.serialize(e); @@ -583,8 +583,8 @@ public class RoundTripBeanMapsTest extends RoundTripTest { return this; } } - public static class E2Transform extends BeanTransform<E2> { - public E2Transform() { + public static class E2Filter extends BeanFilter<E2> { + public E2Filter() { setExcludeProperties("f2"); } } @@ -622,7 +622,7 @@ public class RoundTripBeanMapsTest extends RoundTripTest { } //==================================================================================================== - // Test @Bean(interfaceClass=xxx) using BeanTransform + // Test @Bean(interfaceClass=xxx) using BeanFilter //==================================================================================================== @Test public void testInterfaceClassUsingTransform() throws Exception { @@ -636,8 +636,8 @@ public class RoundTripBeanMapsTest extends RoundTripTest { return; // --- Transform defined on parent class --- - s = getSerializer().clone().addTransforms(FB1Transform.class); - p = getParser().clone().addTransforms(FB1Transform.class); + s = getSerializer().clone().addTransforms(FB1Filter.class); + p = getParser().clone().addTransforms(FB1Filter.class); t = new FB2().init(); r = s.serialize(t); @@ -645,8 +645,8 @@ public class RoundTripBeanMapsTest extends RoundTripTest { assertObjectEquals("{f1:'f1'}", t); // --- Transform defined on child class class --- - s = getSerializer().clone().addTransforms(FB2Transform.class); - p = getParser().clone().addTransforms(FB2Transform.class); + s = getSerializer().clone().addTransforms(FB2Filter.class); + p = getParser().clone().addTransforms(FB2Filter.class); t = new FB2().init(); r = s.serialize(t); @@ -675,13 +675,13 @@ public class RoundTripBeanMapsTest extends RoundTripTest { return this; } } - public static class FB1Transform extends BeanTransform<FB1> { - public FB1Transform() { + public static class FB1Filter extends BeanFilter<FB1> { + public FB1Filter() { setInterfaceClass(FB1.class); } } - public static class FB2Transform extends BeanTransform<FB2> { - public FB2Transform() { + public static class FB2Filter extends BeanFilter<FB2> { + public FB2Filter() { setInterfaceClass(FB1.class); } } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java b/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java index 3b1bf5a..66c2118 100755 --- a/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java +++ b/juneau-core/src/test/java/org/apache/juneau/a/rttests/RoundTripMapsTest.java @@ -42,9 +42,9 @@ public class RoundTripMapsTest extends RoundTripTest { @Override /* RoundTripTest */ public Class<?>[] getTransforms() { return new Class<?>[]{ - ByteArrayBase64Transform.class, - DateTransform.ISO8601DTZ.class, - CalendarLongTransform.class, + ByteArrayBase64Swap.class, + DateSwap.ISO8601DTZ.class, + CalendarLongSwap.class, }; } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/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 8433862..3f3fc0d 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 @@ -46,9 +46,9 @@ public class RoundTripTransformBeansTest extends RoundTripTest { @Test public void testTransformBeans1() throws Exception { Class<?>[] f = { - ByteArrayBase64Transform.class, - CalendarTransform.ISO8601DTZ.class, - DateTransform.ISO8601DTZ.class + ByteArrayBase64Swap.class, + CalendarSwap.ISO8601DTZ.class, + DateSwap.ISO8601DTZ.class }; s.addTransforms(f); if (p != null) @@ -56,7 +56,7 @@ public class RoundTripTransformBeansTest extends RoundTripTest { A t = new A().init(); t = roundTrip(t, A.class); - // ByteArrayBase64Transform + // ByteArrayBase64Swap assertEquals(3, t.fByte[3]); assertNull(t.fnByte); assertEquals(5, t.faByte[2][1]); @@ -65,7 +65,7 @@ public class RoundTripTransformBeansTest extends RoundTripTest { assertEquals(6, t.fmByte.get("bar")[2]); assertNull(t.fmByte.get("baz")); - // CalendarTransform + // CalendarSwap t.fCalendar.setTimeZone(TimeZone.getTimeZone("GMT")); assertEquals(2001, t.fCalendar.get(Calendar.YEAR)); assertEquals(01, t.fCalendar.get(Calendar.MONTH)); @@ -84,7 +84,7 @@ public class RoundTripTransformBeansTest extends RoundTripTest { assertNull(t.fnCalendar); assertNull(t.fn2Calendar); - // DateTransform + // DateSwap assertEquals(1000, t.fDate.getTime()); assertNull(t.fnDate); assertEquals(3000, t.faDate[2].getTime()); @@ -96,7 +96,7 @@ public class RoundTripTransformBeansTest extends RoundTripTest { public static class A { - // Test ByteArrayBase64Transform + // Test ByteArrayBase64Swap public byte[] fByte; public byte[] fnByte; public byte[][] faByte; @@ -166,9 +166,9 @@ public class RoundTripTransformBeansTest extends RoundTripTest { @Test public void testTransformBeans2() throws Exception { Class<?>[] f = { - ByteArrayBase64Transform.class, - CalendarTransform.Medium.class, - DateTransform.RFC2822DT.class, + ByteArrayBase64Swap.class, + CalendarSwap.Medium.class, + DateSwap.RFC2822DT.class, }; s.addTransforms(f); if (p != null) @@ -176,7 +176,7 @@ public class RoundTripTransformBeansTest extends RoundTripTest { A t = new A().init(); t = roundTrip(t, A.class); - // ByteArrayBase64Transform + // ByteArrayBase64Swap assertEquals(3, t.fByte[3]); assertNull(t.fnByte); assertEquals(5, t.faByte[2][1]); @@ -185,7 +185,7 @@ public class RoundTripTransformBeansTest extends RoundTripTest { assertEquals(6, t.fmByte.get("bar")[2]); assertNull(t.fmByte.get("baz")); - // CalendarTransform + // CalendarSwap t.fCalendar.setTimeZone(TimeZone.getTimeZone("GMT")); assertEquals(2001, t.fCalendar.get(Calendar.YEAR)); assertEquals(01, t.fCalendar.get(Calendar.MONTH)); @@ -206,7 +206,7 @@ public class RoundTripTransformBeansTest extends RoundTripTest { assertNull(t.fnCalendar); assertNull(t.fn2Calendar); - // DateTransform + // DateSwap assertEquals(1000, t.fDate.getTime()); assertNull(t.fnDate); assertEquals(3000, t.faDate[2].getTime()); @@ -233,13 +233,13 @@ public class RoundTripTransformBeansTest extends RoundTripTest { public String f1; } - public static class BTransform extends PojoTransform<B,String> { - @Override /* PojoTransform */ - public String transform(B o) throws SerializeException { + public static class BTransform extends PojoSwap<B,String> { + @Override /* PojoSwap */ + public String swap(B o) throws SerializeException { return o.f1; } - @Override /* PojoTransform */ - public B normalize(String f, ClassMeta<?> hint) throws ParseException { + @Override /* PojoSwap */ + public B unswap(String f, ClassMeta<?> hint) throws ParseException { B b1 = new B(); b1.f1 = f; return b1; @@ -247,7 +247,7 @@ public class RoundTripTransformBeansTest extends RoundTripTest { } //==================================================================================================== - // testXMLGregorianCalendar - Test XMLGregorianCalendarTransform class. + // testXMLGregorianCalendar - Test XMLGregorianCalendarSwap class. //==================================================================================================== @Test public void testXMLGregorianCalendar() throws Exception { @@ -258,8 +258,8 @@ public class RoundTripTransformBeansTest extends RoundTripTest { GregorianCalendar gc = new GregorianCalendar(); XMLGregorianCalendar c = DatatypeFactory.newInstance().newXMLGregorianCalendar(gc); - Serializer s = getSerializer().clone().addTransforms(XMLGregorianCalendarTransform.class); - Parser p = getParser().clone().addTransforms(XMLGregorianCalendarTransform.class); + Serializer s = getSerializer().clone().addTransforms(XMLGregorianCalendarSwap.class); + Parser p = getParser().clone().addTransforms(XMLGregorianCalendarSwap.class); Object r = s.serialize(c); XMLGregorianCalendar c2 = p.parse(r, XMLGregorianCalendar.class); http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/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 79c8748..a988ea2 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 @@ -100,26 +100,26 @@ public class HtmlTest { public String f2 = "f2"; } - @Pojo(transform=A4Transform.class) + @Pojo(transform=A4Swap.class) public static class A4 { public String f2 = "f2"; } - public static class A4Transform extends PojoTransform<A4,A1> { - @Override /* PojoTransform */ - public A1 transform(A4 o) throws SerializeException { + public static class A4Swap extends PojoSwap<A4,A1> { + @Override /* PojoSwap */ + public A1 swap(A4 o) throws SerializeException { return new A1(); } } - @Pojo(transform=A5Transform.class) + @Pojo(transform=A5Swap.class) public static class A5 { public String f2 = "f2"; } - public static class A5Transform extends PojoTransform<A5,ObjectMap> { - @Override /* PojoTransform */ - public ObjectMap transform(A5 o) { + public static class A5Swap extends PojoSwap<A5,ObjectMap> { + @Override /* PojoSwap */ + public ObjectMap swap(A5 o) { return new ObjectMap().append("f1", "f1"); } } http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/juneau-core/src/test/java/org/apache/juneau/jena/RdfParserTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/test/java/org/apache/juneau/jena/RdfParserTest.java b/juneau-core/src/test/java/org/apache/juneau/jena/RdfParserTest.java index f185979..24c9479 100755 --- 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 @@ public class RdfParserTest { public String f2; @BeanProperty(beanUri=true) public URI f3; public URI f4a, f4b; - @BeanProperty(transform=CalendarTransform.ISO8601DTZ.class) public Calendar f5; + @BeanProperty(transform=CalendarSwap.ISO8601DTZ.class) public Calendar f5; public LinkedList<A1> f6 = new LinkedList<A1>(); public A init() throws Exception { @@ -131,7 +131,7 @@ public class RdfParserTest { public String f2; @BeanProperty(beanUri=true) public URI f3; public URI f4a, f4b; - @BeanProperty(transform=CalendarTransform.ISO8601DTZ.class) public Calendar f5; + @BeanProperty(transform=CalendarSwap.ISO8601DTZ.class) public Calendar f5; public A1 init() throws Exception { f1 = 1; http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/juneau-core/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java b/juneau-core/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java new file mode 100755 index 0000000..ec2da25 --- /dev/null +++ b/juneau-core/src/test/java/org/apache/juneau/transforms/BeanFilterTest.java @@ -0,0 +1,205 @@ +/*************************************************************************************************************************** + * 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.transforms; + +import static org.apache.juneau.TestUtils.*; +import static org.junit.Assert.*; + +import org.apache.juneau.*; +import org.apache.juneau.annotation.*; +import org.junit.*; + +@SuppressWarnings("javadoc") +public class BeanFilterTest { + + //==================================================================================================== + // Transformed interfaces + //==================================================================================================== + @Test + public void testTransformedInterfaces() throws Exception { + BeanContext bc; + BeanMap<A3> bm; + + bc = ContextFactory.create().addTransforms(A1.class).getBeanContext(); + bm = bc.newBeanMap(A3.class); + assertEquals("f1", bm.get("f1")); + assertNull(bm.get("f2")); + assertNull(bm.get("f3")); + + bc = ContextFactory.create().addTransforms(A2.class).getBeanContext(); + bm = bc.newBeanMap(A3.class); + assertEquals("f1", bm.get("f1")); + assertEquals("f2", bm.get("f2")); + assertNull(bm.get("f3")); + } + + public static interface A1 { + public String getF1(); + } + + public static interface A2 extends A1 { + public String getF2(); + } + + public static class A3 implements A2 { + @Override /* A1 */ + public String getF1() { + return "f1"; + } + @Override /* A2 */ + public String getF2() { + return "f2"; + } + public String getF3() { + return "f3"; + } + } + + //==================================================================================================== + // Transformed abstract classes + //==================================================================================================== + @Test + public void testTransformedAbstractClasses() throws Exception { + BeanContext bc; + BeanMap<Test2> bm; + + bc = ContextFactory.create().addTransforms(B1.class).getBeanContext(); + bm = bc.newBeanMap(Test2.class); + assertEquals("f1", bm.get("f1")); + assertNull(bm.get("f2")); + assertNull(bm.get("f3")); + + bc = ContextFactory.create().addTransforms(B2.class).getBeanContext(); + bm = bc.newBeanMap(Test2.class); + assertEquals("f1", bm.get("f1")); + assertEquals("f2", bm.get("f2")); + assertNull(bm.get("f3")); + } + + public abstract static class B1 { + public abstract String getF1(); + } + + public abstract static class B2 extends B1 { + @Override /* B1 */ + public abstract String getF1(); + public abstract String getF2(); + } + + public static class Test2 extends B2 { + @Override /* B1 */ + public String getF1() { + return "f1"; + } + @Override /* B2 */ + public String getF2() { + return "f2"; + } + public String getF3() { + return "f3"; + } + } + + //==================================================================================================== + // Transformed with stop classes + //==================================================================================================== + @Test + public void testTransformedWithStopClass() throws Exception { + C3 c3 = new C3(); + assertObjectEquals("{f3:3,p3:3}", c3); + } + + public class C1 { + public int f1 = 1; + public int getP1() { return 1; } + } + + public class C2 extends C1 { + public int f2 = 2; + public int getP2() { return 2; } + } + + @Bean(stopClass=C2.class) + public class C3 extends C2 { + public int f3 = 3; + public int getP3() { return 3; } + } + + @Test + public void testTransformedWithStopClassOnParentClass() throws Exception { + D3 d3 = new D3(); + assertObjectEquals("{f3:3,p3:3}", d3); + } + + public class D1 { + public int f1 = 1; + public int getP1() { return 1; } + } + + @Bean(stopClass=D2.class) + public class D2 extends D1 { + public int f2 = 2; + public int getP2() { return 2; } + } + + public class D3 extends D2 { + public int f3 = 3; + public int getP3() { return 3; } + } + + @Test + public void testTransformedWithStopClassOnParentClassWithOverriddenAnnotation() throws Exception { + E3 e3 = new E3(); + assertObjectEquals("{f3:3,p3:3}", e3); + } + + public class E1 { + public int f1 = 1; + public int getP1() { return 1; } + } + + @Bean(stopClass=E2.class) + public class E2 extends E1 { + public int f2 = 2; + public int getP2() { return 2; } + } + + @Bean(excludeProperties={"foo"}) + public class E3 extends E2 { + public int f3 = 3; + public int getP3() { return 3; } + } + + @Test + public void testTransformedWithStopClassesAtMulitpleLevels() throws Exception { + F3 e3 = new F3(); + assertObjectEquals("{f3:3,p3:3}", e3); + } + + @Bean(stopClass=F1.class) + public class F1 { + public int f1 = 1; + public int getP1() { return 1; } + } + + public class F2 extends F1 { + public int f2 = 2; + public int getP2() { return 2; } + } + + @Bean(stopClass=F2.class) + public class F3 extends F2 { + public int f3 = 3; + public int getP3() { return 3; } + } +} \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-juneau/blob/0ce0e663/juneau-core/src/test/java/org/apache/juneau/transforms/BeanMapTest.java ---------------------------------------------------------------------- diff --git a/juneau-core/src/test/java/org/apache/juneau/transforms/BeanMapTest.java b/juneau-core/src/test/java/org/apache/juneau/transforms/BeanMapTest.java index edda28e..e3f5942 100755 --- a/juneau-core/src/test/java/org/apache/juneau/transforms/BeanMapTest.java +++ b/juneau-core/src/test/java/org/apache/juneau/transforms/BeanMapTest.java @@ -26,7 +26,7 @@ public class BeanMapTest { //==================================================================================================== @Test public void testFilteredEntry() throws Exception { - BeanContext bc = ContextFactory.create().addTransforms(ByteArrayBase64Transform.class).getBeanContext(); + BeanContext bc = ContextFactory.create().addTransforms(ByteArrayBase64Swap.class).getBeanContext(); BeanMap<A> m = bc.forBean(new A()); assertEquals("AQID", m.get("f1")); @@ -81,16 +81,16 @@ public class BeanMapTest { public String f2; } - public static class B1Filter extends PojoTransform<B1,ObjectMap> { - @Override /* PojoTransform */ - public ObjectMap transform(B1 b1) { + public static class B1Filter extends PojoSwap<B1,ObjectMap> { + @Override /* PojoSwap */ + public ObjectMap swap(B1 b1) { return new ObjectMap().append("type", "b1").append("f1", b1.f1); } } - public static class B2Filter extends PojoTransform<B2,ObjectMap> { - @Override /* PojoTransform */ - public ObjectMap transform(B2 b2) { + public static class B2Filter extends PojoSwap<B2,ObjectMap> { + @Override /* PojoSwap */ + public ObjectMap swap(B2 b2) { return new ObjectMap().append("type", "b2").append("f1", b2.f1); } }
