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 );