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(