You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by mi...@apache.org on 2017/01/17 20:54:22 UTC

[31/32] logging-log4j2 git commit: LOG4J2-1648 ObjectThreadContextMap.putAllValues

LOG4J2-1648 ObjectThreadContextMap.putAllValues


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

Branch: refs/heads/LOG4J2-1748and1780-remove-ExecutorService-from-LoggerContext
Commit: b886eca883699b0ba07d3ab5fc2416efdbed34bf
Parents: 5b6322a
Author: Mikael St�ldal <mi...@magine.com>
Authored: Tue Jan 17 17:42:19 2017 +0100
Committer: Mikael St�ldal <mi...@magine.com>
Committed: Tue Jan 17 17:42:19 2017 +0100

----------------------------------------------------------------------
 .../spi/CopyOnWriteSortedArrayThreadContextMap.java   | 14 ++++++++++++++
 .../spi/GarbageFreeSortedArrayThreadContextMap.java   | 11 +++++++++++
 .../logging/log4j/spi/ObjectThreadContextMap.java     | 10 ++++++++++
 3 files changed, 35 insertions(+)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/b886eca8/log4j-api/src/main/java/org/apache/logging/log4j/spi/CopyOnWriteSortedArrayThreadContextMap.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/spi/CopyOnWriteSortedArrayThreadContextMap.java b/log4j-api/src/main/java/org/apache/logging/log4j/spi/CopyOnWriteSortedArrayThreadContextMap.java
index 3b06686..05b783c 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/CopyOnWriteSortedArrayThreadContextMap.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/CopyOnWriteSortedArrayThreadContextMap.java
@@ -134,6 +134,20 @@ class CopyOnWriteSortedArrayThreadContextMap implements ReadOnlyThreadContextMap
     }
 
     @Override
+    public <V> void putAllValues(final Map<String, V> values) {
+        if (values == null || values.isEmpty()) {
+            return;
+        }
+        StringMap map = localMap.get();
+        map = map == null ? createStringMap() : createStringMap(map);
+        for (final Map.Entry<String, V> entry : values.entrySet()) {
+            map.putValue(entry.getKey(), entry.getValue());
+        }
+        map.freeze();
+        localMap.set(map);
+    }
+
+    @Override
     public String get(final String key) {
         return (String) getValue(key);
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/b886eca8/log4j-api/src/main/java/org/apache/logging/log4j/spi/GarbageFreeSortedArrayThreadContextMap.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/spi/GarbageFreeSortedArrayThreadContextMap.java b/log4j-api/src/main/java/org/apache/logging/log4j/spi/GarbageFreeSortedArrayThreadContextMap.java
index d8be3c9..f11fd66 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/GarbageFreeSortedArrayThreadContextMap.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/GarbageFreeSortedArrayThreadContextMap.java
@@ -131,6 +131,17 @@ class GarbageFreeSortedArrayThreadContextMap implements ReadOnlyThreadContextMap
     }
 
     @Override
+    public <V> void putAllValues(final Map<String, V> values) {
+        if (values == null || values.isEmpty()) {
+            return;
+        }
+        final StringMap map = getThreadLocalMap();
+        for (final Map.Entry<String, V> entry : values.entrySet()) {
+            map.putValue(entry.getKey(), entry.getValue());
+        }
+    }
+
+    @Override
     public String get(final String key) {
         return (String) getValue(key);
     }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/b886eca8/log4j-api/src/main/java/org/apache/logging/log4j/spi/ObjectThreadContextMap.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/spi/ObjectThreadContextMap.java b/log4j-api/src/main/java/org/apache/logging/log4j/spi/ObjectThreadContextMap.java
index 1c358aa..2148ddb 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/ObjectThreadContextMap.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/ObjectThreadContextMap.java
@@ -16,6 +16,8 @@
  */
 package org.apache.logging.log4j.spi;
 
+import java.util.Map;
+
 /**
  * Extension service provider interface to allow putting Object values in the
  * {@link org.apache.logging.log4j.ThreadContext}.
@@ -41,4 +43,12 @@ public interface ObjectThreadContextMap extends CleanableThreadContextMap {
      * @param value the value to add. Values may be {@code null}.
      */
     <V> void putValue(String key, V value);
+
+    /**
+     * Puts all given key-value pairs into the collection.
+     *
+     * @param values the map of key-value pairs to add
+     */
+    <V> void putAllValues(Map<String, V> values);
+
 }