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 2016/03/28 14:07:03 UTC
[1/2] logging-log4j2 git commit: LOG4J2-1271 bugfix: fast path logic
should correctly handle edge cases where number of placeholders is more or
less than specified parameter values
Repository: logging-log4j2
Updated Branches:
refs/heads/LOG4J2-1278-gc-free-logger febd70e93 -> e6300b025
LOG4J2-1271 bugfix: fast path logic should correctly handle edge cases where number of placeholders is more or less than specified parameter values
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/7ed09909
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/7ed09909
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/7ed09909
Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: 7ed099099189d556656b92e7e32a619728201e60
Parents: a218285
Author: rpopma <rp...@apache.org>
Authored: Mon Mar 28 21:06:30 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Mon Mar 28 21:06:30 2016 +0900
----------------------------------------------------------------------
.../logging/log4j/message/ParameterizedMessage.java | 10 +++++-----
.../log4j/message/ReusableParameterizedMessage.java | 7 +++----
.../log4j/message/ReusableParameterizedMessageTest.java | 6 +++++-
3 files changed, 13 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7ed09909/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java
index e1ef2a5..8ad42b6 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java
@@ -68,6 +68,7 @@ public class ParameterizedMessage implements Message, StringBuilderFormattable {
private String formattedMessage;
private transient Throwable throwable;
private int[] indices;
+ private int usedCount;
/**
* Creates a parameterized message.
@@ -135,8 +136,9 @@ public class ParameterizedMessage implements Message, StringBuilderFormattable {
private void init(String messagePattern) {
this.messagePattern = messagePattern;
this.indices = new int[messagePattern == null ? 0 : messagePattern.length() << 1];
- final int usedCount = ParameterFormatter.countArgumentPlaceholders2(messagePattern, indices);
+ int usedCount = ParameterFormatter.countArgumentPlaceholders2(messagePattern, indices);
initThrowable(argArray, usedCount);
+ this.usedCount = Math.min(usedCount, (argArray == null) ? 0 : argArray.length);
}
private void initThrowable(final Object[] params, final int usedParams) {
@@ -210,11 +212,9 @@ public class ParameterizedMessage implements Message, StringBuilderFormattable {
buffer.append(formattedMessage);
} else {
if (indices[0] < 0) {
- ParameterFormatter.formatMessage(buffer, messagePattern, argArray,
- argArray == null ? 0 : argArray.length);
+ ParameterFormatter.formatMessage(buffer, messagePattern, argArray, usedCount);
} else {
- ParameterFormatter.formatMessage2(buffer, messagePattern, argArray,
- argArray == null ? 0 : argArray.length, indices);
+ ParameterFormatter.formatMessage2(buffer, messagePattern, argArray, usedCount, indices);
}
}
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7ed09909/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
index bf7095c..b6a506f 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessage.java
@@ -57,9 +57,9 @@ public class ReusableParameterizedMessage implements ReusableMessage {
private void init(final String messagePattern, final int argCount, final Object[] paramArray) {
this.varargs = null;
this.messagePattern = messagePattern;
- this.argCount= argCount;
int usedCount = count(messagePattern, indices);
- initThrowable(paramArray, usedCount);
+ initThrowable(paramArray, argCount,usedCount);
+ this.argCount = Math.min(usedCount, argCount);
}
private static int count(final String messagePattern, final int[] indices) {
@@ -71,10 +71,9 @@ public class ReusableParameterizedMessage implements ReusableMessage {
}
}
- private void initThrowable(final Object[] params, final int usedParams) {
+ private void initThrowable(final Object[] params, final int argCount, final int usedParams) {
if (usedParams < argCount && this.throwable == null && params[argCount - 1] instanceof Throwable) {
this.throwable = (Throwable) params[argCount - 1];
- argCount--;
}
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/7ed09909/log4j-api/src/test/java/org/apache/logging/log4j/message/ReusableParameterizedMessageTest.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/message/ReusableParameterizedMessageTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/message/ReusableParameterizedMessageTest.java
index abd396e..0dd9260 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/message/ReusableParameterizedMessageTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/message/ReusableParameterizedMessageTest.java
@@ -30,10 +30,14 @@ public class ReusableParameterizedMessageTest {
public void testNoArgs() {
final String testMsg = "Test message {}";
ReusableParameterizedMessage msg = new ReusableParameterizedMessage();
- msg.set(testMsg, null);
+ msg.set(testMsg, (Object[]) null);
String result = msg.getFormattedMessage();
assertEquals(testMsg, result);
+ msg.set(testMsg, null);
+ result = msg.getFormattedMessage();
+ assertEquals(testMsg, result);
+
msg.set(testMsg, null, null);
result = msg.getFormattedMessage();
assertEquals("Test message null", result);
[2/2] logging-log4j2 git commit: Merge remote-tracking branch
'remotes/origin/master' into LOG4J2-1278-gc-free-logger
Posted by rp...@apache.org.
Merge remote-tracking branch 'remotes/origin/master' into LOG4J2-1278-gc-free-logger
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/e6300b02
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/e6300b02
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/e6300b02
Branch: refs/heads/LOG4J2-1278-gc-free-logger
Commit: e6300b025c20dc7d03991e3fe3f0cd583d6420d5
Parents: febd70e 7ed0990
Author: rpopma <rp...@apache.org>
Authored: Mon Mar 28 21:07:00 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Mon Mar 28 21:07:00 2016 +0900
----------------------------------------------------------------------
.../logging/log4j/message/ParameterizedMessage.java | 10 +++++-----
.../log4j/message/ReusableParameterizedMessage.java | 7 +++----
.../log4j/message/ReusableParameterizedMessageTest.java | 6 +++++-
3 files changed, 13 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/e6300b02/log4j-api/src/main/java/org/apache/logging/log4j/message/ParameterizedMessage.java
----------------------------------------------------------------------