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:56:03 UTC
cxf git commit: [CXF-7287] Correct decoding of values containing
commas
Repository: cxf
Updated Branches:
refs/heads/3.1.x-fixes e51e27dd7 -> 55c72f225
[CXF-7287] Correct decoding of values containing commas
Project: http://git-wip-us.apache.org/repos/asf/cxf/repo
Commit: http://git-wip-us.apache.org/repos/asf/cxf/commit/55c72f22
Tree: http://git-wip-us.apache.org/repos/asf/cxf/tree/55c72f22
Diff: http://git-wip-us.apache.org/repos/asf/cxf/diff/55c72f22
Branch: refs/heads/3.1.x-fixes
Commit: 55c72f2257e9afaacfcd9de8fe0635ea0de6d786
Parents: e51e27d
Author: Sergey Beryozkin <sb...@gmail.com>
Authored: Mon Mar 20 14:12:06 2017 +0000
Committer: Sergey Beryozkin <sb...@gmail.com>
Committed: Mon Mar 20 14:55:47 2017 +0000
----------------------------------------------------------------------
.../cxf/jaxrs/json/basic/JsonMapObjectReaderWriter.java | 5 +++++
.../cxf/jaxrs/json/basic/JsonMapObjectReaderWriterTest.java | 9 +++++++++
2 files changed, 14 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cxf/blob/55c72f22/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 abf6eef..4a1c3ef 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
@@ -243,6 +243,11 @@ public class JsonMapObjectReaderWriter {
int commaIndex = json.indexOf(",", from);
if (commaIndex == -1) {
commaIndex = json.length();
+ } else if (json.charAt(commaIndex - 1) != '\"' && json.charAt(from) == '\"') {
+ String value = json.substring(0, commaIndex).trim();
+ if (value.lastIndexOf("\"") != value.length() - 1) {
+ commaIndex = getCommaIndex(json, commaIndex + 1);
+ }
}
return commaIndex;
}
http://git-wip-us.apache.org/repos/asf/cxf/blob/55c72f22/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 54c63ae..d57e616 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
@@ -57,4 +57,13 @@ public class JsonMapObjectReaderWriterTest extends Assert {
assertEquals(Collections.singletonList("cValue"), map.get("c"));
assertNull(map.get("f"));
}
+ @Test
+ public void testReadMapWithValueCommas() throws Exception {
+ String json = "{\"a\":\"aValue1,aValue2\",\"b\":\"bValue1\"\r\n,\"c\":[\"cValue1, cValue2\"]}";
+ Map<String, Object> map = new JsonMapObjectReaderWriter().fromJson(json);
+ assertEquals(3, map.size());
+ assertEquals("aValue1,aValue2", map.get("a"));
+ assertEquals("bValue1", map.get("b"));
+ assertEquals(Collections.singletonList("cValue1, cValue2"), map.get("c"));
+ }
}