You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cxf.apache.org by se...@apache.org on 2017/03/20 14:55:21 UTC

[2/2] cxf git commit: [CXF-7287] Making sure more values with more than 1 comma are correctly parsed

[CXF-7287] Making sure more values with more than 1 comma are correctly parsed


Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/6613e466
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/6613e466
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/6613e466

Branch: refs/heads/master
Commit: 6613e46662317ea151f72e26e5deb4f50148a148
Parents: c3d5841
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Mon Mar 20 14:55:05 2017 +0000
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Mon Mar 20 14:55:05 2017 +0000

----------------------------------------------------------------------
 .../cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java   | 10 +++++-----
 .../jaxrs/json/basic/JsonMapObjectReaderWriterTest.java   |  6 ++++--
 2 files changed, 9 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/cxf/blob/6613e466/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java
----------------------------------------------------------------------
diff --git a/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java b/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java
index bc106e2..89d502d 100644
--- a/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java
+++ b/rt/rs/extensions/json-basic/src/main/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java
@@ -190,7 +190,7 @@ public class JsonMapObjectReaderWriter {
                 values.put(name, internalFromJsonAsList(name, newJson));
                 i = closingIndex + 1;
             } else {
-                int commaIndex = getCommaIndex(json, sepIndex + j);
+                int commaIndex = getCommaIndex(json, sepIndex + j, sepIndex + j);
                 Object value = readPrimitiveValue(name, json, sepIndex + j, commaIndex);
                 values.put(name, value);
                 i = commaIndex + 1;
@@ -211,7 +211,7 @@ public class JsonMapObjectReaderWriter {
                 values.add(nextMap.map);
                 i = closingIndex + 1;
             } else {
-                int commaIndex = getCommaIndex(json, i);
+                int commaIndex = getCommaIndex(json, i, i);
                 Object value = readPrimitiveValue(name, json, i, commaIndex);
                 values.add(value);
                 i = commaIndex;
@@ -239,14 +239,14 @@ public class JsonMapObjectReaderWriter {
         return value;
     }
 
-    protected static int getCommaIndex(String json, int from) {
+    protected static int getCommaIndex(String json, int start, int from) {
         int commaIndex = json.indexOf(",", from);
         if (commaIndex == -1) {
             commaIndex = json.length();
-        } else if (json.charAt(commaIndex - 1) != '\"' && json.charAt(from) == '\"') {
+        } else if (json.charAt(commaIndex - 1) != '\"' && json.charAt(start) == '\"') {
             String value = json.substring(0, commaIndex).trim();
             if (value.lastIndexOf("\"") != value.length() - 1) {
-                commaIndex = getCommaIndex(json, commaIndex + 1);
+                commaIndex = getCommaIndex(json, start, commaIndex + 1);
             }
         }
         return commaIndex;

http://git-wip-us.apache.org/repos/asf/cxf/blob/6613e466/rt/rs/extensions/json-basic/src/test/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriterTest.java
----------------------------------------------------------------------
diff --git a/rt/rs/extensions/json-basic/src/test/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriterTest.java b/rt/rs/extensions/json-basic/src/test/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriterTest.java
index f56bab2..1500354 100644
--- a/rt/rs/extensions/json-basic/src/test/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriterTest.java
+++ b/rt/rs/extensions/json-basic/src/test/java/org/apache/cxf/jaxrs/json/basic/JsonMapObjectReaderWriterTest.java
@@ -59,11 +59,13 @@ public class JsonMapObjectReaderWriterTest extends Assert {
     }
     @Test
     public void testReadMapWithValueCommas() throws Exception {
-        String json = "{\"a\":\"aValue1,aValue2\",\"b\":\"bValue1\"\r\n,\"c\":[\"cValue1, cValue2\"]}";
+        String json = "{\"a\":\"aValue1,aValue2\",\"b\":\"bValue1\"\r\n,\"c\":[\"cValue1, cValue2\"],"
+            + "\"d\":\"dValue1,dValue2,dValue3,dValue4\"}";
         Map<String, Object> map = new JsonMapObjectReaderWriter().fromJson(json);
-        assertEquals(3, map.size());
+        assertEquals(4, map.size());
         assertEquals("aValue1,aValue2", map.get("a"));
         assertEquals("bValue1", map.get("b"));
         assertEquals(Collections.singletonList("cValue1, cValue2"), map.get("c"));
+        assertEquals("dValue1,dValue2,dValue3,dValue4", map.get("d"));
     }
 }