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/09/22 02:04:33 UTC
[6/8] logging-log4j2 git commit: LOG4J2-1010 LOG4J2-1447 cleaner
context injection code now that ThreadContextMap2 is a
MutableContextDataSupplier
LOG4J2-1010 LOG4J2-1447 cleaner context injection code now that ThreadContextMap2 is a MutableContextDataSupplier
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/04619890
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/04619890
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/04619890
Branch: refs/heads/master
Commit: 046198901839a31b77436759ec354c183e54a25a
Parents: 09eb4f4
Author: rpopma <rp...@apache.org>
Authored: Thu Sep 22 11:02:54 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Thu Sep 22 11:02:54 2016 +0900
----------------------------------------------------------------------
.../org/apache/logging/log4j/ThreadContextAccess.java | 13 +++++++++++++
.../log4j/core/impl/ContextDataInjectorFactory.java | 6 +++---
.../log4j/core/impl/ThreadContextDataInjector.java | 11 ++++-------
3 files changed, 20 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/04619890/log4j-core/src/main/java/org/apache/logging/log4j/ThreadContextAccess.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/ThreadContextAccess.java b/log4j-core/src/main/java/org/apache/logging/log4j/ThreadContextAccess.java
index 2e2a992..c5c33de 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/ThreadContextAccess.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/ThreadContextAccess.java
@@ -18,6 +18,7 @@
package org.apache.logging.log4j;
import org.apache.logging.log4j.spi.ThreadContextMap;
+import org.apache.logging.log4j.spi.ThreadContextMap2;
/**
* <em>This class is intended for internal log4j2 usage and should not be used directly by applications.</em>
@@ -43,4 +44,16 @@ public final class ThreadContextAccess {
public static ThreadContextMap getThreadContextMap() {
return ThreadContext.getThreadContextMap();
}
+
+ /**
+ * Returns the internal data structure used to store thread context key-value pairs.
+ * <p><em>
+ * This method is intended for internal log4j2 usage.
+ * The returned data structure is not intended to be used directly by applications.
+ * </em></p>
+ * @return the internal data structure used to store thread context key-value pairs
+ */
+ public static ThreadContextMap2 getThreadContextMap2() {
+ return (ThreadContextMap2) ThreadContext.getThreadContextMap();
+ }
}
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/04619890/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ContextDataInjectorFactory.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ContextDataInjectorFactory.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ContextDataInjectorFactory.java
index 31e1013..eb1e0ce 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ContextDataInjectorFactory.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ContextDataInjectorFactory.java
@@ -21,8 +21,8 @@ import org.apache.logging.log4j.core.ContextDataInjector;
import org.apache.logging.log4j.core.LogEvent;
import org.apache.logging.log4j.spi.ContextData;
import org.apache.logging.log4j.spi.CopyOnWrite;
-import org.apache.logging.log4j.spi.MutableContextDataSupplier;
import org.apache.logging.log4j.spi.ThreadContextMap;
+import org.apache.logging.log4j.spi.ThreadContextMap2;
import org.apache.logging.log4j.status.StatusLogger;
import org.apache.logging.log4j.util.LoaderUtil;
import org.apache.logging.log4j.util.PropertiesUtil;
@@ -79,10 +79,10 @@ public class ContextDataInjectorFactory {
private static ContextDataInjector createDefaultInjector() {
final ThreadContextMap threadContextMap = ThreadContextAccess.getThreadContextMap();
- if (threadContextMap instanceof CopyOnWrite && threadContextMap instanceof MutableContextDataSupplier) {
+ if (threadContextMap instanceof CopyOnWrite && threadContextMap instanceof ThreadContextMap2) {
return new ThreadContextDataInjector.ForCopyOnWriteMutableThreadContextMap();
}
- if (threadContextMap instanceof MutableContextDataSupplier) {
+ if (threadContextMap instanceof ThreadContextMap2) {
return new ThreadContextDataInjector.ForGarbageFreeMutableThreadContextMap();
}
return new ThreadContextDataInjector.ForDefaultThreadContextMap();
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/04619890/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java
index e57a807..8c72f70 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ThreadContextDataInjector.java
@@ -25,7 +25,6 @@ import org.apache.logging.log4j.core.ContextDataInjector;
import org.apache.logging.log4j.core.config.Property;
import org.apache.logging.log4j.spi.ContextData;
import org.apache.logging.log4j.spi.MutableContextData;
-import org.apache.logging.log4j.spi.MutableContextDataSupplier;
import org.apache.logging.log4j.spi.ThreadContextMap;
/**
@@ -119,15 +118,14 @@ public class ThreadContextDataInjector {
// modified.
copyProperties(props, reusable);
- final ContextData immutableCopy = ((MutableContextDataSupplier) ThreadContextAccess.getThreadContextMap())
- .getMutableContextData();
+ final ContextData immutableCopy = ThreadContextAccess.getThreadContextMap2().getMutableContextData();
reusable.putAll(immutableCopy);
return reusable;
}
@Override
public ContextData rawContextData() {
- return ((MutableContextDataSupplier) ThreadContextAccess.getThreadContextMap()).getMutableContextData();
+ return ThreadContextAccess.getThreadContextMap2().getMutableContextData();
}
}
@@ -153,8 +151,7 @@ public class ThreadContextDataInjector {
public MutableContextData injectContextData(final List<Property> props, final MutableContextData reusable) {
// If there are no configuration properties we want to just return the ThreadContext's MutableContextData:
// it is a copy-on-write data structure so we are sure ThreadContext changes will not affect our copy.
- final MutableContextData immutableCopy =
- ((MutableContextDataSupplier) ThreadContextAccess.getThreadContextMap()).getMutableContextData();
+ final MutableContextData immutableCopy = ThreadContextAccess.getThreadContextMap2().getMutableContextData();
if (props == null || props.isEmpty()) {
return immutableCopy;
}
@@ -167,7 +164,7 @@ public class ThreadContextDataInjector {
@Override
public ContextData rawContextData() {
- return ((MutableContextDataSupplier) ThreadContextAccess.getThreadContextMap()).getMutableContextData();
+ return ThreadContextAccess.getThreadContextMap2().getMutableContextData();
}
}