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/11 06:27:49 UTC
[08/50] logging-log4j2 git commit: LOG4J2-1349 let
DefaultThreadContextMap implement the ContextData interface. This results in
a much more efficiently performing implementation of the new
ContextDataInjector::rawContextData() method introduced in LOG4J2
LOG4J2-1349 let DefaultThreadContextMap implement the ContextData interface. This results in a much more efficiently performing implementation of the new ContextDataInjector::rawContextData() method introduced in LOG4J2-1010.
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo
Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/def057ff
Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/def057ff
Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/def057ff
Branch: refs/heads/master
Commit: def057ff0bab9054a80cfee9d7b408c28fe6a4bd
Parents: 1600bb2
Author: rpopma <rp...@apache.org>
Authored: Mon Aug 29 00:32:39 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Mon Aug 29 00:32:39 2016 +0900
----------------------------------------------------------------------
.../log4j/spi/DefaultThreadContextMap.java | 44 +++++++++++++++++++-
1 file changed, 43 insertions(+), 1 deletion(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/def057ff/log4j-api/src/main/java/org/apache/logging/log4j/spi/DefaultThreadContextMap.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/spi/DefaultThreadContextMap.java b/log4j-api/src/main/java/org/apache/logging/log4j/spi/DefaultThreadContextMap.java
index b659c19..0bd100c 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/DefaultThreadContextMap.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/spi/DefaultThreadContextMap.java
@@ -20,7 +20,9 @@ import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
+import org.apache.logging.log4j.util.BiConsumer;
import org.apache.logging.log4j.util.PropertiesUtil;
+import org.apache.logging.log4j.util.TriConsumer;
/**
* The actual ThreadContext Map. A new ThreadContext Map is created each time it is updated and the Map stored is always
@@ -28,7 +30,7 @@ import org.apache.logging.log4j.util.PropertiesUtil;
* expected that the Map will be passed to many more log events than the number of keys it contains the performance
* should be much better than if the Map was copied for each event.
*/
-public class DefaultThreadContextMap implements ThreadContextMap2 {
+public class DefaultThreadContextMap implements ThreadContextMap2, ContextData {
/**
* Property name ({@value} ) for selecting {@code InheritableThreadLocal} (value "true") or plain
@@ -113,12 +115,46 @@ public class DefaultThreadContextMap implements ThreadContextMap2 {
}
@Override
+ public Map<String, String> asMap() {
+ return getCopy();
+ }
+
+ @Override
public boolean containsKey(final String key) {
final Map<String, String> map = localMap.get();
return map != null && map.containsKey(key);
}
@Override
+ public <V> void forEach(final BiConsumer<String, ? super V> action) {
+ final Map<String, String> map = localMap.get();
+ if (map == null) {
+ return;
+ }
+ for (Map.Entry<String, String> entry : map.entrySet()) {
+ action.accept(entry.getKey(), (V) entry.getValue());
+ }
+ }
+
+ @Override
+ public <V, S> void forEach(final TriConsumer<String, ? super V, S> action, final S state) {
+ final Map<String, String> map = localMap.get();
+ if (map == null) {
+ return;
+ }
+ for (Map.Entry<String, String> entry : map.entrySet()) {
+ action.accept(entry.getKey(), (V) entry.getValue(), state);
+ }
+ }
+
+ @SuppressWarnings("unchecked")
+ @Override
+ public <V> V getValue(final String key) {
+ final Map<String, String> map = localMap.get();
+ return (V) (map == null ? null : map.get(key));
+ }
+
+ @Override
public Map<String, String> getCopy() {
final Map<String, String> map = localMap.get();
return map == null ? new HashMap<String, String>() : new HashMap<>(map);
@@ -136,6 +172,12 @@ public class DefaultThreadContextMap implements ThreadContextMap2 {
}
@Override
+ public int size() {
+ final Map<String, String> map = localMap.get();
+ return map == null ? 0 : map.size();
+ }
+
+ @Override
public String toString() {
final Map<String, String> map = localMap.get();
return map == null ? "{}" : map.toString();