Repository: logging-log4j2 Updated Branches: refs/heads/master b4fb66476 -> 800db9c7a
http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 3d52c8f..50b5df5 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 @@ -16,31 +16,31 @@ */ package org.apache.logging.log4j.core.impl; -import org.apache.logging.log4j.util.SortedStringArrayMap; -import org.apache.logging.log4j.util.MutableContextData; +import org.apache.logging.log4j.util.SortedArrayStringMap; +import org.apache.logging.log4j.util.StringMap; import org.apache.logging.log4j.util.PropertiesUtil; /** - * Factory for creating MutableContextData instances. + * Factory for creating StringMap instances. * <p> - * By default returns {@code SortedStringArrayMap} objects. Can be configured by setting system property - * {@code "log4j2.ContextData"} to the fully qualified class name of a class implementing the - * {@code MutableContextData} interface. The class must have a public default constructor. + * By default returns {@code SortedArrayStringMap} objects. Can be configured by setting system property + * {@code "log4j2.ReadOnlyStringMap"} to the fully qualified class name of a class implementing the + * {@code StringMap} interface. The class must have a public default constructor. * </p> * - * @see SortedStringArrayMap + * @see SortedArrayStringMap * @since 2.7 */ public class ContextDataFactory { @SuppressWarnings("unchecked") - public static MutableContextData createContextData() { - final String CLASS = PropertiesUtil.getProperties().getStringProperty("log4j2.ContextData", - SortedStringArrayMap.class.getName()); + public static StringMap createContextData() { + final String CLASS = PropertiesUtil.getProperties().getStringProperty("log4j2.ReadOnlyStringMap", + SortedArrayStringMap.class.getName()); try { - return (MutableContextData) Class.forName(CLASS).newInstance(); + return (StringMap) Class.forName(CLASS).newInstance(); } catch (final Exception any) { - return new SortedStringArrayMap(); + return new SortedArrayStringMap(); } } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 3379955..6af517d 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.util.ContextData; +import org.apache.logging.log4j.util.ReadOnlyStringMap; import org.apache.logging.log4j.spi.CopyOnWrite; import org.apache.logging.log4j.spi.ThreadContextMap; import org.apache.logging.log4j.spi.ThreadContextMap2; @@ -35,7 +35,7 @@ import org.apache.logging.log4j.util.PropertiesUtil; * {@code ThreadContextDataInjector}. * * @see ContextDataInjector - * @see ContextData + * @see ReadOnlyStringMap * @see ThreadContextDataInjector * @see LogEvent#getContextData() * @since 2.7 @@ -57,7 +57,7 @@ public class ContextDataInjectorFactory { * context data to determine whether an event should be logged. * </p> * - * @return a ContextDataInjector that populates the {@code ContextData} of all {@code LogEvent} objects + * @return a ContextDataInjector that populates the {@code ReadOnlyStringMap} of all {@code LogEvent} objects */ public static ContextDataInjector createInjector() { final String className = PropertiesUtil.getProperties().getStringProperty("log4j2.ContextDataInjector"); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 894d0d2..291687a 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.util.ContextData; +import org.apache.logging.log4j.util.ReadOnlyStringMap; 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.util.MutableContextData; +import org.apache.logging.log4j.util.StringMap; import org.apache.logging.log4j.status.StatusLogger; import org.apache.logging.log4j.util.Strings; @@ -63,7 +63,7 @@ public class Log4jLogEvent implements LogEvent { private final long timeMillis; private final transient Throwable thrown; private ThrowableProxy thrownProxy; - private final MutableContextData contextData; + private final StringMap contextData; private final ThreadContext.ContextStack contextStack; private long threadId; private String threadName; @@ -85,7 +85,7 @@ public class Log4jLogEvent implements LogEvent { private Throwable thrown; private long timeMillis = CLOCK.currentTimeMillis(); private ThrowableProxy thrownProxy; - private MutableContextData contextData = createContextData((List<Property>) null); + private StringMap contextData = createContextData((List<Property>) null); private ThreadContext.ContextStack contextStack = ThreadContext.getImmutableStack(); private long threadId; private String threadName; @@ -130,8 +130,8 @@ public class Log4jLogEvent implements LogEvent { this.threadName = evt.threadName; this.threadPriority = evt.threadPriority; } else { - if (other.getContextData() instanceof MutableContextData) { - this.contextData = (MutableContextData) other.getContextData(); + if (other.getContextData() instanceof StringMap) { + this.contextData = (StringMap) other.getContextData(); } else { if (this.contextData.isFrozen()) { this.contextData = ContextDataFactory.createContextData(); @@ -200,7 +200,7 @@ public class Log4jLogEvent implements LogEvent { return this; } - public Builder setContextData(final MutableContextData contextData) { + public Builder setContextData(final StringMap contextData) { this.contextData = contextData; return this; } @@ -308,7 +308,7 @@ public class Log4jLogEvent implements LogEvent { * @param loggerFQCN The fully qualified class name of the caller. * @param level The logging Level. * @param message The Message. - * @param properties the properties to be merged with ThreadContext key-value pairs into the event's ContextData. + * @param properties the properties to be merged with ThreadContext key-value pairs into the event's ReadOnlyStringMap. * @param t A Throwable or null. */ // This constructor is called from LogEventFactories. @@ -399,7 +399,7 @@ public class Log4jLogEvent implements LogEvent { */ private Log4jLogEvent(final String loggerName, final Marker marker, final String loggerFQCN, final Level level, final Message message, final Throwable thrown, final ThrowableProxy thrownProxy, - final MutableContextData contextData, final ThreadContext.ContextStack contextStack, final long threadId, + final StringMap contextData, final ThreadContext.ContextStack contextStack, final long threadId, final String threadName, final int threadPriority, final StackTraceElement source, final long timestampMillis, final long nanoTime) { this.loggerName = loggerName; @@ -424,8 +424,8 @@ public class Log4jLogEvent implements LogEvent { this.nanoTime = nanoTime; } - private static MutableContextData createContextData(final Map<String, String> contextMap) { - final MutableContextData result = ContextDataFactory.createContextData(); + private static StringMap createContextData(final Map<String, String> contextMap) { + final StringMap result = ContextDataFactory.createContextData(); if (contextMap != null) { for (final Map.Entry<String, String> entry : contextMap.entrySet()) { result.putValue(entry.getKey(), entry.getValue()); @@ -434,8 +434,8 @@ public class Log4jLogEvent implements LogEvent { return result; } - private static MutableContextData createContextData(final List<Property> properties) { - final MutableContextData reusable = ContextDataFactory.createContextData(); + private static StringMap createContextData(final List<Property> properties) { + final StringMap reusable = ContextDataFactory.createContextData(); return CONTEXT_DATA_INJECTOR.injectContextData(properties, reusable); } @@ -577,12 +577,12 @@ public class Log4jLogEvent implements LogEvent { } /** - * Returns the {@code ContextData} containing context data key-value pairs. - * @return the {@code ContextData} containing context data key-value pairs + * Returns the {@code ReadOnlyStringMap} containing context data key-value pairs. + * @return the {@code ReadOnlyStringMap} containing context data key-value pairs * @since 2.7 */ @Override - public ContextData getContextData() { + public ReadOnlyStringMap getContextData() { return contextData; } /** @@ -850,7 +850,7 @@ public class Log4jLogEvent implements LogEvent { private final transient Throwable thrown; private final ThrowableProxy thrownProxy; /** @since 2.7 */ - private final MutableContextData contextData; + private final StringMap contextData; private final ThreadContext.ContextStack contextStack; /** @since 2.6 */ private final long threadId; @@ -913,8 +913,8 @@ public class Log4jLogEvent implements LogEvent { return message.memento(); } - private static MutableContextData memento(final ContextData data) { - final MutableContextData result = ContextDataFactory.createContextData(); + private static StringMap memento(final ReadOnlyStringMap data) { + final StringMap result = ContextDataFactory.createContextData(); result.putAll(data); return result; } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 0b9d544..ad970ae 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.util.ContextData; +import org.apache.logging.log4j.util.ReadOnlyStringMap; 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.util.MutableContextData; +import org.apache.logging.log4j.util.StringMap; import org.apache.logging.log4j.util.Strings; /** @@ -56,7 +56,7 @@ public class MutableLogEvent implements LogEvent, ReusableMessage { private Object[] parameters; private Throwable thrown; private ThrowableProxy thrownProxy; - private MutableContextData contextData = ContextDataFactory.createContextData(); + private StringMap contextData = ContextDataFactory.createContextData(); private Marker marker; private String loggerFqcn; private StackTraceElement source; @@ -93,7 +93,7 @@ public class MutableLogEvent implements LogEvent, ReusableMessage { // NOTE: this ringbuffer event SHOULD NOT keep a reference to the specified // thread-local MutableLogEvent's context data, because then two threads would call - // ContextData.clear() on the same shared instance, resulting in data corruption. + // ReadOnlyStringMap.clear() on the same shared instance, resulting in data corruption. this.contextData.putAll(event.getContextData()); this.contextStack = event.getContextStack(); @@ -350,7 +350,7 @@ public class MutableLogEvent implements LogEvent, ReusableMessage { @SuppressWarnings("unchecked") @Override - public ContextData getContextData() { + public ReadOnlyStringMap getContextData() { return contextData; } @@ -359,7 +359,7 @@ public class MutableLogEvent implements LogEvent, ReusableMessage { return contextData.toMap(); } - public void setContextData(final MutableContextData mutableContextData) { + public void setContextData(final StringMap mutableContextData) { this.contextData = mutableContextData; } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 de715d0..bef1b8d 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.util.MutableContextData; +import org.apache.logging.log4j.util.StringMap; /** * Garbage-free LogEventFactory that reuses a single mutable log event. @@ -80,7 +80,7 @@ public class ReusableLogEventFactory implements LogEventFactory { result.setLevel(level == null ? Level.OFF : level); result.setMessage(message); result.setThrown(t); - result.setContextData(injector.injectContextData(properties, (MutableContextData) result.getContextData())); + result.setContextData(injector.injectContextData(properties, (StringMap) result.getContextData())); result.setContextStack(ThreadContext.getDepth() == 0 ? ThreadContext.EMPTY_STACK : ThreadContext.cloneStack());// mutable copy result.setTimeMillis(message instanceof TimestampMessage ? ((TimestampMessage) message).getTimestamp() http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 525f50e..d26324c 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,13 +23,13 @@ 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.util.ContextData; -import org.apache.logging.log4j.util.MutableContextData; +import org.apache.logging.log4j.util.ReadOnlyStringMap; +import org.apache.logging.log4j.util.StringMap; import org.apache.logging.log4j.spi.ThreadContextMap; /** * {@code ThreadContextDataInjector} contains a number of strategies for copying key-value pairs from the various - * {@code ThreadContext} map implementations into a {@code MutableContextData}. In the case of duplicate keys, + * {@code ThreadContext} map implementations into a {@code StringMap}. In the case of duplicate keys, * thread context values overwrite configuration {@code Property} values. * <p> * These are the default {@code ContextDataInjector} objects returned by the {@link ContextDataInjectorFactory}. @@ -37,7 +37,7 @@ import org.apache.logging.log4j.spi.ThreadContextMap; * * @see org.apache.logging.log4j.ThreadContext * @see Property - * @see ContextData + * @see ReadOnlyStringMap * @see ContextDataInjector * @see ContextDataInjectorFactory * @since 2.7 @@ -48,22 +48,22 @@ public class ThreadContextDataInjector { * Default {@code ContextDataInjector} for the legacy {@code Map<String, String>}-based ThreadContext (which is * also the ThreadContext implementation used for web applications). * <p> - * This injector always puts key-value pairs into the specified reusable MutableContextData. + * This injector always puts key-value pairs into the specified reusable StringMap. */ public static class ForDefaultThreadContextMap implements ContextDataInjector { /** * Puts key-value pairs from both the specified list of properties as well as the thread context into the - * specified reusable MutableContextData. + * specified reusable StringMap. * * @param props list of configuration properties, may be {@code null} - * @param reusable a {@code MutableContextData} instance that may be reused to avoid creating temporary objects - * @return a {@code MutableContextData} combining configuration properties with thread context data + * @param reusable a {@code StringMap} instance that may be reused to avoid creating temporary objects + * @return a {@code StringMap} combining configuration properties with thread context data */ @Override - public MutableContextData injectContextData(final List<Property> props, final MutableContextData reusable) { + public StringMap injectContextData(final List<Property> props, final StringMap reusable) { // implementation note: - // The DefaultThreadContextMap stores context data in a Map<String, String>, not in a ContextData object. - // Therefore we can populate the specified reusable MutableContextData, but + // The DefaultThreadContextMap stores context data in a Map<String, String>, not in a ReadOnlyStringMap object. + // Therefore we can populate the specified reusable StringMap, but // we need to copy the ThreadContext key-value pairs one by one. copyProperties(props, reusable); copyThreadContextMap(ThreadContext.getImmutableContext(), reusable); @@ -71,23 +71,23 @@ public class ThreadContextDataInjector { } @Override - public ContextData rawContextData() { + public ReadOnlyStringMap rawContextData() { final ThreadContextMap map = ThreadContextAccess.getThreadContextMap(); - if (map instanceof ContextData) { - return (ContextData) map; + if (map instanceof ReadOnlyStringMap) { + return (ReadOnlyStringMap) map; } - final MutableContextData result = ContextDataFactory.createContextData(); + final StringMap result = ContextDataFactory.createContextData(); copyThreadContextMap(ThreadContext.getImmutableContext(), result); return result; } /** - * Copies key-value pairs from the specified map into the specified {@code MutableContextData}. + * Copies key-value pairs from the specified map into the specified {@code StringMap}. * * @param map map with key-value pairs, may be {@code null} - * @param result the {@code MutableContextData} object to add the key-values to. Must be non-{@code null}. + * @param result the {@code StringMap} object to add the key-values to. Must be non-{@code null}. */ - private static void copyThreadContextMap(final Map<String, String> map, final MutableContextData result) { + private static void copyThreadContextMap(final Map<String, String> map, final StringMap result) { if (map != null) { for (final Map.Entry<String, String> entry : map.entrySet()) { result.putValue(entry.getKey(), entry.getValue()); @@ -98,83 +98,83 @@ public class ThreadContextDataInjector { /** * The {@code ContextDataInjector} used when the ThreadContextMap implementation is a garbage-free - * MutableContextData-based data structure. + * StringMap-based data structure. * <p> - * This injector always puts key-value pairs into the specified reusable MutableContextData. + * This injector always puts key-value pairs into the specified reusable StringMap. */ public static class ForGarbageFreeMutableThreadContextMap implements ContextDataInjector { /** * Puts key-value pairs from both the specified list of properties as well as the thread context into the - * specified reusable MutableContextData. + * specified reusable StringMap. * * @param props list of configuration properties, may be {@code null} - * @param reusable a {@code MutableContextData} instance that may be reused to avoid creating temporary objects - * @return a {@code MutableContextData} combining configuration properties with thread context data + * @param reusable a {@code StringMap} instance that may be reused to avoid creating temporary objects + * @return a {@code StringMap} combining configuration properties with thread context data */ @Override - public MutableContextData injectContextData(final List<Property> props, final MutableContextData reusable) { + public StringMap injectContextData(final List<Property> props, final StringMap reusable) { // When the ThreadContext is garbage-free, we must copy its key-value pairs into the specified reusable - // MutableContextData. We cannot return the ThreadContext's internal data structure because it will be + // StringMap. We cannot return the ThreadContext's internal data structure because it will be // modified. copyProperties(props, reusable); - final ContextData immutableCopy = ThreadContextAccess.getThreadContextMap2().getReadOnlyContextData(); + final ReadOnlyStringMap immutableCopy = ThreadContextAccess.getThreadContextMap2().getReadOnlyContextData(); reusable.putAll(immutableCopy); return reusable; } @Override - public ContextData rawContextData() { + public ReadOnlyStringMap rawContextData() { return ThreadContextAccess.getThreadContextMap2().getReadOnlyContextData(); } } /** * The {@code ContextDataInjector} used when the ThreadContextMap implementation is a copy-on-write - * MutableContextData-based data structure. + * StringMap-based data structure. * <p> * If there are no configuration properties, this injector will return the thread context's internal data * structure. Otherwise the configuration properties are combined with the thread context key-value pairs into the - * specified reusable MutableContextData. + * specified reusable StringMap. */ public static class ForCopyOnWriteMutableThreadContextMap implements ContextDataInjector { /** * If there are no configuration properties, this injector will return the thread context's internal data * structure. Otherwise the configuration properties are combined with the thread context key-value pairs into the - * specified reusable MutableContextData. + * specified reusable StringMap. * * @param props list of configuration properties, may be {@code null} - * @param reusable a {@code MutableContextData} instance that may be reused to avoid creating temporary objects - * @return a {@code MutableContextData} combining configuration properties with thread context data + * @param reusable a {@code StringMap} instance that may be reused to avoid creating temporary objects + * @return a {@code StringMap} combining configuration properties with thread context data */ @Override - public MutableContextData injectContextData(final List<Property> props, final MutableContextData reusable) { - // If there are no configuration properties we want to just return the ThreadContext's MutableContextData: + public StringMap injectContextData(final List<Property> props, final StringMap reusable) { + // If there are no configuration properties we want to just return the ThreadContext's StringMap: // it is a copy-on-write data structure so we are sure ThreadContext changes will not affect our copy. - final MutableContextData immutableCopy = ThreadContextAccess.getThreadContextMap2().getReadOnlyContextData(); + final StringMap immutableCopy = ThreadContextAccess.getThreadContextMap2().getReadOnlyContextData(); if (props == null || props.isEmpty()) { return immutableCopy; } // However, if the list of Properties is non-empty we need to combine the properties and the ThreadContext - // data. In that case we will copy the key-value pairs into the specified reusable MutableContextData. + // data. In that case we will copy the key-value pairs into the specified reusable StringMap. copyProperties(props, reusable); reusable.putAll(immutableCopy); return reusable; } @Override - public ContextData rawContextData() { + public ReadOnlyStringMap rawContextData() { return ThreadContextAccess.getThreadContextMap2().getReadOnlyContextData(); } } /** - * Copies key-value pairs from the specified property list into the specified {@code MutableContextData}. + * Copies key-value pairs from the specified property list into the specified {@code StringMap}. * * @param properties list of configuration properties, may be {@code null} - * @param result the {@code MutableContextData} object to add the key-values to. Must be non-{@code null}. + * @param result the {@code StringMap} object to add the key-values to. Must be non-{@code null}. */ - public static void copyProperties(final List<Property> properties, final MutableContextData result) { + public static void copyProperties(final List<Property> properties, final StringMap result) { if (properties != null) { for (int i = 0; i < properties.size(); i++) { final Property prop = properties.get(i); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 b14cfce..85dd21e 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.util.MutableContextData; +import org.apache.logging.log4j.util.StringMap; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; @@ -34,7 +34,7 @@ import com.fasterxml.jackson.databind.deser.std.StdDeserializer; * <em>Consider this class private.</em> * </p> */ -public class ContextDataAsEntryListDeserializer extends StdDeserializer<MutableContextData> { +public class ContextDataAsEntryListDeserializer extends StdDeserializer<StringMap> { private static final long serialVersionUID = 1L; @@ -43,12 +43,12 @@ public class ContextDataAsEntryListDeserializer extends StdDeserializer<MutableC } @Override - public MutableContextData deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException, + public StringMap deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException, JsonProcessingException { final List<MapEntry> list = jp.readValueAs(new TypeReference<List<MapEntry>>() { // empty }); - final MutableContextData contextData = new ContextDataFactory().createContextData(); + final StringMap contextData = new ContextDataFactory().createContextData(); for (final MapEntry mapEntry : list) { contextData.putValue(mapEntry.getKey(), mapEntry.getValue()); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 db124eb..ccf17ff 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.util.ContextData; +import org.apache.logging.log4j.util.ReadOnlyStringMap; import org.apache.logging.log4j.util.BiConsumer; import com.fasterxml.jackson.core.JsonGenerationException; @@ -32,7 +32,7 @@ import com.fasterxml.jackson.databind.ser.std.StdSerializer; * <em>Consider this class private.</em> * </p> */ -public class ContextDataAsEntryListSerializer extends StdSerializer<ContextData> { +public class ContextDataAsEntryListSerializer extends StdSerializer<ReadOnlyStringMap> { private static final long serialVersionUID = 1L; @@ -41,7 +41,7 @@ public class ContextDataAsEntryListSerializer extends StdSerializer<ContextData> } @Override - public void serialize(final ContextData contextData, final JsonGenerator jgen, final SerializerProvider provider) + public void serialize(final ReadOnlyStringMap contextData, final JsonGenerator jgen, final SerializerProvider provider) throws IOException, JsonGenerationException { final MapEntry[] pairs = new MapEntry[contextData.size()]; http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 3b4cba2..3a9a13e 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.util.MutableContextData; +import org.apache.logging.log4j.util.StringMap; import com.fasterxml.jackson.core.JsonParser; import com.fasterxml.jackson.core.JsonProcessingException; @@ -34,7 +34,7 @@ import com.fasterxml.jackson.databind.deser.std.StdDeserializer; * <em>Consider this class private.</em> * </p> */ -public class ContextDataDeserializer extends StdDeserializer<MutableContextData> { +public class ContextDataDeserializer extends StdDeserializer<StringMap> { private static final long serialVersionUID = 1L; @@ -43,7 +43,7 @@ public class ContextDataDeserializer extends StdDeserializer<MutableContextData> } @Override - public MutableContextData deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException, + public StringMap deserialize(final JsonParser jp, final DeserializationContext ctxt) throws IOException, JsonProcessingException { // Sanity check: verify that we got "Json Object": @@ -51,7 +51,7 @@ public class ContextDataDeserializer extends StdDeserializer<MutableContextData> // if (tok != JsonToken.START_OBJECT) { // throw new IOException("Expected data to start with an Object"); // } - final MutableContextData contextData = ContextDataFactory.createContextData(); + final StringMap contextData = ContextDataFactory.createContextData(); // Iterate over object fields: while (jp.nextToken() != JsonToken.END_OBJECT) { final String fieldName = jp.getCurrentName(); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 161ee6a..8808d3d 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.util.ContextData; +import org.apache.logging.log4j.util.ReadOnlyStringMap; import org.apache.logging.log4j.util.TriConsumer; import com.fasterxml.jackson.core.JsonGenerationException; @@ -32,7 +32,7 @@ import com.fasterxml.jackson.databind.ser.std.StdSerializer; * <em>Consider this class private.</em> * </p> */ -public class ContextDataSerializer extends StdSerializer<ContextData> { +public class ContextDataSerializer extends StdSerializer<ReadOnlyStringMap> { private static final long serialVersionUID = 1L; @@ -41,7 +41,7 @@ public class ContextDataSerializer extends StdSerializer<ContextData> { } @Override - public void serialize(final ContextData contextData, final JsonGenerator jgen, + public void serialize(final ReadOnlyStringMap contextData, final JsonGenerator jgen, final SerializerProvider provider) throws IOException, JsonGenerationException { jgen.writeStartObject(); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 e354f89..c03d556 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.util.ContextData; +import org.apache.logging.log4j.util.ReadOnlyStringMap; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.impl.ThrowableProxy; import org.apache.logging.log4j.message.Message; @@ -62,7 +62,7 @@ abstract class LogEventJsonMixIn implements LogEvent { @JsonDeserialize(using = ContextDataDeserializer.class) //@JsonIgnore @Override - public abstract ContextData getContextData(); + public abstract ReadOnlyStringMap getContextData(); @JsonProperty(JsonConstants.ELT_CONTEXT_STACK) @JacksonXmlElementWrapper(namespace = XmlConstants.XML_NAMESPACE, localName = XmlConstants.ELT_CONTEXT_STACK) http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 b18204e..176d82d 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.util.ContextData; +import org.apache.logging.log4j.util.ReadOnlyStringMap; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.impl.ThrowableProxy; import org.apache.logging.log4j.message.Message; @@ -60,7 +60,7 @@ abstract class LogEventWithContextListMixIn implements LogEvent { @JsonDeserialize(using = ContextDataAsEntryListDeserializer.class) // @JsonIgnore @Override - public abstract ContextData getContextData(); + public abstract ReadOnlyStringMap getContextData(); @JsonProperty(JsonConstants.ELT_CONTEXT_STACK) @JacksonXmlElementWrapper(namespace = XmlConstants.XML_NAMESPACE, localName = XmlConstants.ELT_CONTEXT_STACK) http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 397a8eb..220d17a 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.util.ContextData; +import org.apache.logging.log4j.util.ReadOnlyStringMap; /** * Looks up keys from the context. By default this is the {@link ThreadContext}, but users may @@ -43,7 +43,7 @@ public class ContextMapLookup implements StrLookup { return currentContextData().getValue(key); } - private ContextData currentContextData() { + private ReadOnlyStringMap currentContextData() { return injector.rawContextData(); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 760bcbd..599d623 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.util.ContextData; +import org.apache.logging.log4j.util.ReadOnlyStringMap; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.config.plugins.Plugin; import org.apache.logging.log4j.core.util.Constants; @@ -97,7 +97,7 @@ public final class MdcPatternConverter extends LogEventPatternConverter { */ @Override public void format(final LogEvent event, final StringBuilder toAppendTo) { - final ContextData contextData = event.getContextData(); + final ReadOnlyStringMap contextData = event.getContextData(); // if there is no additional options, we output every single // Key/Value pair for the MDC in a similar format to Hashtable.toString() if (full) { @@ -123,7 +123,7 @@ public final class MdcPatternConverter extends LogEventPatternConverter { } } - private static void appendFully(final ContextData contextData, final StringBuilder toAppendTo) { + private static void appendFully(final ReadOnlyStringMap contextData, final StringBuilder toAppendTo) { final StringBuilder sb = getStringBuilder(); sb.append("{"); contextData.forEach(WRITE_KEY_VALUES_INTO, sb); @@ -132,7 +132,7 @@ public final class MdcPatternConverter extends LogEventPatternConverter { trimToMaxSize(sb); } - private static void appendSelectedKeys(final String[] keys, final ContextData contextData, final StringBuilder toAppendTo) { + private static void appendSelectedKeys(final String[] keys, final ReadOnlyStringMap contextData, final StringBuilder toAppendTo) { // Print all the keys in the array that have a value. final StringBuilder sb = getStringBuilder(); sb.append("{"); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 f09bf09..cc5260f 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.util.ContextData; +import org.apache.logging.log4j.util.ReadOnlyStringMap; 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; @@ -162,7 +162,7 @@ public class TestBaseEntity extends AbstractLogEventWrapperEntity { @Override @Transient - public ContextData getContextData() { + public ReadOnlyStringMap getContextData() { return this.getWrappedEvent().getContextData(); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 a56c15a..1112f3e 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 @@ -16,8 +16,8 @@ */ package org.apache.logging.log4j.core.appender.db.jpa.converter; -import org.apache.logging.log4j.util.SortedStringArrayMap; -import org.apache.logging.log4j.util.MutableContextData; +import org.apache.logging.log4j.util.SortedArrayStringMap; +import org.apache.logging.log4j.util.StringMap; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -39,7 +39,7 @@ public class ContextDataAttributeConverterTest { @Test public void testConvertToDatabaseColumn01() { - final MutableContextData map = new SortedStringArrayMap(); + final StringMap map = new SortedArrayStringMap(); map.putValue("test1", "another1"); map.putValue("key2", "value2"); @@ -49,7 +49,7 @@ public class ContextDataAttributeConverterTest { @Test public void testConvertToDatabaseColumn02() { - final MutableContextData map = new SortedStringArrayMap(); + final StringMap map = new SortedArrayStringMap(); map.putValue("someKey", "coolValue"); map.putValue("anotherKey", "testValue"); map.putValue("myKey", "yourValue"); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 76a11fc..45b444a 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.util.ContextData; -import org.apache.logging.log4j.util.SortedStringArrayMap; -import org.apache.logging.log4j.util.MutableContextData; +import org.apache.logging.log4j.util.ReadOnlyStringMap; +import org.apache.logging.log4j.util.SortedArrayStringMap; +import org.apache.logging.log4j.util.StringMap; import org.junit.After; import org.junit.Before; import org.junit.Test; @@ -40,7 +40,7 @@ public class ContextDataJsonAttributeConverterTest { @Test public void testConvert01() { - final MutableContextData map = new SortedStringArrayMap(); + final StringMap map = new SortedArrayStringMap(); map.putValue("test1", "another1"); map.putValue("key2", "value2"); @@ -48,7 +48,7 @@ public class ContextDataJsonAttributeConverterTest { assertNotNull("The converted value should not be null.", converted); - final ContextData reversed = this.converter.convertToEntityAttribute(converted); + final ReadOnlyStringMap reversed = this.converter.convertToEntityAttribute(converted); assertNotNull("The reversed value should not be null.", reversed); assertEquals("The reversed value is not correct.", map, reversed); @@ -56,7 +56,7 @@ public class ContextDataJsonAttributeConverterTest { @Test public void testConvert02() { - final MutableContextData map = new SortedStringArrayMap(); + final StringMap map = new SortedArrayStringMap(); map.putValue("someKey", "coolValue"); map.putValue("anotherKey", "testValue"); map.putValue("myKey", "yourValue"); @@ -65,7 +65,7 @@ public class ContextDataJsonAttributeConverterTest { assertNotNull("The converted value should not be null.", converted); - final ContextData reversed = this.converter.convertToEntityAttribute(converted); + final ReadOnlyStringMap reversed = this.converter.convertToEntityAttribute(converted); assertNotNull("The reversed value should not be null.", reversed); assertEquals("The reversed value is not correct.", map, reversed); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 16fc036..fb33926 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.util.MutableContextData; +import org.apache.logging.log4j.util.StringMap; import org.apache.logging.log4j.core.impl.ThrowableProxy; import org.apache.logging.log4j.message.Message; import org.apache.logging.log4j.message.SimpleMessage; @@ -57,7 +57,7 @@ public class RingBufferLogEventTest { final StackTraceElement location = null; final long currentTimeMillis = 0; final long nanoTime = 1; - evt.setValues(null, loggerName, marker, fqcn, level, data, t, (MutableContextData) evt.getContextData(), + evt.setValues(null, loggerName, marker, fqcn, level, data, t, (StringMap) evt.getContextData(), contextStack, -1, threadName, -1, location, currentTimeMillis, nanoTime); assertEquals(Level.OFF, evt.getLevel()); } @@ -76,7 +76,7 @@ public class RingBufferLogEventTest { final StackTraceElement location = null; final long currentTimeMillis = 0; final long nanoTime = 1; - evt.setValues(null, loggerName, marker, fqcn, level, data, t, (MutableContextData) evt.getContextData(), + evt.setValues(null, loggerName, marker, fqcn, level, data, t, (StringMap) evt.getContextData(), contextStack, -1, threadName, -1, location, currentTimeMillis, nanoTime); assertNotNull(evt.getMessage()); } @@ -95,7 +95,7 @@ public class RingBufferLogEventTest { final StackTraceElement location = null; final long currentTimeMillis = 123; final long nanoTime = 1; - evt.setValues(null, loggerName, marker, fqcn, level, data, t, (MutableContextData) evt.getContextData(), + evt.setValues(null, loggerName, marker, fqcn, level, data, t, (StringMap) evt.getContextData(), contextStack, -1, threadName, -1, location, currentTimeMillis, nanoTime); assertEquals(123, evt.getTimeMillis()); } @@ -114,9 +114,9 @@ public class RingBufferLogEventTest { final StackTraceElement location = null; final long currentTimeMillis = 12345; final long nanoTime = 1; - evt.setValues(null, loggerName, marker, fqcn, level, data, t, (MutableContextData) evt.getContextData(), + evt.setValues(null, loggerName, marker, fqcn, level, data, t, (StringMap) evt.getContextData(), contextStack, -1, threadName, -1, location, currentTimeMillis, nanoTime); - ((MutableContextData) evt.getContextData()).putValue("key", "value"); + ((StringMap) evt.getContextData()).putValue("key", "value"); final ByteArrayOutputStream baos = new ByteArrayOutputStream(); final ObjectOutputStream out = new ObjectOutputStream(baos); @@ -152,9 +152,9 @@ public class RingBufferLogEventTest { final StackTraceElement location = null; final long currentTimeMillis = 12345; final long nanoTime = 1; - evt.setValues(null, loggerName, marker, fqcn, level, data, t, (MutableContextData) evt.getContextData(), + evt.setValues(null, loggerName, marker, fqcn, level, data, t, (StringMap) evt.getContextData(), contextStack, -1, threadName, -1, location, currentTimeMillis, nanoTime); - ((MutableContextData) evt.getContextData()).putValue("key", "value"); + ((StringMap) evt.getContextData()).putValue("key", "value"); final LogEvent actual = evt.createMemento(); assertEquals(evt.getLoggerName(), actual.getLoggerName()); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 b662eff..0199444 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 @@ -40,8 +40,8 @@ import org.apache.logging.log4j.core.util.DummyNanoClock; 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.util.MutableContextData; +import org.apache.logging.log4j.util.SortedArrayStringMap; +import org.apache.logging.log4j.util.StringMap; import org.apache.logging.log4j.util.Strings; import org.junit.AfterClass; import org.junit.BeforeClass; @@ -285,7 +285,7 @@ public class Log4jLogEventTest { @Test public void testBuilderCorrectlyCopiesAllEventAttributesInclContextData() { - final MutableContextData contextData = new SortedStringArrayMap(); + final StringMap contextData = new SortedArrayStringMap(); contextData.putValue("A", "B"); final ContextStack contextStack = ThreadContext.getImmutableStack(); final Exception exception = new Exception("test"); @@ -334,7 +334,7 @@ public class Log4jLogEventTest { @Test public void testBuilderCorrectlyCopiesMutableLogEvent() throws Exception { - final MutableContextData contextData = new SortedStringArrayMap(); + final StringMap contextData = new SortedArrayStringMap(); contextData.putValue("A", "B"); final ContextStack contextStack = ThreadContext.getImmutableStack(); final Exception exception = new Exception("test"); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 5ce6fca..843115d 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 @@ -29,8 +29,8 @@ import org.apache.logging.log4j.MarkerManager; 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.util.MutableContextData; +import org.apache.logging.log4j.util.SortedArrayStringMap; +import org.apache.logging.log4j.util.StringMap; import org.apache.logging.log4j.spi.MutableThreadContextStack; import org.junit.Test; @@ -40,11 +40,11 @@ import static org.junit.Assert.*; * Tests the MutableLogEvent class. */ public class MutableLogEventTest { - private static final MutableContextData CONTEXT_DATA = createContextData(); + private static final StringMap CONTEXT_DATA = createContextData(); private static final ThreadContext.ContextStack STACK = new MutableThreadContextStack(Arrays.asList("abc", "xyz")); - private static MutableContextData createContextData() { - final MutableContextData result = new SortedStringArrayMap(); + private static StringMap createContextData() { + final StringMap result = new SortedArrayStringMap(); result.putValue("a", "1"); result.putValue("b", "2"); return result; http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 7ecffe0..355f654 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.util.ContextData; +import org.apache.logging.log4j.util.ReadOnlyStringMap; import org.apache.logging.log4j.core.LogEvent; import org.apache.logging.log4j.core.impl.ThrowableProxy; import org.apache.logging.log4j.core.util.Patterns; @@ -326,7 +326,7 @@ public class FlumeEvent extends SimpleEvent implements LogEvent { * @return the context data of the {@code LogEvent} that this {@code FlumeEvent} was constructed with. */ @Override - public ContextData getContextData() { + public ReadOnlyStringMap getContextData() { return event.getContextData(); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/SortedArrayVsHashMapBenchmark.java ---------------------------------------------------------------------- diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/SortedArrayVsHashMapBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/SortedArrayVsHashMapBenchmark.java index f2692de..df63b5f 100644 --- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/SortedArrayVsHashMapBenchmark.java +++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/SortedArrayVsHashMapBenchmark.java @@ -23,7 +23,7 @@ import java.util.Random; import java.util.concurrent.TimeUnit; import org.apache.logging.log4j.perf.nogc.OpenHashMapContextData; -import org.apache.logging.log4j.util.SortedStringArrayMap; +import org.apache.logging.log4j.util.SortedArrayStringMap; import org.apache.logging.log4j.util.BiConsumer; import org.apache.logging.log4j.util.TriConsumer; import org.openjdk.jmh.annotations.Benchmark; @@ -39,7 +39,7 @@ import org.openjdk.jmh.annotations.State; import org.openjdk.jmh.annotations.Warmup; /** - * Compares performance of SortedStringArrayMap vs. OpenHashMap vs. JDK HashMap. + * Compares performance of SortedArrayStringMap vs. OpenHashMap vs. JDK HashMap. */ // ============================== HOW TO RUN THIS TEST: ==================================== // (Quick build: mvn -DskipTests=true clean package -pl log4j-perf -am ) @@ -72,17 +72,17 @@ public class SortedArrayVsHashMapBenchmark { private String[] keys; private static Object value = new Object(); private HashMap<String, Object> map; - private SortedStringArrayMap sortedStringArrayMap; + private SortedArrayStringMap sortedStringArrayMap; private OpenHashMapContextData<String, Object> openHashMapContextData; private HashMap<String, Object> populatedMap; - private SortedStringArrayMap populatedSortedStringArrayMap; + private SortedArrayStringMap populatedSortedStringArrayMap; private OpenHashMapContextData<String, Object> populatedOpenHashContextData; @Setup public void setup() { openHashMapContextData = new OpenHashMapContextData<>(); - sortedStringArrayMap = new SortedStringArrayMap(); + sortedStringArrayMap = new SortedArrayStringMap(); map = new HashMap<>(); keys = new String[count]; @@ -99,7 +99,7 @@ public class SortedArrayVsHashMapBenchmark { for (int i = 0; i < count; i++) { populatedMap.put(keys[i], value); } - populatedSortedStringArrayMap = new SortedStringArrayMap(); + populatedSortedStringArrayMap = new SortedArrayStringMap(); for (int i = 0; i < count; i++) { populatedSortedStringArrayMap.putValue(keys[i], value); } @@ -110,7 +110,7 @@ public class SortedArrayVsHashMapBenchmark { } @Benchmark - public SortedStringArrayMap putAllArrayContextData() { + public SortedArrayStringMap putAllArrayContextData() { sortedStringArrayMap.clear(); sortedStringArrayMap.putAll(populatedSortedStringArrayMap); return sortedStringArrayMap; @@ -131,8 +131,8 @@ public class SortedArrayVsHashMapBenchmark { } @Benchmark - public SortedStringArrayMap cloneArrayContextData() { - return new SortedStringArrayMap(populatedSortedStringArrayMap); + public SortedArrayStringMap cloneArrayContextData() { + return new SortedArrayStringMap(populatedSortedStringArrayMap); } @Benchmark http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 a04a5c4..7ca0855 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,9 +34,9 @@ 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.util.MutableContextData; +import org.apache.logging.log4j.util.SortedArrayStringMap; +import org.apache.logging.log4j.util.StringMap; import org.apache.logging.log4j.spi.ThreadContextMap; -import org.apache.logging.log4j.util.SortedStringArrayMap; import org.openjdk.jmh.annotations.Benchmark; import org.openjdk.jmh.annotations.BenchmarkMode; import org.openjdk.jmh.annotations.Fork; @@ -99,7 +99,7 @@ public class ThreadContextBenchmark { private List<Property> propertyList; private ContextDataInjector injector; - private MutableContextData reusableContextData; + private StringMap reusableContextData; @Setup public void setup() { @@ -110,7 +110,7 @@ public class ThreadContextBenchmark { System.out.println(threadContextMapAlias + ": Injector = " + injector); reusableContextData = threadContextMapAlias.contains("Array") - ? new SortedStringArrayMap() + ? new SortedArrayStringMap() : new OpenHashMapContextData<>(); keys = new String[count]; @@ -161,13 +161,13 @@ public class ThreadContextBenchmark { } @Benchmark - public MutableContextData injectWithoutProperties() { + public StringMap injectWithoutProperties() { reusableContextData.clear(); return injector.injectContextData(null, reusableContextData); } @Benchmark - public MutableContextData injectWithProperties() { + public StringMap injectWithProperties() { reusableContextData.clear(); return injector.injectContextData(propertyList, reusableContextData); } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 fa228ac..1d7c647 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,14 +26,14 @@ import java.util.HashMap; import java.util.Map; import java.util.Objects; -import org.apache.logging.log4j.util.ContextData; -import org.apache.logging.log4j.util.MutableContextData; +import org.apache.logging.log4j.util.ReadOnlyStringMap; +import org.apache.logging.log4j.util.StringMap; import org.apache.logging.log4j.spi.ThreadContextMap; import org.apache.logging.log4j.util.BiConsumer; import org.apache.logging.log4j.util.TriConsumer; /** - * Open hash map-based implementation of the {@code ContextData} interface. + * Open hash map-based implementation of the {@code ReadOnlyStringMap} interface. * Implementation based on <a href="http://fastutil.di.unimi.it/">fastutil</a>'s * <a href="http://fastutil.di.unimi.it/docs/it/unimi/dsi/fastutil/objects/Object2ObjectOpenHashMap.html">Object2ObjectOpenHashMap</a>. * <p> @@ -60,7 +60,7 @@ import org.apache.logging.log4j.util.TriConsumer; * * @since 2.7 */ -public class OpenHashMapContextData<K, V> implements MutableContextData, ThreadContextMap { +public class OpenHashMapContextData<K, V> implements StringMap, ThreadContextMap { /** The initial default size of a hash table. */ public static final int DEFAULT_INITIAL_SIZE = 16; @@ -169,7 +169,7 @@ public class OpenHashMapContextData<K, V> implements MutableContextData, ThreadC * @param contextData * a type-specific map to be copied into the new hash map. */ - public OpenHashMapContextData(final ContextData contextData) { + public OpenHashMapContextData(final ReadOnlyStringMap contextData) { this(contextData, DEFAULT_LOAD_FACTOR); } /** @@ -180,7 +180,7 @@ public class OpenHashMapContextData<K, V> implements MutableContextData, ThreadC * @param f * the load factor. */ - public OpenHashMapContextData(final ContextData contextData, final float f) { + public OpenHashMapContextData(final ReadOnlyStringMap contextData, final float f) { this(contextData.size(), f); if (contextData instanceof OpenHashMapContextData) { initFrom0((OpenHashMapContextData) contextData); @@ -188,10 +188,10 @@ public class OpenHashMapContextData<K, V> implements MutableContextData, ThreadC contextData.forEach(PUT_ALL, this); } } - private static final TriConsumer<String, Object, MutableContextData> PUT_ALL = - new TriConsumer<String, Object, MutableContextData>() { + private static final TriConsumer<String, Object, StringMap> PUT_ALL = + new TriConsumer<String, Object, StringMap>() { @Override - public void accept(final String key, final Object value, final MutableContextData contextData) { + public void accept(final String key, final Object value, final StringMap contextData) { contextData.putValue(key, value); } }; @@ -310,10 +310,10 @@ public class OpenHashMapContextData<K, V> implements MutableContextData, ThreadC if (obj == this) { return true; } - if (!(obj instanceof ContextData)) { + if (!(obj instanceof ReadOnlyStringMap)) { return false; } - final ContextData other = (ContextData) obj; + final ReadOnlyStringMap other = (ReadOnlyStringMap) obj; if (other.size() != size()) { return false; } @@ -483,7 +483,7 @@ public class OpenHashMapContextData<K, V> implements MutableContextData, ThreadC } @Override - public void putAll(final ContextData source) { + public void putAll(final ReadOnlyStringMap source) { assertNotFrozen(); assertNoConcurrentModification(); http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 6724aed..a0c6975 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,8 +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.ReadOnlyStringMap; +import org.apache.logging.log4j.util.StringMap; import org.apache.logging.log4j.util.PropertiesUtil; /** @@ -34,13 +34,13 @@ public class CopyOnWriteOpenHashMapThreadContextMap extends CopyOnWriteSortedArr public static final Class<? extends ThreadContextMap> SUPER = CopyOnWriteSortedArrayThreadContextMap.class; @Override - protected MutableContextData createMutableContextData() { + protected StringMap createStringMap() { return new OpenHashMapContextData<>(PropertiesUtil.getProperties().getIntegerProperty( PROPERTY_NAME_INITIAL_CAPACITY, DEFAULT_INITIAL_CAPACITY)); } @Override - protected MutableContextData createMutableContextData(final ContextData original) { + protected StringMap createStringMap(final ReadOnlyStringMap original) { return new OpenHashMapContextData<>(original); } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 8f1a931..b3ccf64 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,8 +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.ReadOnlyStringMap; +import org.apache.logging.log4j.util.StringMap; import org.apache.logging.log4j.util.PropertiesUtil; /** @@ -37,13 +37,13 @@ public class GarbageFreeOpenHashMapThreadContextMap extends GarbageFreeSortedArr public static final Class<? extends ThreadContextMap> SUPER = GarbageFreeSortedArrayThreadContextMap.class; @Override - protected MutableContextData createMutableContextData() { + protected StringMap createStringMap() { return new OpenHashMapContextData<>(PropertiesUtil.getProperties().getIntegerProperty( PROPERTY_NAME_INITIAL_CAPACITY, DEFAULT_INITIAL_CAPACITY)); } @Override - protected MutableContextData createMutableContextData(final ContextData original) { + protected StringMap createStringMap(final ReadOnlyStringMap original) { return new OpenHashMapContextData<>(original); } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/800db9c7/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 e048896..6b0f3ae 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,9 +19,9 @@ package org.apache.logging.slf4j; import java.util.Map; import java.util.Map.Entry; -import org.apache.logging.log4j.util.MutableContextData; +import org.apache.logging.log4j.util.StringMap; import org.apache.logging.log4j.spi.ThreadContextMap2; -import org.apache.logging.log4j.util.SortedStringArrayMap; +import org.apache.logging.log4j.util.SortedArrayStringMap; import org.slf4j.MDC; /** @@ -29,7 +29,7 @@ import org.slf4j.MDC; */ public class MDCContextMap implements ThreadContextMap2 { - private static final MutableContextData EMPTY_CONTEXT_DATA = new SortedStringArrayMap(); + private static final StringMap EMPTY_CONTEXT_DATA = new SortedArrayStringMap(); static { EMPTY_CONTEXT_DATA.freeze(); } @@ -84,12 +84,12 @@ public class MDCContextMap implements ThreadContextMap2 { } @Override - public MutableContextData getReadOnlyContextData() { + public StringMap getReadOnlyContextData() { final Map<String, String> copy = getCopy(); if (copy.isEmpty()) { return EMPTY_CONTEXT_DATA; } - final MutableContextData result = new SortedStringArrayMap(); + final StringMap result = new SortedArrayStringMap(); for (Entry<String, String> entry : copy.entrySet()) { result.putValue(entry.getKey(), entry.getValue()); }