You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@shindig.apache.org by rb...@apache.org on 2013/11/12 23:26:42 UTC

svn commit: r1541274 - in /shindig/trunk/java/common/src: main/java/org/apache/shindig/protocol/conversion/BeanJsonConverter.java test/java/org/apache/shindig/protocol/conversion/BeanJsonConverterTest.java

Author: rbaxter85
Date: Tue Nov 12 22:26:41 2013
New Revision: 1541274

URL: http://svn.apache.org/r1541274
Log:
BeanJsonConverter fails with NullPointerException for empty ExtendableBeans
SHINDIG-1941
Committed For Andreas Kohn

Modified:
    shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanJsonConverter.java
    shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/conversion/BeanJsonConverterTest.java

Modified: shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanJsonConverter.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanJsonConverter.java?rev=1541274&r1=1541273&r2=1541274&view=diff
==============================================================================
--- shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanJsonConverter.java (original)
+++ shindig/trunk/java/common/src/main/java/org/apache/shindig/protocol/conversion/BeanJsonConverter.java Tue Nov 12 22:26:41 2013
@@ -265,8 +265,11 @@ public class BeanJsonConverter implement
      * will support arbitrary mappings to JSON & XML.
      */
     if (ExtendableBean.class.isAssignableFrom(type)) {
-      for (String name : JSONObject.getNames(in)) {
-        ((ExtendableBean) out).put(name, convertToObject(in.opt(name), null));
+      String[] names = JSONObject.getNames(in);
+      if (names != null) {
+        for (String name : names) {
+          ((ExtendableBean) out).put(name, convertToObject(in.opt(name), null));
+        }
       }
     }
 

Modified: shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/conversion/BeanJsonConverterTest.java
URL: http://svn.apache.org/viewvc/shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/conversion/BeanJsonConverterTest.java?rev=1541274&r1=1541273&r2=1541274&view=diff
==============================================================================
--- shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/conversion/BeanJsonConverterTest.java (original)
+++ shindig/trunk/java/common/src/test/java/org/apache/shindig/protocol/conversion/BeanJsonConverterTest.java Tue Nov 12 22:26:41 2013
@@ -18,6 +18,7 @@
  */
 package org.apache.shindig.protocol.conversion;
 
+import org.apache.shindig.protocol.model.ExtendableBean;
 import org.apache.shindig.protocol.model.Model;
 
 import com.google.common.collect.ImmutableMap;
@@ -32,6 +33,7 @@ import org.junit.Test;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Map.Entry;
@@ -76,6 +78,10 @@ public class BeanJsonConverterTest exten
     }
   }
 
+  public static class ExtendableTestObject extends HashMap<String, Object> implements ExtendableBean {
+    private static final long serialVersionUID = 1L;
+  }
+  
   @Test
   public void testJsonToObject() throws Exception {
     String json = '{' +
@@ -188,4 +194,12 @@ public class BeanJsonConverterTest exten
          new TypeLiteral<Map<String,String>>(){}.getType());
     assertTrue(data.isEmpty());
   }
+ 
+  @Test
+  public void testEmptyExtendableBean() throws Exception {
+    String emptyMap = "{}";
+    ExtendableTestObject data = beanJsonConverter.convertToObject(emptyMap,
+         ExtendableTestObject.class);
+    assertTrue(data.isEmpty());
+  }
 }