Author: gk
Date: Tue Apr 12 15:22:39 2016
New Revision: 1738815

URL: http://svn.apache.org/viewvc?rev=1738815&view=rev
Log:
- update jackson2 version to 2.7.3
- add optional jackson-datatype-json-org dependency
- add some list/collection tests

Modified:
    
turbine/fulcrum/trunk/json/api/src/java/org/apache/fulcrum/json/JsonService.java
    turbine/fulcrum/trunk/json/jackson2/pom.xml
    
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
    
turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTyping_OBJECT_AND_NON_CONCRETE_Test.java
    
turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperTest.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=1738815&r1=1738814&r2=1738815&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
 Tue Apr 12 15:22:39 2016
@@ -39,6 +39,8 @@ import java.util.Collection;
 public interface JsonService {
     /** Avalon Identifier **/
     String ROLE = JsonService.class.getName();
+    
+    String SERVICE_NAME = ROLE;
 
     /**
      * Serializes a Java object

Modified: turbine/fulcrum/trunk/json/jackson2/pom.xml
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/pom.xml?rev=1738815&r1=1738814&r2=1738815&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/pom.xml (original)
+++ turbine/fulcrum/trunk/json/jackson2/pom.xml Tue Apr 12 15:22:39 2016
@@ -97,8 +97,14 @@
           <artifactId>jackson-databind</artifactId>
            <version>${jackson2.version}</version>
         </dependency>
+        <dependency>
+          <groupId>com.fasterxml.jackson.datatype</groupId>
+          <artifactId>jackson-datatype-json-org</artifactId>
+          <version>${jackson2.version}</version>
+          <optional>true</optional>
+        </dependency>
     </dependencies>
     <properties>
-        <jackson2.version>2.6.1</jackson2.version>
+        <jackson2.version>2.7.3</jackson2.version>
     </properties>
 </project>

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=1738815&r1=1738814&r2=1738815&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
 Tue Apr 12 15:22:39 2016
@@ -25,6 +25,8 @@ import java.text.SimpleDateFormat;
 import java.util.Collection;
 import java.util.Enumeration;
 import java.util.Hashtable;
+import java.util.List;
+import java.util.Map;
 
 import org.apache.avalon.framework.activity.Initializable;
 import org.apache.avalon.framework.configuration.Configurable;
@@ -137,7 +139,7 @@ public class Jackson2MapperService exten
             return ser(src);
         }    
         getLogger().debug("ser class::" + src.getClass() + " with filter " + 
filter);
-        mapper.setFilters(filter);
+        mapper.setFilterProvider(filter);
         String res =  mapper.writer(filter).writeValueAsString(src);
         if (cleanCache) {
             cacheService.cleanSerializerCache(mapper);
@@ -149,7 +151,7 @@ public class Jackson2MapperService exten
     public <T> T deSer(String json, Class<T> type) throws Exception {
         ObjectReader reader = null;
         if (type != null)
-            reader = mapper.reader(type);
+            reader = mapper.readerFor(type);
         else
             reader = mapper.reader();
 
@@ -164,7 +166,7 @@ public class Jackson2MapperService exten
     
     public <T> String serCollectionWithTypeReference(Collection<T> src, 
TypeReference collectionType, Boolean cleanCache)
             throws Exception {
-        String res =  
mapper.writerWithType(collectionType).writeValueAsString(src);
+        String res =  mapper.writerFor(collectionType).writeValueAsString(src);
         if (cleanCache) {
             cacheService.cleanSerializerCache(mapper);
         }
@@ -178,10 +180,19 @@ public class Jackson2MapperService exten
             return mapper.readValue(json, (TypeReference<T>)collectionType);
         } else {
             return mapper.readValue(json, mapper.getTypeFactory()
-                    
.constructCollectionType(((Collection<T>)collectionType).getClass(), 
elementType));            
+                    
.constructCollectionType(((Collection<T>)collectionType).getClass(), 
elementType));         
         }
     }
     
+    public <T> List<T> deSerList(String json, Class<? extends List> targetList,
+            Object listType, Class<T> elementType) throws Exception {
+        return mapper.readValue(json, 
mapper.getTypeFactory().constructParametrizedType(targetList,listType.getClass(),
 elementType));        
+    }
+    
+    public <T,U> Map<T,U> deSerMap(String json, Class<? extends Map> mapClass, 
Class<T> keyClass, Class<U> valueClass) throws Exception {
+        return mapper.readValue(json, 
mapper.getTypeFactory().constructMapType(mapClass, keyClass, valueClass));      
  
+    }
+    
     public <T> Collection<T> deSerCollectionWithTypeReference(String json,
             TypeReference<T> collectionType ) throws Exception {
             return mapper.readValue(json, collectionType);
@@ -207,11 +218,11 @@ public class Jackson2MapperService exten
     }
 
     /**
-     * Add a named module
+     * Add a named module or a {@link Module}.
      * 
-     * @param name Name of the module
+     * @param name Name of the module, optional. Could be null, if module is a 
 {@link Module}.
      * 
-     * @param target Target class
+     * @param target Target class, optional. Could be null, if module is a  
{@link Module}.
      * 
      * @param module
      *            Either an Jackson Module @link {@link Module} or an custom
@@ -230,7 +241,7 @@ public class Jackson2MapperService exten
             mapper.registerModule(cm);
         } else if (module instanceof Module) {
             getLogger().debug(
-                    "registering module " + module + "  for: " + target);
+                    "registering module " + module );
             mapper.registerModule((Module) module);
         } else {
             throw new Exception("expecting module type" + Module.class);

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=1738815&r1=1738814&r2=1738815&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
 Tue Apr 12 15:22:39 2016
@@ -41,6 +41,9 @@ import org.junit.Test;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.core.type.TypeReference;
+import com.fasterxml.jackson.databind.MappingJsonFactory;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.databind.ObjectMapper.DefaultTyping;
 
 /**
  * Jackson 2 JSON Test
@@ -63,6 +66,17 @@ public class DefaultServiceTest extends
         String serJson = sc.ser(new TestClass("mytest"));
         assertEquals("Serialization failed ", preDefinedOutput, serJson);
     }
+    
+//    @Test
+//    public void testCustomMapperSerialize() throws Exception {
+//        ObjectMapper objectMapper = new ObjectMapper(
+//                new MappingJsonFactory(((Jackson2MapperService) 
sc).getMapper()));
+//        objectMapper.enableDefaultTypingAsProperty(
+//                DefaultTyping.NON_FINAL, "type");
+//        ((Jackson2MapperService) sc).setMapper(objectMapper);
+//        String serJson = sc.ser(new TestClass("mytest"));
+//        assertEquals("Serialization with custom mapper failed ", 
JacksonMapperEnabledDefaultTypingTest.preDefinedOutput, serJson);
+//    }
 
     @Test
     // the default test class: one String field, one Map  
@@ -227,6 +241,52 @@ public class DefaultServiceTest extends
         }
     }
     @Test
+    public void testDeserializationWithPlainListCollection() 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);
+        Collection<Rectangle> resultList0 =  sc.deSerCollection(serColl, new 
ArrayList(), 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());
+        }
+    }
+    @Test
+    public void testDeserializationWithPlainList() 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);
+        //Collection<Rectangle> resultList0 =  sc.deSerCollection(serColl, 
List.class, Rectangle.class);
+        List<Rectangle> resultList0 =  
((Jackson2MapperService)sc).deSerList(serColl, ArrayList.class,List.class, 
Rectangle.class);
+        System.out.println("resultList0 class:" +resultList0.getClass());
+        for (int i = 0; i < 10; i++) {
+            assertEquals("deser reread size failed", (i * i), resultList0
+                    .get(i).getSize());
+        }
+    }
+    @Test
+    public void testDeserializationWithPlainMap() throws Exception {
+        Map<String,Rectangle> rectList = new HashMap<String,Rectangle>(); 
+        for (int i = 0; i < 10; i++) {
+            Rectangle filteredRect = new Rectangle(i, i, "rect" + i);
+            rectList.put(""+i,filteredRect);
+        }
+        String serColl = sc.ser(rectList);
+        Map<String,Rectangle> resultList0 =  
((Jackson2MapperService)sc).deSerMap(serColl, Map.class, 
String.class,Rectangle.class);
+        System.out.println("resultList0 class:" +resultList0.getClass());
+        for (int i = 0; i < 10; i++) {
+            assertEquals("deser reread size failed", (i * i), resultList0
+                    .get(""+i).getSize());
+        }
+    }
+    @Test
     public void testDeserializationTypeAdapterForCollection() throws Exception 
{
         TestSerializer tser = new TestSerializer();
         TestDeserializer tdeSer = new TestDeserializer();

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=1738815&r1=1738814&r2=1738815&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
 Tue Apr 12 15:22:39 2016
@@ -54,7 +54,7 @@ import com.fasterxml.jackson.databind.Ob
  * @version $Id$
  */
 public class JacksonMapperEnabledDefaultTypingTest extends BaseUnit4Test {
-    private final String preDefinedOutput = 
"{\"type\":\"org.apache.fulcrum.json.TestClass\",\"container\":{\"type\":\"java.util.HashMap\",\"cf\":\"Config.xml\"},\"configurationName\":\"Config.xml\",\"name\":\"mytest\"}";
+    public static final String preDefinedOutput = 
"{\"type\":\"org.apache.fulcrum.json.TestClass\",\"container\":{\"type\":\"java.util.HashMap\",\"cf\":\"Config.xml\"},\"configurationName\":\"Config.xml\",\"name\":\"mytest\"}";
     private JsonService sc = null;
     Logger logger;
 

Modified: 
turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTyping_OBJECT_AND_NON_CONCRETE_Test.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTyping_OBJECT_AND_NON_CONCRETE_Test.java?rev=1738815&r1=1738814&r2=1738815&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTyping_OBJECT_AND_NON_CONCRETE_Test.java
 (original)
+++ 
turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/JacksonMapperEnabledDefaultTyping_OBJECT_AND_NON_CONCRETE_Test.java
 Tue Apr 12 15:22:39 2016
@@ -64,6 +64,7 @@ public class JacksonMapperEnabledDefault
         ((Jackson2MapperService) sc).getMapper().enableDefaultTypingAsProperty(
                 DefaultTyping.OBJECT_AND_NON_CONCRETE, "type");
     }
+   
     
     @Test
     public void testSerialize() throws Exception {

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=1738815&r1=1738814&r2=1738815&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
 Tue Apr 12 15:22:39 2016
@@ -19,7 +19,8 @@ package org.apache.fulcrum.json.jackson;
  * under the License.
  */
 
-import static org.junit.Assert.*;
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertTrue;
 
 import java.util.ArrayList;
 import java.util.Calendar;
@@ -36,12 +37,16 @@ import org.apache.fulcrum.json.JsonServi
 import org.apache.fulcrum.json.Rectangle;
 import org.apache.fulcrum.json.TestClass;
 import org.apache.fulcrum.testcontainer.BaseUnit4Test;
+import org.json.JSONArray;
+import org.json.JSONObject;
 import org.junit.Before;
 import org.junit.Ignore;
 import org.junit.Test;
 
 import com.fasterxml.jackson.annotation.JsonIgnore;
 import com.fasterxml.jackson.annotation.JsonProperty;
+import com.fasterxml.jackson.databind.ObjectMapper;
+import com.fasterxml.jackson.datatype.jsonorg.JsonOrgModule;
 
 /**
  * Jackson2 JSON Test
@@ -167,8 +172,57 @@ public class JacksonMapperTest extends B
                     ((Map) ((List) beanList2).get(i)).get("name").equals(
                             "joe" + i));
         }
-
     }
+    
+    // support for org.json mapping 
+    @Test
+    public void testDeSerToORGJSONCollectionObject() throws Exception {
+        // test array
+         List<Bean> beanResults = new ArrayList<Bean> ( );
+         Bean tu = new Bean();
+         tu.setName("jim jar");
+         beanResults.add(tu);
+         Bean tu2 = new Bean();
+         tu2.setName("jim2 jar2");
+         tu2.setAge(45);
+         beanResults.add(tu2);
+         
+         String[] filterAttr = {"name", "age" };   
+         String filteredSerList = sc.serializeOnlyFilter(beanResults, 
Bean.class, filterAttr);
+         logger.debug("serList: "+ filteredSerList);
+   
+         sc.addAdapter(null, null,new JsonOrgModule());
+         //((Jackson2MapperService)sc).registerModule(new JsonOrgModule());
+         
+         JSONArray jsonOrgResult = sc.deSer(filteredSerList, 
JSONArray.class);//readValue(serList, JSONArray.class);
+         logger.debug("jsonOrgResult: "+ jsonOrgResult.toString(2));
+         assertEquals("DeSer failed ", "jim jar", 
((JSONObject)(jsonOrgResult.get(0))).get("name") );
+         assertEquals("DeSer failed ", 45, 
((JSONObject)(jsonOrgResult.get(1))).get("age") );      
+    }
+    
+    // support for org.json mapping 
+    @Test
+    public void testSerToORGJSONCollectionObject() throws Exception {
+  
+        // test array
+         List<Bean> userResults = new ArrayList<Bean> ( );
+         Bean tu = new Bean();
+         tu.setName("jim jar");
+         userResults.add(tu);
+         Bean tu2 = new Bean();
+         tu2.setName("jim2 jar2");
+         tu2.setAge(45);
+         userResults.add(tu2);
+         
+         String[] filterAttr = {"name", "age" };
+         
+         sc.addAdapter(null, null,new JsonOrgModule());
+         //((Jackson2MapperService)sc).registerModule(new JsonOrgModule());
+         String filteredSerList = sc.serializeOnlyFilter(userResults, 
Bean.class, filterAttr);
+         logger.debug("serList: "+ filteredSerList);
+         
+    }
+    
     @Test
     public void testSerializeWithMixin() throws Exception {
         Rectangle filteredRectangle = new Rectangle(5, 10);


Reply via email to