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:32 UTC

[5/8] logging-log4j2 git commit: LOG4J2-1447 change the contract of ThreadContextMap2 to include the role of MutableContextDataSupplier

LOG4J2-1447 change the contract of ThreadContextMap2 to include the role of 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/09eb4f44
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/09eb4f44
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/09eb4f44

Branch: refs/heads/master
Commit: 09eb4f4483600bc2f9d29052bb8589dc10b8d858
Parents: e1b86f5
Author: rpopma <rp...@apache.org>
Authored: Thu Sep 22 11:01:26 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Thu Sep 22 11:01:26 2016 +0900

----------------------------------------------------------------------
 .../org/apache/logging/slf4j/MDCContextMap.java | 20 ++++++++++++++++++++
 1 file changed, 20 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/09eb4f44/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/MDCContextMap.java
----------------------------------------------------------------------
diff --git a/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/MDCContextMap.java b/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/MDCContextMap.java
index 5202ca7..0593e3c 100644
--- a/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/MDCContextMap.java
+++ b/log4j-to-slf4j/src/main/java/org/apache/logging/slf4j/MDCContextMap.java
@@ -19,7 +19,9 @@ package org.apache.logging.slf4j;
 import java.util.Map;
 import java.util.Map.Entry;
 
+import org.apache.logging.log4j.spi.MutableContextData;
 import org.apache.logging.log4j.spi.ThreadContextMap2;
+import org.apache.logging.log4j.util.ArrayContextData;
 import org.slf4j.MDC;
 
 /**
@@ -27,6 +29,11 @@ import org.slf4j.MDC;
  */
 public class MDCContextMap implements ThreadContextMap2 {
 
+    private static final MutableContextData EMPTY_CONTEXT_DATA = new ArrayContextData();
+    static {
+        EMPTY_CONTEXT_DATA.freeze();
+    }
+
     @Override
     public void put(final String key, final String value) {
         MDC.put(key, value);
@@ -75,4 +82,17 @@ public class MDCContextMap implements ThreadContextMap2 {
     public boolean isEmpty() {
         return MDC.getCopyOfContextMap().isEmpty();
     }
+
+    @Override
+    public MutableContextData getMutableContextData() {
+        final Map<String, String> copy = getCopy();
+        if (copy.isEmpty()) {
+            return EMPTY_CONTEXT_DATA;
+        }
+        final MutableContextData result = new ArrayContextData();
+        for (Entry<String, String> entry : copy.entrySet()) {
+            result.putValue(entry.getKey(), entry.getValue());
+        }
+        return result;
+    }
 }