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/11/14 14:22:22 UTC

logging-log4j2 git commit: LOG4J2-1683, LOG4J2-1677, LOG4J2-1678, LOG4J2-1679 introduce interfaces IndexedStringMap and IndexedReadOnlyStringMap that allow indexed access to the sorted key-value pairs in a StringMap

Repository: logging-log4j2
Updated Branches:
  refs/heads/master df481a19c -> 12d9c1b7f


LOG4J2-1683, LOG4J2-1677, LOG4J2-1678, LOG4J2-1679  introduce interfaces IndexedStringMap and IndexedReadOnlyStringMap that allow indexed access to the sorted key-value pairs in a StringMap


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

Branch: refs/heads/master
Commit: 12d9c1b7fa6cbf501cf9fbe70e55b81ccc153d8a
Parents: df481a1
Author: rpopma <rp...@apache.org>
Authored: Mon Nov 14 23:22:21 2016 +0900
Committer: rpopma <rp...@apache.org>
Committed: Mon Nov 14 23:22:21 2016 +0900

----------------------------------------------------------------------
 .../log4j/util/IndexedReadOnlyStringMap.java    | 46 ++++++++++++++++++++
 .../logging/log4j/util/IndexedStringMap.java    | 28 ++++++++++++
 .../log4j/util/SortedArrayStringMap.java        |  2 +-
 .../logging/log4j/core/filter/MapFilter.java    | 11 ++---
 .../log4j/core/filter/StructuredDataFilter.java |  4 +-
 .../core/filter/ThreadContextMapFilter.java     |  6 +--
 6 files changed, 86 insertions(+), 11 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/12d9c1b7/log4j-api/src/main/java/org/apache/logging/log4j/util/IndexedReadOnlyStringMap.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/IndexedReadOnlyStringMap.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/IndexedReadOnlyStringMap.java
new file mode 100644
index 0000000..b06ab34
--- /dev/null
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/IndexedReadOnlyStringMap.java
@@ -0,0 +1,46 @@
+/*
+ * 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;
+
+/**
+ * An extension of {@code ReadOnlyStringMap} that views all key-value pairs as a sequence ordered by key, and allows
+ * keys and values to be accessed by their index in the sequence.
+ *
+ * @see ReadOnlyStringMap
+ * @since 2.8
+ */
+public interface IndexedReadOnlyStringMap extends ReadOnlyStringMap {
+
+    /**
+     * Viewing all key-value pairs as a sequence sorted by key, this method returns the key at the specified index,
+     * or {@code null} if the specified index is less than zero or greater or equal to the size of this collection.
+     *
+     * @param index the index of the key to return
+     * @return the key at the specified index or {@code null}
+     */
+    String getKeyAt(final int index);
+
+    /**
+     * Viewing all key-value pairs as a sequence sorted by key, this method returns the value at the specified index,
+     * or {@code null} if the specified index is less than zero or greater or equal to the size of this collection.
+     *
+     * @param index the index of the value to return
+     * @return the value at the specified index or {@code null}
+     */
+    <V> V getValueAt(final int index);
+
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/12d9c1b7/log4j-api/src/main/java/org/apache/logging/log4j/util/IndexedStringMap.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/IndexedStringMap.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/IndexedStringMap.java
new file mode 100644
index 0000000..99c27a0
--- /dev/null
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/IndexedStringMap.java
@@ -0,0 +1,28 @@
+/*
+ * 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;
+
+/**
+ * An extension of {@code StringMap} that views all key-value pairs as a sequence ordered by key, and allows
+ * keys and values to be accessed by their index in the sequence.
+ *
+ * @see IndexedReadOnlyStringMap
+ * @see StringMap
+ * @since 2.8
+ */
+public interface IndexedStringMap extends IndexedReadOnlyStringMap, StringMap {
+}

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/12d9c1b7/log4j-api/src/main/java/org/apache/logging/log4j/util/SortedArrayStringMap.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/SortedArrayStringMap.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/SortedArrayStringMap.java
index dbb95a2..24df831 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/SortedArrayStringMap.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/SortedArrayStringMap.java
@@ -50,7 +50,7 @@ import org.apache.logging.log4j.status.StatusLogger;
  *
  * @since 2.7
  */
-public class SortedArrayStringMap implements StringMap {
+public class SortedArrayStringMap implements IndexedStringMap {
 
     /**
      * The default initial capacity.

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/12d9c1b7/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MapFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MapFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MapFilter.java
index f856a2d..85dc73e 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MapFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/MapFilter.java
@@ -36,6 +36,8 @@ import org.apache.logging.log4j.core.util.KeyValuePair;
 import org.apache.logging.log4j.message.MapMessage;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.util.BiConsumer;
+import org.apache.logging.log4j.util.IndexedReadOnlyStringMap;
+import org.apache.logging.log4j.util.IndexedStringMap;
 import org.apache.logging.log4j.util.PerformanceSensitive;
 import org.apache.logging.log4j.util.ReadOnlyStringMap;
 import org.apache.logging.log4j.util.SortedArrayStringMap;
@@ -47,8 +49,7 @@ import org.apache.logging.log4j.util.SortedArrayStringMap;
 @PerformanceSensitive("allocation")
 public class MapFilter extends AbstractFilter {
 
-    //private final Map<String, List<String>> map;
-    private final SortedArrayStringMap map;
+    private final IndexedStringMap map;
     private final boolean isAnd;
 
     protected MapFilter(final Map<String, List<String>> map, final boolean oper, final Result onMatch, final Result onMismatch) {
@@ -225,11 +226,11 @@ public class MapFilter extends AbstractFilter {
     }
 
     /**
-     * Returns the SortedArrayStringMap with {@code List<String>} values that this MapFilter was constructed with.
-     * @return the SortedArrayStringMap with {@code List<String>} values to match against
+     * Returns the IndexedStringMap with {@code List<String>} values that this MapFilter was constructed with.
+     * @return the IndexedStringMap with {@code List<String>} values to match against
      * @since 2.8
      */
-    protected SortedArrayStringMap getStringMap() {
+    protected IndexedReadOnlyStringMap getStringMap() {
         return map;
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/12d9c1b7/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/StructuredDataFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/StructuredDataFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/StructuredDataFilter.java
index a4a661a..9e46d27 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/StructuredDataFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/StructuredDataFilter.java
@@ -34,8 +34,8 @@ import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 import org.apache.logging.log4j.core.util.KeyValuePair;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.StructuredDataMessage;
+import org.apache.logging.log4j.util.IndexedReadOnlyStringMap;
 import org.apache.logging.log4j.util.PerformanceSensitive;
-import org.apache.logging.log4j.util.SortedArrayStringMap;
 import org.apache.logging.log4j.util.StringBuilders;
 
 /**
@@ -73,7 +73,7 @@ public final class StructuredDataFilter extends MapFilter {
 
     protected Result filter(final StructuredDataMessage message) {
         boolean match = false;
-        final SortedArrayStringMap map = getStringMap();
+        final IndexedReadOnlyStringMap map = getStringMap();
         for (int i = 0; i < map.size(); i++) {
             final StringBuilder toMatch = getValue(message, map.getKeyAt(i));
             if (toMatch != null) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/12d9c1b7/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
index 7c28f35..f4613f1 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/filter/ThreadContextMapFilter.java
@@ -24,6 +24,7 @@ import java.util.Map;
 
 import org.apache.logging.log4j.Level;
 import org.apache.logging.log4j.Marker;
+import org.apache.logging.log4j.core.ContextDataInjector;
 import org.apache.logging.log4j.core.Filter;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.core.Logger;
@@ -33,13 +34,12 @@ import org.apache.logging.log4j.core.config.plugins.PluginAliases;
 import org.apache.logging.log4j.core.config.plugins.PluginAttribute;
 import org.apache.logging.log4j.core.config.plugins.PluginElement;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
-import org.apache.logging.log4j.core.ContextDataInjector;
 import org.apache.logging.log4j.core.impl.ContextDataInjectorFactory;
 import org.apache.logging.log4j.core.util.KeyValuePair;
 import org.apache.logging.log4j.message.Message;
+import org.apache.logging.log4j.util.IndexedReadOnlyStringMap;
 import org.apache.logging.log4j.util.PerformanceSensitive;
 import org.apache.logging.log4j.util.ReadOnlyStringMap;
-import org.apache.logging.log4j.util.SortedArrayStringMap;
 
 /**
  * Filter based on a value in the Thread Context Map (MDC).
@@ -99,7 +99,7 @@ public class ThreadContextMapFilter extends MapFilter {
         boolean match = false;
         if (useMap) {
             ReadOnlyStringMap currentContextData = null;
-            final SortedArrayStringMap map = getStringMap();
+            final IndexedReadOnlyStringMap map = getStringMap();
             for (int i = 0; i < map.size(); i++) {
                 if (currentContextData == null) {
                     currentContextData = currentContextData();