You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by rp...@apache.org on 2016/09/12 14:17:09 UTC

logging-log4j2 git commit: LOG4J2-1447 No need for ArrayContextData to implement the ThreadContextMap interface; deleted unused methods

Repository: logging-log4j2
Updated Branches:
  refs/heads/master dbcb5a7ff -> 0fac914f9


LOG4J2-1447	No need for ArrayContextData to implement the ThreadContextMap interface; deleted unused methods


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

Branch: refs/heads/master
Commit: 0fac914f9c76552a092990f62fae7cfae8777149
Parents: dbcb5a7
Author: rpopma <rp...@apache.org>
Authored: Mon Sep 12 23:17:01 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Mon Sep 12 23:17:01 2016 +0900

----------------------------------------------------------------------
 .../logging/log4j/util/ArrayContextData.java    |  29 +---
 .../log4j/util/ArrayContextDataTest.java        | 133 +++++++------------
 .../jmh/ArrayContextDataVsHashMapBenchmark.java |   2 +-
 3 files changed, 52 insertions(+), 112 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/0fac914f/log4j-api/src/main/java/org/apache/logging/log4j/util/ArrayContextData.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/ArrayContextData.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/ArrayContextData.java
index 01b2c8c..fd9e9bb 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/ArrayContextData.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/ArrayContextData.java
@@ -19,7 +19,6 @@ package org.apache.logging.log4j.util;
 import java.io.IOException;
 import java.io.InvalidObjectException;
 import java.util.Arrays;
-import java.util.Collections;
 import java.util.ConcurrentModificationException;
 import java.util.HashMap;
 import java.util.Map;
@@ -27,7 +26,6 @@ import java.util.Objects;
 
 import org.apache.logging.log4j.spi.ContextData;
 import org.apache.logging.log4j.spi.MutableContextData;
-import org.apache.logging.log4j.spi.ThreadContextMap;
 
 /**
  * Array-based implementation of the {@code ContextData} interface. Keys are held in a sorted array.
@@ -51,7 +49,7 @@ import org.apache.logging.log4j.spi.ThreadContextMap;
  *
  * @since 2.7
  */
-public class ArrayContextData implements MutableContextData, ThreadContextMap {
+public class ArrayContextData implements MutableContextData {
 
     /**
      * The default initial capacity.
@@ -161,22 +159,6 @@ public class ArrayContextData implements MutableContextData, ThreadContextMap {
         return immutable;
     }
 
-    @Override
-    public Map<String, String> getCopy() {
-        return asMap();
-    }
-
-    @Override
-    public Map<String, String> getImmutableMapOrNull() {
-        return isEmpty() ? null : Collections.unmodifiableMap(asMap());
-    }
-
-    @Override
-    public String get(final String key) {
-        final Object result = getValue(key);
-        return result == null ? null : String.valueOf(result);
-    }
-
     @SuppressWarnings("unchecked")
     @Override
     public <V> V getValue(final String key) {
@@ -208,11 +190,6 @@ public class ArrayContextData implements MutableContextData, ThreadContextMap {
     }
 
     @Override
-    public void put(final String key, final String value) {
-        putValue(key, value);
-    }
-
-    @Override
     public void putValue(final String key, final Object value) {
         assertNotFrozen();
         assertNoConcurrentModification();
@@ -253,10 +230,6 @@ public class ArrayContextData implements MutableContextData, ThreadContextMap {
         }
     }
 
-    public void initFrom(final ArrayContextData other) {
-        initFrom0(other);
-    }
-
     private void initFrom0(final ArrayContextData other) {
         if (keys.length < other.size) {
             keys = new String[other.threshold];

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/0fac914f/log4j-api/src/test/java/org/apache/logging/log4j/util/ArrayContextDataTest.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/test/java/org/apache/logging/log4j/util/ArrayContextDataTest.java b/log4j-api/src/test/java/org/apache/logging/log4j/util/ArrayContextDataTest.java
index ae79888..274972e 100644
--- a/log4j-api/src/test/java/org/apache/logging/log4j/util/ArrayContextDataTest.java
+++ b/log4j-api/src/test/java/org/apache/logging/log4j/util/ArrayContextDataTest.java
@@ -146,35 +146,9 @@ public class ArrayContextDataTest {
         expected.put("3", "3value");
 
         assertEquals(expected, original.asMap());
-    }
-
-    @Test
-    public void testGetCopyDelegatesToAsMap() throws Exception {
-        final ArrayContextData original = new ArrayContextData();
-        original.putValue("a", "avalue");
-        assertEquals(original.getCopy(), original.asMap());
-
-        original.putValue("B", "Bvalue");
-        assertEquals(original.getCopy(), original.asMap());
-
-        original.putValue("3", "3value");
-        assertEquals(original.getCopy(), original.asMap());
-    }
-
-    @Test
-    public void testGetImmutableMapOrNull() throws Exception {
-        final ArrayContextData original = new ArrayContextData();
-        original.putValue("a", "avalue");
-        assertEquals(original.getImmutableMapOrNull(), original.asMap());
-
-        original.putValue("B", "Bvalue");
-        assertEquals(original.getImmutableMapOrNull(), original.asMap());
-
-        original.putValue("3", "3value");
-        assertEquals(original.getImmutableMapOrNull(), original.asMap());
 
         try {
-            original.getImmutableMapOrNull().put("abc", "xyz");
+            original.asMap().put("abc", "xyz");
             fail("Expected map to be immutable");
         } catch (final UnsupportedOperationException ok) {
             //ok
@@ -184,57 +158,57 @@ public class ArrayContextDataTest {
     @Test
     public void testPutAll_KeepsExistingValues() {
         final ArrayContextData original = new ArrayContextData();
-        original.put("a", "aaa");
-        original.put("b", "bbb");
-        original.put("c", "ccc");
+        original.putValue("a", "aaa");
+        original.putValue("b", "bbb");
+        original.putValue("c", "ccc");
         assertEquals("size", 3, original.size());
 
         // add empty context data
         original.putAll(new ArrayContextData());
         assertEquals("size after put empty", 3, original.size());
-        assertEquals("aaa", original.get("a"));
-        assertEquals("bbb", original.get("b"));
-        assertEquals("ccc", original.get("c"));
+        assertEquals("aaa", original.getValue("a"));
+        assertEquals("bbb", original.getValue("b"));
+        assertEquals("ccc", original.getValue("c"));
 
         final ArrayContextData other = new ArrayContextData();
-        other.put("1", "111");
-        other.put("2", "222");
-        other.put("3", "333");
+        other.putValue("1", "111");
+        other.putValue("2", "222");
+        other.putValue("3", "333");
         original.putAll(other);
 
         assertEquals("size after put other", 6, original.size());
-        assertEquals("aaa", original.get("a"));
-        assertEquals("bbb", original.get("b"));
-        assertEquals("ccc", original.get("c"));
-        assertEquals("111", original.get("1"));
-        assertEquals("222", original.get("2"));
-        assertEquals("333", original.get("3"));
+        assertEquals("aaa", original.getValue("a"));
+        assertEquals("bbb", original.getValue("b"));
+        assertEquals("ccc", original.getValue("c"));
+        assertEquals("111", original.getValue("1"));
+        assertEquals("222", original.getValue("2"));
+        assertEquals("333", original.getValue("3"));
     }
 
     @Test
     public void testPutAllSelfDoesNotModify() {
         final ArrayContextData original = new ArrayContextData();
-        original.put("a", "aaa");
-        original.put("b", "bbb");
-        original.put("c", "ccc");
+        original.putValue("a", "aaa");
+        original.putValue("b", "bbb");
+        original.putValue("c", "ccc");
         assertEquals("size", 3, original.size());
 
         // putAll with self
         original.putAll(original);
         assertEquals("size after put empty", 3, original.size());
-        assertEquals("aaa", original.get("a"));
-        assertEquals("bbb", original.get("b"));
-        assertEquals("ccc", original.get("c"));
+        assertEquals("aaa", original.getValue("a"));
+        assertEquals("bbb", original.getValue("b"));
+        assertEquals("ccc", original.getValue("c"));
     }
 
     @Test(expected = ConcurrentModificationException.class)
     public void testConcurrentModificationBiConsumerPut() {
         final ArrayContextData original = new ArrayContextData();
-        original.put("a", "aaa");
+        original.putValue("a", "aaa");
         original.forEach(new BiConsumer<String, Object>() {
             @Override
             public void accept(final String s, final Object o) {
-                original.put("c", "other");
+                original.putValue("c", "other");
             }
         });
     }
@@ -242,7 +216,7 @@ public class ArrayContextDataTest {
     @Test(expected = ConcurrentModificationException.class)
     public void testConcurrentModificationBiConsumerPutValue() {
         final ArrayContextData original = new ArrayContextData();
-        original.put("a", "aaa");
+        original.putValue("a", "aaa");
         original.forEach(new BiConsumer<String, Object>() {
             @Override
             public void accept(final String s, final Object o) {
@@ -254,7 +228,7 @@ public class ArrayContextDataTest {
     @Test(expected = ConcurrentModificationException.class)
     public void testConcurrentModificationBiConsumerRemove() {
         final ArrayContextData original = new ArrayContextData();
-        original.put("a", "aaa");
+        original.putValue("a", "aaa");
         original.forEach(new BiConsumer<String, Object>() {
             @Override
             public void accept(final String s, final Object o) {
@@ -266,7 +240,7 @@ public class ArrayContextDataTest {
     @Test(expected = ConcurrentModificationException.class)
     public void testConcurrentModificationBiConsumerClear() {
         final ArrayContextData original = new ArrayContextData();
-        original.put("a", "aaa");
+        original.putValue("a", "aaa");
         original.forEach(new BiConsumer<String, Object>() {
             @Override
             public void accept(final String s, final Object o) {
@@ -278,11 +252,11 @@ public class ArrayContextDataTest {
     @Test(expected = ConcurrentModificationException.class)
     public void testConcurrentModificationTriConsumerPut() {
         final ArrayContextData original = new ArrayContextData();
-        original.put("a", "aaa");
+        original.putValue("a", "aaa");
         original.forEach(new TriConsumer<String, Object, Object>() {
             @Override
             public void accept(final String s, final Object o, final Object o2) {
-                original.put("c", "other");
+                original.putValue("c", "other");
             }
         }, null);
     }
@@ -290,7 +264,7 @@ public class ArrayContextDataTest {
     @Test(expected = ConcurrentModificationException.class)
     public void testConcurrentModificationTriConsumerPutValue() {
         final ArrayContextData original = new ArrayContextData();
-        original.put("a", "aaa");
+        original.putValue("a", "aaa");
         original.forEach(new TriConsumer<String, Object, Object>() {
             @Override
             public void accept(final String s, final Object o, final Object o2) {
@@ -302,7 +276,7 @@ public class ArrayContextDataTest {
     @Test(expected = ConcurrentModificationException.class)
     public void testConcurrentModificationTriConsumerRemove() {
         final ArrayContextData original = new ArrayContextData();
-        original.put("a", "aaa");
+        original.putValue("a", "aaa");
         original.forEach(new TriConsumer<String, Object, Object>() {
             @Override
             public void accept(final String s, final Object o, final Object o2) {
@@ -314,7 +288,7 @@ public class ArrayContextDataTest {
     @Test(expected = ConcurrentModificationException.class)
     public void testConcurrentModificationTriConsumerClear() {
         final ArrayContextData original = new ArrayContextData();
-        original.put("a", "aaa");
+        original.putValue("a", "aaa");
         original.forEach(new TriConsumer<String, Object, Object>() {
             @Override
             public void accept(final String s, final Object o, final Object o2) {
@@ -337,13 +311,6 @@ public class ArrayContextDataTest {
     }
 
     @Test(expected = UnsupportedOperationException.class)
-    public void testFreezeProhibitsPut() {
-        final ArrayContextData original = new ArrayContextData();
-        original.freeze();
-        original.put("a", "aaa");
-    }
-
-    @Test(expected = UnsupportedOperationException.class)
     public void testFreezeProhibitsPutValue() {
         final ArrayContextData original = new ArrayContextData();
         original.freeze();
@@ -353,7 +320,7 @@ public class ArrayContextDataTest {
     @Test(expected = UnsupportedOperationException.class)
     public void testFreezeProhibitsRemove() {
         final ArrayContextData original = new ArrayContextData();
-        original.put("b", "bbb");
+        original.putValue("b", "bbb");
         original.freeze();
         original.remove("b"); // existing key: modifies the collection
     }
@@ -361,7 +328,7 @@ public class ArrayContextDataTest {
     @Test
     public void testFreezeAllowsRemoveOfNonExistingKey() {
         final ArrayContextData original = new ArrayContextData();
-        original.put("b", "bbb");
+        original.putValue("b", "bbb");
         original.freeze();
         original.remove("a"); // no actual modification
     }
@@ -376,7 +343,7 @@ public class ArrayContextDataTest {
     @Test(expected = UnsupportedOperationException.class)
     public void testFreezeProhibitsClear() {
         final ArrayContextData original = new ArrayContextData();
-        original.put("a", "aaa");
+        original.putValue("a", "aaa");
         original.freeze();
         original.clear();
     }
@@ -391,11 +358,11 @@ public class ArrayContextDataTest {
     @Test
     public void testPutInsertsInAlphabeticOrder() throws Exception {
         final ArrayContextData original = new ArrayContextData();
-        original.put("a", "avalue");
-        original.put("B", "Bvalue");
-        original.put("3", "3value");
-        original.put("c", "cvalue");
-        original.put("d", "dvalue");
+        original.putValue("a", "avalue");
+        original.putValue("B", "Bvalue");
+        original.putValue("3", "3value");
+        original.putValue("c", "cvalue");
+        original.putValue("d", "dvalue");
 
         assertEquals("avalue", original.getValue("a"));
         assertEquals("avalue", original.getValueAt(2));
@@ -540,19 +507,19 @@ public class ArrayContextDataTest {
     @Test
     public void testGet() throws Exception {
         final ArrayContextData original = new ArrayContextData();
-        original.put("a", "avalue");
-        original.put("B", "Bvalue");
-        original.put("3", "3value");
+        original.putValue("a", "avalue");
+        original.putValue("B", "Bvalue");
+        original.putValue("3", "3value");
 
-        assertEquals("avalue", original.get("a"));
-        assertEquals("Bvalue", original.get("B"));
-        assertEquals("3value", original.get("3"));
+        assertEquals("avalue", original.getValue("a"));
+        assertEquals("Bvalue", original.getValue("B"));
+        assertEquals("3value", original.getValue("3"));
 
         original.putValue("0", "0value");
-        assertEquals("0value", original.get("0"));
-        assertEquals("3value", original.get("3"));
-        assertEquals("Bvalue", original.get("B"));
-        assertEquals("avalue", original.get("a"));
+        assertEquals("0value", original.getValue("0"));
+        assertEquals("3value", original.getValue("3"));
+        assertEquals("Bvalue", original.getValue("B"));
+        assertEquals("avalue", original.getValue("a"));
     }
 
     @Test

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/0fac914f/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ArrayContextDataVsHashMapBenchmark.java
----------------------------------------------------------------------
diff --git a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ArrayContextDataVsHashMapBenchmark.java b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ArrayContextDataVsHashMapBenchmark.java
index 24148e1..23cca6b 100644
--- a/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ArrayContextDataVsHashMapBenchmark.java
+++ b/log4j-perf/src/main/java/org/apache/logging/log4j/perf/jmh/ArrayContextDataVsHashMapBenchmark.java
@@ -221,7 +221,7 @@ public class ArrayContextDataVsHashMapBenchmark {
 
     @Benchmark
     public int putArrayContextData() {
-        populatedContextData.put("someKey", "someValue");
+        populatedContextData.putValue("someKey", "someValue");
         return populatedContextData.size();
     }