Repository: logging-log4j2
Updated Branches:
  refs/heads/master 6401ee459 -> 2ed5d3789


Refactor common StringBuilder code.

Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/2ed5d378
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/2ed5d378
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/2ed5d378

Branch: refs/heads/master
Commit: 2ed5d378976453f84af55b94d057bc0590c186c7
Parents: 6401ee4
Author: Gary Gregory <[email protected]>
Authored: Thu Mar 5 13:44:03 2015 -0800
Committer: Gary Gregory <[email protected]>
Committed: Thu Mar 5 13:44:03 2015 -0800

----------------------------------------------------------------------
 .../java/org/apache/log4j/CategoryTest.java     |  9 ++-
 .../log4j/message/BasicThreadInformation.java   |  7 +-
 .../message/ExtendedThreadInformation.java      |  4 +-
 .../logging/log4j/message/MapMessage.java       |  9 +--
 .../log4j/message/ThreadDumpMessage.java        |  3 +-
 .../org/apache/logging/log4j/util/Chars.java    |  7 +-
 .../logging/log4j/util/StringBuilders.java      | 67 ++++++++++++++++++++
 .../org/apache/logging/log4j/util/Strings.java  | 12 ++++
 .../core/config/plugins/util/PluginBuilder.java |  6 +-
 .../visitors/PluginAttributeVisitor.java        |  3 +-
 .../visitors/PluginBuilderAttributeVisitor.java |  3 +-
 .../plugins/visitors/PluginValueVisitor.java    |  3 +-
 .../log4j/core/layout/Rfc5424Layout.java        |  9 ++-
 .../server/JsonInputStreamLogEventBridge.java   |  3 +-
 .../log4j/core/util/OptionConverter.java        |  5 +-
 .../log4j/core/layout/JsonLayoutTest.java       |  9 ++-
 .../log4j/core/layout/PatternLayoutTest.java    |  9 ++-
 17 files changed, 137 insertions(+), 31 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-1.2-api/src/test/java/org/apache/log4j/CategoryTest.java
----------------------------------------------------------------------
diff --git a/log4j-1.2-api/src/test/java/org/apache/log4j/CategoryTest.java 
b/log4j-1.2-api/src/test/java/org/apache/log4j/CategoryTest.java
index 404a9db..3d9318a 100644
--- a/log4j-1.2-api/src/test/java/org/apache/log4j/CategoryTest.java
+++ b/log4j-1.2-api/src/test/java/org/apache/log4j/CategoryTest.java
@@ -17,6 +17,10 @@
 
 package org.apache.log4j;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
 import java.lang.reflect.Method;
 import java.util.List;
 
@@ -29,13 +33,12 @@ import org.apache.logging.log4j.core.util.Constants;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.ObjectMessage;
 import org.apache.logging.log4j.test.appender.ListAppender;
+import org.apache.logging.log4j.util.Strings;
 import org.junit.AfterClass;
 import org.junit.Before;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
-
 
 /**
  * Tests of Category.
@@ -179,7 +182,7 @@ public class CategoryTest {
         appender.clear();
         final String threadName = Thread.currentThread().getName();
         final String expected = "ERROR o.a.l.CategoryTest [" + threadName + "] 
Test Message" + Constants.LINE_SEPARATOR;
-        assertTrue("Incorrect message \"" + msg + '"' + " expected \"" + 
expected + '"', msg.endsWith(expected));
+        assertTrue("Incorrect message " + Strings.dquote(msg) + " expected " + 
Strings.dquote(expected), msg.endsWith(expected));
     }
 
     /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-api/src/main/java/org/apache/logging/log4j/message/BasicThreadInformation.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/BasicThreadInformation.java
 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/BasicThreadInformation.java
index f36fda3..d0ec092 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/BasicThreadInformation.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/BasicThreadInformation.java
@@ -16,6 +16,9 @@
  */
 package org.apache.logging.log4j.message;
 
+import org.apache.logging.log4j.util.Chars;
+import org.apache.logging.log4j.util.StringBuilders;
+
 /**
  * Generates information about the current Thread. Used internally by 
ThreadDumpMessage.
  */
@@ -81,13 +84,13 @@ class BasicThreadInformation implements ThreadInformation {
      */
     @Override
     public void printThreadInfo(final StringBuilder sb) {
-        sb.append('"').append(name).append("\" ");
+        StringBuilders.appendDqValue(sb, name).append(Chars.SPACE);
         if (isDaemon) {
             sb.append("daemon ");
         }
         sb.append("prio=").append(priority).append(" 
tid=").append(id).append(' ');
         if (threadGroupName != null) {
-            sb.append("group=\"").append(threadGroupName).append('"');
+            StringBuilders.appendKeyDqValue(sb, "group", threadGroupName);
         }
         sb.append('\n');
         sb.append("\tThread state: ").append(state.name()).append('\n');

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-api/src/main/java/org/apache/logging/log4j/message/ExtendedThreadInformation.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ExtendedThreadInformation.java
 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ExtendedThreadInformation.java
index c7b30db..7d54acb 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ExtendedThreadInformation.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ExtendedThreadInformation.java
@@ -20,6 +20,8 @@ import java.lang.management.LockInfo;
 import java.lang.management.MonitorInfo;
 import java.lang.management.ThreadInfo;
 
+import org.apache.logging.log4j.util.StringBuilders;
+
 /**
  * Provides information on locks and monitors in the thread dump. This class 
requires Java 1.6 to compile and
  * run.
@@ -35,7 +37,7 @@ class ExtendedThreadInformation implements ThreadInformation {
 
     @Override
     public void printThreadInfo(final StringBuilder sb) {
-        sb.append('"').append(threadInfo.getThreadName()).append('"');
+        StringBuilders.appendDqValue(sb, threadInfo.getThreadName());
         sb.append(" Id=").append(threadInfo.getThreadId()).append(' ');
         formatState(sb, threadInfo);
         if (threadInfo.isSuspended()) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java
index 4cbef35..5985783 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java
@@ -22,6 +22,7 @@ import java.util.SortedMap;
 import java.util.TreeMap;
 
 import org.apache.logging.log4j.util.EnglishEnums;
+import org.apache.logging.log4j.util.StringBuilders;
 import org.apache.logging.log4j.util.Strings;
 
 /**
@@ -248,7 +249,7 @@ public class MapMessage implements MultiformatMessage {
                 sb.append(' ');
             }
             first = false;
-            
sb.append(entry.getKey()).append("=\"").append(entry.getValue()).append('"');
+            StringBuilders.appendKeyDqValue(sb, entry);
         }
     }
 
@@ -260,8 +261,8 @@ public class MapMessage implements MultiformatMessage {
                 sb.append(", ");
             }
             first = false;
-            sb.append('"').append(entry.getKey()).append("\":");
-            sb.append('"').append(entry.getValue()).append('"');
+            StringBuilders.appendDqValue(sb, entry.getKey()).append(':');
+            StringBuilders.appendDqValue(sb, entry.getValue());
         }
         sb.append('}');
     }
@@ -275,7 +276,7 @@ public class MapMessage implements MultiformatMessage {
                 sb.append(", ");
             }
             first = false;
-            
sb.append(entry.getKey()).append("=\"").append(entry.getValue()).append('"');
+            StringBuilders.appendKeyDqValue(sb, entry);
         }
         sb.append('}');
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java
 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java
index 792fcd1..df05709 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ThreadDumpMessage.java
@@ -26,6 +26,7 @@ import java.lang.reflect.Method;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.logging.log4j.util.StringBuilders;
 import org.apache.logging.log4j.util.Strings;
 
 /**
@@ -73,7 +74,7 @@ public class ThreadDumpMessage implements Message {
     public String toString() {
         final StringBuilder sb = new StringBuilder("ThreadDumpMessage[");
         if (this.title.length() > 0) {
-            sb.append("Title=\"").append(this.title).append('"');
+            StringBuilders.appendKeyDqValue(sb, "Title", this.title);
         }
         sb.append(']');
         return sb.toString();

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-api/src/main/java/org/apache/logging/log4j/util/Chars.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/Chars.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/Chars.java
index 4f52fe4..b2efb1c 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/Chars.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/Chars.java
@@ -21,9 +21,12 @@ package org.apache.logging.log4j.util;
  */
 public class Chars {
 
+    public static final char CR = '\r';
+    public static final char DQUOTE = '\"';
+    public static final char EQ = '=';
+    public static final char LF = '\n';
+    public static final char QUOTE = '\'';
     public static final char SPACE = ' ';
     public static final char TAB = '\t';
-    public static final char QUOTE = '\'';
-    public static final char DQUOTE = '\"';
 
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-api/src/main/java/org/apache/logging/log4j/util/StringBuilders.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/StringBuilders.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/StringBuilders.java
new file mode 100644
index 0000000..f21f385
--- /dev/null
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/StringBuilders.java
@@ -0,0 +1,67 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.util;
+
+import java.util.Map.Entry;
+
+/**
+ * <em>Consider this class private.</em>
+ */
+public class StringBuilders {
+
+    /**
+     * Appends in the following format: double quoted value.
+     * 
+     * @param sb
+     *        a string builder
+     * @param value
+     *        a value
+     * @return {@code "value"}
+     */
+    public static StringBuilder appendDqValue(StringBuilder sb, Object value) {
+        return sb.append(Chars.DQUOTE).append(value).append(Chars.DQUOTE);
+    }
+
+    /**
+     * Appends in the following format: key=double quoted value.
+     * 
+     * @param sb
+     *        a string builder
+     * @param entry
+     *        a map entry
+     * @return {@code key="value"}
+     */
+    public static StringBuilder appendKeyDqValue(StringBuilder sb, 
Entry<String, String> entry) {
+        return appendKeyDqValue(sb, entry.getKey(), entry.getValue());
+    }
+
+    /**
+     * Appends in the following format: key=double quoted value.
+     * 
+     * @param sb
+     *        a string builder
+     * @param key
+     *        a key
+     * @param value
+     *        a value
+     * @return {@code key="value"}
+     */
+    public static StringBuilder appendKeyDqValue(StringBuilder sb, String key, 
Object value) {
+        return 
sb.append(key).append(Chars.EQ).append(Chars.DQUOTE).append(value).append(Chars.DQUOTE);
+    }
+
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-api/src/main/java/org/apache/logging/log4j/util/Strings.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/Strings.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/Strings.java
index 640df36..8ff6ba5 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/Strings.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/Strings.java
@@ -143,9 +143,21 @@ public final class Strings {
      * Returns a quoted string.
      * 
      * @param str
+     *        a String
      * @return {@code 'str'}
      */
     public static String quote(final String str) {
         return Chars.QUOTE + str + Chars.QUOTE;
     }
+
+    /**
+     * Returns a double quoted string.
+     * 
+     * @param str
+     *        a String
+     * @return {@code "str"}
+     */
+    public static String dquote(final String str) {
+        return Chars.DQUOTE + str + Chars.DQUOTE;
+    }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
index 43b34fe..5730c45 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/util/PluginBuilder.java
@@ -44,6 +44,8 @@ import org.apache.logging.log4j.core.util.Builder;
 import org.apache.logging.log4j.core.util.ReflectionUtil;
 import org.apache.logging.log4j.core.util.TypeUtil;
 import org.apache.logging.log4j.status.StatusLogger;
+import org.apache.logging.log4j.util.Chars;
+import org.apache.logging.log4j.util.StringBuilders;
 
 /**
  * Builder class to instantiate and configure a Plugin object using a 
PluginFactory method or PluginBuilderFactory
@@ -302,9 +304,7 @@ public class PluginBuilder implements Builder<Object> {
                 } else {
                     sb.append(", ");
                 }
-                sb.append('"');
-                sb.append(key);
-                sb.append('"');
+                StringBuilders.appendDqValue(sb, key);
 
             }
             LOGGER.error(sb.toString());

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginAttributeVisitor.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginAttributeVisitor.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginAttributeVisitor.java
index 0c2d5ec..63e5cb5 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginAttributeVisitor.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginAttributeVisitor.java
@@ -24,6 +24,7 @@ import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.Node;
 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
 import org.apache.logging.log4j.core.util.NameUtil;
+import org.apache.logging.log4j.util.StringBuilders;
 
 /**
  * PluginVisitor implementation for {@link PluginAttribute}.
@@ -43,7 +44,7 @@ public class PluginAttributeVisitor extends 
AbstractPluginVisitor<PluginAttribut
         final Object defaultValue = findDefaultValue(event);
         final Object value = convert(replacedValue, defaultValue);
         final Object debugValue = this.annotation.sensitive() ? 
NameUtil.md5(value + this.getClass().getName()) : value;
-        log.append(name).append("=\"").append(debugValue).append('"');
+        StringBuilders.appendKeyDqValue(log, "name", debugValue);
         return value;
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginBuilderAttributeVisitor.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginBuilderAttributeVisitor.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginBuilderAttributeVisitor.java
index d0bcff2..0856e46 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginBuilderAttributeVisitor.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginBuilderAttributeVisitor.java
@@ -24,6 +24,7 @@ import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.Node;
 import org.apache.logging.log4j.core.config.plugins.PluginBuilderAttribute;
 import org.apache.logging.log4j.core.util.NameUtil;
+import org.apache.logging.log4j.util.StringBuilders;
 
 /**
  * PluginVisitor for PluginBuilderAttribute. If {@code null} is returned for 
the
@@ -48,7 +49,7 @@ public class PluginBuilderAttributeVisitor extends 
AbstractPluginVisitor<PluginB
         final String replacedValue = this.substitutor.replace(event, rawValue);
         final Object value = convert(replacedValue, null);
         final Object debugValue = this.annotation.sensitive() ? 
NameUtil.md5(value + this.getClass().getName()) : value;
-        log.append(name).append("=\"").append(debugValue).append('"');
+        StringBuilders.appendKeyDqValue(log, "name", debugValue);
         return value;
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginValueVisitor.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginValueVisitor.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginValueVisitor.java
index 4173abe..bf27566 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginValueVisitor.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/config/plugins/visitors/PluginValueVisitor.java
@@ -21,6 +21,7 @@ import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.Configuration;
 import org.apache.logging.log4j.core.config.Node;
 import org.apache.logging.log4j.core.config.plugins.PluginValue;
+import org.apache.logging.log4j.util.StringBuilders;
 
 /**
  * PluginVisitor implementation for {@link PluginValue}.
@@ -37,7 +38,7 @@ public class PluginValueVisitor extends 
AbstractPluginVisitor<PluginValue> {
         final String rawValue = node.getValue() != null ? node.getValue() :
             removeAttributeValue(node.getAttributes(), "value");
         final String value = this.substitutor.replace(event, rawValue);
-        log.append(name).append("=\"").append(value).append('"');
+        StringBuilders.appendKeyDqValue(log, name, value);
         return value;
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
index e1c9399..18ea7ae 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/layout/Rfc5424Layout.java
@@ -53,6 +53,8 @@ import org.apache.logging.log4j.core.util.Patterns;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.StructuredDataId;
 import org.apache.logging.log4j.message.StructuredDataMessage;
+import org.apache.logging.log4j.util.Chars;
+import org.apache.logging.log4j.util.StringBuilders;
 import org.apache.logging.log4j.util.Strings;
 
 
@@ -532,7 +534,7 @@ public final class Rfc5424Layout extends 
AbstractStringLayout {
     }
 
     private void appendMap(final String prefix, final Map<String, String> map, 
final StringBuilder sb,
-                           final ListChecker checker) {
+            final ListChecker checker) {
         final SortedMap<String, String> sorted = new TreeMap<String, 
String>(map);
         for (final Map.Entry<String, String> entry : sorted.entrySet()) {
             if (checker.check(entry.getKey()) && entry.getValue() != null) {
@@ -540,8 +542,9 @@ public final class Rfc5424Layout extends 
AbstractStringLayout {
                 if (prefix != null) {
                     sb.append(prefix);
                 }
-                sb.append(escapeNewlines(escapeSDParams(entry.getKey()), 
escapeNewLine)).append("=\"")
-                    .append(escapeNewlines(escapeSDParams(entry.getValue()), 
escapeNewLine)).append('"');
+                final String safeKey = 
escapeNewlines(escapeSDParams(entry.getKey()), escapeNewLine);
+                final String safeValue = 
escapeNewlines(escapeSDParams(entry.getValue()), escapeNewLine);
+                StringBuilders.appendKeyDqValue(sb, safeKey, safeValue);
             }
         }
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/JsonInputStreamLogEventBridge.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/JsonInputStreamLogEventBridge.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/JsonInputStreamLogEventBridge.java
index dbfa755..1b81644 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/JsonInputStreamLogEventBridge.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/net/server/JsonInputStreamLogEventBridge.java
@@ -21,6 +21,7 @@ import java.nio.charset.Charset;
 
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.jackson.Log4jJsonObjectMapper;
+import org.apache.logging.log4j.util.Chars;
 
 /**
  * Reads and logs JSON {@link LogEvent}s from an {@link InputStream}..
@@ -31,7 +32,7 @@ public class JsonInputStreamLogEventBridge extends 
InputStreamLogEventBridge {
     private static final char EVENT_END_MARKER = '}';
     private static final char EVENT_START_MARKER = '{';
     private static final char JSON_ESC = '\\';
-    private static final char JSON_STR_DELIM = '"';
+    private static final char JSON_STR_DELIM = Chars.DQUOTE;
 
     public JsonInputStreamLogEventBridge() {
         this(1024, Charset.defaultCharset());

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-core/src/main/java/org/apache/logging/log4j/core/util/OptionConverter.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/OptionConverter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/OptionConverter.java
index 6203b70..aad31be 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/util/OptionConverter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/util/OptionConverter.java
@@ -22,6 +22,7 @@ import java.util.Properties;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.util.PropertiesUtil;
+import org.apache.logging.log4j.util.Strings;
 
 /**
  * A convenience class to convert property values to specific types.
@@ -300,8 +301,8 @@ public final class OptionConverter {
             sbuf.append(val.substring(i, j));
             k = val.indexOf(DELIM_STOP, j);
             if (k == -1) {
-                throw new IllegalArgumentException('"' + val +
-                    "\" has no closing brace. Opening brace at position " + j
+                throw new IllegalArgumentException(Strings.dquote(val)
+                    + " has no closing brace. Opening brace at position " + j
                     + '.');
             }
             j += DELIM_START_LEN;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/JsonLayoutTest.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/JsonLayoutTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/JsonLayoutTest.java
index b043660..ecc083b 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/JsonLayoutTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/JsonLayoutTest.java
@@ -16,6 +16,10 @@
  */
 package org.apache.logging.log4j.core.layout;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNull;
+import static org.junit.Assert.assertTrue;
+
 import java.util.List;
 import java.util.Map;
 
@@ -34,13 +38,12 @@ import org.apache.logging.log4j.core.util.Throwables;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.apache.logging.log4j.spi.AbstractLogger;
 import org.apache.logging.log4j.test.appender.ListAppender;
+import org.apache.logging.log4j.util.Strings;
 import org.junit.AfterClass;
 import org.junit.Assert;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
-
 /**
  * Tests the JsonLayout class.
  */
@@ -69,7 +72,7 @@ public class JsonLayoutTest {
 
     private void checkAt(final String expected, final int lineIndex, final 
List<String> list) {
         final String trimedLine = list.get(lineIndex).trim();
-        assertTrue("Incorrect line index " + lineIndex + ": \"" + trimedLine + 
'"', trimedLine.equals(expected));
+        assertTrue("Incorrect line index " + lineIndex + ": " + 
Strings.dquote(trimedLine), trimedLine.equals(expected));
     }
 
     private void checkContains(final String expected, final List<String> list) 
{

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/2ed5d378/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java
index fe50790..0486d1e 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/layout/PatternLayoutTest.java
@@ -16,6 +16,10 @@
  */
 package org.apache.logging.log4j.core.layout;
 
+import static org.junit.Assert.assertEquals;
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
+
 import java.nio.charset.Charset;
 
 import org.apache.logging.log4j.Level;
@@ -29,12 +33,11 @@ import 
org.apache.logging.log4j.core.config.ConfigurationFactory;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.core.util.Charsets;
 import org.apache.logging.log4j.message.SimpleMessage;
+import org.apache.logging.log4j.util.Strings;
 import org.junit.After;
 import org.junit.BeforeClass;
 import org.junit.Test;
 
-import static org.junit.Assert.*;
-
 /**
  *
  */
@@ -170,7 +173,7 @@ public class PatternLayoutTest {
         ThreadContext.put("footer", "Hello world Footer");
         final byte[] header = layout.getHeader();
         assertNotNull("No header", header);
-        assertTrue("expected \"Hello world Header\", actual \"" + new 
String(header) + '"',
+        assertTrue("expected \"Hello world Header\", actual " + 
Strings.dquote(new String(header)),
                 new String(header).equals(new String("Hello world Header")));
     }
 

Reply via email to