Remove EmptyStringMap class
Project: http://git-wip-us.apache.org/repos/asf/logging-log4j2/repo Commit: http://git-wip-us.apache.org/repos/asf/logging-log4j2/commit/c9bdbb73 Tree: http://git-wip-us.apache.org/repos/asf/logging-log4j2/tree/c9bdbb73 Diff: http://git-wip-us.apache.org/repos/asf/logging-log4j2/diff/c9bdbb73 Branch: refs/heads/LOG4J2-1645 Commit: c9bdbb73d757e48afa4fb992b52012ff6b6953ec Parents: 8f3dee3 Author: Mikael Ståldal <[email protected]> Authored: Mon Oct 24 10:14:45 2016 +0200 Committer: Mikael Ståldal <[email protected]> Committed: Mon Oct 24 10:14:45 2016 +0200 ---------------------------------------------------------------------- .../CopyOnWriteSortedArrayThreadContextMap.java | 8 +- .../log4j/util/EmptyFrozenStringMap.java | 105 ------------------- .../log4j/core/impl/ContextDataFactory.java | 10 +- .../org/apache/logging/slf4j/MDCContextMap.java | 8 +- 4 files changed, 18 insertions(+), 113 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c9bdbb73/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 cd6d707..2530dff 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,7 +20,6 @@ import java.util.Collections; import java.util.HashMap; import java.util.Map; -import org.apache.logging.log4j.util.EmptyFrozenStringMap; import org.apache.logging.log4j.util.ReadOnlyStringMap; import org.apache.logging.log4j.util.SortedArrayStringMap; import org.apache.logging.log4j.util.StringMap; @@ -53,6 +52,11 @@ class CopyOnWriteSortedArrayThreadContextMap implements ThreadContextMap2, CopyO */ protected static final String PROPERTY_NAME_INITIAL_CAPACITY = "log4j2.ThreadContext.initial.capacity"; + private static final StringMap EMPTY_CONTEXT_DATA = new SortedArrayStringMap(1); + static { + EMPTY_CONTEXT_DATA.freeze(); + } + private final ThreadLocal<StringMap> localMap; public CopyOnWriteSortedArrayThreadContextMap() { @@ -164,7 +168,7 @@ class CopyOnWriteSortedArrayThreadContextMap implements ThreadContextMap2, CopyO @Override public StringMap getReadOnlyContextData() { final StringMap map = localMap.get(); - return map == null ? EmptyFrozenStringMap.INSTANCE : map; + return map == null ? EMPTY_CONTEXT_DATA : map; } @Override http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c9bdbb73/log4j-api/src/main/java/org/apache/logging/log4j/util/EmptyFrozenStringMap.java ---------------------------------------------------------------------- diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/EmptyFrozenStringMap.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/EmptyFrozenStringMap.java deleted file mode 100644 index b0a3ff8..0000000 --- a/log4j-api/src/main/java/org/apache/logging/log4j/util/EmptyFrozenStringMap.java +++ /dev/null @@ -1,105 +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.util; - -import java.util.Collections; -import java.util.Map; - -/** - * <em>Consider this class private.</em> - * Empty pre-frozen implementation of the {@link StringMap} interface. - * - * @since 2.7.1 - */ -public class EmptyFrozenStringMap implements StringMap { - - /** - * Singleton instance. - */ - public static final EmptyFrozenStringMap INSTANCE = new EmptyFrozenStringMap(); - - private static final String FROZEN = "Frozen collection cannot be modified"; - - /** - * Private default constructor to enforce singleton. - */ - private EmptyFrozenStringMap() { - } - - @Override - public Map<String, String> toMap() { - return Collections.emptyMap(); - } - - @Override - public boolean containsKey(String key) { - return false; - } - - @Override - public <V> void forEach(BiConsumer<String, ? super V> action) { - } - - @Override - public <V, S> void forEach(TriConsumer<String, ? super V, S> action, S state) { - } - - @Override - public <V> V getValue(String key) { - return null; - } - - @Override - public boolean isEmpty() { - return true; - } - - @Override - public int size() { - return 0; - } - - @Override - public void clear() { - } - - @Override - public void freeze() { - } - - @Override - public boolean isFrozen() { - return true; - } - - @Override - public void putAll(ReadOnlyStringMap source) { - if (source == this || source.isEmpty()) { // throw NPE if null - return; // this.putAll(this) does not modify this collection - } - throw new UnsupportedOperationException(FROZEN); - } - - @Override - public void putValue(String key, Object value) { - throw new UnsupportedOperationException(FROZEN); - } - - @Override - public void remove(String key) { - } -} http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c9bdbb73/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 fc85932..410c128 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 @@ -20,7 +20,6 @@ import java.lang.reflect.Constructor; import org.apache.logging.log4j.core.ContextDataInjector; import org.apache.logging.log4j.core.LogEvent; -import org.apache.logging.log4j.util.EmptyFrozenStringMap; import org.apache.logging.log4j.util.LoaderUtil; import org.apache.logging.log4j.util.PropertiesUtil; import org.apache.logging.log4j.util.SortedArrayStringMap; @@ -48,6 +47,11 @@ public class ContextDataFactory { private static final Class<?> CACHED_CLASS = createCachedClass(CLASS_NAME); private static final Constructor<?> CACHED_CONSTRUCTOR = createCachedConstructor(CACHED_CLASS); + private static final StringMap EMPTY_STRING_MAP = createContextData(1); + static { + EMPTY_STRING_MAP.freeze(); + } + private static Class<?> createCachedClass(final String className) { if (className == null) { return null; @@ -96,12 +100,10 @@ public class ContextDataFactory { /** * An empty pre-frozen StringMap. The returned object may be shared. - * <p> - * Not affected by the system property {@code "log4j2.ContextData"}. * * @return an empty pre-frozen StringMap */ public static StringMap emptyFrozenContextData() { - return EmptyFrozenStringMap.INSTANCE; + return EMPTY_STRING_MAP; } } http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/c9bdbb73/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 cb3a349..f41fdb6 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,6 @@ package org.apache.logging.slf4j; import java.util.Map; import java.util.Map.Entry; -import org.apache.logging.log4j.util.EmptyFrozenStringMap; import org.apache.logging.log4j.util.StringMap; import org.apache.logging.log4j.spi.ThreadContextMap2; import org.apache.logging.log4j.util.SortedArrayStringMap; @@ -30,6 +29,11 @@ import org.slf4j.MDC; */ public class MDCContextMap implements ThreadContextMap2 { + private static final StringMap EMPTY_CONTEXT_DATA = new SortedArrayStringMap(1); + static { + EMPTY_CONTEXT_DATA.freeze(); + } + @Override public void put(final String key, final String value) { MDC.put(key, value); @@ -83,7 +87,7 @@ public class MDCContextMap implements ThreadContextMap2 { public StringMap getReadOnlyContextData() { final Map<String, String> copy = getCopy(); if (copy.isEmpty()) { - return EmptyFrozenStringMap.INSTANCE; + return EMPTY_CONTEXT_DATA; } final StringMap result = new SortedArrayStringMap(); for (Entry<String, String> entry : copy.entrySet()) {
