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/08 10:18:38 UTC
[3/3] logging-log4j2 git commit: LOG4J2-1296 Renamed
ReusableParameterizedMessageFactory to ReusableMessageFactory since it
creates all types of reusable messages
LOG4J2-1296 Renamed ReusableParameterizedMessageFactory to ReusableMessageFactory since it creates all types of reusable messages
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/337941cc
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/337941cc
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/337941cc
Branch: refs/heads/master
Commit: 337941cc748a3d9247dbb0a1ebbf1c13f45abc87
Parents: 9b435d7
Author: rpopma <rp...@apache.org>
Authored: Tue Mar 8 20:18:28 2016 +1100
Committer: rpopma <rp...@apache.org>
Committed: Tue Mar 8 20:18:28 2016 +1100
----------------------------------------------------------------------
.../log4j/message/ReusableMessageFactory.java | 123 +++++++++++++++++++
.../ReusableParameterizedMessageFactory.java | 121 ------------------
.../logging/log4j/spi/AbstractLogger.java | 6 +-
3 files changed, 126 insertions(+), 124 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/337941cc/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java
new file mode 100644
index 0000000..85f2dea
--- /dev/null
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableMessageFactory.java
@@ -0,0 +1,123 @@
+/*
+ * 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.message;
+
+import java.io.Serializable;
+
+import org.apache.logging.log4j.util.PerformanceSensitive;
+
+/**
+ * Implementation of the {@link MessageFactory} interface that avoids allocating temporary objects where possible.
+ * Message instances are cached in a ThreadLocal and reused when a new message is requested within the same thread.
+ * @see ParameterizedMessageFactory
+ * @see ReusableSimpleMessage
+ * @see ReusableObjectMessage
+ * @see ReusableParameterizedMessage
+ * @since 2.6
+ */
+@PerformanceSensitive("allocation")
+public final class ReusableMessageFactory implements MessageFactory, Serializable {
+
+ /**
+ * Instance of ReusableMessageFactory..
+ */
+ public static final ReusableMessageFactory INSTANCE = new ReusableMessageFactory();
+
+ private static final long serialVersionUID = -8970940216592525651L;
+ private static ThreadLocal<ReusableParameterizedMessage> threadLocalParameterized = new ThreadLocal<>();
+ private static ThreadLocal<ReusableSimpleMessage> threadLocalSimpleMessage = new ThreadLocal<>();
+ private static ThreadLocal<ReusableObjectMessage> threadLocalObjectMessage = new ThreadLocal<>();
+
+ /**
+ * Constructs a message factory.
+ */
+ public ReusableMessageFactory() {
+ super();
+ }
+
+ private static ReusableParameterizedMessage getParameterized() {
+ ReusableParameterizedMessage result = threadLocalParameterized.get();
+ if (result == null) {
+ result = new ReusableParameterizedMessage();
+ threadLocalParameterized.set(result);
+ }
+ return result;
+ }
+
+ private static ReusableSimpleMessage getSimple() {
+ ReusableSimpleMessage result = threadLocalSimpleMessage.get();
+ if (result == null) {
+ result = new ReusableSimpleMessage();
+ threadLocalSimpleMessage.set(result);
+ }
+ return result;
+ }
+
+ private static ReusableObjectMessage getObject() {
+ ReusableObjectMessage result = threadLocalObjectMessage.get();
+ if (result == null) {
+ result = new ReusableObjectMessage();
+ threadLocalObjectMessage.set(result);
+ }
+ return result;
+ }
+
+ /**
+ * Creates {@link ReusableParameterizedMessage} instances.
+ *
+ * @param message The message pattern.
+ * @param params The message parameters.
+ * @return The Message.
+ *
+ * @see MessageFactory#newMessage(String, Object...)
+ */
+ @Override
+ public Message newMessage(final String message, final Object... params) {
+ return getParameterized().set(message, params);
+ }
+
+ /**
+ * Creates {@link ReusableSimpleMessage} instances.
+ *
+ * @param message The message String.
+ * @return The Message.
+ *
+ * @see MessageFactory#newMessage(String)
+ */
+ @Override
+ public Message newMessage(final String message) {
+ ReusableSimpleMessage result = getSimple();
+ result.set(message);
+ return result;
+ }
+
+
+ /**
+ * Creates {@link ReusableObjectMessage} instances.
+ *
+ * @param message The message Object.
+ * @return The Message.
+ *
+ * @see MessageFactory#newMessage(Object)
+ */
+ @Override
+ public Message newMessage(final Object message) {
+ ReusableObjectMessage result = getObject();
+ result.set(message);
+ return result;
+ }
+}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/337941cc/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessageFactory.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessageFactory.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessageFactory.java
deleted file mode 100644
index bec6e10..0000000
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/ReusableParameterizedMessageFactory.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
- * 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.message;
-
-import org.apache.logging.log4j.util.PerformanceSensitive;
-
-/**
- * Enables use of <code>{}</code> parameter markers in message strings.
- * <p>
- * Reuses a ThreadLocal {@link ReusableParameterizedMessage} instance for {@link #newMessage(String, Object...)}.
- * </p>
- * <p>
- * This class is immutable.
- * </p>
- */
-@PerformanceSensitive("allocation")
-public final class ReusableParameterizedMessageFactory extends AbstractMessageFactory {
-
- /**
- * Instance of ReusableParameterizedMessageFactory.
- */
- public static final ReusableParameterizedMessageFactory INSTANCE = new ReusableParameterizedMessageFactory();
-
- private static final long serialVersionUID = -8970940216592525651L;
- private static ThreadLocal<ReusableParameterizedMessage> threadLocalMessage = new ThreadLocal<>();
- private static ThreadLocal<ReusableSimpleMessage> threadLocalSimpleMessage = new ThreadLocal<>();
- private static ThreadLocal<ReusableObjectMessage> threadLocalObjectMessage = new ThreadLocal<>();
-
- /**
- * Constructs a message factory.
- */
- public ReusableParameterizedMessageFactory() {
- super();
- }
-
- private static ReusableParameterizedMessage getParameterized() {
- ReusableParameterizedMessage result = threadLocalMessage.get();
- if (result == null) {
- result = new ReusableParameterizedMessage();
- threadLocalMessage.set(result);
- }
- return result;
- }
-
- private static ReusableSimpleMessage getSimple() {
- ReusableSimpleMessage result = threadLocalSimpleMessage.get();
- if (result == null) {
- result = new ReusableSimpleMessage();
- threadLocalSimpleMessage.set(result);
- }
- return result;
- }
-
- private static ReusableObjectMessage getObject() {
- ReusableObjectMessage result = threadLocalObjectMessage.get();
- if (result == null) {
- result = new ReusableObjectMessage();
- threadLocalObjectMessage.set(result);
- }
- return result;
- }
-
- /**
- * Creates {@link ReusableParameterizedMessage} instances.
- *
- * @param message The message pattern.
- * @param params The message parameters.
- * @return The Message.
- *
- * @see MessageFactory#newMessage(String, Object...)
- */
- @Override
- public Message newMessage(final String message, final Object... params) {
- return getParameterized().set(message, params);
- }
-
- /**
- * Creates {@link ReusableSimpleMessage} instances.
- *
- * @param message The message String.
- * @return The Message.
- *
- * @see MessageFactory#newMessage(String)
- */
- @Override
- public Message newMessage(final String message) {
- ReusableSimpleMessage result = getSimple();
- result.set(message);
- return result;
- }
-
-
- /**
- * Creates {@link ReusableObjectMessage} instances.
- *
- * @param message The message Object.
- * @return The Message.
- *
- * @see MessageFactory#newMessage(Object)
- */
- @Override
- public Message newMessage(final Object message) {
- ReusableObjectMessage result = getObject();
- result.set(message);
- return result;
- }
-}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/337941cc/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java b/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java
index a4d3b5a..c982294 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/AbstractLogger.java
@@ -27,7 +27,7 @@ import org.apache.logging.log4j.message.FlowMessageFactory;
import org.apache.logging.log4j.message.Message;
import org.apache.logging.log4j.message.MessageFactory;
import org.apache.logging.log4j.message.ParameterizedMessageFactory;
-import org.apache.logging.log4j.message.ReusableParameterizedMessageFactory;
+import org.apache.logging.log4j.message.ReusableMessageFactory;
import org.apache.logging.log4j.message.StringFormattedMessage;
import org.apache.logging.log4j.status.StatusLogger;
import org.apache.logging.log4j.util.LambdaUtil;
@@ -76,7 +76,7 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
* The default MessageFactory class.
*/
public static final Class<? extends MessageFactory> DEFAULT_MESSAGE_FACTORY_CLASS =
- createClassForProperty("log4j2.messageFactory", ReusableParameterizedMessageFactory.class,
+ createClassForProperty("log4j2.messageFactory", ReusableMessageFactory.class,
ParameterizedMessageFactory.class);
/**
@@ -181,7 +181,7 @@ public abstract class AbstractLogger implements ExtendedLogger, Serializable {
}
private static Class<? extends MessageFactory> createClassForProperty(final String property,
- final Class<ReusableParameterizedMessageFactory> reusableParameterizedMessageFactoryClass,
+ final Class<ReusableMessageFactory> reusableParameterizedMessageFactoryClass,
final Class<ParameterizedMessageFactory> parameterizedMessageFactoryClass) {
try {
final boolean IS_WEB_APP = PropertiesUtil.getProperties().getBooleanProperty(