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/08/27 08:04:43 UTC
[10/10] logging-log4j2 git commit: LOG4J2-1349 use the new
CopyOnWrite,
MutableContextDataSupplier interfaces to determine which strategy to use for
injecting context data from the ThreadContextMap
LOG4J2-1349 use the new CopyOnWrite, MutableContextDataSupplier interfaces to determine which strategy to use for injecting context data from the ThreadContextMap
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/5edcfe82
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/5edcfe82
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/5edcfe82
Branch: refs/heads/LOG4J2-1349-gcfree-threadcontext
Commit: 5edcfe8234ef78b00d297615c592fbcc2a7c77c0
Parents: 0ae2ab8
Author: rpopma <rp...@apache.org>
Authored: Sat Aug 27 17:04:26 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Sat Aug 27 17:04:26 2016 +0900
----------------------------------------------------------------------
.../log4j/core/impl/ContextDataInjectorFactory.java | 8 ++++----
.../log4j/core/impl/ThreadContextDataInjector.java | 11 +++++------
2 files changed, 9 insertions(+), 10 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5edcfe82/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 fa1c28f..947fbb0 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
@@ -16,12 +16,12 @@
*/
package org.apache.logging.log4j.core.impl;
-import org.apache.logging.log4j.ThreadContext;
import org.apache.logging.log4j.ThreadContextAccess;
import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.spi.AbstractCopyOnWriteMutableThreadContext;
import org.apache.logging.log4j.spi.AbstractGarbageFreeMutableThreadContext;
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.status.StatusLogger;
import org.apache.logging.log4j.util.LoaderUtil;
@@ -73,10 +73,10 @@ public class ContextDataInjectorFactory {
private static ContextDataInjector createDefaultInjector() {
final ThreadContextMap threadContextMap = ThreadContextAccess.getThreadContextMap();
- if (threadContextMap instanceof AbstractCopyOnWriteMutableThreadContext) {
+ if (threadContextMap instanceof CopyOnWrite && threadContextMap instanceof MutableContextDataSupplier) {
return new ThreadContextDataInjector.ForCopyOnWriteMutableThreadContextMap();
}
- if (threadContextMap instanceof AbstractGarbageFreeMutableThreadContext) {
+ if (threadContextMap instanceof MutableContextDataSupplier) {
return new ThreadContextDataInjector.ForGarbageFreeMutableThreadContextMap();
}
return new ThreadContextDataInjector.ForDefaultThreadContextMap();
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/5edcfe82/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 6c56520..eeaaf4c 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
@@ -22,10 +22,9 @@ import java.util.Map;
import org.apache.logging.log4j.ThreadContext;
import org.apache.logging.log4j.ThreadContextAccess;
import org.apache.logging.log4j.core.config.Property;
-import org.apache.logging.log4j.spi.AbstractCopyOnWriteMutableThreadContext;
-import org.apache.logging.log4j.spi.AbstractGarbageFreeMutableThreadContext;
import org.apache.logging.log4j.spi.ContextData;
import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.spi.MutableContextDataSupplier;
/**
* {@code ThreadContextDataInjector} contains a number of strategies for copying key-value pairs from the various
@@ -107,8 +106,8 @@ public class ThreadContextDataInjector {
// modified.
copyProperties(props, reusable);
- final ContextData immutableCopy = ((AbstractGarbageFreeMutableThreadContext)
- ThreadContextAccess.getThreadContextMap()).getContextData();
+ final ContextData immutableCopy = ((MutableContextDataSupplier) ThreadContextAccess.getThreadContextMap())
+ .getMutableContextData();
reusable.putAll(immutableCopy);
return reusable;
}
@@ -136,8 +135,8 @@ 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 = ((AbstractCopyOnWriteMutableThreadContext)
- ThreadContextAccess.getThreadContextMap()).getContextData();
+ final MutableContextData immutableCopy =
+ ((MutableContextDataSupplier) ThreadContextAccess.getThreadContextMap()).getMutableContextData();
if (props == null || props.isEmpty()) {
return immutableCopy;
}