Author: gk
Date: Thu Jan 16 14:46:36 2014
New Revision: 1558819

URL: http://svn.apache.org/r1558819
Log:
Checking for null without jumping out from method.
Added mixin deserializing test for collection

Modified:
    
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/JacksonMapperTest.java

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=1558819&r1=1558818&r2=1558819&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 Jan 16 14:46:36 2014
@@ -124,13 +124,8 @@ public class Jackson2MapperService exten
 
     @Override
     public <T> String ser(Object src, Class<T> type) throws Exception {
-        if (src == null) {
-            getLogger().info("no serializable object:" + src + " for type "+ 
type);
-            return null;
-        } else {
-            getLogger().debug("ser class::" + src.getClass() + " with type" + 
type);
-        }
-        if (filters.containsKey(src.getClass().getName())) {
+        getLogger().info("serializing object:" + src + " for type "+ type);
+        if (src != null && filters.containsKey(src.getClass().getName())) {
             getLogger()
                     .warn("Found registered filter - could not use custom view 
and custom filter for class:"
                             + src.getClass().getName());
@@ -138,7 +133,7 @@ public class Jackson2MapperService exten
             // Exception("Found registered filter - could not use custom view 
and custom filter for class:"+
             // src.getClass().getName());
         }
-        return mapper.writerWithView(type).writeValueAsString(src);
+        return (type != null)? 
mapper.writerWithView(type).writeValueAsString(src): 
mapper.writeValueAsString(src);
     }
 
     public <T> String ser(Object src, FilterProvider filters) throws Exception 
{
@@ -258,17 +253,16 @@ public class Jackson2MapperService exten
 
     private <T> String filter(Object src, Class<T> filterClass,
             FilterContext fc,  boolean refresh, String... filterAttr) throws 
Exception {
-        if (src == null) {
-            getLogger().info("no serializable object:" + src + " for 
filterClass "+ filterClass);
-            return null;
-        }
-        FilterProvider filter = checkFilter(fc, src.getClass(), filterClass,
+        FilterProvider filter = null;
+        if (src != null) {
+            filter = checkFilter(fc, src.getClass(), filterClass,
                 filterAttr);
+        }
         getLogger().info("filtering with filter "+ filter);
         String serialized = ser(src, filter);
         if (!cacheFilters || refresh) {
             removeFilter(filterClass);
-            removeFilter(src.getClass());
+            if (src != null) removeFilter(src.getClass());
         }
         return serialized;
     }

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=1558819&r1=1558818&r2=1558819&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
 Thu Jan 16 14:46:36 2014
@@ -272,6 +272,28 @@ public class JacksonMapperTest extends B
                 "DeSer failed ",
                 
"[{'width':25},{'width':250},{'name':'joe0'},{'name':'joe1'},{'name':'joe2'}]",
                 serRect.replace('"', '\''));
+        
+        // adding h and name for first two items, adding width for beans
+        String deSerTest = "[{\"width\":25,\"age\":99, 
\"h\":50,\"name\":\"rect1\"},{\"width\":250,\"name\":\"rect2\"},{\"name\":\"joe0\"},{\"name\":\"joe1\"},{\"name\":\"joe2\"}]";
+        
+        List typeRectList = new ArrayList(); //empty
+        // could not use Mixins here, but Adapters are still set
+        Collection<Rectangle> resultList0 =  sc.deSerCollection(deSerTest, 
typeRectList, Rectangle.class);
+        System.out.println("resultList0 class:" +resultList0.getClass());
+        for (int i = 0; i < 5; i++) {
+            // name and h should be null as it is ignored,  cft. Mixin
+            assertTrue(((List<Rectangle>)resultList0).get(i).getName()==null);
+            assertTrue(((List<Rectangle>)resultList0).get(i).getH()==0);
+        }
+        // could not use Mixins here, but Adapters are still set
+        Collection<Bean> resultList1 =  sc.deSerCollection(deSerTest, 
typeRectList, Bean.class);
+        System.out.println("resultList1 class:" +resultList1.getClass());
+        for (int i = 0; i < 5; i++) {
+            System.out.println("resultList1 "+i+ " 
name:"+((List<Bean>)resultList1).get(i).getName());
+            // name should NOT be null, age should be ignored, cft. BeanMixin
+            assertTrue(((List<Bean>)resultList1).get(i).getName()!=null);
+            assertTrue(((List<Bean>)resultList1).get(i).getAge()==0);
+        }
     }
 
     // @JsonFilter("myFilter")


Reply via email to