Author: gk
Date: Thu Mar 6 16:31:34 2014
New Revision: 1574950
URL: http://svn.apache.org/r1574950
Log:
Update CollectionType Implementation and Tests.
Modified:
turbine/fulcrum/trunk/json/api/src/java/org/apache/fulcrum/json/JsonService.java
turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/DefaultServiceTest.java
turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/Jackson2MapperService.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/api/src/java/org/apache/fulcrum/json/JsonService.java
URL:
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/api/src/java/org/apache/fulcrum/json/JsonService.java?rev=1574950&r1=1574949&r2=1574950&view=diff
==============================================================================
---
turbine/fulcrum/trunk/json/api/src/java/org/apache/fulcrum/json/JsonService.java
(original)
+++
turbine/fulcrum/trunk/json/api/src/java/org/apache/fulcrum/json/JsonService.java
Thu Mar 6 16:31:34 2014
@@ -23,7 +23,7 @@ import java.text.DateFormat;
import java.util.Collection;
/**
- * JsonService defines methods needed to serialize and deserialize and hepler
+ * This class defines methods needed to serialize and deserialize and helper
* methos if needed.
*
* Some methods expect a class parameter.
@@ -33,7 +33,7 @@ import java.util.Collection;
* <code>Class clazz = Class.forName(className);</code> for the parameter.
*
*
- * @author gk
+ * @author <a href="mailto:[email protected]">Georg Kallidis</a>
* @version $Id$
*/
public interface JsonService {
@@ -90,7 +90,6 @@ public interface JsonService {
* @param json
* The JSON string to be deserialized
* @param collectionType
- * A collection object, which will be used to derive the
collection type.
* It could be just the collection or the typed collection. It
may then be used to get the type for element type too.
* Cft. implementation tests for more details (GSON).
* @param elementType
@@ -118,7 +117,7 @@ public interface JsonService {
* The class to which the filtering should be applied
*
* @param refreshFilter
- * refresh Filter (clean cache for this filerClass)
+ * refresh filter (clean cache for this filterClass)
*
* @param filterAttr
* The class bean attributes which should be serialized
@@ -141,7 +140,7 @@ public interface JsonService {
* same class, just the filterAttributes get applied. If not the
* class is filtered out, if found as a property type.
* @param refreshFilter
- * refresh Filter (clean cache for this filerClass)
+ * refresh filter (clean cache for this filterClass)
*
* @param filterAttr
* The bean attributes which should not be serialized
@@ -194,7 +193,7 @@ public interface JsonService {
* The target class for this adapter
* @param mixin
* The adapter/mixin for the target object
- * (serializer/deserializer)
+ * (module/serializer/deserializer)
*
* @return JsonService
*
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=1574950&r1=1574949&r2=1574950&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
Thu Mar 6 16:31:34 2014
@@ -199,8 +199,7 @@ public class DefaultServiceTest extends
rectList.add(filteredRect);
}
String adapterSer = sc.ser(rectList);
- ArrayList<Rectangle> resultList0 = sc
- .deSer(adapterSer, ArrayList.class);
+ ArrayList<Rectangle> resultList0 = sc.deSer(adapterSer,
ArrayList.class);
for (int i = 0; i < 10; i++) {
assertEquals("deser reread size failed", (i * i), resultList0
.get(i).getSize());
Modified:
turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/Jackson2MapperService.java
URL:
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/Jackson2MapperService.java?rev=1574950&r1=1574949&r2=1574950&view=diff
==============================================================================
---
turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/Jackson2MapperService.java
(original)
+++
turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/Jackson2MapperService.java
Thu Mar 6 16:31:34 2014
@@ -27,6 +27,7 @@ import java.util.Collections;
import java.util.Enumeration;
import java.util.HashMap;
import java.util.Hashtable;
+import java.util.List;
import java.util.Map;
import org.apache.avalon.framework.activity.Initializable;
@@ -43,6 +44,7 @@ import com.fasterxml.jackson.core.JsonPa
import com.fasterxml.jackson.core.JsonParser.Feature;
import com.fasterxml.jackson.core.JsonProcessingException;
import com.fasterxml.jackson.core.Version;
+import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.AnnotationIntrospector;
import com.fasterxml.jackson.databind.DeserializationFeature;
import com.fasterxml.jackson.databind.JsonDeserializer;
@@ -78,7 +80,7 @@ import com.fasterxml.jackson.databind.se
* By setting the refresh parameter {@link #filter(Object, Class,
FilterContext, boolean, String...)} on per-filter method call
* you could filter a class providing different properties.
*
- * @author gk
+ * @author <a href="mailto:[email protected]">Georg Kallidis</a>
* @version $Id$
*
*/
@@ -167,12 +169,7 @@ public class Jackson2MapperService exten
.constructCollectionType(collectionClass, type));
}
- @Override
- public <T> Collection<T> deSerCollection(String json, Object
collectionType, Class<T> type)
- throws Exception {
- return mapper.readValue(json, mapper.getTypeFactory()
-
.constructCollectionType(((Collection<T>)collectionType).getClass(), type));
- }
+
public void getJsonService() throws InstantiationException {
}
@@ -434,7 +431,7 @@ public class Jackson2MapperService exten
@Override
public void initialize() throws Exception {
- mapper = new ObjectMapper();
+ mapper = new ObjectMapper(null, null, null);// add configurable
JsonFactory,.. later?
Enumeration<String> enumKey = annotationInspectors.keys();
while (enumKey.hasMoreElements()) {
@@ -658,4 +655,16 @@ public class Jackson2MapperService exten
mapper.configure(SerializationFeature.FLUSH_AFTER_WRITE_VALUE,
true);
}
+ @Override
+ public <T> Collection<T> deSerCollection(String json,
+ Object collectionType, Class<T> elementType) throws Exception {
+ if (collectionType instanceof TypeReference) {
+ return mapper.readValue(json, (TypeReference)collectionType);
+ } else {
+ return mapper.readValue(json, mapper.getTypeFactory()
+
.constructCollectionType(((Collection<T>)collectionType).getClass(),
elementType));
+ }
+
+ }
+
}
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=1574950&r1=1574949&r2=1574950&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
Thu Mar 6 16:31:34 2014
@@ -33,6 +33,8 @@ import org.apache.fulcrum.json.TestClass
import org.apache.fulcrum.json.jackson.filters.CustomModuleWrapper;
import org.apache.fulcrum.testcontainer.BaseUnitTest;
+import com.fasterxml.jackson.core.type.TypeReference;
+
/**
* Jackson 2 JSON Test
*
@@ -181,10 +183,11 @@ public class DefaultServiceTest extends
rectList.add(filteredRect);
}
String serColl = sc.ser(rectList);
+ //System.out.println("serColl:" +serColl);
- List typeRectList = new ArrayList(); //empty
- Collection<Rectangle> resultList0 = sc.deSerCollection(serColl,
typeRectList, Rectangle.class);
-
+ TypeReference typeRef = new TypeReference<List<Rectangle>>(){};
+ Collection<Rectangle> resultList0 = sc.deSerCollection(serColl,
typeRef, Rectangle.class);
+ //System.out.println("resultList0 class:" +resultList0.getClass());
for (int i = 0; i < 10; i++) {
assertEquals("deser reread size failed", (i * i),
((List<Rectangle>)resultList0)
.get(i).getSize());
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=1574950&r1=1574949&r2=1574950&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
Thu Mar 6 16:31:34 2014
@@ -35,6 +35,7 @@ import org.apache.fulcrum.testcontainer.
import com.fasterxml.jackson.annotation.JsonIgnore;
import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;
/**
@@ -96,7 +97,10 @@ public class JacksonMapperEnabledDefault
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);
+ String serJson0 = sc.ser(map);
+ System.out.println("serJson0:"+ serJson0);
+ String serJson = sc.ser(map, Map.class);
+ System.out.println("serJsonwithmap:"+ serJson);
Map<String, Date> serDate = (Map<String, Date>) sc.deSer(serJson,
Map.class);
assertEquals("Date DeSer failed ", Date.class, serDate.get("date")
@@ -148,8 +152,9 @@ public class JacksonMapperEnabledDefault
}
String result = sc.serializeOnlyFilter(beanList, Bean.class, "name",
"age");
+ TypeReference typeRef = new TypeReference<List<Bean>>(){};
List<Bean> beanList2 = (List<Bean>) ((Jackson2MapperService) sc)
- .deSerCollection(result, beanList, Bean.class);
+ .deSerCollection(result, typeRef, Bean.class);
assertTrue("DeSer failed ", beanList2.size() == 10);
for (Bean bean : beanList2) {
assertEquals("DeSer failed ", Bean.class, bean.getClass());
@@ -234,8 +239,10 @@ public class JacksonMapperEnabledDefault
}
String result = sc.addAdapter("M4RMixin", Bean.class, BeanMixin.class)
.ser(beanList);
+ //System.out.println("result:::"+ result);
+ TypeReference typeRef = new TypeReference<List<Bean>>(){};
List<Bean> beanList2 = (List<Bean>) ((Jackson2MapperService) sc)
- .deSerCollection(result, beanList, Bean.class);
+ .deSerCollection(result, typeRef, Bean.class);
assertTrue("DeSer failed ", beanList2.size() == 10);
for (Bean bean : beanList2) {
assertEquals("DeSer failed ", Bean.class, bean.getClass());