I thought Anthony did performance tests for this and this was the fastest
way to do it.

On Sun, Jun 19, 2016 at 1:18 PM, Gary Gregory <[email protected]>
wrote:

> Wow, I do not like these cascading if elses but there is no way around it
> unless we go through many hoops. Like a map from class to... a closure,
> Java 8 or 7.
>
> Gary
> ---------- Forwarded message ----------
> From: <[email protected]>
> Date: Jun 18, 2016 8:55 PM
> Subject: logging-log4j2 git commit: LOG4J2-1437 ObjectMessage and
> ReusableObjectMessage now avoid calling toString() on auto-boxed primitive
> parameters
> To: <[email protected]>
> Cc:
>
> Repository: logging-log4j2
>> Updated Branches:
>>   refs/heads/master 6eff4fc46 -> b225685f3
>>
>>
>> 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/master
>> Commit: b225685f30b08229b29a64c91d4e29d06a1724ee
>> Parents: 6eff4fc
>> Author: rpopma <[email protected]>
>> Authored: Sun Jun 19 12:55:22 2016 +0900
>> Committer: rpopma <[email protected]>
>> 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