From fc5fbc70f76e2e028435d145ea8d91dd10fe5daa Mon Sep 17 00:00:00 2001 From: Jack <792626757@qq.com> Date: Mon, 20 Apr 2015 16:22:28 +0800 Subject: [PATCH 1/2] add testChar and testDate Cases into JsonToStringStyleTest --- .../lang3/builder/JsonToStringStyleTest.java | 34 +++++++++++++++++++ 1 file changed, 34 insertions(+) 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 530e6793f35..74901125409 100644 --- a/src/test/java/org/apache/commons/lang3/builder/JsonToStringStyleTest.java +++ b/src/test/java/org/apache/commons/lang3/builder/JsonToStringStyleTest.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.HashMap; +import java.util.Date; import org.apache.commons.lang3.SystemUtils; import org.apache.commons.lang3.builder.ToStringStyleTest.Person; @@ -91,6 +92,39 @@ public void testAppendSuper() { .appendSuper("{\"a\":\"hello\"}").append("b", "world").toString()); } + @Test + public void testChar() { + + try { + new ToStringBuilder(base).append('A').toString(); + fail("Should have generated UnsupportedOperationException"); + } catch (UnsupportedOperationException e) { + } + + assertEquals("{\"a\":\"A\"}", new ToStringBuilder(base).append("a", 'A') + .toString()); + assertEquals("{\"a\":\"A\",\"b\":\"B\"}", new ToStringBuilder(base).append("a", 'A').append("b", 'B') + .toString()); + } + + @Test + public void testDate() { + + final Date now = new Date(); + final Date after_now = new Date(System.currentTimeMillis() + 1); + + try { + new ToStringBuilder(base).append(now).toString(); + fail("Should have generated UnsupportedOperationException"); + } catch (UnsupportedOperationException e) { + } + + assertEquals("{\"now\":\"" + now.toString() +"\"}", new ToStringBuilder(base).append("now", now) + .toString()); + assertEquals("{\"now\":\"" + now.toString() +"\",\"after\":\"" + after_now.toString() + "\"}", new ToStringBuilder(base).append("now", now).append("after", after_now) + .toString()); + } + @Test public void testObject() { From ed0fea128ad83d6c07367eea7bf2e24116fa5723 Mon Sep 17 00:00:00 2001 From: Jack <792626757@qq.com> Date: Mon, 20 Apr 2015 16:34:59 +0800 Subject: [PATCH 2/2] fix the JsonToStringStyle:except number types and boolean type , all other types in java (char, String, Date etc.) should be 'appendAsString' --- .../apache/commons/lang3/builder/ToStringStyle.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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 658556bfa09..fb0e960b48e 100644 --- a/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java +++ b/src/main/java/org/apache/commons/lang3/builder/ToStringStyle.java @@ -2559,6 +2559,11 @@ public void append(StringBuffer buffer, String fieldName, Object value, super.append(buffer, fieldName, value, fullDetail); } + @Override + protected void appendDetail(StringBuffer buffer, String fieldName, char value) { + appendValueAsString(buffer, String.valueOf(value)); + } + @Override protected void appendDetail(StringBuffer buffer, String fieldName, Object value) { @@ -2568,13 +2573,13 @@ protected void appendDetail(StringBuffer buffer, String fieldName, Object value) return; } - if (value.getClass() == String.class) { + if (value instanceof Number || value.getClass() == Boolean.class) { - appendValueAsString(buffer, (String)value); + buffer.append(value); return; } - buffer.append(value); + appendValueAsString(buffer, value.toString()); } /**