You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2015/01/12 09:53:12 UTC

[15/18] logging-log4j2 git commit: replace StringBuilder based API with Buffer-based API (providing separate TextBuffer and BinaryBuffer implementations where appropriate)

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/08386d0e/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverterTest.java
index 9edc98a..f2d2c76 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ExtendedThrowablePatternConverterTest.java
@@ -18,6 +18,7 @@ package org.apache.logging.log4j.core.pattern;
 
 import java.io.PrintWriter;
 import java.io.StringWriter;
+import java.nio.charset.Charset;
 
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.core.LogEvent;
@@ -35,34 +36,47 @@ public class ExtendedThrowablePatternConverterTest {
 
     @Test
     public void testFull() {
-        final ExtendedThrowablePatternConverter converter = ExtendedThrowablePatternConverter.newInstance(null);
+        final ExtendedThrowablePatternConverter converter = ExtendedThrowablePatternConverter.newInstance(null,
+                FormattingInfo.getDefault());
         final Throwable cause = new NullPointerException("null pointer");
         final Throwable parent = new IllegalArgumentException("IllegalArgument", cause);
         final LogEvent event = new Log4jLogEvent("testLogger", null, this.getClass().getName(), Level.DEBUG,
-            new SimpleMessage("test exception"), parent);
-        final StringBuilder sb = new StringBuilder();
-        converter.format(event, sb);
+                new SimpleMessage("test exception"), parent);
         final StringWriter sw = new StringWriter();
         final PrintWriter pw = new PrintWriter(sw);
         parent.printStackTrace(pw);
+        final String expected = sw.toString().replaceAll("\r", Strings.EMPTY);
+
+        final TextBuffer sb = new TextBuffer();
+        converter.format(event, sb);
         String result = sb.toString();
         result = result.replaceAll(" ~?\\[.*\\]", Strings.EMPTY);
-        final String expected = sw.toString().replaceAll("\r", Strings.EMPTY);
+        assertEquals(expected, result);
+        
+        final BinaryBuffer bin = new BinaryBuffer(Charset.defaultCharset());
+        converter.format(event, bin);
+        result = bin.toString();
+        result = result.replaceAll(" ~?\\[.*\\]", Strings.EMPTY);
         assertEquals(expected, result);
     }
 
     @Test
     public void testFiltering() {
         final String packages = "filters(org.junit, org.apache.maven, sun.reflect, java.lang.reflect)";
-        final String[] options = {packages};
-        final ExtendedThrowablePatternConverter converter = ExtendedThrowablePatternConverter.newInstance(options);
+        final String[] options = { packages };
+        final ExtendedThrowablePatternConverter converter = ExtendedThrowablePatternConverter.newInstance(options,
+                FormattingInfo.getDefault());
         final Throwable cause = new NullPointerException("null pointer");
         final Throwable parent = new IllegalArgumentException("IllegalArgument", cause);
         final LogEvent event = new Log4jLogEvent("testLogger", null, this.getClass().getName(), Level.DEBUG,
-            new SimpleMessage("test exception"), parent);
-        final StringBuilder sb = new StringBuilder();
+                new SimpleMessage("test exception"), parent);
+        final TextBuffer sb = new TextBuffer();
         converter.format(event, sb);
         final String result = sb.toString();
         assertTrue("No suppressed lines", result.contains(" suppressed "));
+        
+        final BinaryBuffer bin = new BinaryBuffer(Charset.defaultCharset());
+        converter.format(event, bin);
+        assertTrue("No suppressed lines", bin.toString().contains(" suppressed "));
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/08386d0e/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/FormattingInfoTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/FormattingInfoTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/FormattingInfoTest.java
new file mode 100644
index 0000000..945d503
--- /dev/null
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/FormattingInfoTest.java
@@ -0,0 +1,142 @@
+/*
+ * 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.core.pattern;
+
+import java.nio.ByteBuffer;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Tests the FormattingInfo class.
+ */
+public class FormattingInfoTest {
+
+    @Test
+    public void testFormattingInfoValidConstructorParams() {
+        int[][] valid = new int[][] { //
+        //
+                new int[] { 0, 10 }, //
+                new int[] { 0, Integer.MAX_VALUE }, //
+                new int[] { 10, 10 }, // min=max
+                new int[] { 10, 11 }, //
+        };
+        for (int i = 0; i < valid.length; i++) {
+            new FormattingInfo(true, valid[i][0], valid[i][1]);
+        }
+        for (int i = 0; i < valid.length; i++) {
+            new FormattingInfo(false, valid[i][0], valid[i][1]);
+        }
+    }
+
+    @Test
+    public void testFormattingInfoInvalidConstructorParams() {
+        int[][] invalid = new int[][] { //
+        //
+                new int[] { -1, 10 }, // negative min
+                new int[] { 10, -1 }, // negative max
+                new int[] { -1, -1 }, // negative max
+                new int[] { Integer.MIN_VALUE, Integer.MIN_VALUE }, // negative max
+                // new int[] { 11, 10 }, // min > max
+        };
+        for (int i = 0; i < invalid.length; i++) {
+            try {
+                new FormattingInfo(true, invalid[i][0], invalid[i][1]);
+            } catch (IllegalArgumentException ok) {
+                // constructor validation worked as expected
+                continue;
+            }
+            fail("Should have failed at index " + i);
+        }
+        for (int i = 0; i < invalid.length; i++) {
+            try {
+                new FormattingInfo(false, invalid[i][0], invalid[i][1]);
+            } catch (IllegalArgumentException ok) {
+                // constructor validation worked as expected
+                continue;
+            }
+            fail("Should have failed at index " + i);
+        }
+    }
+
+    @Test
+    public void testDefaultValues() {
+        assertFalse(FormattingInfo.getDefault().isLeftAligned());
+        assertEquals("min", 0, FormattingInfo.getDefault().getMinLength());
+        assertEquals("max", Integer.MAX_VALUE, FormattingInfo.getDefault().getMaxLength());
+    }
+
+    @Test
+    public void testGetDefaultIsSingleton() {
+        assertSame(FormattingInfo.getDefault(), FormattingInfo.getDefault());
+    }
+
+    @Test
+    public void testIsLeftAlignedReturnsConstructorValue() {
+        assertFalse(new FormattingInfo(false, 0, 1).isLeftAligned());
+        assertTrue(new FormattingInfo(true, 0, 1).isLeftAligned());
+    }
+
+    @Test
+    public void testGetMinLengthReturnsConstructorValue() {
+        assertEquals(0, new FormattingInfo(false, 0, 1).getMinLength());
+        assertEquals(11, new FormattingInfo(false, 11, 12).getMinLength());
+    }
+
+    @Test
+    public void testGetMaxLengthReturnsConstructorValue() {
+        assertEquals(1, new FormattingInfo(false, 0, 1).getMaxLength());
+        assertEquals(12, new FormattingInfo(false, 11, 12).getMaxLength());
+    }
+
+    @Test
+    public void testFormatIntStringBuilder() {
+        assertText(2, "12XYZ", true, 7, 12, "12XYZ    ");
+        assertText(2, "12XYZ", false, 7, 12, "12    XYZ");
+        assertText(2, "12XYZABC", true, 0, 4, "12ZABC");
+        assertText(2, "12XYZABC", false, 0, 4, "12ZABC");
+        assertText(2, "12XYZABC", false, 0, Integer.MAX_VALUE, "12XYZABC");
+    }
+
+    private void assertText(int offset, String input, boolean leftAlign, int min, int max, String expected) {
+        StringBuilder sb = new StringBuilder(input);
+        FormattingInfo info = new FormattingInfo(leftAlign, min, max);
+        info.format(offset, sb);
+        assertEquals(info.toString(), expected, sb.toString());
+    }
+
+    @Test
+    public void testFormatIntByteBuffer() {
+        assertBinary(2, "12XYZ", true, 7, 12, "12XYZ    ");
+        assertBinary(2, "12XYZ", false, 7, 12, "12    XYZ");
+        assertBinary(2, "12XYZABC", true, 0, 4, "12ZABC");
+        assertBinary(2, "12XYZABC", false, 0, 4, "12ZABC");
+        assertBinary(2, "12XYZABC", false, 0, Integer.MAX_VALUE, "12XYZABC");
+    }
+
+    private void assertBinary(int offset, String input, boolean leftAlign, int min, int max, String expected) {
+        ByteBuffer buff = ByteBuffer.allocate(512);
+        buff.put(input.getBytes());
+        FormattingInfo info = new FormattingInfo(leftAlign, min, max);
+        info.format(offset, buff);
+        assertEquals(expected.length(), buff.position()); // positioned at end of buffer
+        String actual = new String(buff.array(), 0, buff.position());
+        assertEquals(info.toString(), expected, actual);
+    }
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/08386d0e/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LevelPatternConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LevelPatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LevelPatternConverterTest.java
index 4a0e365..488926d 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LevelPatternConverterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/LevelPatternConverterTest.java
@@ -33,12 +33,12 @@ public class LevelPatternConverterTest {
     private void testLevelLength(final int length, final String debug, final String warn) {
         final Message msg = new SimpleMessage("Hello");
         LogEvent event = new Log4jLogEvent("MyLogger", null, null, Level.DEBUG, msg, null);
-        final StringBuilder sb = new StringBuilder();
-        LevelPatternConverter converter = LevelPatternConverter.newInstance(null);
+        final TextBuffer sb = new TextBuffer();
+        LevelPatternConverter converter = LevelPatternConverter.newInstance(null, FormattingInfo.getDefault());
         converter.format(event, sb);
         assertEquals(Level.DEBUG.toString(), sb.toString());
         final String[] opts = new String[] { "length=" + length };
-        converter = LevelPatternConverter.newInstance(opts);
+        converter = LevelPatternConverter.newInstance(opts, FormattingInfo.getDefault());
         sb.setLength(0);
         converter.format(event, sb);
         assertEquals(debug, sb.toString());
@@ -72,12 +72,12 @@ public class LevelPatternConverterTest {
     public void testLevelLowerCase() {
         final Message msg = new SimpleMessage("Hello");
         LogEvent event = new Log4jLogEvent("MyLogger", null, null, Level.DEBUG, msg, null);
-        final StringBuilder sb = new StringBuilder();
-        LevelPatternConverter converter = LevelPatternConverter.newInstance(null);
+        final TextBuffer sb = new TextBuffer();
+        LevelPatternConverter converter = LevelPatternConverter.newInstance(null, FormattingInfo.getDefault());
         converter.format(event, sb);
         assertEquals(Level.DEBUG.toString(), sb.toString());
         final String[] opts = new String[] { "lowerCase=true" };
-        converter = LevelPatternConverter.newInstance(opts);
+        converter = LevelPatternConverter.newInstance(opts, FormattingInfo.getDefault());
         sb.setLength(0);
         converter.format(event, sb);
         assertEquals("debug", sb.toString());
@@ -91,12 +91,12 @@ public class LevelPatternConverterTest {
     public void testLevelMap() {
         final Message msg = new SimpleMessage("Hello");
         LogEvent event = new Log4jLogEvent("MyLogger", null, null, Level.DEBUG, msg, null);
-        final StringBuilder sb = new StringBuilder();
-        LevelPatternConverter converter = LevelPatternConverter.newInstance(null);
+        final TextBuffer sb = new TextBuffer();
+        LevelPatternConverter converter = LevelPatternConverter.newInstance(null, FormattingInfo.getDefault());
         converter.format(event, sb);
         assertEquals(Level.DEBUG.toString(), sb.toString());
         final String[] opts = new String[] { "WARN=Warning, DEBUG=Debug, ERROR=Error, TRACE=Trace, INFO=Info" };
-        converter = LevelPatternConverter.newInstance(opts);
+        converter = LevelPatternConverter.newInstance(opts, FormattingInfo.getDefault());
         sb.setLength(0);
         converter.format(event, sb);
         assertEquals("Debug", sb.toString());
@@ -110,12 +110,12 @@ public class LevelPatternConverterTest {
     public void testLevelMapWithLength() {
         final Message msg = new SimpleMessage("Hello");
         LogEvent event = new Log4jLogEvent("MyLogger", null, null, Level.DEBUG, msg, null);
-        final StringBuilder sb = new StringBuilder();
-        LevelPatternConverter converter = LevelPatternConverter.newInstance(null);
+        final TextBuffer sb = new TextBuffer();
+        LevelPatternConverter converter = LevelPatternConverter.newInstance(null, FormattingInfo.getDefault());
         converter.format(event, sb);
         assertEquals(Level.DEBUG.toString(), sb.toString());
         final String[] opts = new String[] { "WARN=Warning, length=2" };
-        converter = LevelPatternConverter.newInstance(opts);
+        converter = LevelPatternConverter.newInstance(opts, FormattingInfo.getDefault());
         sb.setLength(0);
         converter.format(event, sb);
         assertEquals("DE", sb.toString());
@@ -129,12 +129,12 @@ public class LevelPatternConverterTest {
     public void testLevelMapWithLengthAndLowerCase() {
         final Message msg = new SimpleMessage("Hello");
         LogEvent event = new Log4jLogEvent("MyLogger", null, null, Level.DEBUG, msg, null);
-        final StringBuilder sb = new StringBuilder();
-        LevelPatternConverter converter = LevelPatternConverter.newInstance(null);
+        final TextBuffer sb = new TextBuffer();
+        LevelPatternConverter converter = LevelPatternConverter.newInstance(null, FormattingInfo.getDefault());
         converter.format(event, sb);
         assertEquals(Level.DEBUG.toString(), sb.toString());
         final String[] opts = new String[] { "WARN=Warning, length=2, lowerCase=true" };
-        converter = LevelPatternConverter.newInstance(opts);
+        converter = LevelPatternConverter.newInstance(opts, FormattingInfo.getDefault());
         sb.setLength(0);
         converter.format(event, sb);
         assertEquals("de", sb.toString());

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/08386d0e/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MapPatternConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MapPatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MapPatternConverterTest.java
index 7848026..6b0401d 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MapPatternConverterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MapPatternConverterTest.java
@@ -36,9 +36,9 @@ public class MapPatternConverterTest {
         msg.put("subject", "I");
         msg.put("verb", "love");
         msg.put("object", "Log4j");
-        final MapPatternConverter converter = MapPatternConverter.newInstance(null);
+        final MapPatternConverter converter = MapPatternConverter.newInstance(null, FormattingInfo.getDefault());
         final LogEvent event = new Log4jLogEvent("MyLogger", null, null, Level.DEBUG, msg, null);
-        final StringBuilder sb = new StringBuilder();
+        final TextBuffer sb = new TextBuffer();;
         converter.format(event, sb);
         final String str = sb.toString();
         String expected = "subject=I";
@@ -56,9 +56,9 @@ public class MapPatternConverterTest {
         msg.put("subject", "I");
         msg.put("verb", "love");
         msg.put("object", "Log4j");
-        final MapPatternConverter converter = MapPatternConverter.newInstance(new String[] {"object"});
+        final MapPatternConverter converter = MapPatternConverter.newInstance(new String[] {"object"}, FormattingInfo.getDefault());
         final LogEvent event = new Log4jLogEvent("MyLogger", null, null, Level.DEBUG, msg, null);
-        final StringBuilder sb = new StringBuilder();
+        final TextBuffer sb = new TextBuffer();;
         converter.format(event, sb);
         final String str = sb.toString();
         final String expected = "Log4j";

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/08386d0e/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerPatternConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerPatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerPatternConverterTest.java
index 83621d0..09c37d9 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerPatternConverterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MarkerPatternConverterTest.java
@@ -39,8 +39,8 @@ public class MarkerPatternConverterTest {
         final Marker eventMarker = MarkerManager.getMarker("EVENT");
         final Marker auditMarker = MarkerManager.getMarker("AUDIT").setParents(eventMarker);
         final LogEvent event = new Log4jLogEvent("MyLogger", auditMarker, null, Level.DEBUG, msg, null);
-        final StringBuilder sb = new StringBuilder();
-        final MarkerPatternConverter converter = MarkerPatternConverter.newInstance(null);
+        final TextBuffer sb = new TextBuffer();
+        final MarkerPatternConverter converter = MarkerPatternConverter.newInstance(null, FormattingInfo.getDefault());
         converter.format(event, sb);
         assertEquals(auditMarker.toString(), sb.toString());
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/08386d0e/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessagePatternConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessagePatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessagePatternConverterTest.java
index 7e3f0ff..53fb865 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessagePatternConverterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/MessagePatternConverterTest.java
@@ -34,19 +34,19 @@ public class MessagePatternConverterTest {
 
     @Test
     public void testPattern() throws Exception {
-        final MessagePatternConverter converter = MessagePatternConverter.newInstance(null, null);
+        final MessagePatternConverter converter = MessagePatternConverter.newInstance(null, null, FormattingInfo.getDefault());
         Message msg = new SimpleMessage("Hello!");
         LogEvent event = new Log4jLogEvent("MyLogger", null, null, Level.DEBUG, msg, null);
-        StringBuilder sb = new StringBuilder();
+        TextBuffer sb = new TextBuffer();
         converter.format(event, sb);
         assertEquals("Unexpected result", "Hello!", sb.toString());
         event = new Log4jLogEvent("MyLogger", null, null, Level.DEBUG, null, null);
-        sb = new StringBuilder();
+        sb = new TextBuffer();
         converter.format(event, sb);
         assertEquals("Incorrect length: " + sb.length(), 0, sb.length());
         msg = new SimpleMessage(null);
         event = new Log4jLogEvent("MyLogger", null, null, Level.DEBUG, msg, null);
-        sb = new StringBuilder();
+        sb = new TextBuffer();
         converter.format(event, sb);
         assertEquals("Incorrect length: " + sb.length(), 4, sb.length());
 
@@ -55,19 +55,19 @@ public class MessagePatternConverterTest {
     @Test
     public void testPatternWithConfiguration() throws Exception {
         final Configuration config = new DefaultConfiguration();
-        final MessagePatternConverter converter = MessagePatternConverter.newInstance(config, null);
+        final MessagePatternConverter converter = MessagePatternConverter.newInstance(config, null, FormattingInfo.getDefault());
         Message msg = new SimpleMessage("Hello!");
         LogEvent event = new Log4jLogEvent("MyLogger", null, null, Level.DEBUG, msg, null);
-        StringBuilder sb = new StringBuilder();
+        TextBuffer sb = new TextBuffer();
         converter.format(event, sb);
         assertEquals("Unexpected result", "Hello!", sb.toString());
         event = new Log4jLogEvent("MyLogger", null, null, Level.DEBUG, null, null);
-        sb = new StringBuilder();
+        sb = new TextBuffer();
         converter.format(event, sb);
         assertEquals("Incorrect length: " + sb.length(), 0, sb.length());
         msg = new SimpleMessage(null);
         event = new Log4jLogEvent("MyLogger", null, null, Level.DEBUG, msg, null);
-        sb = new StringBuilder();
+        sb = new TextBuffer();
         converter.format(event, sb);
         assertEquals("Incorrect length: " + sb.length(), 4, sb.length());
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/08386d0e/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
index 075bb19..fcff4e5 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest.java
@@ -97,7 +97,7 @@ public class PatternParserTest {
         final LogEvent event = new Log4jLogEvent("org.apache.logging.log4j.PatternParserTest", MarkerManager.getMarker("TEST"),
             Logger.class.getName(), Level.INFO, new SimpleMessage("Hello, world"), null,
             mdc, null, "Thread1", elements[0], System.currentTimeMillis());
-        final StringBuilder buf = new StringBuilder();
+        final TextBuffer buf = new TextBuffer();
         for (final PatternFormatter formatter : formatters) {
             formatter.format(event, buf);
         }
@@ -120,7 +120,7 @@ public class PatternParserTest {
         final LogEvent event = new Log4jLogEvent("a.b.c", null,
             Logger.class.getName(), Level.INFO, new SimpleMessage("Hello, world"), null,
             null, null, "Thread1", elements[0], timestamp);
-        final StringBuilder buf = new StringBuilder();
+        final TextBuffer buf = new TextBuffer();
         for (final PatternFormatter formatter : formatters) {
             formatter.format(event, buf);
         }
@@ -149,7 +149,7 @@ public class PatternParserTest {
         final LogEvent event = new Log4jLogEvent("org.apache.logging.log4j.PatternParserTest",
                 MarkerManager.getMarker("TEST"), Logger.class.getName(), level, new SimpleMessage("Hello, world"),
                 null, null, null, "Thread1", /*stackTraceElement[0]*/null, System.currentTimeMillis());
-        final StringBuilder buf = new StringBuilder();
+        final TextBuffer buf = new TextBuffer();
         for (final PatternFormatter formatter : formatters) {
             formatter.format(event, buf);
         }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/08386d0e/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest2.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest2.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest2.java
index 44e3e47..9cbbb9b 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest2.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/PatternParserTest2.java
@@ -33,7 +33,7 @@ public class PatternParserTest2 {
     @Test
     public void testParseConvertBackslashes() {
         final boolean convert = true;
-        final StringBuilder buf = new StringBuilder();
+        final TextBuffer buf = new TextBuffer();
         final String pattern = "%d{HH-mm-ss} \\t ...";
 
         final Calendar cal = Calendar.getInstance();
@@ -48,7 +48,7 @@ public class PatternParserTest2 {
     @Test
     public void testParseDontConvertBackslashes() {
         final boolean convert = false;
-        final StringBuilder buf = new StringBuilder();
+        final TextBuffer buf = new TextBuffer();
         final String pattern = "%d{HH-mm-ss} \\t---";
 
         final Calendar cal = Calendar.getInstance();
@@ -60,7 +60,7 @@ public class PatternParserTest2 {
         assertEquals("13-24-59 \\t---", buf.toString());
     }
 
-    private void parse(final String pattern, final boolean convert, final StringBuilder buf, final Date date, final int i) {
+    private void parse(final String pattern, final boolean convert, final Buffer buf, final Date date, final int i) {
         final PatternParser parser0 = new PatternParser(null, "Converter", null);
         final List<PatternConverter> converters = new ArrayList<PatternConverter>();
         final List<FormattingInfo> fields = new ArrayList<FormattingInfo>();
@@ -79,14 +79,14 @@ public class PatternParserTest2 {
      * @param objects objects to be evaluated in formatting, may not be null.
      */
     protected final void formatFileName(final ArrayPatternConverter[] patternConverters,
-            final FormattingInfo[] patternFields, final StringBuilder buf, final Object... objects) {
+            final FormattingInfo[] patternFields, final Buffer buf, final Object... objects) {
         for (int i = 0; i < patternConverters.length; i++) {
-            final int fieldStart = buf.length();
+//            final int fieldStart = buf.length();
             patternConverters[i].format(buf, objects);
 
-            if (patternFields[i] != null) {
-                patternFields[i].format(fieldStart, buf);
-            }
+//            if (patternFields[i] != null) {
+//                patternFields[i].format(fieldStart, buf);
+//            }
         }
     }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/08386d0e/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverterTest.java
index 17f6fd4..7ca46d5 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RegexReplacementConverterTest.java
@@ -38,13 +38,13 @@ public class RegexReplacementConverterTest {
         ThreadContext.put("MyKey", "Apache");
         final LogEvent event = new Log4jLogEvent(RegexReplacementConverterTest.class.getName(), null, null,
             Level.DEBUG, new SimpleMessage("This is a test"), null);
-        final StringBuilder sb = new StringBuilder();
+        final TextBuffer sb = new TextBuffer();
         final LoggerContext ctx = (LoggerContext) LogManager.getContext();
         final String[] options = new String[] {
             "%logger %msg%n", "\\.", "/"
         };
         final RegexReplacementConverter converter = RegexReplacementConverter.newInstance(ctx.getConfiguration(),
-            options);
+            options, FormattingInfo.getDefault());
         converter.format(event, sb);
         assertEquals("org/apache/logging/log4j/core/pattern/RegexReplacementConverterTest This is a test" +
             Constants.LINE_SEPARATOR, sb.toString());

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/08386d0e/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverterTest.java
index 1b14296..477ddc8 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/RootThrowablePatternConverterTest.java
@@ -31,12 +31,12 @@ public class RootThrowablePatternConverterTest {
 
     @Test
     public void testFull1() {
-        final RootThrowablePatternConverter converter = RootThrowablePatternConverter.newInstance(null);
+        final RootThrowablePatternConverter converter = RootThrowablePatternConverter.newInstance(null, FormattingInfo.getDefault());
         final Throwable cause = new NullPointerException("null pointer");
         final Throwable parent = new IllegalArgumentException("IllegalArgument", cause);
         final LogEvent event = new Log4jLogEvent("testLogger", null, this.getClass().getName(), Level.DEBUG,
                 new SimpleMessage("test exception"), parent);
-        final StringBuilder sb = new StringBuilder();
+        final TextBuffer sb = new TextBuffer();
         converter.format(event, sb);
         final String result = sb.toString();
         // System.out.print(result);
@@ -51,7 +51,7 @@ public class RootThrowablePatternConverterTest {
      */
     @Test
     public void testFull2() {
-        final RootThrowablePatternConverter converter = RootThrowablePatternConverter.newInstance(null);
+        final RootThrowablePatternConverter converter = RootThrowablePatternConverter.newInstance(null, FormattingInfo.getDefault());
         Throwable parent;
         try {
             try {
@@ -64,7 +64,7 @@ public class RootThrowablePatternConverterTest {
         }
         final LogEvent event = new Log4jLogEvent("testLogger", null, this.getClass().getName(), Level.DEBUG,
                 new SimpleMessage("test exception"), parent);
-        final StringBuilder sb = new StringBuilder();
+        final TextBuffer sb = new TextBuffer();
         converter.format(event, sb);
         final String result = sb.toString();
         // System.out.print(result);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/08386d0e/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
index 8b9fce6..9c705f2 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/pattern/ThrowablePatternConverterTest.java
@@ -42,13 +42,14 @@ public class ThrowablePatternConverterTest {
     @Test(expected = Exception.class)
     public void testBadShortOption() {
         final String[] options = { "short.UNKNOWN" };
-        ThrowablePatternConverter.newInstance(options);
+        ThrowablePatternConverter.newInstance(options, FormattingInfo.getDefault());
     }
 
     @Test
     public void testFull() {
         final String[] options = { "full" };
-        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(options);
+        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(options,
+                FormattingInfo.getDefault());
         Throwable parent;
         try {
             try {
@@ -61,7 +62,7 @@ public class ThrowablePatternConverterTest {
         }
         final LogEvent event = new Log4jLogEvent("testLogger", null, this.getClass().getName(), Level.DEBUG,
                 new SimpleMessage("test exception"), parent);
-        final StringBuilder sb = new StringBuilder();
+        final TextBuffer sb = new TextBuffer();
         converter.format(event, sb);
         final String result = sb.toString();
         // System.out.print(result);
@@ -73,12 +74,13 @@ public class ThrowablePatternConverterTest {
     public void testShortClassName() {
         final String packageName = "org.apache.logging.log4j.core.pattern.";
         final String[] options = { "short.className" };
-        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(options);
+        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(options,
+                FormattingInfo.getDefault());
         final Throwable cause = new NullPointerException("null pointer");
         final Throwable parent = new IllegalArgumentException("IllegalArgument", cause);
         final LogEvent event = new Log4jLogEvent("testLogger", null, this.getClass().getName(), Level.DEBUG,
                 new SimpleMessage("test exception"), parent);
-        final StringBuilder sb = new StringBuilder();
+        final TextBuffer sb = new TextBuffer();
         converter.format(event, sb);
         final String result = sb.toString();
         assertEquals("The class names should be same", packageName + "ThrowablePatternConverterTest", result);
@@ -87,12 +89,13 @@ public class ThrowablePatternConverterTest {
     @Test
     public void testShortFileName() {
         final String[] options = { "short.fileName" };
-        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(options);
+        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(options,
+                FormattingInfo.getDefault());
         final Throwable cause = new NullPointerException("null pointer");
         final Throwable parent = new IllegalArgumentException("IllegalArgument", cause);
         final LogEvent event = new Log4jLogEvent("testLogger", null, this.getClass().getName(), Level.DEBUG,
                 new SimpleMessage("test exception"), parent);
-        final StringBuilder sb = new StringBuilder();
+        final TextBuffer sb = new TextBuffer();
         converter.format(event, sb);
         final String result = sb.toString();
         assertEquals("The file names should be same", "ThrowablePatternConverterTest.java", result);
@@ -101,7 +104,8 @@ public class ThrowablePatternConverterTest {
     @Test
     public void testShortLineNumber() {
         final String[] options = { "short.lineNumber" };
-        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(options);
+        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(options,
+                FormattingInfo.getDefault());
         final Throwable cause = new NullPointerException("null pointer");
         final Throwable parent = new IllegalArgumentException("IllegalArgument", cause);
         final StackTraceElement top = parent.getStackTrace()[0];
@@ -109,7 +113,7 @@ public class ThrowablePatternConverterTest {
 
         final LogEvent event = new Log4jLogEvent("testLogger", null, this.getClass().getName(), Level.DEBUG,
                 new SimpleMessage("test exception"), parent);
-        final StringBuilder sb = new StringBuilder();
+        final TextBuffer sb = new TextBuffer();
         converter.format(event, sb);
         final String result = sb.toString();
         assertTrue("The line numbers should be same", expectedLineNumber == Integer.parseInt(result));
@@ -118,11 +122,12 @@ public class ThrowablePatternConverterTest {
     @Test
     public void testShortLocalizedMessage() {
         final String[] options = { "short.localizedMessage" };
-        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(options);
+        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(options,
+                FormattingInfo.getDefault());
         final Throwable parent = new LocalizedException();
         final LogEvent event = new Log4jLogEvent("testLogger", null, this.getClass().getName(), Level.DEBUG,
                 new SimpleMessage("test exception"), parent);
-        final StringBuilder sb = new StringBuilder();
+        final TextBuffer sb = new TextBuffer();
         converter.format(event, sb);
         final String result = sb.toString();
         assertEquals("The messages should be same", "I am localized.", result);
@@ -131,12 +136,13 @@ public class ThrowablePatternConverterTest {
     @Test
     public void testShortMessage() {
         final String[] options = { "short.message" };
-        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(options);
+        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(options,
+                FormattingInfo.getDefault());
         final Throwable cause = new NullPointerException("null pointer");
         final Throwable parent = new IllegalArgumentException("IllegalArgument", cause);
         final LogEvent event = new Log4jLogEvent("testLogger", null, this.getClass().getName(), Level.DEBUG,
                 new SimpleMessage("test exception"), parent);
-        final StringBuilder sb = new StringBuilder();
+        final TextBuffer sb = new TextBuffer();
         converter.format(event, sb);
         final String result = sb.toString();
         assertEquals("The messages should be same", "IllegalArgument", result);
@@ -145,12 +151,13 @@ public class ThrowablePatternConverterTest {
     @Test
     public void testShortMethodName() {
         final String[] options = { "short.methodName" };
-        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(options);
+        final ThrowablePatternConverter converter = ThrowablePatternConverter.newInstance(options,
+                FormattingInfo.getDefault());
         final Throwable cause = new NullPointerException("null pointer");
         final Throwable parent = new IllegalArgumentException("IllegalArgument", cause);
         final LogEvent event = new Log4jLogEvent("testLogger", null, this.getClass().getName(), Level.DEBUG,
                 new SimpleMessage("test exception"), parent);
-        final StringBuilder sb = new StringBuilder();
+        final TextBuffer sb = new TextBuffer();
         converter.format(event, sb);
         final String result = sb.toString();
         assertEquals("The method names should be same", "testShortMethodName", result);