Repository: commons-lang
Updated Branches:
  refs/heads/master 362dd935f -> e7d16c276


LANG-1395 - JsonToStringStyle does not escape double quote in a string
value

Project: http://git-wip-us.apache.org/repos/asf/commons-lang/repo
Commit: http://git-wip-us.apache.org/repos/asf/commons-lang/commit/e7d16c27
Tree: http://git-wip-us.apache.org/repos/asf/commons-lang/tree/e7d16c27
Diff: http://git-wip-us.apache.org/repos/asf/commons-lang/diff/e7d16c27

Branch: refs/heads/master
Commit: e7d16c27629722a93a9d36a0b5e0a3a793850544
Parents: 362dd93
Author: Sebb <s...@apache.org>
Authored: Wed May 9 18:28:19 2018 +0100
Committer: Sebb <s...@apache.org>
Committed: Wed May 9 18:28:19 2018 +0100

----------------------------------------------------------------------
 src/changes/changes.xml                                     | 1 +
 .../org/apache/commons/lang3/builder/ToStringStyle.java     | 4 +++-
 .../apache/commons/lang3/builder/JsonToStringStyleTest.java | 9 +++++++++
 3 files changed, 13 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/commons-lang/blob/e7d16c27/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 69d194f..d83bf15 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -46,6 +46,7 @@ The <action> type attribute can be add,update,fix,remove.
   <body>
 
   <release version="3.8" date="2018-MM-DD" description="New features and bug 
fixes. Requires Java 7, supports Java 8, 9, 10.">
+    <action issue="LANG-1395" type="fix" dev="sebb" due=to="Jim 
Gan">JsonToStringStyle does not escape double quote in a string value</action>
     <action issue="LANG-1384" type="fix" dev="erans" due-to="Ian Young">New 
Java version ("11") must be handled</action>
     <action issue="LANG-1364" type="fix" dev="pschumacher" due-to="Zheng 
Xie">ExceptionUtils#getRootCause(Throwable t) should return t if no lower level 
cause exists</action>
     <action issue="LANG-1060" type="fix" dev="pschumacher" due-to="Piotr 
Kosmala">NumberUtils.isNumber assumes number starting with Zero</action>

http://git-wip-us.apache.org/repos/asf/commons-lang/blob/e7d16c27/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java
----------------------------------------------------------------------
diff --git a/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java 
b/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java
index 969812d..097332f 100644
--- a/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java
+++ b/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java
@@ -24,6 +24,7 @@ import java.util.WeakHashMap;
 
 import org.apache.commons.lang3.ClassUtils;
 import org.apache.commons.lang3.ObjectUtils;
+import org.apache.commons.lang3.StringEscapeUtils;
 import org.apache.commons.lang3.StringUtils;
 
 /**
@@ -62,6 +63,7 @@ import org.apache.commons.lang3.StringUtils;
  *
  * @since 1.0
  */
+@SuppressWarnings("deprecation") // StringEscapeUtils
 public abstract class ToStringStyle implements Serializable {
 
     /**
@@ -2606,7 +2608,7 @@ public abstract class ToStringStyle implements 
Serializable {
          * @param value the value to append.
          */
         private void appendValueAsString(final StringBuffer buffer, final 
String value) {
-            buffer.append('"').append(value).append('"');
+            
buffer.append('"').append(StringEscapeUtils.escapeJson(value)).append('"');
         }
 
         @Override

http://git-wip-us.apache.org/repos/asf/commons-lang/blob/e7d16c27/src/test/java/org/apache/commons/lang3/builder/JsonToStringStyleTest.java
----------------------------------------------------------------------
diff --git 
a/src/test/java/org/apache/commons/lang3/builder/JsonToStringStyleTest.java 
b/src/test/java/org/apache/commons/lang3/builder/JsonToStringStyleTest.java
index d6bbc64..82467cb 100644
--- a/src/test/java/org/apache/commons/lang3/builder/JsonToStringStyleTest.java
+++ b/src/test/java/org/apache/commons/lang3/builder/JsonToStringStyleTest.java
@@ -378,6 +378,15 @@ public class JsonToStringStyleTest {
                         .toString());
     }
 
+    @Test
+    public void testLANG1395() {
+        assertEquals("{\"name\":\"value\"}",new 
ToStringBuilder(base).append("name","value").toString());
+        assertEquals("{\"name\":\"\"}",new 
ToStringBuilder(base).append("name","").toString());
+        assertEquals("{\"name\":\"\\\"\"}",new 
ToStringBuilder(base).append("name",'"').toString());
+        assertEquals("{\"name\":\"\\\\\"}",new 
ToStringBuilder(base).append("name",'\\').toString());
+        assertEquals("{\"name\":\"Let's \\\"quote\\\" this\"}",new 
ToStringBuilder(base).append("name","Let's \"quote\" this").toString());
+    }
+
     /**
      * An object with nested object structures used to test {@link 
ToStringStyle.JsonToStringStyle}.
      *

Reply via email to