Author: gk
Date: Sat Nov  2 17:18:33 2013
New Revision: 1538231

URL: http://svn.apache.org/r1538231
Log:
Enhanced Exclude Filter in GSONBuilderService.java.
Removed synchronized attribute in serialization method in class 
Jackson2MapperService.java.

Modified:
    
turbine/fulcrum/trunk/json/api/src/test/org/apache/fulcrum/json/TestClass.java
    
turbine/fulcrum/trunk/json/gson/src/java/org/apache/fulcrum/json/gson/GSONBuilderService.java
    
turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/GSONServiceTest.java
    
turbine/fulcrum/trunk/json/jackson2/src/java/org/apache/fulcrum/json/jackson/Jackson2MapperService.java

Modified: 
turbine/fulcrum/trunk/json/api/src/test/org/apache/fulcrum/json/TestClass.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/api/src/test/org/apache/fulcrum/json/TestClass.java?rev=1538231&r1=1538230&r2=1538231&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/json/api/src/test/org/apache/fulcrum/json/TestClass.java 
(original)
+++ 
turbine/fulcrum/trunk/json/api/src/test/org/apache/fulcrum/json/TestClass.java 
Sat Nov  2 17:18:33 2013
@@ -1,5 +1,7 @@
 package org.apache.fulcrum.json;
 
+
+import java.util.HashMap;
 import java.util.Map;
 
 public class TestClass
@@ -10,7 +12,15 @@ public class TestClass
     /** Setup our default configurationFileName */
     private String configurationName = "Config.xml";
 
-    /** Setup our default parameterFileName */
+    public Map<String, Object> getContainer() {
+               return container;
+       }
+
+       public void setContainer(Map<String, Object> container) {
+               this.container = container;
+       }
+
+       /** Setup our default parameterFileName */
     private String name = null;
     
     public TestClass()
@@ -20,6 +30,8 @@ public class TestClass
     
     public TestClass(String name) {
         this.name = name;
+        this.container = new HashMap<String, Object>();
+        this.container.put("cf", configurationName);
     }
 
     public String getName()

Modified: 
turbine/fulcrum/trunk/json/gson/src/java/org/apache/fulcrum/json/gson/GSONBuilderService.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/gson/src/java/org/apache/fulcrum/json/gson/GSONBuilderService.java?rev=1538231&r1=1538230&r2=1538231&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/json/gson/src/java/org/apache/fulcrum/json/gson/GSONBuilderService.java
 (original)
+++ 
turbine/fulcrum/trunk/json/gson/src/java/org/apache/fulcrum/json/gson/GSONBuilderService.java
 Sat Nov  2 17:18:33 2013
@@ -22,8 +22,10 @@ package org.apache.fulcrum.json.gson;
 import java.lang.reflect.Type;
 import java.text.DateFormat;
 import java.text.SimpleDateFormat;
+import java.util.Collections;
 import java.util.Date;
 import java.util.Enumeration;
+import java.util.HashSet;
 import java.util.Hashtable;
 
 import org.apache.avalon.framework.activity.Initializable;
@@ -112,7 +114,7 @@ public class GSONBuilderService extends 
     public <T> String serializeAllExceptFilter( Object src, Class<T> 
filterClass, String... filterAttr )
         throws Exception
     {
-        return gson.addSerializationExclusionStrategy(exclude( filterClass) 
).create().toJson( src );
+        return gson.addSerializationExclusionStrategy(exclude( filterClass, 
filterAttr) ).create().toJson( src );
     }
     
     public JsonService registerTypeAdapter( JsonSerializer serdeser, Type 
type) {
@@ -199,29 +201,36 @@ public class GSONBuilderService extends 
         }
     }
     
-    private ExclusionStrategy exclude(Class clazz)
+    private ExclusionStrategy exclude(Class clazz, String...filterAttrs)
     {
         return new ExclusionStrategy() {
 
-               private Class<?> excludedThisClass;
+               public Class<?> excludedThisClass;
+               public HashSet<String> excludedAttributes;
                
-               private ExclusionStrategy init(Class<?> excludedThisClass) {
+               private ExclusionStrategy init(Class<?> excludedThisClass, 
String... filterAttrs) {
                    this.excludedThisClass = excludedThisClass;
+                   if (filterAttrs != null) {
+                          this.excludedAttributes = new 
HashSet<String>(filterAttrs.length);
+                          Collections.addAll(this.excludedAttributes, 
filterAttrs);
+                   } else 
+                          this.excludedAttributes = new HashSet<String>();
+                  
                    return this;
                  }
                
                  @Override
                  public boolean shouldSkipClass(Class<?> clazz) {
-                   return excludedThisClass.equals(clazz);
+                   return (excludedThisClass != null)? 
excludedThisClass.equals(clazz): false;
                  }
 
                 @Override
                 public boolean shouldSkipField( FieldAttributes 
paramFieldAttributes )
                 {
-                    // TODO Auto-generated method stub
-                    return false;
+                       //return paramFieldAttributes.getDeclaringClass() == 
excludedThisClass && 
excludesAttributes.contains(paramFieldAttributes.getName());
+                       return (!excludedAttributes.isEmpty())? 
this.excludedAttributes.contains(paramFieldAttributes.getName()): false;
                 }
-           }.init( clazz );
+           }.init( clazz, filterAttrs );
     }
 
 

Modified: 
turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/GSONServiceTest.java
URL: 
http://svn.apache.org/viewvc/turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/GSONServiceTest.java?rev=1538231&r1=1538230&r2=1538231&view=diff
==============================================================================
--- 
turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/GSONServiceTest.java
 (original)
+++ 
turbine/fulcrum/trunk/json/gson/src/test/org/apache/fulcrum/json/gson/GSONServiceTest.java
 Sat Nov  2 17:18:33 2013
@@ -42,7 +42,7 @@ public class GSONServiceTest extends Bas
 {
     private JsonService sc = null;
     private final String preDefinedOutput = 
-        "{\"configurationName\":\"Config.xml\",\"name\":\"mytest\"}";
+        
"{\"container\":{\"cf\":\"Config.xml\"},\"configurationName\":\"Config.xml\",\"name\":\"mytest\"}";
 
     /**
      * Constructor for test.
@@ -75,13 +75,38 @@ public class GSONServiceTest extends Bas
         assertEquals("Encryption failed ", TestClass.class, deson.getClass());
     }
     
-    public void testSerializeExclude() throws Exception
+    public void testSerializeExclude00() throws Exception
+    {    
+        String serJson = sc.serializeAllExceptFilter(  new 
TestClass("mytest"), (Class)null, (String[])null );
+        assertEquals("Encryption failed ", 
"{\"container\":{\"cf\":\"Config.xml\"},\"configurationName\":\"Config.xml\",\"name\":\"mytest\"}",
 serJson);
+    }
+    
+    public void testSerializeExcludeClass() throws Exception
     {    
         String serJson = sc.serializeAllExceptFilter(  new 
TestClass("mytest"),  String.class, (String[])null );
+        assertEquals("Encryption failed ", "{\"container\":{}}", serJson);
+    }
+    
+    public void testSerializeExcludeClassAndField() throws Exception
+    {    
+       String serJson = sc.serializeAllExceptFilter(  new TestClass("mytest"), 
 String.class, "container" );
         System.out.println("serJson:"+ serJson);
         assertEquals("Encryption failed ", "{}", serJson);
     }
     
+    public void testSerializeExcludeClassAndFields() throws Exception
+    {    
+       String serJson = sc.serializeAllExceptFilter(  new TestClass("mytest"), 
 Map.class, "configurationName", "name" );
+        assertEquals("Encryption failed ", "{}", serJson);
+    }
+    
+    public void testSerializeExcludeField() throws Exception
+    {    
+   
+       String serJson = sc.serializeAllExceptFilter(  new TestClass("mytest"), 
 (Class)null, "configurationName" );
+        assertEquals("Encryption failed ", 
"{\"container\":{\"cf\":\"Config.xml\"},\"name\":\"mytest\"}", serJson);
+    }
+    
     public void testSerializeDate() throws Exception
     {
         final SimpleDateFormat MMddyyyy = new SimpleDateFormat( "MM/dd/yyyy");

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=1538231&r1=1538230&r2=1538231&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
 Sat Nov  2 17:18:33 2013
@@ -100,7 +100,7 @@ public class Jackson2MapperService exten
     String[] defaultTypeDefs = null;
 
     @Override
-    public synchronized String ser( Object src )
+    public String ser( Object src )
         throws Exception
     {
         if (filters.containsKey( src.getClass().getName() )) {
@@ -165,7 +165,7 @@ public class Jackson2MapperService exten
     }
 
     @SuppressWarnings( "rawtypes" )
-    public synchronized String withMixinModule( Object src, String name, Class 
target, Class mixin ) throws JsonProcessingException {
+    public String withMixinModule( Object src, String name, Class target, 
Class mixin ) throws JsonProcessingException {
         Module mx = new MixinModule( name, target, mixin );
         getLogger().debug( "registering module "+ mx + "  for: " + mixin);
         return mapper.registerModule( mx ).writer().writeValueAsString( src );


Reply via email to