Return-Path: X-Original-To: archive-asf-public-internal@cust-asf2.ponee.io Delivered-To: archive-asf-public-internal@cust-asf2.ponee.io Received: from cust-asf.ponee.io (cust-asf.ponee.io [163.172.22.183]) by cust-asf2.ponee.io (Postfix) with ESMTP id 2EA3D200C4B for ; Mon, 20 Mar 2017 15:56:05 +0100 (CET) Received: by cust-asf.ponee.io (Postfix) id 2D538160B81; Mon, 20 Mar 2017 14:56:05 +0000 (UTC) Delivered-To: archive-asf-public@cust-asf.ponee.io Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by cust-asf.ponee.io (Postfix) with SMTP id 76198160B76 for ; Mon, 20 Mar 2017 15:56:04 +0100 (CET) Received: (qmail 62939 invoked by uid 500); 20 Mar 2017 14:56:03 -0000 Mailing-List: contact commits-help@cxf.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: dev@cxf.apache.org Delivered-To: mailing list commits@cxf.apache.org Received: (qmail 62930 invoked by uid 99); 20 Mar 2017 14:56:03 -0000 Received: from git1-us-west.apache.org (HELO git1-us-west.apache.org) (140.211.11.23) by apache.org (qpsmtpd/0.29) with ESMTP; Mon, 20 Mar 2017 14:56:03 +0000 Received: by git1-us-west.apache.org (ASF Mail Server at git1-us-west.apache.org, from userid 33) id 79BE3DFE8F; Mon, 20 Mar 2017 14:56:03 +0000 (UTC) Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit From: sergeyb@apache.org To: commits@cxf.apache.org Message-Id: X-Mailer: ASF-Git Admin Mailer Subject: cxf git commit: [CXF-7287] Correct decoding of values containing commas Date: Mon, 20 Mar 2017 14:56:03 +0000 (UTC) archived-at: Mon, 20 Mar 2017 14:56:05 -0000 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 Authored: Mon Mar 20 14:12:06 2017 +0000 Committer: Sergey Beryozkin 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 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")); + } }