You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@felix.apache.org by da...@apache.org on 2016/09/26 15:12:14 UTC

svn commit: r1762341 - in /felix/trunk/converter/serializer/src: main/java/org/apache/felix/serializer/impl/json/JsonParser.java test/java/org/apache/felix/serializer/impl/json/JsonSerializationTest.java

Author: davidb
Date: Mon Sep 26 15:12:13 2016
New Revision: 1762341

URL: http://svn.apache.org/viewvc?rev=1762341&view=rev
Log:
FELIX-5358 Cannot deserialize empty Map

This commit resolves the issue.
Testcase contributed by David Leangen with many thanks.

Modified:
    felix/trunk/converter/serializer/src/main/java/org/apache/felix/serializer/impl/json/JsonParser.java
    felix/trunk/converter/serializer/src/test/java/org/apache/felix/serializer/impl/json/JsonSerializationTest.java

Modified: felix/trunk/converter/serializer/src/main/java/org/apache/felix/serializer/impl/json/JsonParser.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/serializer/src/main/java/org/apache/felix/serializer/impl/json/JsonParser.java?rev=1762341&r1=1762340&r2=1762341&view=diff
==============================================================================
--- felix/trunk/converter/serializer/src/main/java/org/apache/felix/serializer/impl/json/JsonParser.java (original)
+++ felix/trunk/converter/serializer/src/main/java/org/apache/felix/serializer/impl/json/JsonParser.java Mon Sep 26 15:12:13 2016
@@ -130,8 +130,12 @@ public class JsonParser {
         if (!(jsonObject.startsWith("{") && jsonObject.endsWith("}")))
             throw new IllegalArgumentException("Malformatted JSON object: " + jsonObject);
 
-        jsonObject = jsonObject.substring(1, jsonObject.length() - 1);
         Map<String, Object> values = new HashMap<>();
+
+        jsonObject = jsonObject.substring(1, jsonObject.length() - 1).trim();
+        if (jsonObject.length() == 0)
+            return values;
+
         for (String element : parseKeyValueListRaw(jsonObject)) {
             Pair<String, Object> pair = parseKeyValue(element);
             values.put(pair.key, pair.value);

Modified: felix/trunk/converter/serializer/src/test/java/org/apache/felix/serializer/impl/json/JsonSerializationTest.java
URL: http://svn.apache.org/viewvc/felix/trunk/converter/serializer/src/test/java/org/apache/felix/serializer/impl/json/JsonSerializationTest.java?rev=1762341&r1=1762340&r2=1762341&view=diff
==============================================================================
--- felix/trunk/converter/serializer/src/test/java/org/apache/felix/serializer/impl/json/JsonSerializationTest.java (original)
+++ felix/trunk/converter/serializer/src/test/java/org/apache/felix/serializer/impl/json/JsonSerializationTest.java Mon Sep 26 15:12:13 2016
@@ -21,7 +21,6 @@ import java.util.Collections;
 import java.util.LinkedHashMap;
 import java.util.Map;
 
-import org.apache.felix.serializer.impl.json.JsonSerializerImpl;
 import org.junit.Test;
 
 import static org.junit.Assert.assertEquals;
@@ -78,4 +77,13 @@ public class JsonSerializationTest {
                 + "{\"yes\":true,\"no\":{\"maybe\":false}}}";
         assertEquals(expected, new JsonSerializerImpl().serialize(cm).toString());
     }
+
+    @Test
+    public void testEmptyMapSerialization() {
+        Map<?,?> m = new LinkedHashMap<>();
+        String expected = "{}";
+        assertEquals(expected, new JsonSerializerImpl().serialize(m).toString());
+        Map<?,?> m2 = new JsonSerializerImpl().deserialize(Map.class).from(expected);
+        assertEquals(m, m2);
+    }
 }