Modified: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperTest.java URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperTest.java?rev=1538422&r1=1538421&r2=1538422&view=diff ============================================================================== --- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperTest.java (original) +++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperTest.java Sun Nov 3 19:21:04 2013 @@ -19,7 +19,6 @@ package org.apache.fulcrum.json.jackson; * under the License. */ - import java.util.ArrayList; import java.util.Calendar; import java.util.Date; @@ -37,264 +36,276 @@ import org.apache.fulcrum.testcontainer. import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; - - /** * Jackson2 JSON Test - * + * * @author gk * @version $Id$ */ -public class JacksonMapperTest extends BaseUnitTest -{ +public class JacksonMapperTest extends BaseUnitTest { private JsonService sc = null; Logger logger; /** * Constructor for test. - * - * @param testName name of the test being executed + * + * @param testName + * name of the test being executed */ - public JacksonMapperTest(String testName) - { + public JacksonMapperTest(String testName) { super(testName); } - - public void setUp() throws Exception - { + public void setUp() throws Exception { super.setUp(); - sc = (JsonService) this.lookup( JsonService.ROLE ); - logger = new ConsoleLogger( ConsoleLogger.LEVEL_DEBUG ); + sc = (JsonService) this.lookup(JsonService.ROLE); + logger = new ConsoleLogger(ConsoleLogger.LEVEL_DEBUG); } - public void testSerialize() throws Exception - { - String serJson = sc.ser( new JacksonMapperTest("mytest") ); + public void testSerialize() throws Exception { + String serJson = sc.ser(new JacksonMapperTest("mytest")); assertEquals("Set failed ", "{\"name\":\"mytest\"}", serJson); } - - public void testDeSerialize() throws Exception - { - String serJson = sc.ser( new TestClass("mytest") ); - Object deson = sc.deSer( serJson, TestClass.class ); + + public void testDeSerialize() throws Exception { + String serJson = sc.ser(new TestClass("mytest")); + Object deson = sc.deSer(serJson, TestClass.class); assertEquals("DeSer failed ", TestClass.class, deson.getClass()); } - - public void testSerializeDateWithDefaultDateFormat() throws Exception - { - Map<String,Date> map = new HashMap<String,Date>(); - map.put( "date", Calendar.getInstance().getTime() ); - String serJson = sc.ser( map ); - assertTrue("Serialize with Adapater failed ", serJson.matches( "\\{\"date\":\"\\d\\d/\\d\\d/\\d{4}\"\\}" )); - } - - public void testDeSerializeDate() throws Exception - { - Map<String,Date> map = new HashMap<String,Date>(); - map.put( "date", Calendar.getInstance().getTime() ); - String serJson = ((Jackson2MapperService)sc).ser( map, Map.class ); - Map serDate = (Map)sc.deSer( serJson, Map.class ); - assertEquals("Date DeSer failed ", String.class, serDate.get( "date" ).getClass()); - } - - public void testSerializeWithCustomFilter() throws Exception - { + + public void testSerializeDateWithDefaultDateFormat() throws Exception { + Map<String, Date> map = new HashMap<String, Date>(); + map.put("date", Calendar.getInstance().getTime()); + String serJson = sc.ser(map); + assertTrue("Serialize with Adapater failed ", + serJson.matches("\\{\"date\":\"\\d\\d/\\d\\d/\\d{4}\"\\}")); + } + + public void testDeSerializeDate() throws Exception { + Map<String, Date> map = new HashMap<String, Date>(); + map.put("date", Calendar.getInstance().getTime()); + String serJson = ((Jackson2MapperService) sc).ser(map, Map.class); + Map serDate = (Map) sc.deSer(serJson, Map.class); + assertEquals("Date DeSer failed ", String.class, serDate.get("date") + .getClass()); + } + + public void testSerializeWithCustomFilter() throws Exception { Bean filteredBean = new Bean(); - filteredBean.setName( "joe" ); - String bean = sc.serializeOnlyFilter( filteredBean, Bean.class,"name" ); + filteredBean.setName("joe"); + String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "name"); assertEquals("Ser filtered Bean failed ", "{\"name\":\"joe\"}", bean); - + Rectangle filteredRectangle = new Rectangle(5, 10); - filteredRectangle.setName( "jim" ); - String rectangle = sc.serializeOnlyFilter( filteredRectangle, Rectangle.class,"w","name" ); - assertEquals("Ser filtered Rectangle failed ", "{\"w\":5,\"name\":\"jim\"}", rectangle); + filteredRectangle.setName("jim"); + String rectangle = sc.serializeOnlyFilter(filteredRectangle, + Rectangle.class, "w", "name"); + assertEquals("Ser filtered Rectangle failed ", + "{\"w\":5,\"name\":\"jim\"}", rectangle); } - - public void testSerializationCollectionWithFilter() throws Exception - { - + + public void testSerializationCollectionWithFilter() throws Exception { + List<Bean> beanList = new ArrayList<Bean>(); - for ( int i = 0; i < 10; i++ ) - { + for (int i = 0; i < 10; i++) { Bean filteredBean = new Bean(); - filteredBean.setName( "joe" +i); - filteredBean.setAge( i); - beanList.add( filteredBean ); - } - String result = sc.serializeOnlyFilter( beanList, Bean.class, "name", "age" ); - assertEquals("Serialization of beans failed ", - "[{'name':'joe0','age':0},{'name':'joe1','age':1},{'name':'joe2','age':2},{'name':'joe3','age':3},{'name':'joe4','age':4},{'name':'joe5','age':5},{'name':'joe6','age':6},{'name':'joe7','age':7},{'name':'joe8','age':8},{'name':'joe9','age':9}]", - result.replace( '"', '\'' )); - } - - public void testDeserializationCollectionWithFilter() throws Exception - { - + filteredBean.setName("joe" + i); + filteredBean.setAge(i); + beanList.add(filteredBean); + } + String result = sc.serializeOnlyFilter(beanList, Bean.class, "name", + "age"); + assertEquals( + "Serialization of beans failed ", + "[{'name':'joe0','age':0},{'name':'joe1','age':1},{'name':'joe2','age':2},{'name':'joe3','age':3},{'name':'joe4','age':4},{'name':'joe5','age':5},{'name':'joe6','age':6},{'name':'joe7','age':7},{'name':'joe8','age':8},{'name':'joe9','age':9}]", + result.replace('"', '\'')); + } + + public void testDeserializationCollectionWithFilter() throws Exception { + List<Bean> beanList = new ArrayList<Bean>(); - for ( int i = 0; i < 10; i++ ) - { + for (int i = 0; i < 10; i++) { Bean filteredBean = new Bean(); - filteredBean.setName( "joe" +i); - filteredBean.setAge( i); - beanList.add( filteredBean ); - } - String result = sc.serializeOnlyFilter( beanList, Bean.class, "name", "age" ); - List<Bean> beanList2 = (List<Bean>)((Jackson2MapperService)sc).deSerCollection(result, List.class, Bean.class ); + filteredBean.setName("joe" + i); + filteredBean.setAge(i); + beanList.add(filteredBean); + } + String result = sc.serializeOnlyFilter(beanList, Bean.class, "name", + "age"); + List<Bean> beanList2 = (List<Bean>) ((Jackson2MapperService) sc) + .deSerCollection(result, List.class, Bean.class); assertTrue("DeSer failed ", beanList2.size() == 10); - for ( Bean bean :beanList2 ) - { + for (Bean bean : beanList2) { assertEquals("DeSer failed ", Bean.class, bean.getClass()); } } - - public void testDeserializationUnTypedCollectionWithFilter() throws Exception - { - + + public void testDeserializationUnTypedCollectionWithFilter() + throws Exception { + List<Bean> beanList = new ArrayList<Bean>(); - for ( int i = 0; i < 10; i++ ) - { + for (int i = 0; i < 10; i++) { Bean filteredBean = new Bean(); - filteredBean.setName( "joe" +i); - filteredBean.setAge( i); - beanList.add( filteredBean ); - } - String result = sc.serializeOnlyFilter( beanList, Bean.class, "name", "age" ); - Object beanList2 = sc.deSer( result, List.class ); + filteredBean.setName("joe" + i); + filteredBean.setAge(i); + beanList.add(filteredBean); + } + String result = sc.serializeOnlyFilter(beanList, Bean.class, "name", + "age"); + Object beanList2 = sc.deSer(result, List.class); assertTrue("DeSer failed ", beanList2 instanceof List); - assertTrue("DeSer failed ", ((List)beanList2).size() == 10); - for ( int i = 0; i < ((List)beanList2).size(); i++ ) - { - assertTrue("DeSer failed ", ((List)beanList2).get( i ) instanceof Map); - assertTrue("DeSer failed ", ((Map)((List)beanList2).get( i )).get( "name" ).equals( "joe"+i )); - } - - } - - public void testSerializeWithMixin() throws Exception - { + assertTrue("DeSer failed ", ((List) beanList2).size() == 10); + for (int i = 0; i < ((List) beanList2).size(); i++) { + assertTrue("DeSer failed ", + ((List) beanList2).get(i) instanceof Map); + assertTrue( + "DeSer failed ", + ((Map) ((List) beanList2).get(i)).get("name").equals( + "joe" + i)); + } + + } + + public void testSerializeWithMixin() throws Exception { Rectangle filteredRectangle = new Rectangle(5, 10); - filteredRectangle.setName( "jim" ); - String serRect = sc.addAdapter("M4RMixin", Rectangle.class, Mixin.class ).ser( filteredRectangle ); + filteredRectangle.setName("jim"); + String serRect = sc + .addAdapter("M4RMixin", Rectangle.class, Mixin.class).ser( + filteredRectangle); assertEquals("Ser failed ", "{\"width\":5}", serRect); } - - public void testSerializeWith2Mixins() throws Exception - { + + public void testSerializeWith2Mixins() throws Exception { Bean filteredBean = new Bean(); - filteredBean.setName( "joe" ); + filteredBean.setName("joe"); Rectangle filteredRectangle = new Rectangle(5, 10); - filteredRectangle.setName( "jim" ); - - String serRect = sc.addAdapter("M4RMixin2", Rectangle.class, Mixin2.class ).ser( filteredRectangle ); + filteredRectangle.setName("jim"); + + String serRect = sc.addAdapter("M4RMixin2", Rectangle.class, + Mixin2.class).ser(filteredRectangle); assertEquals("Ser failed ", "{\"name\":\"jim\",\"width\":5}", serRect); - - String bean = sc.serializeOnlyFilter( filteredBean, Bean.class,"name" ); + + String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "name"); assertEquals("Ser filtered Bean failed ", "{\"name\":\"joe\"}", bean); } - - public void testSerializationCollectionWithMixin() throws Exception - { - + + public void testSerializationCollectionWithMixin() throws Exception { + List<Bean> beanList = new ArrayList<Bean>(); - for ( int i = 0; i < 10; i++ ) - { + for (int i = 0; i < 10; i++) { Bean filteredBean = new Bean(); - filteredBean.setName( "joe" +i); - filteredBean.setAge( i); - beanList.add( filteredBean ); - } - String result = sc.addAdapter("M4RMixin", Bean.class, BeanMixin.class ).ser( beanList ); - assertEquals("Serialization of beans failed ", - "[{'name':'joe0'},{'name':'joe1'},{'name':'joe2'},{'name':'joe3'},{'name':'joe4'},{'name':'joe5'},{'name':'joe6'},{'name':'joe7'},{'name':'joe8'},{'name':'joe9'}]", - result.replace( '"', '\'' )); - } - - public void testDeSerializationCollectionWithMixin() throws Exception - { - + filteredBean.setName("joe" + i); + filteredBean.setAge(i); + beanList.add(filteredBean); + } + String result = sc.addAdapter("M4RMixin", Bean.class, BeanMixin.class) + .ser(beanList); + assertEquals( + "Serialization of beans failed ", + "[{'name':'joe0'},{'name':'joe1'},{'name':'joe2'},{'name':'joe3'},{'name':'joe4'},{'name':'joe5'},{'name':'joe6'},{'name':'joe7'},{'name':'joe8'},{'name':'joe9'}]", + result.replace('"', '\'')); + } + + public void testDeSerializationCollectionWithMixin() throws Exception { + List<Bean> beanList = new ArrayList<Bean>(); - for ( int i = 0; i < 10; i++ ) - { + for (int i = 0; i < 10; i++) { Bean filteredBean = new Bean(); - filteredBean.setName( "joe" +i); - filteredBean.setAge( i); - beanList.add( filteredBean ); - } - String result = sc.addAdapter("M4RMixin", Bean.class, BeanMixin.class ).ser( beanList ); - Object beanList2 = ((Jackson2MapperService)sc).deSer( result, List.class ); + filteredBean.setName("joe" + i); + filteredBean.setAge(i); + beanList.add(filteredBean); + } + String result = sc.addAdapter("M4RMixin", Bean.class, BeanMixin.class) + .ser(beanList); + Object beanList2 = ((Jackson2MapperService) sc).deSer(result, + List.class); assertTrue("DeSer failed ", beanList2 instanceof List); - assertTrue("DeSer failed ", ((List)beanList2).size() == 10); - for ( int i = 0; i < ((List)beanList2).size(); i++ ) - { - assertTrue("DeSer failed ", ((List)beanList2).get( i ) instanceof Map); - assertTrue("DeSer failed ", ((Map)((List)beanList2).get( i )).get( "name" ).equals( "joe"+i )); + assertTrue("DeSer failed ", ((List) beanList2).size() == 10); + for (int i = 0; i < ((List) beanList2).size(); i++) { + assertTrue("DeSer failed ", + ((List) beanList2).get(i) instanceof Map); + assertTrue( + "DeSer failed ", + ((Map) ((List) beanList2).get(i)).get("name").equals( + "joe" + i)); } } - - public void testCollectionWithMixins() throws Exception - { + + public void testCollectionWithMixins() throws Exception { List<Object> components = new ArrayList<Object>(); - components.add( new Rectangle(25, 3) ); - components.add( new Rectangle(250, 30) ); - for ( int i = 0; i < 3; i++ ) - { + components.add(new Rectangle(25, 3)); + components.add(new Rectangle(250, 30)); + for (int i = 0; i < 3; i++) { Bean filteredBean = new Bean(); - filteredBean.setName( "joe" +i); - filteredBean.setAge( i); - components.add( filteredBean ); - } - - sc.addAdapter("M4RMixin", Rectangle.class, Mixin.class ). - addAdapter("M4BeanRMixin", Bean.class, BeanMixin.class ); - String serRect = sc.ser( components ); - assertEquals("DeSer failed ", - "[{'width':25},{'width':250},{'name':'joe0'},{'name':'joe1'},{'name':'joe2'}]", - serRect.replace( '"', '\'' )); + filteredBean.setName("joe" + i); + filteredBean.setAge(i); + components.add(filteredBean); + } + + sc.addAdapter("M4RMixin", Rectangle.class, Mixin.class).addAdapter( + "M4BeanRMixin", Bean.class, BeanMixin.class); + String serRect = sc.ser(components); + assertEquals( + "DeSer failed ", + "[{'width':25},{'width':250},{'name':'joe0'},{'name':'joe1'},{'name':'joe2'}]", + serRect.replace('"', '\'')); } - - //@JsonFilter("myFilter") + + // @JsonFilter("myFilter") static class Bean { private String name; private int age; public String profession; - public Bean() - { + + public Bean() { } - public String getName() - { + + public String getName() { return name; } - public void setName( String name ) - { + + public void setName(String name) { this.name = name; } - public int getAge() - { + + public int getAge() { return age; } - public void setAge( int age ) - { + + public void setAge(int age) { this.age = age; } } - - public static abstract class Mixin2 - { - void MixIn2(int w, int h) { } - @JsonProperty("width") abstract int getW(); // rename property - @JsonIgnore abstract int getH(); - @JsonIgnore abstract int getSize(); // exclude - abstract String getName(); - } - - public static abstract class BeanMixin - { - void BeanMixin() { } - @JsonIgnore abstract int getAge(); - @JsonIgnore String profession; // exclude - @JsonProperty abstract String getName();// + + public static abstract class Mixin2 { + void MixIn2(int w, int h) { + } + + @JsonProperty("width") + abstract int getW(); // rename property + + @JsonIgnore + abstract int getH(); + + @JsonIgnore + abstract int getSize(); // exclude + + abstract String getName(); + } + + public static abstract class BeanMixin { + void BeanMixin() { + } + + @JsonIgnore + abstract int getAge(); + + @JsonIgnore + String profession; // exclude + + @JsonProperty + abstract String getName();// } }
Modified: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Mixin.java URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Mixin.java?rev=1538422&r1=1538421&r2=1538422&view=diff ============================================================================== --- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Mixin.java (original) +++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Mixin.java Sun Nov 3 19:21:04 2013 @@ -3,15 +3,19 @@ package org.apache.fulcrum.json.jackson; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; +public abstract class Mixin { + void MixIn(int w, int h) { + } + @JsonProperty("width") + abstract int getW(); // rename property -public abstract class Mixin -{ - void MixIn(int w, int h) { } - @JsonProperty("width") abstract int getW(); // rename property - @JsonIgnore abstract int getH(); - @JsonIgnore abstract int getSize(); // exclude - @JsonIgnore abstract String getName(); -} + @JsonIgnore + abstract int getH(); + @JsonIgnore + abstract int getSize(); // exclude + @JsonIgnore + abstract String getName(); +} Added: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/TestDeserializer.java URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/TestDeserializer.java?rev=1538422&view=auto ============================================================================== --- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/TestDeserializer.java (added) +++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/TestDeserializer.java Sun Nov 3 19:21:04 2013 @@ -0,0 +1,54 @@ +package org.apache.fulcrum.json.jackson; + +import java.io.IOException; +import java.util.ArrayList; +import java.util.List; + +import org.apache.fulcrum.json.Rectangle; + +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.core.JsonToken; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.deser.std.StdDeserializer; + +public class TestDeserializer extends StdDeserializer<List<Rectangle>> { + + /** + * + */ + private static final long serialVersionUID = 1L; + + protected TestDeserializer() { + super(List.class); + // TODO Auto-generated constructor stub + } + + @Override + public List<Rectangle> deserialize(JsonParser jp, + DeserializationContext ctxt) throws IOException, + JsonProcessingException { + + ArrayList<Rectangle> list = new ArrayList<Rectangle>(); + // if (jp.getCurrentToken() == JsonToken.START_OBJECT) + // jp.nextToken(); // + // START_OBJECT + while ((jp.nextToken() != JsonToken.END_OBJECT)) { + String name = null; + Number size = null; + int value = 0; + if (jp.getCurrentToken() == JsonToken.FIELD_NAME) { + name = jp.getText(); // FIELD_NAME + jp.nextToken(); + + } + if (jp.getCurrentToken() == JsonToken.VALUE_NUMBER_INT) { + size = jp.getNumberValue();// size VALUE_NUMBER_INT + value = (int) Math.sqrt(size.intValue()); + } + list.add(new Rectangle(value, value, name)); + } + return list; + } + +} Added: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/TestJsonSerializer.java URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/TestJsonSerializer.java?rev=1538422&view=auto ============================================================================== --- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/TestJsonSerializer.java (added) +++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/TestJsonSerializer.java Sun Nov 3 19:21:04 2013 @@ -0,0 +1,33 @@ +package org.apache.fulcrum.json.jackson; + +import java.io.IOException; + +import org.apache.fulcrum.json.TestClass; + +import com.fasterxml.jackson.core.JsonGenerationException; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +public class TestJsonSerializer extends StdSerializer<TestClass> { + + protected TestJsonSerializer() { + super(TestClass.class, false); + // TODO Auto-generated constructor stub + } + + @Override + public void serialize(TestClass value, JsonGenerator jgen, + SerializerProvider provider) throws IOException, + JsonGenerationException { + jgen.writeStartObject(); + jgen.writeFieldName("n"); + jgen.writeString(value.getName()); + jgen.writeFieldName("p"); + jgen.writeString(value.getConfigurationName()); + jgen.writeArrayFieldStart("c"); + jgen.writeEndArray(); + jgen.writeEndObject(); + } + +} \ No newline at end of file Added: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/TestSerializer.java URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/TestSerializer.java?rev=1538422&view=auto ============================================================================== --- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/TestSerializer.java (added) +++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/TestSerializer.java Sun Nov 3 19:21:04 2013 @@ -0,0 +1,31 @@ +package org.apache.fulcrum.json.jackson; + +import java.io.IOException; +import java.util.List; + +import org.apache.fulcrum.json.Rectangle; + +import com.fasterxml.jackson.core.JsonGenerationException; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.ser.std.StdSerializer; + +public class TestSerializer extends StdSerializer<List<Rectangle>> { + + protected TestSerializer() { + super(List.class, false); + } + + @Override + public void serialize(List<Rectangle> data, JsonGenerator jgen, + SerializerProvider provider) throws IOException, + JsonGenerationException { + jgen.writeStartObject(); + for (int i = 0; i < data.size(); i++) { + jgen.writeFieldName(data.get(i).getName()); + jgen.writeNumber(data.get(i).getSize()); + } + jgen.writeEndObject(); + + } +}
