LOG4J2-1437  ObjectMessage and ReusableObjectMessage now avoid calling 
toString() on auto-boxed primitive parameters


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

Branch: refs/heads/LOG4J-1181
Commit: b225685f30b08229b29a64c91d4e29d06a1724ee
Parents: 6eff4fc
Author: rpopma <rpo...@apache.org>
Authored: Sun Jun 19 12:55:22 2016 +0900
Committer: rpopma <rpo...@apache.org>
Committed: Sun Jun 19 12:55:22 2016 +0900

----------------------------------------------------------------------
 .../apache/logging/log4j/message/ObjectMessage.java   | 14 ++++++++++++++
 .../logging/log4j/message/ReusableObjectMessage.java  | 14 ++++++++++++++
 src/changes/changes.xml                               |  3 +++
 3 files changed, 31 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/b225685f/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 db8c31b..7ab9a48 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
@@ -64,6 +64,20 @@ public class ObjectMessage implements Message, 
StringBuilderFormattable {
             ((StringBuilderFormattable) obj).formatTo(buffer);
         } else if (obj instanceof CharSequence) {
             buffer.append((CharSequence) obj);
+        } else if (obj instanceof Integer) { // LOG4J2-1437 unbox auto-boxed 
primitives to avoid calling toString()
+            buffer.append(((Integer) obj).intValue());
+        } else if (obj instanceof Long) {
+            buffer.append(((Long) obj).longValue());
+        } else if (obj instanceof Double) {
+            buffer.append(((Double) obj).doubleValue());
+        } else if (obj instanceof Boolean) {
+            buffer.append(((Boolean) obj).booleanValue());
+        } else if (obj instanceof Character) {
+            buffer.append(((Character) obj).charValue());
+        } else if (obj instanceof Short) {
+            buffer.append(((Short) obj).shortValue());
+        } else if (obj instanceof Float) {
+            buffer.append(((Float) obj).floatValue());
         } else {
             buffer.append(obj);
         }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/b225685f/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableObjectMessage.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableObjectMessage.java
 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableObjectMessage.java
index 21e9f98..fb3f176 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableObjectMessage.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableObjectMessage.java
@@ -52,6 +52,20 @@ public class ReusableObjectMessage implements 
ReusableMessage {
             ((StringBuilderFormattable) obj).formatTo(buffer);
         } else if (obj instanceof CharSequence) {
             buffer.append((CharSequence) obj);
+        } else if (obj instanceof Integer) { // LOG4J2-1437 unbox auto-boxed 
primitives to avoid calling toString()
+            buffer.append(((Integer) obj).intValue());
+        } else if (obj instanceof Long) {
+            buffer.append(((Long) obj).longValue());
+        } else if (obj instanceof Double) {
+            buffer.append(((Double) obj).doubleValue());
+        } else if (obj instanceof Boolean) {
+            buffer.append(((Boolean) obj).booleanValue());
+        } else if (obj instanceof Character) {
+            buffer.append(((Character) obj).charValue());
+        } else if (obj instanceof Short) {
+            buffer.append(((Short) obj).shortValue());
+        } else if (obj instanceof Float) {
+            buffer.append(((Float) obj).floatValue());
         } else {
             buffer.append(obj);
         }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/b225685f/src/changes/changes.xml
----------------------------------------------------------------------
diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 84ff494..7f5eeaa 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -43,6 +43,9 @@
       <action issue="LOG4J2-1422" dev="rpopma" type="fix">
         Fixed issue where AsyncAppenderQueueFullPolicyTest sometimes hangs.
       </action>
+      <action issue="LOG4J2-1437" dev="rpopma" type="add">
+        (GC) ObjectMessage and ReusableObjectMessage now avoid calling 
toString() on auto-boxed primitive parameters.
+      </action>
       <action issue="LOG4J2-1415" dev="rpopma" type="add">
         (GC) ParameterFormatter now avoids calling toString() on auto-boxed 
primitive message parameters.
       </action>

Reply via email to