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:g...@apache.org";>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:g...@apache.org";>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());


Reply via email to