LOG4J2-1660 make method #getThreadContextMap public, change return type to ReadOnlyThreadContextMap, javadoc
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/50392786 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/50392786 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/50392786 Branch: refs/heads/master Commit: 50392786b8153782af7b15646d9108e52b86e38c Parents: 86e6565 Author: rpopma <rpo...@apache.org> Authored: Thu Nov 3 23:43:54 2016 +0900 Committer: rpopma <rpo...@apache.org> Committed: Thu Nov 3 23:43:54 2016 +0900 ---------------------------------------------------------------------- .../org/apache/logging/log4j/ThreadContext.java | 30 ++++++++++++++------ 1 file changed, 22 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/50392786/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java b/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java index f282397..5242993 100644 --- a/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java +++ b/log4j-api/src/main/java/org/apache/logging/log4j/ThreadContext.java @@ -30,6 +30,7 @@ import org.apache.logging.log4j.message.ParameterizedMessage; import org.apache.logging.log4j.spi.DefaultThreadContextMap; import org.apache.logging.log4j.spi.DefaultThreadContextStack; import org.apache.logging.log4j.spi.NoOpThreadContextMap; +import org.apache.logging.log4j.spi.ReadOnlyThreadContextMap; import org.apache.logging.log4j.spi.ThreadContextMap; import org.apache.logging.log4j.spi.ThreadContextMap2; import org.apache.logging.log4j.spi.ThreadContextMapFactory; @@ -195,6 +196,8 @@ public final class ThreadContext { private static boolean useStack; private static ThreadContextMap contextMap; private static ThreadContextStack contextStack; + private static ReadOnlyThreadContextMap readOnlyContextMap; + private static final Logger LOGGER = StatusLogger.getLogger(); static { @@ -221,6 +224,9 @@ public final class ThreadContext { } else { contextMap = ThreadContextMapFactory.createThreadContextMap(); } + if (contextMap instanceof ReadOnlyThreadContextMap) { + readOnlyContextMap = (ReadOnlyThreadContextMap) contextMap; + } } /** @@ -327,15 +333,23 @@ public final class ThreadContext { } /** - * Returns the internal data structure used to store thread context key-value pairs. - * <p><em> - * This data structure is not intended to be used directly by applications. This method is package protected for - * internal log4j2 usage. - * </em></p> - * @return the internal data structure used to store thread context key-value pairs + * Returns a read-only view of the internal data structure used to store thread context key-value pairs, + * or {@code null} if the internal data structure does not implement the + * {@code ReadOnlyThreadContextMap} interface. + * <p> + * The {@link DefaultThreadContextMap} implementation does not implement {@code ReadOnlyThreadContextMap}, so by + * default this method returns {@code null}. + * </p> + * + * @return the internal data structure used to store thread context key-value pairs or {@code null} + * @see ThreadContextMapFactory + * @see DefaultThreadContextMap + * @see org.apache.logging.log4j.spi.CopyOnWriteSortedArrayThreadContextMap + * @see org.apache.logging.log4j.spi.GarbageFreeSortedArrayThreadContextMap + * @since 2.8 */ - static ThreadContextMap getThreadContextMap() { - return contextMap; + public static ReadOnlyThreadContextMap getThreadContextMap() { + return readOnlyContextMap; } /**