You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@turbine.apache.org by gk...@apache.org on 2014/03/14 09:51:51 UTC

svn commit: r1577453 - in /turbine/fulcrum/trunk/json: gson/src/test/org/apache/fulcrum/json/gson/ jackson/src/java/org/apache/fulcrum/json/jackson/ jackson/src/test/org/apache/fulcrum/json/jackson/ jackson2/src/test/org/apache/fulcrum/json/jackson/

Author: gk
Date: Fri Mar 14 08:51:51 2014
New Revision: 1577453

URL: http://svn.apache.org/r1577453
Log:
Standardized Tests.

Added:
    turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Bean.java   (with props)
    turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java   (with props)
    turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java   (with props)
    turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Rectangle.java   (with props)
    turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Bean.java   (with props)
    turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java   (with props)
Modified:
    turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/DefaultServiceTest.java
    turbine/fulcrum/trunk/json/jackson/src/java/org/apache/fulcrum/json/jackson/JacksonMapperService.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/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=1577453&r1=1577452&r2=1577453&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 Fri Mar 14 08:51:51 2014
@@ -116,6 +116,7 @@ public class DefaultServiceTest extends 
                 serJson.matches("\\{\"date\":\"\\d\\d/\\d\\d/\\d{4}\"\\}"));
     }
 
+    // does not seerialize size
     public void testSerializeCollection() throws Exception {
         List<Rectangle> rectList = new ArrayList<Rectangle>();
         for (int i = 0; i < 10; i++) {
@@ -207,14 +208,14 @@ public class DefaultServiceTest extends 
         }
     }
     
-    public void testSerializeWithMixinAndFilter2() throws Exception {
+    public void testSerializeWithMixinAndFilter() throws Exception {
         Rectangle filteredRectangle = new Rectangle(5, 10);
         filteredRectangle.setName("jim");
         //
         sc.addAdapter("M4RMixin2", Rectangle.class,
                 TypeAdapterForRectangle.class);
         
-        // as gson adds all kind, we could not easiy use multiple strategies
+        // as gson adds adapters/strategies, we have to be cautious if using multiple strategies
         String rectangle = sc.ser(filteredRectangle);
         assertEquals(
                 "Ser filtered Rectangle failed ",
@@ -222,17 +223,17 @@ public class DefaultServiceTest extends 
                 rectangle); 
     }
     
-    public void testSerializeWithMixinAndFilter3() throws Exception {
+    public void testSerializeWithOnlyFilter() throws Exception {
 
         // as gson adds we could not use multiple disjunct exclusion strategies
         String serJson = sc.serializeOnlyFilter(new TestClass("mytest"),
                 (Class) null, "configurationName");
         assertEquals("Serialization failed ",
                 "{\"configurationName\":\"Config.xml\"}",
-                serJson);        
+                serJson);
     }
     
-    public void testSerializeWithMixinAndFilter4() throws Exception {
+    public void testSerializeWithOnlyFilter2() throws Exception {
 
         // as gson adds we could not use multiple disjunct exclusion strategies
         Rectangle filteredRectangle = new Rectangle(5, 10);

Modified: turbine/fulcrum/trunk/json/jackson/src/java/org/apache/fulcrum/json/jackson/JacksonMapperService.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson/src/java/org/apache/fulcrum/json/jackson/JacksonMapperService.java?rev=1577453&r1=1577452&r2=1577453&view=diff
==============================================================================
--- turbine/fulcrum/trunk/json/jackson/src/java/org/apache/fulcrum/json/jackson/JacksonMapperService.java (original)
+++ turbine/fulcrum/trunk/json/jackson/src/java/org/apache/fulcrum/json/jackson/JacksonMapperService.java Fri Mar 14 08:51:51 2014
@@ -101,6 +101,10 @@ public class JacksonMapperService extend
 
     public synchronized <T> String ser(Object src, FilterProvider filters)
             throws Exception {
+        if (filters == null) {
+            getLogger().debug("ser class::" + src.getClass() + " without filter "); 
+            return ser(src);
+        } 
         getLogger().debug("ser::" + src + " with filters " + filters);
         String serResult = mapper.writer(filters).writeValueAsString(src);
         return serResult;
@@ -164,14 +168,17 @@ public class JacksonMapperService extend
             Class<T> filterClass, Boolean refreshFilter, String... filterAttr)
             throws Exception {
         setCustomIntrospectorWithExternalFilterId(filterClass);
-        FilterProvider filter;
-        if (!this.filters.containsKey(filterClass.getName())) {
-            filter = new SimpleFilterProvider().addFilter(
-                    filterClass.getName(),
-                    SimpleBeanPropertyFilter.serializeAllExcept(filterAttr));
-            this.filters.put(filterClass.getName(), filter);
-        } else {
-            filter = this.filters.get(filterClass.getName());
+        FilterProvider filter = null;
+        if ( filterClass != null) {
+            if (filterAttr != null && filterAttr.length > 0 && 
+                            !this.filters.containsKey(filterClass.getName())) {
+                filter = new SimpleFilterProvider().addFilter(
+                        filterClass.getName(),
+                        SimpleBeanPropertyFilter.serializeAllExcept(filterAttr));
+                this.filters.put(filterClass.getName(), filter);
+            } else {
+                filter = this.filters.get(filterClass.getName());
+            }
         }
         String serialized = ser(src, filter);
         if (!cacheFilters)
@@ -189,14 +196,26 @@ public class JacksonMapperService extend
     public <T> String serializeOnlyFilter(Object src, Class<T> filterClass,
             Boolean refreshFilter, String... filterAttr) throws Exception {
         setCustomIntrospectorWithExternalFilterId(filterClass);
-        FilterProvider filter;
-        if (!this.filters.containsKey(filterClass.getName())) {
-            filter = new SimpleFilterProvider().addFilter(
-                    filterClass.getName(),
-                    SimpleBeanPropertyFilter.filterOutAllExcept(filterAttr));
-            this.filters.put(filterClass.getName(), filter);
-        } else {
-            filter = this.filters.get(filterClass.getName());
+        FilterProvider filter = null;
+        getLogger().debug("filterClass::" + filterClass + " , filterAttr: " + filterAttr);
+        if (filterClass == null && src != null && src.getClass() != null) {
+            filterClass =(Class<T>) src.getClass();
+        }
+        if ( filterClass != null) {
+            if (!this.filters.containsKey(filterClass.getName())) {
+                getLogger().debug("filterClass::" + filterClass.getName() + " with filterAttr: " + filterAttr);
+                if (filterAttr != null) {
+                filter = new SimpleFilterProvider().addFilter(
+                        filterClass.getName(),
+                        SimpleBeanPropertyFilter.filterOutAllExcept(filterAttr));
+                this.filters.put(filterClass.getName(), filter);
+                } else {
+                    filter =  new SimpleFilterProvider();
+                    this.filters.put(filterClass.getName(),filter);   
+                }
+            } else {
+                filter = this.filters.get(filterClass.getName());
+            }
         }
         String serialized = ser(src, filter);
         getLogger().debug("serialized " + serialized);

Added: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Bean.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Bean.java?rev=1577453&view=auto
==============================================================================
--- turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Bean.java (added)
+++ turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Bean.java Fri Mar 14 08:51:51 2014
@@ -0,0 +1,26 @@
+package org.apache.fulcrum.json.jackson;
+
+public class Bean {
+    private String name;
+    private int age;
+    public String profession;
+
+    public Bean() {
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getAge() {
+        return age;
+    }
+
+    public void setAge(int age) {
+        this.age = age;
+    }
+}

Propchange: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Bean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java?rev=1577453&view=auto
==============================================================================
--- turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java (added)
+++ turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java Fri Mar 14 08:51:51 2014
@@ -0,0 +1,20 @@
+package org.apache.fulcrum.json.jackson;
+
+import org.codehaus.jackson.annotate.JsonIgnore;
+import org.codehaus.jackson.annotate.JsonProperty;
+
+
+
+public abstract class BeanMixin {
+    BeanMixin() {
+    }
+
+    @JsonIgnore
+    abstract int getAge();
+
+    @JsonIgnore
+    String profession; // exclude
+
+    @JsonProperty
+    abstract String getName();//
+}
\ No newline at end of file

Propchange: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java?rev=1577453&view=auto
==============================================================================
--- turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java (added)
+++ turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java Fri Mar 14 08:51:51 2014
@@ -0,0 +1,210 @@
+package org.apache.fulcrum.json.jackson;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.fulcrum.json.JsonService;
+import org.apache.fulcrum.json.TestClass;
+import org.apache.fulcrum.testcontainer.BaseUnitTest;
+
+
+/**
+ * Jackson 2 JSON Test
+ * 
+ * @author gk
+ * @version $Id$
+ */
+public class DefaultServiceTest extends BaseUnitTest {
+    private JsonService sc = null;
+    private final String preDefinedOutput = "{\"container\":{\"cf\":\"Config.xml\"},\"configurationName\":\"Config.xml\",\"name\":\"mytest\"}";
+
+    /**
+     * Constructor for test.
+     * 
+     * @param testName
+     *            name of the test being executed
+     */
+    public DefaultServiceTest(String testName) {
+        super(testName);
+    }
+
+    public void setUp() throws Exception {
+        super.setUp();
+        sc = (JsonService) this.lookup(JsonService.ROLE);
+    }
+
+    public void testSerialize() throws Exception {
+        String serJson = sc.ser(new TestClass("mytest"));
+        assertEquals("Serialization failed ", preDefinedOutput, serJson);
+    }
+
+    public void testSerializeExcludeNothing() throws Exception {
+        String serJson = sc.serializeAllExceptFilter(new TestClass("mytest"),
+                (Class) null, (String[]) null);
+        assertEquals(
+                "Serialization failed ",
+                "{\"container\":{\"cf\":\"Config.xml\"},\"configurationName\":\"Config.xml\",\"name\":\"mytest\"}",
+                serJson);
+    }
+
+
+    public void ignoreTestSerializeExcludeClass() throws Exception {
+        // jackson 1 could yet not exclude classes 
+    }
+
+    public void ignoreTestSerializeExcludeClassAndField() throws Exception {
+     // no deep exclude
+    }
+
+    public void ignoreTestSerializeExcludeClassAndFields() throws Exception {
+        // no deep exclude
+    }
+
+    public void ignoreTestSerializeExcludeField() throws Exception {
+
+        // no deep ignore??
+    }
+
+    public void testSerializeDate() throws Exception {
+        final SimpleDateFormat MMddyyyy = new SimpleDateFormat("MM/dd/yyyy");
+        Map<String, Object> map = new HashMap<String, Object>();
+        map.put("date", Calendar.getInstance().getTime());
+
+        sc.setDateFormat(MMddyyyy);
+        String serJson = sc.ser(map);
+        System.out.println("serJson:" + serJson);
+        assertTrue("Serialize with Adapter failed ",
+                serJson.matches("\\{\"date\":\"\\d\\d/\\d\\d/\\d{4}\"\\}"));
+    }
+
+    // jackson serializes size too
+    public void testSerializeCollection() throws Exception {
+        List<org.apache.fulcrum.json.Rectangle> rectList = new ArrayList<org.apache.fulcrum.json.Rectangle>();
+        for (int i = 0; i < 10; i++) {
+            org.apache.fulcrum.json.Rectangle filteredRect = new org.apache.fulcrum.json.Rectangle(i, i, "rect" + i);
+            rectList.add(filteredRect);
+        }
+        String adapterSer = sc.ser(rectList);
+        assertEquals(
+                "collect ser",
+                "[{'w':0,'h':0,'name':'rect0','size':0},{'w':1,'h':1,'name':'rect1','size':1},{'w':2,'h':2,'name':'rect2','size':4},{'w':3,'h':3,'name':'rect3','size':9},{'w':4,'h':4,'name':'rect4','size':16},{'w':5,'h':5,'name':'rect5','size':25},{'w':6,'h':6,'name':'rect6','size':36},{'w':7,'h':7,'name':'rect7','size':49},{'w':8,'h':8,'name':'rect8','size':64},{'w':9,'h':9,'name':'rect9','size':81}]",
+                adapterSer.replace('"', '\''));
+    }
+    
+    public void testSerializationCollectioPrimitiveWrapper() throws Exception {
+
+        List<Integer> intList = new ArrayList<Integer>();
+        for (int i = 0; i < 10; i++) {
+            Integer integer = new Integer(i*i);
+            intList.add(integer);
+        }
+        String result = sc.serializeOnlyFilter(intList, Integer.class, null);
+        assertEquals(
+                "Serialization of beans failed ",
+                "[0,1,4,9,16,25,36,49,64,81]",
+                result);
+    }
+
+//    public void testSerializeTypeAdapterForCollection() throws Exception {
+//        TestSerializer tser = new TestSerializer();
+//        CustomModuleWrapper<List> cmw = new CustomModuleWrapper<List>(tser, null);
+//        sc.addAdapter("Collection Adapter", ArrayList.class, cmw);
+//        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 adapterSer = sc.ser(rectList);
+//        assertEquals(
+//                "collect ser",
+//                "{'rect0':0,'rect1':1,'rect2':4,'rect3':9,'rect4':16,'rect5':25,'rect6':36,'rect7':49,'rect8':64,'rect9':81}",
+//                adapterSer.replace('"', '\''));
+//    }
+    
+//    public void testMixinAdapter() throws Exception {
+//        TestJsonSerializer tser = new TestJsonSerializer();
+//        CustomModuleWrapper<TestClass> cmw = new CustomModuleWrapper<TestClass>(
+//                tser, null);
+//        sc.addAdapter("Collection Adapter", TestClass.class, cmw);
+//        String adapterSer = sc.ser(new TestClass("mytest"));
+//        assertEquals("failed adapter serialization:",
+//                "{\"n\":\"mytest\",\"p\":\"Config.xml\",\"c\":[]}", adapterSer);
+//    }
+    
+    public void testDeSerialize() throws Exception {
+        String serJson = sc.ser(new TestClass("mytest"));
+        Object deson = sc.deSer(serJson, TestClass.class);
+        assertEquals("Serialization failed ", TestClass.class, deson.getClass());
+    }
+
+    
+    public void testDeserializationCollection() 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);
+        // we need to set size to Ignore -> UnrecognizedPropertyException
+        Collection<Rectangle> resultList0 =  sc.deSerCollection(serColl, new ArrayList<Rectangle>(), Rectangle.class);
+        for (int i = 0; i < 10; i++) {
+            Rectangle rect = ((List<Rectangle>)resultList0)
+                            .get(i);
+            assertEquals("deser reread size failed", (i * i), rect.getSize());
+        }
+    }
+
+    public void testDeserializationTypeAdapterForCollection() throws Exception {
+        // not implemented
+    }
+    
+    public void testSerializeWithMixinAndFilter() throws Exception {
+        Bean filteredBean = new Bean();
+        filteredBean.setName("joe");
+        //
+        sc.addAdapter("M4RBeanMixin", Bean.class,
+                BeanMixin.class);
+        // profession was already set to ignore, does not change
+        String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "profession");
+        assertEquals(
+                "Ser filtered Bean failed ",
+                "{}",
+                bean);
+    }
+      
+    public void testSerializeWithOnlyFilter() throws Exception {
+        // no deep include ??
+        Bean filteredBean = new Bean();
+        filteredBean.setName("joe");
+        String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "profession");
+        assertEquals(
+                "Ser filtered Bean failed ",
+                "{\"profession\":null}",
+                bean);
+    }
+
+}

Propchange: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/DefaultServiceTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Rectangle.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Rectangle.java?rev=1577453&view=auto
==============================================================================
--- turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Rectangle.java (added)
+++ turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Rectangle.java Fri Mar 14 08:51:51 2014
@@ -0,0 +1,44 @@
+package org.apache.fulcrum.json.jackson;
+
+import org.codehaus.jackson.annotate.JsonIgnore;
+
+public final class Rectangle {
+    private int w, h;
+    private String name;
+ 
+    public Rectangle() {
+        // may be this is needed for deserialization, if not set otherwise
+    }
+    
+    public Rectangle(int w, int h) {
+        this.w = w;
+        this.h = h;
+    }
+
+    public Rectangle(int w, int h, String name) {
+        this.w = w;
+        this.h = h;
+        this.name = name;
+    }
+
+    public int getW() {
+        return w;
+    }
+
+    public int getH() {
+        return h;
+    }
+
+    @JsonIgnore
+    public int getSize() {
+        return w * h;
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+}
\ No newline at end of file

Propchange: turbine/fulcrum/trunk/json/jackson/src/test/org/apache/fulcrum/json/jackson/Rectangle.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Bean.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Bean.java?rev=1577453&view=auto
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Bean.java (added)
+++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Bean.java Fri Mar 14 08:51:51 2014
@@ -0,0 +1,26 @@
+package org.apache.fulcrum.json.jackson;
+
+public class Bean {
+    private String name;
+    private int age;
+    public String profession;
+
+    public Bean() {
+    }
+
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public int getAge() {
+        return age;
+    }
+
+    public void setAge(int age) {
+        this.age = age;
+    }
+}

Propchange: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/Bean.java
------------------------------------------------------------------------------
    svn:eol-style = native

Added: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java
URL: http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java?rev=1577453&view=auto
==============================================================================
--- turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java (added)
+++ turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java Fri Mar 14 08:51:51 2014
@@ -0,0 +1,18 @@
+package org.apache.fulcrum.json.jackson;
+
+import com.fasterxml.jackson.annotation.JsonIgnore;
+import com.fasterxml.jackson.annotation.JsonProperty;
+
+public abstract class BeanMixin {
+    BeanMixin() {
+    }
+
+    @JsonIgnore
+    abstract int getAge();
+
+    @JsonIgnore
+    String profession; // exclude
+
+    @JsonProperty
+    abstract String getName();//
+}
\ No newline at end of file

Propchange: turbine/fulcrum/trunk/json/jackson2/src/test/org/apache/fulcrum/json/jackson/BeanMixin.java
------------------------------------------------------------------------------
    svn:eol-style = native

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=1577453&r1=1577452&r2=1577453&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 Fri Mar 14 08:51:51 2014
@@ -183,8 +183,6 @@ public class DefaultServiceTest extends 
             rectList.add(filteredRect);
         }
         String serColl = sc.ser(rectList);
-        //System.out.println("serColl:" +serColl);
-
         TypeReference typeRef = new TypeReference<List<Rectangle>>(){};
         Collection<Rectangle> resultList0 =  sc.deSerCollection(serColl, typeRef, Rectangle.class);
         //System.out.println("resultList0 class:" +resultList0.getClass());
@@ -212,5 +210,36 @@ public class DefaultServiceTest extends 
                     .get(i).getSize());
         }
     }
+    
+    public void testSerializeWithMixinAndFilter() throws Exception {
+        Bean filteredBean = new Bean();
+        filteredBean.setName("joe");
+        //
+        sc.addAdapter("M4RBeanMixin", Bean.class,
+                BeanMixin.class);
+        // profession was already set to ignore, does not change
+        String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "profession");
+        assertEquals(
+                "Ser filtered Bean failed ",
+                "{}",
+                bean);
+    }
+    
+    public void testSerializeWithOnlyFilter() throws Exception {
+
+        String serJson = sc.serializeOnlyFilter(new TestClass("mytest"),
+                (Class) null, "configurationName");
+        assertEquals("Serialization failed ",
+                "{\"configurationName\":\"Config.xml\"}",
+                serJson); 
+
+        Rectangle filteredRectangle = new Rectangle(5, 10);
+        filteredRectangle.setName("jim");
+        String rectangle = sc.serializeOnlyFilter(filteredRectangle, (Class) null, "w");
+        assertEquals(
+                "Ser filtered Rectangle failed ",
+                "{\"w\":5}",
+                rectangle);
+    }
 
 }

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=1577453&r1=1577452&r2=1577453&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 Fri Mar 14 08:51:51 2014
@@ -113,7 +113,7 @@ public class JacksonMapperEnabledDefault
         String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "name");
         assertEquals(
                 "Ser filtered Bean failed ",
-                "{\"type\":\"org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean\",\"name\":\"joe\"}",
+                "{\"type\":\"org.apache.fulcrum.json.jackson.Bean\",\"name\":\"joe\"}",
                 bean);
 
         Rectangle filteredRectangle = new Rectangle(5, 10);
@@ -137,7 +137,7 @@ public class JacksonMapperEnabledDefault
                 "age");
         assertEquals(
                 "Serialization of beans failed ",
-                "['java.util.ArrayList',[{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe0','age':0},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe1','age':1},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe2','age':2},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe3','age':3},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe4','age':4},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe5','age':5},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe6','age':6},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe7','age':7},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':
 'joe8','age':8},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe9','age':9}]]",
+                "['java.util.ArrayList',[{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe0','age':0},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe1','age':1},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe2','age':2},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe3','age':3},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe4','age':4},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe5','age':5},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe6','age':6},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe7','age':7},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe8','age':8},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe9','age':9}]]",
                 result.replace('"', '\''));
     }
 
@@ -210,7 +210,7 @@ public class JacksonMapperEnabledDefault
         
         assertEquals(
                 "Ser filtered Bean failed ",
-                "{\"type\":\"org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean\",\"name\":\"joe\"}",
+                "{\"type\":\"org.apache.fulcrum.json.jackson.Bean\",\"name\":\"joe\"}",
                 bean);
     }
     
@@ -224,7 +224,7 @@ public class JacksonMapperEnabledDefault
         String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "profession");
         assertEquals(
                 "Ser filtered Bean failed ",
-                "{\"type\":\"org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean\"}",
+                "{\"type\":\"org.apache.fulcrum.json.jackson.Bean\"}",
                 bean);
     }
     
@@ -240,19 +240,18 @@ public class JacksonMapperEnabledDefault
         String bean = sc.serializeOnlyFilter(filteredBean, Bean.class, "profession");
         assertEquals(
                 "Ser filtered Bean failed ",
-                "{\"type\":\"org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean\",\"profession\":\"\"}",
+                "{\"type\":\"org.apache.fulcrum.json.jackson.Bean\",\"profession\":\"\"}",
                 bean);
     }
 
-    public void testSerializeWithMixinAndFilter2() throws Exception {
+    public void testMultipleSerializingWithMixinAndFilter() throws Exception {
         Rectangle filteredRectangle = new Rectangle(5, 10);
         filteredRectangle.setName("jim");
         //
         sc.addAdapter("M4RMixin2", Rectangle.class,
                 Mixin2.class);
         
-        // if serialization is done this way, filtering has no effect. 
-        // this is may be a bug in Jackson: as mixin modules may be cached..?  
+        // if serialization is done Jackson clean cache
         String rectangle0 = sc.ser(filteredRectangle,Rectangle.class,true);
         assertEquals(
                 "Ser filtered Rectangle failed ",
@@ -285,7 +284,7 @@ public class JacksonMapperEnabledDefault
                 .ser(beanList);
         assertEquals(
                 "Serialization of beans failed ",
-                "['java.util.ArrayList',[{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe0'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe1'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe2'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe3'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe4'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe5'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe6'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe7'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe8'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEn
 abledDefaultTypingTest$Bean','name':'joe9'}]]",
+                "['java.util.ArrayList',[{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe0'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe1'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe2'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe3'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe4'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe5'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe6'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe7'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe8'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe9'}]]",
                 result.replace('"', '\''));
     }
 
@@ -326,38 +325,14 @@ public class JacksonMapperEnabledDefault
         String serRect = sc.ser(components);
         assertEquals(
                 "Serialization failed ",
-                "['java.util.ArrayList',[{'type':'org.apache.fulcrum.json.Rectangle','width':25},{'type':'org.apache.fulcrum.json.Rectangle','width':250},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe0'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe1'},{'type':'org.apache.fulcrum.json.jackson.JacksonMapperEnabledDefaultTypingTest$Bean','name':'joe2'}]]",
+                "['java.util.ArrayList',[{'type':'org.apache.fulcrum.json.Rectangle','width':25},{'type':'org.apache.fulcrum.json.Rectangle','width':250},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe0'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe1'},{'type':'org.apache.fulcrum.json.jackson.Bean','name':'joe2'}]]",
                 serRect.replace('"', '\''));
 
     }
     
 
     // @JsonFilter("myFilter")
-    static class Bean {
-        private String name;
-        private int age;
-        public String profession;
-
-        public Bean() {
-        }
-
-        public String getName() {
-            return name;
-        }
-
-        public void setName(String name) {
-            this.name = name;
-        }
-
-        public int getAge() {
-            return age;
-        }
-
-        public void setAge(int age) {
-            this.age = age;
-        }
-    }
-
+   
     public static abstract class Mixin2 {
         void MixIn2(int w, int h) {
         }
@@ -374,18 +349,6 @@ public class JacksonMapperEnabledDefault
         abstract String getName();
     }
 
-    public static abstract class BeanMixin {
-        void BeanMixin() {
-        }
-
-        @JsonIgnore
-        abstract int getAge();
-
-        @JsonIgnore
-        String profession; // exclude
-
-        @JsonProperty
-        abstract String getName();//
-    }
+    
 
 }