Repository: logging-log4j2
Updated Branches:
  refs/heads/master c499b2009 -> 431f9df31


LOG4J2-1447 LOG4J2-1349 moved ContextData and MutableContextData from spi 
package to util package


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

Branch: refs/heads/master
Commit: 431f9df3142e12097461c8f925fd871b1fb8d87a
Parents: c499b20
Author: rpopma <rpo...@apache.org>
Authored: Fri Sep 23 00:52:55 2016 +0900
Committer: rpopma <rpo...@apache.org>
Committed: Fri Sep 23 00:52:55 2016 +0900

----------------------------------------------------------------------
 .../apache/logging/log4j/spi/ContextData.java   | 115 -------------------
 .../CopyOnWriteSortedArrayThreadContextMap.java |   2 +
 .../log4j/spi/DefaultThreadContextMap.java      |   1 +
 .../GarbageFreeSortedArrayThreadContextMap.java |   2 +
 .../logging/log4j/spi/MutableContextData.java   | 101 ----------------
 .../logging/log4j/spi/ThreadContextMap2.java    |   2 +
 .../apache/logging/log4j/util/BiConsumer.java   |   2 +-
 .../apache/logging/log4j/util/ContextData.java  | 115 +++++++++++++++++++
 .../logging/log4j/util/MutableContextData.java  |  98 ++++++++++++++++
 .../log4j/util/SortedStringArrayMap.java        |   3 -
 .../apache/logging/log4j/util/TriConsumer.java  |   2 +-
 .../logging/log4j/core/AbstractLogEvent.java    |   2 +-
 .../logging/log4j/core/ContextDataInjector.java |   4 +-
 .../org/apache/logging/log4j/core/LogEvent.java |   2 +-
 .../db/jpa/AbstractLogEventWrapperEntity.java   |   2 +-
 .../ContextDataAttributeConverter.java          |   2 +-
 .../ContextDataJsonAttributeConverter.java      |   4 +-
 .../logging/log4j/core/async/AsyncLogger.java   |   2 +-
 .../log4j/core/async/RingBufferLogEvent.java    |   4 +-
 .../async/RingBufferLogEventTranslator.java     |   2 +-
 .../core/filter/DynamicThresholdFilter.java     |   2 +-
 .../logging/log4j/core/filter/MapFilter.java    |   2 +-
 .../core/filter/ThreadContextMapFilter.java     |   2 +-
 .../log4j/core/impl/ContextDataFactory.java     |   2 +-
 .../core/impl/ContextDataInjectorFactory.java   |   2 +-
 .../logging/log4j/core/impl/Log4jLogEvent.java  |   4 +-
 .../log4j/core/impl/MutableLogEvent.java        |   4 +-
 .../core/impl/ReusableLogEventFactory.java      |   2 +-
 .../core/impl/ThreadContextDataInjector.java    |   4 +-
 .../ContextDataAsEntryListDeserializer.java     |   2 +-
 .../ContextDataAsEntryListSerializer.java       |   2 +-
 .../core/jackson/ContextDataDeserializer.java   |   2 +-
 .../core/jackson/ContextDataSerializer.java     |   2 +-
 .../log4j/core/jackson/LogEventJsonMixIn.java   |   2 +-
 .../jackson/LogEventWithContextListMixIn.java   |   2 +-
 .../log4j/core/lookup/ContextMapLookup.java     |   2 +-
 .../log4j/core/pattern/MdcPatternConverter.java |   2 +-
 .../core/appender/db/jpa/TestBaseEntity.java    |   2 +-
 .../ContextDataAttributeConverterTest.java      |   2 +-
 .../ContextDataJsonAttributeConverterTest.java  |   4 +-
 .../core/async/RingBufferLogEventTest.java      |   2 +-
 .../log4j/core/impl/Log4jLogEventTest.java      |   2 +-
 .../log4j/core/impl/MutableLogEventTest.java    |   2 +-
 .../log4j/flume/appender/FlumeEvent.java        |   6 +-
 .../log4j/perf/jmh/ThreadContextBenchmark.java  |   2 +-
 .../log4j/perf/nogc/OpenHashMapContextData.java |   4 +-
 .../CopyOnWriteOpenHashMapThreadContextMap.java |   2 +
 .../GarbageFreeOpenHashMapThreadContextMap.java |   2 +
 .../org/apache/logging/slf4j/MDCContextMap.java |   2 +-
 49 files changed, 272 insertions(+), 267 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-api/src/main/java/org/apache/logging/log4j/spi/ContextData.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/spi/ContextData.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/spi/ContextData.java
deleted file mode 100644
index 787b1da..0000000
--- a/log4j-api/src/main/java/org/apache/logging/log4j/spi/ContextData.java
+++ /dev/null
@@ -1,115 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.spi;
-
-import java.io.Serializable;
-import java.util.Map;
-
-import org.apache.logging.log4j.util.BiConsumer;
-import org.apache.logging.log4j.util.TriConsumer;
-
-/**
- * A read-only collection of context data. Context data items are String keys 
and values of arbitrary type that are
- * set by the application to be included in all subsequent log events. A 
typical source of context data is the
- * {@code ThreadContextMap} and the {@code Properties} defined in the 
configuration.
- * <p>
- * Applications can put custom data in this collection by installing a custom 
{@code ContextDataInjector}.
- * </p>
- *
- * @see org.apache.logging.log4j.spi.ThreadContextMap
- * @since 2.7
- */
-public interface ContextData extends Serializable {
-    /**
-     * Returns a non-{@code null} mutable {@code Map<String, String>} 
containing a snapshot of this context data.
-     *
-     * @return a mutable copy of this context data in {@code Map<String, 
String>} form
-     */
-    Map<String, String> toMap();
-
-    /**
-     * Returns {@code true} if this context data contains the specified key, 
{@code false} otherwise.
-     *
-     * @param key the key whose presence to check. May be {@code null}.
-     * @return {@code true} if this context data contains the specified key, 
{@code false} otherwise
-     */
-    boolean containsKey(String key);
-
-    /**
-     * Performs the given action for each key-value pair in this data structure
-     * until all entries have been processed or the action throws an exception.
-     * <p>
-     * Some implementations may not support structural modifications (adding 
new elements or removing elements) while
-     * iterating over the contents. In such implementations, attempts to add 
or remove elements from the
-     * {@code BiConsumer}'s {@link BiConsumer#accept(Object, Object)} accept} 
method may cause a
-     * {@code ConcurrentModificationException} to be thrown.
-     * </p>
-     *
-     * @param action The action to be performed for each key-value pair in 
this collection
-     * @param <V> type of the value
-     * @throws java.util.ConcurrentModificationException some implementations 
may not support structural modifications
-     *          to this context data while iterating over the contents with 
{@link #forEach(BiConsumer)} or
-     *          {@link #forEach(TriConsumer, Object)}.
-     */
-    <V> void forEach(final BiConsumer<String, ? super V> action);
-
-    /**
-     * Performs the given action for each key-value pair in this data structure
-     * until all entries have been processed or the action throws an exception.
-     * <p>
-     * The third parameter lets callers pass in a stateful object to be 
modified with the key-value pairs,
-     * so the TriConsumer implementation itself can be stateless and 
potentially reusable.
-     * </p>
-     * <p>
-     * Some implementations may not support structural modifications (adding 
new elements or removing elements) while
-     * iterating over the contents. In such implementations, attempts to add 
or remove elements from the
-     * {@code TriConsumer}'s {@link TriConsumer#accept(Object, Object, Object) 
accept} method may cause a
-     * {@code ConcurrentModificationException} to be thrown.
-     * </p>
-     *
-     * @param action The action to be performed for each key-value pair in 
this collection
-     * @param state the object to be passed as the third parameter to each 
invocation on the specified
-     *          triconsumer
-     * @param <V> type of the value
-     * @param <S> type of the third parameter
-     * @throws java.util.ConcurrentModificationException some implementations 
may not support structural modifications
-     *          to this context data while iterating over the contents with 
{@link #forEach(BiConsumer)} or
-     *          {@link #forEach(TriConsumer, Object)}.
-     */
-    <V, S> void forEach(final TriConsumer<String, ? super V, S> action, final 
S state);
-
-    /**
-     * Returns the value for the specified key, or {@code null} if the 
specified key does not exist in this collection.
-     *
-     * @param key the key whose value to return
-     * @return the value for the specified key or {@code null}
-     */
-    <V> V getValue(final String key);
-
-    /**
-     * Returns {@code true} if this collection is empty (size is zero), {@code 
false} otherwise.
-     * @return {@code true} if this collection is empty (size is zero)
-     */
-    boolean isEmpty();
-
-    /**
-     * Returns the number of key-value pairs in this collection.
-     *
-     * @return the number of key-value pairs in this collection
-     */
-    int size();
-}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/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 9a93310..7326202 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
@@ -20,6 +20,8 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.logging.log4j.util.ContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.util.PropertiesUtil;
 import org.apache.logging.log4j.util.SortedStringArrayMap;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/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 143c2e1..386ff6b 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
@@ -21,6 +21,7 @@ import java.util.HashMap;
 import java.util.Map;
 
 import org.apache.logging.log4j.util.BiConsumer;
+import org.apache.logging.log4j.util.ContextData;
 import org.apache.logging.log4j.util.PropertiesUtil;
 import org.apache.logging.log4j.util.TriConsumer;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/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 4d3df3e..7a31d02 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
@@ -20,6 +20,8 @@ import java.util.Collections;
 import java.util.HashMap;
 import java.util.Map;
 
+import org.apache.logging.log4j.util.ContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.util.PropertiesUtil;
 import org.apache.logging.log4j.util.SortedStringArrayMap;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-api/src/main/java/org/apache/logging/log4j/spi/MutableContextData.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/spi/MutableContextData.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/spi/MutableContextData.java
deleted file mode 100644
index 22c6be1..0000000
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/spi/MutableContextData.java
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements. See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache license, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the license for the specific language governing permissions and
- * limitations under the license.
- */
-package org.apache.logging.log4j.spi;
-
-import org.apache.logging.log4j.util.BiConsumer;
-import org.apache.logging.log4j.util.TriConsumer;
-
-/**
- * Exposes methods to add and remove key-value pairs to and from {@code 
ContextData}.
- *
- * @see ContextData
- * @since 2.7
- */
-public interface MutableContextData extends ContextData {
-
-    /**
-     * Removes all key-value pairs from this collection.
-     * @throws java.util.ConcurrentModificationException some implementations 
may not support structural modifications
-     *          to this context data while iterating over the contents with 
{@link #forEach(BiConsumer)} or
-     *          {@link #forEach(TriConsumer, Object)}.
-     * @throws UnsupportedOperationException if this collection has been 
{@linkplain #isFrozen() frozen}.
-     */
-    void clear();
-
-    /**
-     * Indicates whether some other object is "equal to" this one.
-     * 
-     * @param obj
-     *            the reference object with which to compare.
-     * @return {@code true} if this object is the same as the obj argument; 
{@code false} otherwise.
-     * @see #hashCode()
-     */
-    @Override
-    boolean equals(final Object obj);
-
-    /**
-     * Makes this collection immutable. Attempts to modify the collection 
after the {@code freeze()} method was called
-     * will result in an {@code UnsupportedOperationException} being thrown.
-     */
-    void freeze();
-
-    /**
-     * Returns a hash code value for the object.
-     * @return a hash code value for this object.
-     */
-    @Override
-    int hashCode();
-
-    /**
-     * Returns {@code true} if this object has been {@linkplain #freeze() 
frozen}, {@code false} otherwise.
-     * @return  {@code true} if this object has been {@linkplain #freeze() 
frozen}, {@code false} otherwise
-     */
-    boolean isFrozen();
-
-    /**
-     * Copy all key-value pairs from the specified {@code ContextData} into 
this {@code MutableContextData}.
-     * @param source the {@code ContextData} to copy key-value pairs from
-     * @throws java.util.ConcurrentModificationException some implementations 
may not support structural modifications
-     *          to this context data while iterating over the contents with 
{@link #forEach(BiConsumer)} or
-     *          {@link #forEach(TriConsumer, Object)}.
-     * @throws UnsupportedOperationException if this collection has been 
{@linkplain #isFrozen() frozen}.
-     */
-    void putAll(final ContextData source);
-
-    /**
-     * Puts the specified key-value pair into the collection.
-     *
-     * @param key the key to add or remove. Keys may be {@code null}.
-     * @param value the value to add. Values may be {@code null}.
-     * @throws java.util.ConcurrentModificationException some implementations 
may not support structural modifications
-     *          to this context data while iterating over the contents with 
{@link #forEach(BiConsumer)} or
-     *          {@link #forEach(TriConsumer, Object)}.
-     * @throws UnsupportedOperationException if this collection has been 
{@linkplain #isFrozen() frozen}.
-     */
-    void putValue(final String key, final Object value);
-
-    /**
-     * Removes the key-value pair for the specified key from this context data 
collection.
-     *
-     * @param key the key to remove. May be {@code null}.
-     * @throws java.util.ConcurrentModificationException some implementations 
may not support structural modifications
-     *          to this context data while iterating over the contents with 
{@link #forEach(BiConsumer)} or
-     *          {@link #forEach(TriConsumer, Object)}.
-     * @throws UnsupportedOperationException if this collection has been 
{@linkplain #isFrozen() frozen}.
-     */
-    void remove(final String key);
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextMap2.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextMap2.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextMap2.java
index 396db68..6b7d086 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextMap2.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/spi/ThreadContextMap2.java
@@ -18,6 +18,8 @@ package org.apache.logging.log4j.spi;
 
 import java.util.Map;
 
+import org.apache.logging.log4j.util.MutableContextData;
+
 /**
  * Extension service provider interface to implement additional custom MDC 
behavior for
  * {@link org.apache.logging.log4j.ThreadContext}.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-api/src/main/java/org/apache/logging/log4j/util/BiConsumer.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/BiConsumer.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/BiConsumer.java
index c86f1b6..713b50b 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/BiConsumer.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/BiConsumer.java
@@ -21,7 +21,7 @@ package org.apache.logging.log4j.util;
  *
  * @param <K> type of the first argument
  * @param <V> type of the second argument
- * @see org.apache.logging.log4j.spi.ContextData
+ * @see ContextData
  * @since 2.7
  */
 public interface BiConsumer<K, V> {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-api/src/main/java/org/apache/logging/log4j/util/ContextData.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/ContextData.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/ContextData.java
new file mode 100644
index 0000000..ad440a0
--- /dev/null
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/ContextData.java
@@ -0,0 +1,115 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.util;
+
+import java.io.Serializable;
+import java.util.Map;
+
+import org.apache.logging.log4j.util.BiConsumer;
+import org.apache.logging.log4j.util.TriConsumer;
+
+/**
+ * A read-only collection of context data. Context data items are String keys 
and values of arbitrary type that are
+ * set by the application to be included in all subsequent log events. A 
typical source of context data is the
+ * {@code ThreadContextMap} and the {@code Properties} defined in the 
configuration.
+ * <p>
+ * Applications can put custom data in this collection by installing a custom 
{@code ContextDataInjector}.
+ * </p>
+ *
+ * @see org.apache.logging.log4j.spi.ThreadContextMap
+ * @since 2.7
+ */
+public interface ContextData extends Serializable {
+    /**
+     * Returns a non-{@code null} mutable {@code Map<String, String>} 
containing a snapshot of this context data.
+     *
+     * @return a mutable copy of this context data in {@code Map<String, 
String>} form
+     */
+    Map<String, String> toMap();
+
+    /**
+     * Returns {@code true} if this context data contains the specified key, 
{@code false} otherwise.
+     *
+     * @param key the key whose presence to check. May be {@code null}.
+     * @return {@code true} if this context data contains the specified key, 
{@code false} otherwise
+     */
+    boolean containsKey(String key);
+
+    /**
+     * Performs the given action for each key-value pair in this data structure
+     * until all entries have been processed or the action throws an exception.
+     * <p>
+     * Some implementations may not support structural modifications (adding 
new elements or removing elements) while
+     * iterating over the contents. In such implementations, attempts to add 
or remove elements from the
+     * {@code BiConsumer}'s {@link BiConsumer#accept(Object, Object)} accept} 
method may cause a
+     * {@code ConcurrentModificationException} to be thrown.
+     * </p>
+     *
+     * @param action The action to be performed for each key-value pair in 
this collection
+     * @param <V> type of the value
+     * @throws java.util.ConcurrentModificationException some implementations 
may not support structural modifications
+     *          to this context data while iterating over the contents with 
{@link #forEach(BiConsumer)} or
+     *          {@link #forEach(TriConsumer, Object)}.
+     */
+    <V> void forEach(final BiConsumer<String, ? super V> action);
+
+    /**
+     * Performs the given action for each key-value pair in this data structure
+     * until all entries have been processed or the action throws an exception.
+     * <p>
+     * The third parameter lets callers pass in a stateful object to be 
modified with the key-value pairs,
+     * so the TriConsumer implementation itself can be stateless and 
potentially reusable.
+     * </p>
+     * <p>
+     * Some implementations may not support structural modifications (adding 
new elements or removing elements) while
+     * iterating over the contents. In such implementations, attempts to add 
or remove elements from the
+     * {@code TriConsumer}'s {@link TriConsumer#accept(Object, Object, Object) 
accept} method may cause a
+     * {@code ConcurrentModificationException} to be thrown.
+     * </p>
+     *
+     * @param action The action to be performed for each key-value pair in 
this collection
+     * @param state the object to be passed as the third parameter to each 
invocation on the specified
+     *          triconsumer
+     * @param <V> type of the value
+     * @param <S> type of the third parameter
+     * @throws java.util.ConcurrentModificationException some implementations 
may not support structural modifications
+     *          to this context data while iterating over the contents with 
{@link #forEach(BiConsumer)} or
+     *          {@link #forEach(TriConsumer, Object)}.
+     */
+    <V, S> void forEach(final TriConsumer<String, ? super V, S> action, final 
S state);
+
+    /**
+     * Returns the value for the specified key, or {@code null} if the 
specified key does not exist in this collection.
+     *
+     * @param key the key whose value to return
+     * @return the value for the specified key or {@code null}
+     */
+    <V> V getValue(final String key);
+
+    /**
+     * Returns {@code true} if this collection is empty (size is zero), {@code 
false} otherwise.
+     * @return {@code true} if this collection is empty (size is zero)
+     */
+    boolean isEmpty();
+
+    /**
+     * Returns the number of key-value pairs in this collection.
+     *
+     * @return the number of key-value pairs in this collection
+     */
+    int size();
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-api/src/main/java/org/apache/logging/log4j/util/MutableContextData.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/MutableContextData.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/MutableContextData.java
new file mode 100644
index 0000000..cde3874
--- /dev/null
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/MutableContextData.java
@@ -0,0 +1,98 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache license, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the license for the specific language governing permissions and
+ * limitations under the license.
+ */
+package org.apache.logging.log4j.util;
+
+/**
+ * Exposes methods to add and remove key-value pairs to and from {@code 
ContextData}.
+ *
+ * @see ContextData
+ * @since 2.7
+ */
+public interface MutableContextData extends ContextData {
+
+    /**
+     * Removes all key-value pairs from this collection.
+     * @throws java.util.ConcurrentModificationException some implementations 
may not support structural modifications
+     *          to this context data while iterating over the contents with 
{@link #forEach(BiConsumer)} or
+     *          {@link #forEach(TriConsumer, Object)}.
+     * @throws UnsupportedOperationException if this collection has been 
{@linkplain #isFrozen() frozen}.
+     */
+    void clear();
+
+    /**
+     * Indicates whether some other object is "equal to" this one.
+     *
+     * @param obj
+     *            the reference object with which to compare.
+     * @return {@code true} if this object is the same as the obj argument; 
{@code false} otherwise.
+     * @see #hashCode()
+     */
+    @Override
+    boolean equals(final Object obj);
+
+    /**
+     * Makes this collection immutable. Attempts to modify the collection 
after the {@code freeze()} method was called
+     * will result in an {@code UnsupportedOperationException} being thrown.
+     */
+    void freeze();
+
+    /**
+     * Returns a hash code value for the object.
+     * @return a hash code value for this object.
+     */
+    @Override
+    int hashCode();
+
+    /**
+     * Returns {@code true} if this object has been {@linkplain #freeze() 
frozen}, {@code false} otherwise.
+     * @return  {@code true} if this object has been {@linkplain #freeze() 
frozen}, {@code false} otherwise
+     */
+    boolean isFrozen();
+
+    /**
+     * Copy all key-value pairs from the specified {@code ContextData} into 
this {@code MutableContextData}.
+     * @param source the {@code ContextData} to copy key-value pairs from
+     * @throws java.util.ConcurrentModificationException some implementations 
may not support structural modifications
+     *          to this context data while iterating over the contents with 
{@link #forEach(BiConsumer)} or
+     *          {@link #forEach(TriConsumer, Object)}.
+     * @throws UnsupportedOperationException if this collection has been 
{@linkplain #isFrozen() frozen}.
+     */
+    void putAll(final ContextData source);
+
+    /**
+     * Puts the specified key-value pair into the collection.
+     *
+     * @param key the key to add or remove. Keys may be {@code null}.
+     * @param value the value to add. Values may be {@code null}.
+     * @throws java.util.ConcurrentModificationException some implementations 
may not support structural modifications
+     *          to this context data while iterating over the contents with 
{@link #forEach(BiConsumer)} or
+     *          {@link #forEach(TriConsumer, Object)}.
+     * @throws UnsupportedOperationException if this collection has been 
{@linkplain #isFrozen() frozen}.
+     */
+    void putValue(final String key, final Object value);
+
+    /**
+     * Removes the key-value pair for the specified key from this context data 
collection.
+     *
+     * @param key the key to remove. May be {@code null}.
+     * @throws java.util.ConcurrentModificationException some implementations 
may not support structural modifications
+     *          to this context data while iterating over the contents with 
{@link #forEach(BiConsumer)} or
+     *          {@link #forEach(TriConsumer, Object)}.
+     * @throws UnsupportedOperationException if this collection has been 
{@linkplain #isFrozen() frozen}.
+     */
+    void remove(final String key);
+}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-api/src/main/java/org/apache/logging/log4j/util/SortedStringArrayMap.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/SortedStringArrayMap.java
 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/SortedStringArrayMap.java
index 7cdf3a4..3d30069 100644
--- 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/SortedStringArrayMap.java
+++ 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/SortedStringArrayMap.java
@@ -24,9 +24,6 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
 
-import org.apache.logging.log4j.spi.ContextData;
-import org.apache.logging.log4j.spi.MutableContextData;
-
 /**
  * <em>Consider this class private.</em>
  * Array-based implementation of the {@code ContextData} interface. Keys are 
held in a sorted array.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-api/src/main/java/org/apache/logging/log4j/util/TriConsumer.java
----------------------------------------------------------------------
diff --git 
a/log4j-api/src/main/java/org/apache/logging/log4j/util/TriConsumer.java 
b/log4j-api/src/main/java/org/apache/logging/log4j/util/TriConsumer.java
index caf689f..9b83eff 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/TriConsumer.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/TriConsumer.java
@@ -22,7 +22,7 @@ package org.apache.logging.log4j.util;
  * @param <K> type of the first argument
  * @param <V> type of the second argument
  * @param <S> type of the third argument
- * @see org.apache.logging.log4j.spi.ContextData
+ * @see ContextData
  * @since 2.7
  */
 public interface TriConsumer<K, V, S> {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLogEvent.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLogEvent.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLogEvent.java
index 01b2883..8577fa1 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLogEvent.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/AbstractLogEvent.java
@@ -25,7 +25,7 @@ import org.apache.logging.log4j.ThreadContext;
 import org.apache.logging.log4j.ThreadContext.ContextStack;
 import org.apache.logging.log4j.core.impl.ThrowableProxy;
 import org.apache.logging.log4j.message.Message;
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 
 
 /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/ContextDataInjector.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/ContextDataInjector.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/ContextDataInjector.java
index 93f719b..b17a5a0 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/ContextDataInjector.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/ContextDataInjector.java
@@ -21,8 +21,8 @@ import java.util.List;
 import org.apache.logging.log4j.core.config.Property;
 import org.apache.logging.log4j.core.impl.ContextDataInjectorFactory;
 import org.apache.logging.log4j.core.impl.ThreadContextDataInjector;
-import org.apache.logging.log4j.spi.ContextData;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.ContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 
 /**
  * Responsible for initializing the ContextData of LogEvents. Context data is 
data that is set by the application to be

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
index bbcea0d..892a692 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/LogEvent.java
@@ -25,7 +25,7 @@ import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.ThreadContext;
 import org.apache.logging.log4j.core.impl.ThrowableProxy;
 import org.apache.logging.log4j.message.Message;
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 
 /**
  * Provides contextual information about a logged message. A LogEvent must be 
{@link java.io.Serializable} so that it

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractLogEventWrapperEntity.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractLogEventWrapperEntity.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractLogEventWrapperEntity.java
index 661beab..5d40548 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractLogEventWrapperEntity.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/AbstractLogEventWrapperEntity.java
@@ -26,7 +26,7 @@ import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.ThreadContext;
 import org.apache.logging.log4j.core.AbstractLogEvent;
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 import org.apache.logging.log4j.core.LogEvent;
 import 
org.apache.logging.log4j.core.appender.db.jpa.converter.ContextDataAttributeConverter;
 import org.apache.logging.log4j.message.Message;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataAttributeConverter.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataAttributeConverter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataAttributeConverter.java
index 9441ec1..fdffe10 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataAttributeConverter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataAttributeConverter.java
@@ -19,7 +19,7 @@ package 
org.apache.logging.log4j.core.appender.db.jpa.converter;
 import javax.persistence.AttributeConverter;
 import javax.persistence.Converter;
 
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 
 /**
  * A JPA 2.1 attribute converter for {@link ContextData 
ContextData&lt;Object&gt;}s in

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataJsonAttributeConverter.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataJsonAttributeConverter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataJsonAttributeConverter.java
index 03ae801..71ab47a 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataJsonAttributeConverter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataJsonAttributeConverter.java
@@ -23,9 +23,9 @@ import javax.persistence.AttributeConverter;
 import javax.persistence.Converter;
 import javax.persistence.PersistenceException;
 
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 import org.apache.logging.log4j.core.impl.ContextDataFactory;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.util.BiConsumer;
 import org.apache.logging.log4j.util.Strings;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
index 46f5c7b..b89b797 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/AsyncLogger.java
@@ -38,7 +38,7 @@ import org.apache.logging.log4j.core.util.NanoClock;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.MessageFactory;
 import org.apache.logging.log4j.message.ReusableMessage;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.status.StatusLogger;
 
 import com.lmax.disruptor.EventTranslatorVararg;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
index fd273b3..44bc766 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEvent.java
@@ -23,11 +23,11 @@ import java.util.Map;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.ThreadContext.ContextStack;
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.ContextDataFactory;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.core.impl.ThrowableProxy;
 import org.apache.logging.log4j.core.util.Constants;
 import org.apache.logging.log4j.message.Message;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
index facfc57..d85b7c5 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/async/RingBufferLogEventTranslator.java
@@ -21,7 +21,7 @@ import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.ThreadContext.ContextStack;
 import org.apache.logging.log4j.core.ContextDataInjector;
 import org.apache.logging.log4j.core.impl.ContextDataInjectorFactory;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.message.Message;
 
 import com.lmax.disruptor.EventTranslator;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
index d52f1ec..aec0937 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/DynamicThresholdFilter.java
@@ -35,7 +35,7 @@ import org.apache.logging.log4j.core.ContextDataInjector;
 import org.apache.logging.log4j.core.impl.ContextDataInjectorFactory;
 import org.apache.logging.log4j.core.util.KeyValuePair;
 import org.apache.logging.log4j.message.Message;
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 
 /**
  * Compares against a log level that is associated with a context value. By 
default the context is the

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MapFilter.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MapFilter.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MapFilter.java
index e428d63..d112327 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MapFilter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MapFilter.java
@@ -35,7 +35,7 @@ import 
org.apache.logging.log4j.core.config.plugins.PluginFactory;
 import org.apache.logging.log4j.core.util.KeyValuePair;
 import org.apache.logging.log4j.message.MapMessage;
 import org.apache.logging.log4j.message.Message;
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 
 /**
  * A Filter that operates on a Map.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
index 602e474..0a9d862 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
@@ -37,7 +37,7 @@ import org.apache.logging.log4j.core.ContextDataInjector;
 import org.apache.logging.log4j.core.impl.ContextDataInjectorFactory;
 import org.apache.logging.log4j.core.util.KeyValuePair;
 import org.apache.logging.log4j.message.Message;
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 
 /**
  * Filter based on a value in the Thread Context Map (MDC).

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ContextDataFactory.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ContextDataFactory.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ContextDataFactory.java
index 19dd179..3d52c8f 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ContextDataFactory.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ContextDataFactory.java
@@ -17,7 +17,7 @@
 package org.apache.logging.log4j.core.impl;
 
 import org.apache.logging.log4j.util.SortedStringArrayMap;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.util.PropertiesUtil;
 
 /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/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 eb1e0ce..3379955 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
@@ -19,7 +19,7 @@ package org.apache.logging.log4j.core.impl;
 import org.apache.logging.log4j.ThreadContextAccess;
 import org.apache.logging.log4j.core.ContextDataInjector;
 import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 import org.apache.logging.log4j.spi.CopyOnWrite;
 import org.apache.logging.log4j.spi.ThreadContextMap;
 import org.apache.logging.log4j.spi.ThreadContextMap2;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
index 85dde79..894d0d2 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/Log4jLogEvent.java
@@ -27,7 +27,7 @@ import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.ThreadContext;
 import org.apache.logging.log4j.core.ContextDataInjector;
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.async.RingBufferLogEvent;
 import org.apache.logging.log4j.core.config.LoggerConfig;
@@ -41,7 +41,7 @@ import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.ReusableMessage;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.apache.logging.log4j.message.TimestampMessage;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.status.StatusLogger;
 import org.apache.logging.log4j.util.Strings;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java
index 68f7b78..0b9d544 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/MutableLogEvent.java
@@ -24,14 +24,14 @@ import java.util.Map;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.ThreadContext;
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.util.Constants;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.ParameterizedMessage;
 import org.apache.logging.log4j.message.ReusableMessage;
 import org.apache.logging.log4j.message.SimpleMessage;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.util.Strings;
 
 /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ReusableLogEventFactory.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ReusableLogEventFactory.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ReusableLogEventFactory.java
index 825f1f7..de715d0 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ReusableLogEventFactory.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/impl/ReusableLogEventFactory.java
@@ -29,7 +29,7 @@ import org.apache.logging.log4j.core.util.Clock;
 import org.apache.logging.log4j.core.util.ClockFactory;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.TimestampMessage;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 
 /**
  * Garbage-free LogEventFactory that reuses a single mutable log event.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/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 b836163..525f50e 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
@@ -23,8 +23,8 @@ import org.apache.logging.log4j.ThreadContext;
 import org.apache.logging.log4j.ThreadContextAccess;
 import org.apache.logging.log4j.core.ContextDataInjector;
 import org.apache.logging.log4j.core.config.Property;
-import org.apache.logging.log4j.spi.ContextData;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.ContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.spi.ThreadContextMap;
 
 /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataAsEntryListDeserializer.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataAsEntryListDeserializer.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataAsEntryListDeserializer.java
index c6d5245..b14cfce 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataAsEntryListDeserializer.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataAsEntryListDeserializer.java
@@ -21,7 +21,7 @@ import java.util.List;
 import java.util.Map;
 
 import org.apache.logging.log4j.core.impl.ContextDataFactory;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.JsonProcessingException;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataAsEntryListSerializer.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataAsEntryListSerializer.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataAsEntryListSerializer.java
index 329c6fa..db124eb 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataAsEntryListSerializer.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataAsEntryListSerializer.java
@@ -19,7 +19,7 @@ package org.apache.logging.log4j.core.jackson;
 import java.io.IOException;
 import java.util.Map;
 
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 import org.apache.logging.log4j.util.BiConsumer;
 
 import com.fasterxml.jackson.core.JsonGenerationException;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataDeserializer.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataDeserializer.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataDeserializer.java
index fadd5d4..3b4cba2 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataDeserializer.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataDeserializer.java
@@ -21,7 +21,7 @@ import java.io.IOException;
 import java.util.Map;
 
 import org.apache.logging.log4j.core.impl.ContextDataFactory;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 
 import com.fasterxml.jackson.core.JsonParser;
 import com.fasterxml.jackson.core.JsonProcessingException;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataSerializer.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataSerializer.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataSerializer.java
index 67d6c8b..161ee6a 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataSerializer.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/ContextDataSerializer.java
@@ -19,7 +19,7 @@ package org.apache.logging.log4j.core.jackson;
 import java.io.IOException;
 import java.util.Map;
 
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 import org.apache.logging.log4j.util.TriConsumer;
 
 import com.fasterxml.jackson.core.JsonGenerationException;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/LogEventJsonMixIn.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/LogEventJsonMixIn.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/LogEventJsonMixIn.java
index 30b01a8..e354f89 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/LogEventJsonMixIn.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/LogEventJsonMixIn.java
@@ -21,7 +21,7 @@ import java.util.Map;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.ThreadContext.ContextStack;
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.ThrowableProxy;
 import org.apache.logging.log4j.message.Message;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/LogEventWithContextListMixIn.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/LogEventWithContextListMixIn.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/LogEventWithContextListMixIn.java
index c195001..b18204e 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/LogEventWithContextListMixIn.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/jackson/LogEventWithContextListMixIn.java
@@ -21,7 +21,7 @@ import java.util.Map;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.ThreadContext.ContextStack;
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.ThrowableProxy;
 import org.apache.logging.log4j.message.Message;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/ContextMapLookup.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/ContextMapLookup.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/ContextMapLookup.java
index 3d4a1a0..397a8eb 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/ContextMapLookup.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/ContextMapLookup.java
@@ -21,7 +21,7 @@ import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.ContextDataInjector;
 import org.apache.logging.log4j.core.impl.ContextDataInjectorFactory;
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 
 /**
  * Looks up keys from the context. By default this is the {@link 
ThreadContext}, but users may

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
index 1fc0512..760bcbd 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/pattern/MdcPatternConverter.java
@@ -16,7 +16,7 @@
  */
 package org.apache.logging.log4j.core.pattern;
 
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.config.plugins.Plugin;
 import org.apache.logging.log4j.core.util.Constants;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java
index facb29d..f09bf09 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/TestBaseEntity.java
@@ -34,7 +34,7 @@ import javax.persistence.Transient;
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.ThreadContext;
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 import org.apache.logging.log4j.core.LogEvent;
 import 
org.apache.logging.log4j.core.appender.db.jpa.converter.LevelAttributeConverter;
 import 
org.apache.logging.log4j.core.appender.db.jpa.converter.MessageAttributeConverter;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataAttributeConverterTest.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataAttributeConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataAttributeConverterTest.java
index dc9e3db..a56c15a 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataAttributeConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataAttributeConverterTest.java
@@ -17,7 +17,7 @@
 package org.apache.logging.log4j.core.appender.db.jpa.converter;
 
 import org.apache.logging.log4j.util.SortedStringArrayMap;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataJsonAttributeConverterTest.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataJsonAttributeConverterTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataJsonAttributeConverterTest.java
index 7582111..76a11fc 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataJsonAttributeConverterTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/db/jpa/converter/ContextDataJsonAttributeConverterTest.java
@@ -16,9 +16,9 @@
  */
 package org.apache.logging.log4j.core.appender.db.jpa.converter;
 
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 import org.apache.logging.log4j.util.SortedStringArrayMap;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.junit.After;
 import org.junit.Before;
 import org.junit.Test;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java
index e1b711c..16fc036 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/async/RingBufferLogEventTest.java
@@ -29,7 +29,7 @@ import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.MarkerManager;
 import org.apache.logging.log4j.ThreadContext.ContextStack;
 import org.apache.logging.log4j.core.LogEvent;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.core.impl.ThrowableProxy;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.SimpleMessage;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/Log4jLogEventTest.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/Log4jLogEventTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/Log4jLogEventTest.java
index 0cf48c7..b662eff 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/Log4jLogEventTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/Log4jLogEventTest.java
@@ -41,7 +41,7 @@ import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.ObjectMessage;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.apache.logging.log4j.util.SortedStringArrayMap;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.util.Strings;
 import org.junit.AfterClass;
 import org.junit.BeforeClass;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/MutableLogEventTest.java
----------------------------------------------------------------------
diff --git 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/MutableLogEventTest.java
 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/MutableLogEventTest.java
index 04593b8..5ce6fca 100644
--- 
a/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/MutableLogEventTest.java
+++ 
b/log4j-core/src/test/java/org/apache/logging/log4j/core/impl/MutableLogEventTest.java
@@ -30,7 +30,7 @@ import org.apache.logging.log4j.ThreadContext;
 import org.apache.logging.log4j.message.ParameterizedMessage;
 import org.apache.logging.log4j.message.SimpleMessage;
 import org.apache.logging.log4j.util.SortedStringArrayMap;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.spi.MutableThreadContextStack;
 import org.junit.Test;
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java
----------------------------------------------------------------------
diff --git 
a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java
 
b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java
index 7753748..7ecffe0 100644
--- 
a/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java
+++ 
b/log4j-flume-ng/src/main/java/org/apache/logging/log4j/flume/appender/FlumeEvent.java
@@ -29,7 +29,7 @@ import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.LoggingException;
 import org.apache.logging.log4j.Marker;
 import org.apache.logging.log4j.ThreadContext;
-import org.apache.logging.log4j.spi.ContextData;
+import org.apache.logging.log4j.util.ContextData;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.impl.ThrowableProxy;
 import org.apache.logging.log4j.core.util.Patterns;
@@ -322,8 +322,8 @@ public class FlumeEvent extends SimpleEvent implements 
LogEvent {
     }
 
     /**
-     * Returns the {@code ContextData} of the {@code LogEvent} that this 
{@code FlumeEvent} was constructed with.
-     * @return the {@code ContextData} of the {@code LogEvent} that this 
{@code FlumeEvent} was constructed with.
+     * Returns the context data of the {@code LogEvent} that this {@code 
FlumeEvent} was constructed with.
+     * @return the context data of the {@code LogEvent} that this {@code 
FlumeEvent} was constructed with.
      */
     @Override
     public ContextData getContextData() {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ThreadContextBenchmark.java
----------------------------------------------------------------------
diff --git 
a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ThreadContextBenchmark.java
 
b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ThreadContextBenchmark.java
index e7d37ee..a04a5c4 100644
--- 
a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ThreadContextBenchmark.java
+++ 
b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ThreadContextBenchmark.java
@@ -34,7 +34,7 @@ import 
org.apache.logging.log4j.perf.nogc.OpenHashMapContextData;
 import org.apache.logging.log4j.spi.CopyOnWriteOpenHashMapThreadContextMap;
 import org.apache.logging.log4j.spi.DefaultThreadContextMap;
 import org.apache.logging.log4j.spi.GarbageFreeOpenHashMapThreadContextMap;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.spi.ThreadContextMap;
 import org.apache.logging.log4j.util.SortedStringArrayMap;
 import org.openjdk.jmh.annotations.Benchmark;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/OpenHashMapContextData.java
----------------------------------------------------------------------
diff --git 
a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/OpenHashMapContextData.java
 
b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/OpenHashMapContextData.java
index 8cf953d..fa228ac 100644
--- 
a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/OpenHashMapContextData.java
+++ 
b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/nogc/OpenHashMapContextData.java
@@ -26,8 +26,8 @@ import java.util.HashMap;
 import java.util.Map;
 import java.util.Objects;
 
-import org.apache.logging.log4j.spi.ContextData;
-import org.apache.logging.log4j.spi.MutableContextData;
+import org.apache.logging.log4j.util.ContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.spi.ThreadContextMap;
 import org.apache.logging.log4j.util.BiConsumer;
 import org.apache.logging.log4j.util.TriConsumer;

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-perf/src/main/java/org/apache/logging/log4j/spi/CopyOnWriteOpenHashMapThreadContextMap.java
----------------------------------------------------------------------
diff --git 
a/log4j-perf/src/main/java/org/apache/logging/log4j/spi/CopyOnWriteOpenHashMapThreadContextMap.java
 
b/log4j-perf/src/main/java/org/apache/logging/log4j/spi/CopyOnWriteOpenHashMapThreadContextMap.java
index 463e3ed..6724aed 100644
--- 
a/log4j-perf/src/main/java/org/apache/logging/log4j/spi/CopyOnWriteOpenHashMapThreadContextMap.java
+++ 
b/log4j-perf/src/main/java/org/apache/logging/log4j/spi/CopyOnWriteOpenHashMapThreadContextMap.java
@@ -17,6 +17,8 @@
 package org.apache.logging.log4j.spi;
 
 import org.apache.logging.log4j.perf.nogc.OpenHashMapContextData;
+import org.apache.logging.log4j.util.ContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.util.PropertiesUtil;
 
 /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/log4j-perf/src/main/java/org/apache/logging/log4j/spi/GarbageFreeOpenHashMapThreadContextMap.java
----------------------------------------------------------------------
diff --git 
a/log4j-perf/src/main/java/org/apache/logging/log4j/spi/GarbageFreeOpenHashMapThreadContextMap.java
 
b/log4j-perf/src/main/java/org/apache/logging/log4j/spi/GarbageFreeOpenHashMapThreadContextMap.java
index 5df5dda..8f1a931 100644
--- 
a/log4j-perf/src/main/java/org/apache/logging/log4j/spi/GarbageFreeOpenHashMapThreadContextMap.java
+++ 
b/log4j-perf/src/main/java/org/apache/logging/log4j/spi/GarbageFreeOpenHashMapThreadContextMap.java
@@ -17,6 +17,8 @@
 package org.apache.logging.log4j.spi;
 
 import org.apache.logging.log4j.perf.nogc.OpenHashMapContextData;
+import org.apache.logging.log4j.util.ContextData;
+import org.apache.logging.log4j.util.MutableContextData;
 import org.apache.logging.log4j.util.PropertiesUtil;
 
 /**

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/431f9df3/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 b709af8..e048896 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,7 @@ 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.util.MutableContextData;
 import org.apache.logging.log4j.spi.ThreadContextMap2;
 import org.apache.logging.log4j.util.SortedStringArrayMap;
 import org.slf4j.MDC;

Reply via email to