Author: gk
Date: Wed May 20 14:58:01 2015
New Revision: 1680589

URL: http://svn.apache.org/r1680589
Log:
- jackson2: extend filter reciprocal that even parent classes get filtered if a 
child filter class is provided

Modified:
    
turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/SimpleNameIntrospector.java
    
turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java

Modified: 
turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/SimpleNameIntrospector.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/SimpleNameIntrospector.java?rev=1680589&r1=1680588&r2=1680589&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/SimpleNameIntrospector.java
 (original)
+++ 
turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/SimpleNameIntrospector.java
 Wed May 20 14:58:01 2015
@@ -99,11 +99,16 @@ public class SimpleNameIntrospector exte
             } else {
                 // check if target class is a child from filter class -> apply 
filter 
                 for (Class<?> filterClazz : filteredClasses) {
-                    // the currently checked class /targetClazz could be child 
to the filter class /filterClazz -> positive filter 
+                    // the currently checked class /targetClazz could be child 
to the filter class /filterClazz ->  filter child 
                     if (filterClazz.isAssignableFrom(targetClazz)) {
                         id = name;
                         break;
                     }
+                 // the currently checked class /targetClazz could be parent 
to the filter class /filterClazz -> filter parent
+                    if (targetClazz.isAssignableFrom(filterClazz)) {
+                        id = name;
+                        break;
+                    }
                     // the current clazz could be parent to the filter
                 }
             }

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=1680589&r1=1680588&r2=1680589&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
 Wed May 20 14:58:01 2015
@@ -274,9 +274,9 @@ public class DefaultServiceTest extends
     
     public void testSerializeCollectionWithOnlyFilterAndParentClass() throws 
Exception {
         
-        List<Bean> beanList = new ArrayList<Bean>();
+        List<BeanChild> beanList = new ArrayList<BeanChild>();
         for (int i = 0; i < 3; i++) {
-            Bean bean = new BeanChild();
+            BeanChild bean = new BeanChild();
             bean.setAge(i);bean.setName("bean"+i);
             beanList.add(bean);
         }
@@ -292,6 +292,18 @@ public class DefaultServiceTest extends
             bean.setAge(i);bean.setName("bean"+i);
             beanList.add(bean);
         }
+        
assertEquals("[{\"name\":\"bean0\"},{\"name\":\"bean1\"},{\"name\":\"bean2\"}]",sc.serializeOnlyFilter(beanList,
 BeanChild.class, true,"name"));
+        
//assertEquals("[{\"type\":\"\"},{\"type\":\"\"},{\"type\":\"\"}]",sc.serializeOnlyFilter(beanList,
 BeanChild.class, true,"type"));
+    }
+    
+    public void testSerializeCollectionWithOnlyFilterWithChildClass() throws 
Exception {
+        
+        List<Bean> beanList = new ArrayList<Bean>();
+        for (int i = 0; i < 3; i++) {
+            Bean bean = new Bean();
+            bean.setAge(i);bean.setName("bean"+i);
+            beanList.add(bean);
+        }
         
assertEquals("[{\"name\":\"bean0\"},{\"name\":\"bean1\"},{\"name\":\"bean2\"}]",sc.serializeOnlyFilter(beanList,
 BeanChild.class, true,"name"));
         
//assertEquals("[{\"type\":\"\"},{\"type\":\"\"},{\"type\":\"\"}]",sc.serializeOnlyFilter(beanList,
 BeanChild.class, true,"type"));
     }


Reply via email to