LOG4J2-1293 ObjectMessage, SimpleMessage and ThreadDumpMessage implement 
StringBuilderFormattable


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

Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: d353e3f9c517f058d6f59907484faea5f761234f
Parents: 74ee5ac
Author: rpopma <[email protected]>
Authored: Mon Feb 22 15:40:01 2016 +0900
Committer: rpopma <[email protected]>
Committed: Mon Feb 22 15:40:01 2016 +0900

----------------------------------------------------------------------
 .../logging/log4j/message/ObjectMessage.java    | 21 +++++++++++++++-----
 .../logging/log4j/message/SimpleMessage.java    |  9 ++++++++-
 .../log4j/message/ThreadDumpMessage.java        | 13 +++++++++---
 3 files changed, 34 insertions(+), 9 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/d353e3f9/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java
index ad3dba8..6f18463 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ObjectMessage.java
@@ -21,10 +21,12 @@ import java.io.ObjectInputStream;
 import java.io.ObjectOutputStream;
 import java.io.Serializable;
 
+import org.apache.logging.log4j.util.StringBuilderFormattable;
+
 /**
  * Handles messages that contain an Object.
  */
-public class ObjectMessage implements Message {
+public class ObjectMessage implements Message, StringBuilderFormattable {
 
     private static final long serialVersionUID = -5903272448334166185L;
 
@@ -33,7 +35,7 @@ public class ObjectMessage implements Message {
 
     /**
      * Creates the ObjectMessage.
-     * 
+     *
      * @param obj The Object to format.
      */
     public ObjectMessage(final Object obj) {
@@ -42,7 +44,7 @@ public class ObjectMessage implements Message {
 
     /**
      * Returns the formatted object message.
-     * 
+     *
      * @return the formatted object message.
      */
     @Override
@@ -54,9 +56,18 @@ public class ObjectMessage implements Message {
         return objectString;
     }
 
+    @Override
+    public void formatTo(final StringBuilder buffer) {
+        if (obj instanceof StringBuilderFormattable) {
+            ((StringBuilderFormattable) obj).formatTo(buffer);
+        } else {
+            buffer.append(obj);
+        }
+    }
+
     /**
      * Returns the object formatted using its toString method.
-     * 
+     *
      * @return the String representation of the object.
      */
     @Override
@@ -66,7 +77,7 @@ public class ObjectMessage implements Message {
 
     /**
      * Returns the object as if it were a parameter.
-     * 
+     *
      * @return The object.
      */
     @Override

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/d353e3f9/log4j-api/src/main/java/org/apache/logging/log4j/message/SimpleMessage.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/SimpleMessage.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/SimpleMessage.java
index de3b769..d5c8b88 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/SimpleMessage.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/SimpleMessage.java
@@ -16,10 +16,12 @@
  */
 package org.apache.logging.log4j.message;
 
+import org.apache.logging.log4j.util.StringBuilderFormattable;
+
 /**
  * The simplest possible implementation of Message. It just returns the String 
given as the constructor argument.
  */
-public class SimpleMessage implements Message {
+public class SimpleMessage implements Message, StringBuilderFormattable {
     private static final long serialVersionUID = -8398002534962715992L;
 
     private final String message;
@@ -48,6 +50,11 @@ public class SimpleMessage implements Message {
         return message;
     }
 
+    @Override
+    public void formatTo(final StringBuilder buffer) {
+        buffer.append(message);
+    }
+
     /**
      * Returns the message.
      * @return the message.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/d353e3f9/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 b95a1c1..67f0d5f 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,12 +26,13 @@ import java.lang.reflect.Method;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.logging.log4j.util.StringBuilderFormattable;
 import org.apache.logging.log4j.util.Strings;
 
 /**
  * Captures information about all running Threads.
  */
-public class ThreadDumpMessage implements Message {
+public class ThreadDumpMessage implements Message, StringBuilderFormattable {
 
     private static final long serialVersionUID = -1103400781608841088L;
 
@@ -83,7 +84,14 @@ public class ThreadDumpMessage implements Message {
         if (formattedMessage != null) {
             return formattedMessage;
         }
-        final StringBuilder sb = new StringBuilder(title);
+        final StringBuilder sb = new StringBuilder(255);
+        formatTo(sb);
+        return sb.toString();
+    }
+
+    @Override
+    public void formatTo(final StringBuilder sb) {
+        sb.append(title);
         if (title.length() > 0) {
             sb.append('\n');
         }
@@ -93,7 +101,6 @@ public class ThreadDumpMessage implements Message {
             info.printStack(sb, entry.getValue());
             sb.append('\n');
         }
-        return sb.toString();
     }
 
     /**

Reply via email to