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