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()) {

Reply via email to