You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by gk...@apache.org on 2014/03/14 09:51:51 UTC
svn commit: r1577453 - in /turbine/fulcrum/trunk/json:
gson/src/test/org/apache/fulcrum/json/gson/
jackson/src/java/org/apache/fulcrum/json/jackson/
jackson/src/test/org/apache/fulcrum/json/jackson/
jackson2/src/test/org/apache/fulcrum/json/jackson/
Author: gk
Date: Fri Mar 14 08:51:51 2014
New Revision: 1577453
URL: http://svn.apache.org/r1577453
Log:
Standardized Tests.
Added:
turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Bean.java (with props)
turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java (with props)
turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java (with props)
turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Rectangle.java (with props)
turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Bean.java (with props)
turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java (with props)
Modified:
turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/DefaultServiceTest.java
turbine/fulcrum/trunk/json/jackson/src/java/org/apache/fulcrum/json/jackson/JacksonMapperService.java
turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java
turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTypingTest.java
Modified: turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/DefaultServiceTest.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/DefaultServiceTest.java?rev=1577453&r1=1577452&r2=1577453&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/DefaultServiceTest.java (original)
+++ turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/DefaultServiceTest.java Fri Mar 14 08:51:51 2014
@@ -116,6 +116,7 @@ public class DefaultServiceTest extends
serJson.matches("\\{\"date\":\"\\d\\d/\\d\\d/\\d{4}\"\\}"));
}
+ // does not seerialize size
public void testSerializeCollection() throws Exception {
List<Rectangle> rectList = new ArrayList<Rectangle>();
for (int i = 0; i < 10; i++) {
@@ -207,14 +208,14 @@ public class DefaultServiceTest extends
}
}
- public void testSerializeWithMixinAndFilter2() throws Exception {
+ public void testSerializeWithMixinAndFilter() throws Exception {
Rectangle filteredRectangle = new Rectangle(5, 10);
filteredRectangle.setName("jim");
//
sc.addAdapter("M4RMixin2", Rectangle.class,
TypeAdapterForRectangle.class);
- // as gson adds all kind, we could not easiy use multiple strategies
+ // as gson adds adapters/strategies, we have to be cautious if using multiple strategies
String rectangle = sc.ser(filteredRectangle);
assertEquals(
"Ser filtered Rectangle failed ",
@@ -222,17 +223,17 @@ public class DefaultServiceTest extends
rectangle);
}
- public void testSerializeWithMixinAndFilter3() throws Exception {
+ public void testSerializeWithOnlyFilter() throws Exception {
// as gson adds we could not use multiple disjunct exclusion strategies
String serJson = sc.serializeOnlyFilter(new TestClass("mytest"),
(Class) null, "configurationName");
assertEquals("Serialization failed ",
"{\"configurationName\":\"Config.xml\"}",
- serJson);
+ serJson);
}
- public void testSerializeWithMixinAndFilter4() throws Exception {
+ public void testSerializeWithOnlyFilter2() throws Exception {
// as gson adds we could not use multiple disjunct exclusion strategies
Rectangle filteredRectangle = new Rectangle(5, 10);
Modified: turbine/fulcrum/trunk/json/jackson/src/java/org/apache/fulcrum/json/jackson/JacksonMapperService.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson/src/java/org/apache/fulcrum/json/jackson/JacksonMapperService.java?rev=1577453&r1=1577452&r2=1577453&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/jackson/src/java/org/apache/fulcrum/json/jackson/JacksonMapperService.java (original)
+++ turbine/fulcrum/trunk/json/jackson/src/java/org/apache/fulcrum/json/jackson/JacksonMapperService.java Fri Mar 14 08:51:51 2014
@@ -101,6 +101,10 @@ public class JacksonMapperService extend
public synchronized <T> String ser(Object src, FilterProvider filters)
throws Exception {
+ if (filters == null) {
+ getLogger().debug("ser class::" + src.getClass() + " without filter ");
+ return ser(src);
+ }
getLogger().debug("ser::" + src + " with filters " + filters);
String serResult = mapper.writer(filters).writeValueAsString(src);
return serResult;
@@ -164,14 +168,17 @@ public class JacksonMapperService extend
Class<T> filterClass, Boolean refreshFilter, String... filterAttr)
throws Exception {
setCustomIntrospectorWithExternalFilterId(filterClass);
- FilterProvider filter;
- if (!this.filters.containsKey(filterClass.getName())) {
- filter = new SimpleFilterProvider().addFilter(
- filterClass.getName(),
- SimpleBeanPropertyFilter.serializeAllExcept(filterAttr));
- this.filters.put(filterClass.getName(), filter);
- } else {
- filter = this.filters.get(filterClass.getName());
+ FilterProvider filter = null;
+ if ( filterClass != null) {
+ if (filterAttr != null && filterAttr.length > 0 &&
+ !this.filters.containsKey(filterClass.getName())) {
+ filter = new SimpleFilterProvider().addFilter(
+ filterClass.getName(),
+ SimpleBeanPropertyFilter.serializeAllExcept(filterAttr));
+ this.filters.put(filterClass.getName(), filter);
+ } else {
+ filter = this.filters.get(filterClass.getName());
+ }
}
String serialized = ser(src, filter);
if (!cacheFilters)
@@ -189,14 +196,26 @@ public class JacksonMapperService extend
public <T> String serializeOnlyFilter(Object src, Class<T> filterClass,
Boolean refreshFilter, String... filterAttr) throws Exception {
setCustomIntrospectorWithExternalFilterId(filterClass);
- FilterProvider filter;
- if (!this.filters.containsKey(filterClass.getName())) {
- filter = new SimpleFilterProvider().addFilter(
- filterClass.getName(),
- SimpleBeanPropertyFilter.filterOutAllExcept(filterAttr));
- this.filters.put(filterClass.getName(), filter);
- } else {
- filter = this.filters.get(filterClass.getName());
+ FilterProvider filter = null;
+ getLogger().debug("filterClass::" + filterClass + " , filterAttr: " + filterAttr);
+ if (filterClass == null && src != null && src.getClass() != null) {
+ filterClass =(Class<T>) src.getClass();
+ }
+ if ( filterClass != null) {
+ if (!this.filters.containsKey(filterClass.getName())) {
+ getLogger().debug("filterClass::" + filterClass.getName() + " with filterAttr: " + filterAttr);
+ if (filterAttr != null) {
+ filter = new SimpleFilterProvider().addFilter(
+ filterClass.getName(),
+ SimpleBeanPropertyFilter.filterOutAllExcept(filterAttr));
+ this.filters.put(filterClass.getName(), filter);
+ } else {
+ filter = new SimpleFilterProvider();
+ this.filters.put(filterClass.getName(),filter);
+ }
+ } else {
+ filter = this.filters.get(filterClass.getName());
+ }
}
String serialized = ser(src, filter);
getLogger().debug("serialized " + serialized);
Added: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Bean.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Bean.java?rev=1577453&view=auto
==============================================================================
--- turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Bean.java (added)
+++ turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Bean.java Fri Mar 14 08:51:51 2014
@@ -0,0 +1,26 @@
+package org.apache.fulcrum.json.jackson;
+
+public class Bean {
+ private String name;
+ private int age;
+ public String profession;
+
+ public Bean() {
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+}
Propchange: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Bean.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java?rev=1577453&view=auto
==============================================================================
--- turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java (added)
+++ turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java Fri Mar 14 08:51:51 2014
@@ -0,0 +1,20 @@
+package org.apache.fulcrum.json.jackson;
+
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.codehaus.jackson.annotate.JsonProperty;
+
+
+
+public abstract class BeanMixin {
+ BeanMixin() {
+ }
+
+ @JsonIgnore
+ abstract int getAge();
+
+ @JsonIgnore
+ String profession; // exclude
+
+ @JsonProperty
+ abstract String getName();//
+}
\ No newline at end of file
Propchange: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java?rev=1577453&view=auto
==============================================================================
--- turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java (added)
+++ turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java Fri Mar 14 08:51:51 2014
@@ -0,0 +1,210 @@
+package org.apache.fulcrum.json.jackson;
+
+/*
+ * 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.
+ */
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.fulcrum.json.JsonService;
+import org.apache.fulcrum.json.TestClass;
+import org.apache.fulcrum.testcontainer.BaseUnitTest;
+
+
+/**
+ * Jackson 2 JSON Test
+ *
+ * @author gk
+ * @version $Id$
+ */
+public class DefaultServiceTest extends BaseUnitTest {
+ private JsonService sc = null;
+ private final String preDefinedOutput = "{\"container\":{\"cf\":\"Config.xml\"},\"configurationName\":\"Config.xml\",\"name\":\"mytest\"}";
+
+ /**
+ * Constructor for test.
+ *
+ * @param testName
+ * name of the test being executed
+ */
+ public DefaultServiceTest(String testName) {
+ super(testName);
+ }
+
+ public void setUp() throws Exception {
+ super.setUp();
+ sc = (JsonService) this.lookup(JsonService.ROLE);
+ }
+
+ public void testSerialize() throws Exception {
+ String serJson = sc.ser(new TestClass("mytest"));
+ assertEquals("Serialization failed ", preDefinedOutput, serJson);
+ }
+
+ public void testSerializeExcludeNothing() throws Exception {
+ String serJson = sc.serializeAllExceptFilter(new TestClass("mytest"),
+ (Class) null, (String[]) null);
+ assertEquals(
+ "Serialization failed ",
+ "{\"container\":{\"cf\":\"Config.xml\"},\"configurationName\":\"Config.xml\",\"name\":\"mytest\"}",
+ serJson);
+ }
+
+
+ public void ignoreTestSerializeExcludeClass() throws Exception {
+ // jackson 1 could yet not exclude classes
+ }
+
+ public void ignoreTestSerializeExcludeClassAndField() throws Exception {
+ // no deep exclude
+ }
+
+ public void ignoreTestSerializeExcludeClassAndFields() throws Exception {
+ // no deep exclude
+ }
+
+ public void ignoreTestSerializeExcludeField() throws Exception {
+
+ // no deep ignore??
+ }
+
+ public void testSerializeDate() throws Exception {
+ final SimpleDateFormat MMddyyyy = new SimpleDateFormat("MM/dd/yyyy");
+ Map<String, Object> map = new HashMap<String, Object>();
+ map.put("date", Calendar.getInstance().getTime());
+
+ sc.setDateFormat(MMddyyyy);
+ String serJson = sc.ser(map);
+ System.out.println("serJson:" + serJson);
+ assertTrue("Serialize with Adapter failed ",
+ serJson.matches("\\{\"date\":\"\\d\\d/\\d\\d/\\d{4}\"\\}"));
+ }
+
+ // jackson serializes size too
+ public void testSerializeCollection() throws Exception {
+ List<org.apache.fulcrum.json.Rectangle> rectList = new ArrayList<org.apache.fulcrum.json.Rectangle>();
+ for (int i = 0; i < 10; i++) {
+ org.apache.fulcrum.json.Rectangle filteredRect = new org.apache.fulcrum.json.Rectangle(i, i, "rect" + i);
+ rectList.add(filteredRect);
+ }
+ String adapterSer = sc.ser(rectList);
+ assertEquals(
+ "collect ser",
+ "[{'w':0,'h':0,'name':'rect0','size':0},{'w':1,'h':1,'name':'rect1','size':1},{'w':2,'h':2,'name':'rect2','size':4},{'w':3,'h':3,'name':'rect3','size':9},{'w':4,'h':4,'name':'rect4','size':16},{'w':5,'h':5,'name':'rect5','size':25},{'w':6,'h':6,'name':'rect6','size':36},{'w':7,'h':7,'name':'rect7','size':49},{'w':8,'h':8,'name':'rect8','size':64},{'w':9,'h':9,'name':'rect9','size':81}]",
+ adapterSer.replace('"', '\''));
+ }
+
+ public void testSerializationCollectioPrimitiveWrapper() throws Exception {
+
+ List<Integer> intList = new ArrayList<Integer>();
+ for (int i = 0; i < 10; i++) {
+ Integer integer = new Integer(i*i);
+ intList.add(integer);
+ }
+ String result = sc.serializeOnlyFilter(intList, Integer.class, null);
+ assertEquals(
+ "Serialization of beans failed ",
+ "[0,1,4,9,16,25,36,49,64,81]",
+ result);
+ }
+
+// public void testSerializeTypeAdapterForCollection() throws Exception {
+// TestSerializer tser = new TestSerializer();
+// CustomModuleWrapper<List> cmw = new CustomModuleWrapper<List>(tser, null);
+// sc.addAdapter("Collection Adapter", ArrayList.class, cmw);
+// List<Rectangle> rectList = new ArrayList<Rectangle>();
+// for (int i = 0; i < 10; i++) {
+// Rectangle filteredRect = new Rectangle(i, i, "rect" + i);
+// rectList.add(filteredRect);
+// }
+// String adapterSer = sc.ser(rectList);
+// assertEquals(
+// "collect ser",
+// "{'rect0':0,'rect1':1,'rect2':4,'rect3':9,'rect4':16,'rect5':25,'rect6':36,'rect7':49,'rect8':64,'rect9':81}",
+// adapterSer.replace('"', '\''));
+// }
+
+// public void testMixinAdapter() throws Exception {
+// TestJsonSerializer tser = new TestJsonSerializer();
+// CustomModuleWrapper<TestClass> cmw = new CustomModuleWrapper<TestClass>(
+// tser, null);
+// sc.addAdapter("Collection Adapter", TestClass.class, cmw);
+// String adapterSer = sc.ser(new TestClass("mytest"));
+// assertEquals("failed adapter serialization:",
+// "{\"n\":\"mytest\",\"p\":\"Config.xml\",\"c\":[]}", adapterSer);
+// }
+
+ public void testDeSerialize() throws Exception {
+ String serJson = sc.ser(new TestClass("mytest"));
+ Object deson = sc.deSer(serJson, TestClass.class);
+ assertEquals("Serialization failed ", TestClass.class, deson.getClass());
+ }
+
+
+ public void testDeserializationCollection() throws Exception {
+ List<Rectangle> rectList = new ArrayList<Rectangle>();
+ for (int i = 0; i < 10; i++) {
+ Rectangle filteredRect = new Rectangle(i, i, "rect" + i);
+ rectList.add(filteredRect);
+ }
+ String serColl = sc.ser(rectList);
+ // we need to set size to Ignore -> UnrecognizedPropertyException
+ Collection<Rectangle> resultList0 = sc.deSerCollection(serColl, new ArrayList<Rectangle>(), Rectangle.class);
+ for (int i = 0; i < 10; i++) {
+ Rectangle rect = ((List<Rectangle>)resultList0)
+ .get(i);
+ assertEquals("deser reread size failed", (i * i), rect.getSize());
+ }
+ }
+
+ public void testDeserializationTypeAdapterForCollection() throws Exception {
+ // not implemented
+ }
+
+ public void testSerializeWithMixinAndFilter() throws Exception {
+ Bean filteredBean = new Bean();
+ filteredBean.setName("joe");
+ //
+ sc.addAdapter("M4RBeanMixin", Bean.class,
+ BeanMixin.class);
+ // profession was already set to ignore, does not change
+ String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "profession");
+ assertEquals(
+ "Ser filtered Bean failed ",
+ "{}",
+ bean);
+ }
+
+ public void testSerializeWithOnlyFilter() throws Exception {
+ // no deep include ??
+ Bean filteredBean = new Bean();
+ filteredBean.setName("joe");
+ String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "profession");
+ assertEquals(
+ "Ser filtered Bean failed ",
+ "{\"profession\":null}",
+ bean);
+ }
+
+}
Propchange: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Rectangle.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Rectangle.java?rev=1577453&view=auto
==============================================================================
--- turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Rectangle.java (added)
+++ turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Rectangle.java Fri Mar 14 08:51:51 2014
@@ -0,0 +1,44 @@
+package org.apache.fulcrum.json.jackson;
+
+import org.codehaus.jackson.annotate.JsonIgnore;
+
+public final class Rectangle {
+ private int w, h;
+ private String name;
+
+ public Rectangle() {
+ // may be this is needed for deserialization, if not set otherwise
+ }
+
+ public Rectangle(int w, int h) {
+ this.w = w;
+ this.h = h;
+ }
+
+ public Rectangle(int w, int h, String name) {
+ this.w = w;
+ this.h = h;
+ this.name = name;
+ }
+
+ public int getW() {
+ return w;
+ }
+
+ public int getH() {
+ return h;
+ }
+
+ @JsonIgnore
+ public int getSize() {
+ return w * h;
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+}
\ No newline at end of file
Propchange: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Rectangle.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Bean.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Bean.java?rev=1577453&view=auto
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Bean.java (added)
+++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Bean.java Fri Mar 14 08:51:51 2014
@@ -0,0 +1,26 @@
+package org.apache.fulcrum.json.jackson;
+
+public class Bean {
+ private String name;
+ private int age;
+ public String profession;
+
+ public Bean() {
+ }
+
+ public String getName() {
+ return name;
+ }
+
+ public void setName(String name) {
+ this.name = name;
+ }
+
+ public int getAge() {
+ return age;
+ }
+
+ public void setAge(int age) {
+ this.age = age;
+ }
+}
Propchange: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Bean.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java?rev=1577453&view=auto
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java (added)
+++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java Fri Mar 14 08:51:51 2014
@@ -0,0 +1,18 @@
+package org.apache.fulcrum.json.jackson;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public abstract class BeanMixin {
+ BeanMixin() {
+ }
+
+ @JsonIgnore
+ abstract int getAge();
+
+ @JsonIgnore
+ String profession; // exclude
+
+ @JsonProperty
+ abstract String getName();//
+}
\ No newline at end of file
Propchange: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java?rev=1577453&r1=1577452&r2=1577453&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java (original)
+++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java Fri Mar 14 08:51:51 2014
@@ -183,8 +183,6 @@ public class DefaultServiceTest extends
rectList.add(filteredRect);
}
String serColl = sc.ser(rectList);
- //System.out.println("serColl:" +serColl);
-
TypeReference typeRef = new TypeReference<List<Rectangle>>(){};
Collection<Rectangle> resultList0 = sc.deSerCollection(serColl, typeRef, Rectangle.class);
//System.out.println("resultList0 class:" +resultList0.getClass());
@@ -212,5 +210,36 @@ public class DefaultServiceTest extends
.get(i).getSize());
}
}
+
+ public void testSerializeWithMixinAndFilter() throws Exception {
+ Bean filteredBean = new Bean();
+ filteredBean.setName("joe");
+ //
+ sc.addAdapter("M4RBeanMixin", Bean.class,
+ BeanMixin.class);
+ // profession was already set to ignore, does not change
+ String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "profession");
+ assertEquals(
+ "Ser filtered Bean failed ",
+ "{}",
+ bean);
+ }
+
+ public void testSerializeWithOnlyFilter() throws Exception {
+
+ String serJson = sc.serializeOnlyFilter(new TestClass("mytest"),
+ (Class) null, "configurationName");
+ assertEquals("Serialization failed ",
+ "{\"configurationName\":\"Config.xml\"}",
+ serJson);
+
+ Rectangle filteredRectangle = new Rectangle(5, 10);
+ filteredRectangle.setName("jim");
+ String rectangle = sc.serializeOnlyFilter(filteredRectangle, (Class) null, "w");
+ assertEquals(
+ "Ser filtered Rectangle failed ",
+ "{\"w\":5}",
+ rectangle);
+ }
}
Modified: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTypingTest.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTypingTest.java?rev=1577453&r1=1577452&r2=1577453&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTypingTest.java (original)
+++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTypingTest.java Fri Mar 14 08:51:51 2014
@@ -113,7 +113,7 @@ public class JacksonMapperEnabledDefault
String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "name");
assertEquals(
"Ser filtered Bean failed ",
- "{\"type\":\"org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean\",\"name\":\"joe\"}",
+ "{\"type\":\"org.apache.fulcrum.json.jackson.Bean\",\"name\":\"joe\"}",
bean);
Rectangle filteredRectangle = new Rectangle(5, 10);
@@ -137,7 +137,7 @@ public class JacksonMapperEnabledDefault
"age");
assertEquals(
"Serialization of beans failed ",
- "['java.util.ArrayList',[{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe0','age':0},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe1','age':1},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe2','age':2},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe3','age':3},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe4','age':4},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe5','age':5},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe6','age':6},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe7','age':7},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':
'joe8','age':8},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe9','age':9}]]",
+ "['java.util.ArrayList',[{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe0','age':0},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe1','age':1},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe2','age':2},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe3','age':3},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe4','age':4},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe5','age':5},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe6','age':6},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe7','age':7},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe8','age':8},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe9','age':9}]]",
result.replace('"', '\''));
}
@@ -210,7 +210,7 @@ public class JacksonMapperEnabledDefault
assertEquals(
"Ser filtered Bean failed ",
- "{\"type\":\"org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean\",\"name\":\"joe\"}",
+ "{\"type\":\"org.apache.fulcrum.json.jackson.Bean\",\"name\":\"joe\"}",
bean);
}
@@ -224,7 +224,7 @@ public class JacksonMapperEnabledDefault
String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "profession");
assertEquals(
"Ser filtered Bean failed ",
- "{\"type\":\"org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean\"}",
+ "{\"type\":\"org.apache.fulcrum.json.jackson.Bean\"}",
bean);
}
@@ -240,19 +240,18 @@ public class JacksonMapperEnabledDefault
String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "profession");
assertEquals(
"Ser filtered Bean failed ",
- "{\"type\":\"org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean\",\"profession\":\"\"}",
+ "{\"type\":\"org.apache.fulcrum.json.jackson.Bean\",\"profession\":\"\"}",
bean);
}
- public void testSerializeWithMixinAndFilter2() throws Exception {
+ public void testMultipleSerializingWithMixinAndFilter() throws Exception {
Rectangle filteredRectangle = new Rectangle(5, 10);
filteredRectangle.setName("jim");
//
sc.addAdapter("M4RMixin2", Rectangle.class,
Mixin2.class);
- // if serialization is done this way, filtering has no effect.
- // this is may be a bug in Jackson: as mixin modules may be cached..?
+ // if serialization is done Jackson clean cache
String rectangle0 = sc.ser(filteredRectangle,Rectangle.class,true);
assertEquals(
"Ser filtered Rectangle failed ",
@@ -285,7 +284,7 @@ public class JacksonMapperEnabledDefault
.ser(beanList);
assertEquals(
"Serialization of beans failed ",
- "['java.util.ArrayList',[{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe0'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe1'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe2'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe3'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe4'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe5'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe6'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe7'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe8'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEn
abledDefaultTypingTest$Bean','name':'joe9'}]]",
+ "['java.util.ArrayList',[{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe0'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe1'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe2'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe3'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe4'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe5'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe6'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe7'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe8'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe9'}]]",
result.replace('"', '\''));
}
@@ -326,38 +325,14 @@ public class JacksonMapperEnabledDefault
String serRect = sc.ser(components);
assertEquals(
"Serialization failed ",
- "['java.util.ArrayList',[{'type':'org.apache.fulcrum.json.Rectangle','width':25},{'type':'org.apache.fulcrum.json.Rectangle','width':250},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe0'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe1'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe2'}]]",
+ "['java.util.ArrayList',[{'type':'org.apache.fulcrum.json.Rectangle','width':25},{'type':'org.apache.fulcrum.json.Rectangle','width':250},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe0'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe1'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe2'}]]",
serRect.replace('"', '\''));
}
// @JsonFilter("myFilter")
- static class Bean {
- private String name;
- private int age;
- public String profession;
-
- public Bean() {
- }
-
- public String getName() {
- return name;
- }
-
- public void setName(String name) {
- this.name = name;
- }
-
- public int getAge() {
- return age;
- }
-
- public void setAge(int age) {
- this.age = age;
- }
- }
-
+
public static abstract class Mixin2 {
void MixIn2(int w, int h) {
}
@@ -374,18 +349,6 @@ public class JacksonMapperEnabledDefault
abstract String getName();
}
- public static abstract class BeanMixin {
- void BeanMixin() {
- }
-
- @JsonIgnore
- abstract int getAge();
-
- @JsonIgnore
- String profession; // exclude
-
- @JsonProperty
- abstract String getName();//
- }
+
}