LOG4J2-1172 made ThreadNameCachingStrategy a top-level class

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

Branch: refs/heads/LOG4J-1181
Commit: a02bce4657743350aa0aa621ba9e67c280839f70
Parents: 680eb6e
Author: rpopma <[email protected]>
Authored: Wed Nov 11 18:30:33 2015 +0900
Committer: rpopma <[email protected]>
Committed: Wed Nov 11 18:30:33 2015 +0900

----------------------------------------------------------------------
 .../core/async/ThreadNameCachingStrategy.java   | 63 ++++++++++++++++++++
 .../AsyncLoggerThreadNameStrategyTest.java      | 24 ++++----
 2 files changed, 74 insertions(+), 13 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a02bce46/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java
new file mode 100644
index 0000000..69fb55b
--- /dev/null
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/ThreadNameCachingStrategy.java
@@ -0,0 +1,63 @@
+/*
+ * 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.core.async;
+
+import org.apache.logging.log4j.status.StatusLogger;
+import org.apache.logging.log4j.util.PropertiesUtil;
+
+/**
+ * Strategy for deciding whether thread name should be cached or not.
+ */
+enum ThreadNameCachingStrategy { // LOG4J2-467
+    CACHED {
+        @Override
+        public String getThreadName() {
+            String result = THREADLOCAL_NAME.get();
+            if (result == null) {
+                result = Thread.currentThread().getName();
+                THREADLOCAL_NAME.set(result);
+            }
+            return result;
+        }
+    },
+    UNCACHED {
+        @Override
+        public String getThreadName() {
+            return Thread.currentThread().getName();
+        }
+    };
+    
+    private static final StatusLogger LOGGER = StatusLogger.getLogger();
+    private static final ThreadLocal<String> THREADLOCAL_NAME = new 
ThreadLocal<>();
+    
+    
+    abstract String getThreadName();
+
+    static ThreadNameCachingStrategy create() {
+        final String name = 
PropertiesUtil.getProperties().getStringProperty("AsyncLogger.ThreadNameStrategy",
+                CACHED.name());
+        try {
+            final ThreadNameCachingStrategy result = 
ThreadNameCachingStrategy.valueOf(name);
+            LOGGER.debug("AsyncLogger.ThreadNameStrategy={}", result);
+            return result;
+        } catch (final Exception ex) {
+            LOGGER.debug("Using AsyncLogger.ThreadNameStrategy.CACHED: '{}' 
not valid: {}", name, ex.toString());
+            return CACHED;
+        }
+    }
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/a02bce46/log4j-core/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerThreadNameStrategyTest.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerThreadNameStrategyTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerThreadNameStrategyTest.java
index 0cf60bf..b904871 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerThreadNameStrategyTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/AsyncLoggerThreadNameStrategyTest.java
@@ -1,7 +1,7 @@
 /*
  * 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.
+ * this work for additional rmation 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
@@ -24,46 +24,44 @@ public class AsyncLoggerThreadNameStrategyTest {
 
     @Test
     public void testDefaultThreadNameIsCached() throws Exception {
-        final Info.ThreadNameStrategy tns = Info.ThreadNameStrategy.create();
-        assertSame(Info.ThreadNameStrategy.CACHED, tns);
+        final ThreadNameCachingStrategy tns = 
ThreadNameCachingStrategy.create();
+        assertSame(ThreadNameCachingStrategy.CACHED, tns);
     }
 
     @Test
     public void testUseCachedThreadNameIfInvalidConfig() throws Exception {
         System.setProperty("AsyncLogger.ThreadNameStrategy", "\\%%InValid ");
-        final Info.ThreadNameStrategy tns = Info.ThreadNameStrategy.create();
-        assertSame(Info.ThreadNameStrategy.CACHED, tns);
+        final ThreadNameCachingStrategy tns = 
ThreadNameCachingStrategy.create();
+        assertSame(ThreadNameCachingStrategy.CACHED, tns);
     }
 
     @Test
     public void testUseUncachedThreadNameIfConfigured() throws Exception {
         System.setProperty("AsyncLogger.ThreadNameStrategy", "UNCACHED");
-        final Info.ThreadNameStrategy tns = Info.ThreadNameStrategy.create();
-        assertSame(Info.ThreadNameStrategy.UNCACHED, tns);
+        final ThreadNameCachingStrategy tns = 
ThreadNameCachingStrategy.create();
+        assertSame(ThreadNameCachingStrategy.UNCACHED, tns);
     }
 
     @Test
     public void testUncachedThreadNameStrategyReturnsCurrentThreadName() 
throws Exception {
-        final Info info = new Info(null, "original", false);
         final String name1 = "MODIFIED-THREADNAME1";
         Thread.currentThread().setName(name1);
-        assertEquals(name1, 
Info.ThreadNameStrategy.UNCACHED.getThreadName(info));
+        assertEquals(name1, 
ThreadNameCachingStrategy.UNCACHED.getThreadName());
 
         final String name2 = "OTHER-THREADNAME2";
         Thread.currentThread().setName(name2);
-        assertEquals(name2, 
Info.ThreadNameStrategy.UNCACHED.getThreadName(info));
+        assertEquals(name2, 
ThreadNameCachingStrategy.UNCACHED.getThreadName());
     }
 
     @Test
     public void testCachedThreadNameStrategyReturnsCachedThreadName() throws 
Exception {
         final String original = "Original-ThreadName";
         Thread.currentThread().setName(original);
-        final Info info = new Info(null, original, false);
-        assertEquals(original, 
Info.ThreadNameStrategy.CACHED.getThreadName(info));
+        assertEquals(original, 
ThreadNameCachingStrategy.CACHED.getThreadName());
 
         final String name2 = "OTHER-THREADNAME2";
         Thread.currentThread().setName(name2);
-        assertEquals(original, 
Info.ThreadNameStrategy.CACHED.getThreadName(info));
+        assertEquals(original, 
ThreadNameCachingStrategy.CACHED.getThreadName());
     }
 
 }

Reply via email to