You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by gg...@apache.org on 2017/06/05 16:28:24 UTC

logging-log4j2 git commit: Use MapMessage instead of StringMapMessage. Also use the more precise StructuredDataMessage in test assertions.

Repository: logging-log4j2
Updated Branches:
  refs/heads/GenericMapMessageSimple 1801de077 -> 1a153edb9


Use MapMessage instead of StringMapMessage. Also use the more precise
StructuredDataMessage in test assertions.

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

Branch: refs/heads/GenericMapMessageSimple
Commit: 1a153edb964b190f69981aec0a480f2533b1db6c
Parents: 1801de0
Author: Gary Gregory <gg...@apache.org>
Authored: Mon Jun 5 09:28:21 2017 -0700
Committer: Gary Gregory <gg...@apache.org>
Committed: Mon Jun 5 09:28:21 2017 -0700

----------------------------------------------------------------------
 .../logging/log4j/message/MapMessage.java       |  9 +++++----
 .../logging/log4j/message/StringMapMessage.java | 19 +++++++++++++++++--
 .../core/appender/rewrite/MapRewritePolicy.java | 20 +++++++++++---------
 .../logging/log4j/core/filter/MapFilter.java    | 12 ++++++------
 .../appender/rewrite/MapRewritePolicyTest.java  |  6 +++---
 .../appender/rewrite/RewriteAppenderTest.java   |  5 ++---
 6 files changed, 44 insertions(+), 27 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1a153edb/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java
index 612e5e3..621d8c2 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/MapMessage.java
@@ -146,10 +146,11 @@ public class MapMessage<M extends MapMessage<M, V>, V> implements MultiformatMes
      * Returns the message data as an unmodifiable Map.
      * @return the message data as an unmodifiable map.
      */
-    public Map<String, String> getData() {
-        final TreeMap<String, String> result = new TreeMap<>(); // returned map must be sorted
+    public Map<String, V> getData() {
+        final TreeMap<String, V> result = new TreeMap<>(); // returned map must be sorted
         for (int i = 0; i < data.size(); i++) {
-            result.put(data.getKeyAt(i), (String) data.getValueAt(i));
+            // The Eclipse compiler does not need the typecast to V, but the Oracle compiler sure does.
+            result.put(data.getKeyAt(i), (V) data.getValueAt(i));
         }
         return Collections.unmodifiableMap(result);
     }
@@ -415,7 +416,7 @@ public class MapMessage<M extends MapMessage<M, V>, V> implements MultiformatMes
      * @return A new MapMessage
      */
     @SuppressWarnings("unchecked")
-    public M newInstance(final Map<String, String> map) {
+    public M newInstance(final Map<String, V> map) {
         return (M) new MapMessage<>(map);
     }
 

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1a153edb/log4j-api/src/main/java/org/apache/logging/log4j/message/StringMapMessage.java
----------------------------------------------------------------------
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/message/StringMapMessage.java b/log4j-api/src/main/java/org/apache/logging/log4j/message/StringMapMessage.java
index 548a612..9c3ee18 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/message/StringMapMessage.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/message/StringMapMessage.java
@@ -19,11 +19,15 @@ package org.apache.logging.log4j.message;
 
 import java.util.Map;
 
+import org.apache.logging.log4j.util.PerformanceSensitive;
+
 /**
  * A {@link StringMapMessage} typed to {@link String}-only values. This is like the MapMessage class before 2.9.
  * 
  * @since 2.9
  */
+@PerformanceSensitive("allocation")
+@AsynchronouslyFormattable
 public class StringMapMessage extends MapMessage<StringMapMessage, String> {
 
     private static final long serialVersionUID = 1L;
@@ -38,7 +42,8 @@ public class StringMapMessage extends MapMessage<StringMapMessage, String> {
     /**
      * Constructs a new instance.
      * 
-     * @param  initialCapacity the initial capacity.
+     * @param initialCapacity
+     *            the initial capacity.
      */
     public StringMapMessage(final int initialCapacity) {
         super(initialCapacity);
@@ -46,10 +51,20 @@ public class StringMapMessage extends MapMessage<StringMapMessage, String> {
 
     /**
      * Constructs a new instance based on an existing Map.
-     * @param map The Map.
+     * 
+     * @param map
+     *            The Map.
      */
     public StringMapMessage(final Map<String, String> map) {
         super(map);
     }
 
+    /**
+     * Constructs a new instance based on an existing Map.
+     * @param map The Map.
+     * @return A new StringMapMessage
+     */
+    public StringMapMessage newInstance(final Map<String, String> map) {
+        return new StringMapMessage(map);
+    }
 }

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1a153edb/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicy.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicy.java b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicy.java
index 9c315fc..2084686 100644
--- a/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicy.java
+++ b/log4j-core/src/main/java/org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicy.java
@@ -28,7 +28,7 @@ import org.apache.logging.log4j.core.config.plugins.PluginElement;
 import org.apache.logging.log4j.core.config.plugins.PluginFactory;
 import org.apache.logging.log4j.core.impl.Log4jLogEvent;
 import org.apache.logging.log4j.core.util.KeyValuePair;
-import org.apache.logging.log4j.message.StringMapMessage;
+import org.apache.logging.log4j.message.MapMessage;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.status.StatusLogger;
 
@@ -42,11 +42,11 @@ public final class MapRewritePolicy implements RewritePolicy {
      */
     protected static final Logger LOGGER = StatusLogger.getLogger();
 
-    private final Map<String, String> map;
+    private final Map<String, Object> map;
 
     private final Mode mode;
 
-    private MapRewritePolicy(final Map<String, String> map, final Mode mode) {
+    private MapRewritePolicy(final Map<String, Object> map, final Mode mode) {
         this.map = map;
         this.mode = mode;
     }
@@ -60,25 +60,27 @@ public final class MapRewritePolicy implements RewritePolicy {
     @Override
     public LogEvent rewrite(final LogEvent source) {
         final Message msg = source.getMessage();
-        if (msg == null || !(msg instanceof StringMapMessage)) {
+        if (msg == null || !(msg instanceof MapMessage)) {
             return source;
         }
 
-        final Map<String, String> newMap = new HashMap<>(((StringMapMessage) msg).getData());
+        @SuppressWarnings("unchecked")
+        MapMessage<?, Object> mapMsg = (MapMessage<?, Object>) msg;
+        final Map<String, Object> newMap = new HashMap<>(mapMsg.getData());
         switch (mode) {
             case Add: {
                 newMap.putAll(map);
                 break;
             }
             default: {
-                for (final Map.Entry<String, String> entry : map.entrySet()) {
+                for (final Map.Entry<String, Object> entry : map.entrySet()) {
                     if (newMap.containsKey(entry.getKey())) {
                         newMap.put(entry.getKey(), entry.getValue());
                     }
                 }
             }
         }
-        final StringMapMessage message = ((StringMapMessage) msg).newInstance(newMap);
+        final Message message = mapMsg.newInstance(newMap);
         final LogEvent result = new Log4jLogEvent.Builder(source).setMessage(message).build();
         return result;
     }
@@ -104,7 +106,7 @@ public final class MapRewritePolicy implements RewritePolicy {
         sb.append("mode=").append(mode);
         sb.append(" {");
         boolean first = true;
-        for (final Map.Entry<String, String> entry : map.entrySet()) {
+        for (final Map.Entry<String, Object> entry : map.entrySet()) {
             if (!first) {
                 sb.append(", ");
             }
@@ -130,7 +132,7 @@ public final class MapRewritePolicy implements RewritePolicy {
             LOGGER.error("keys and values must be specified for the MapRewritePolicy");
             return null;
         }
-        final Map<String, String> map = new HashMap<>();
+        final Map<String, Object> map = new HashMap<>();
         for (final KeyValuePair pair : pairs) {
             final String key = pair.getKey();
             if (key == null) {

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1a153edb/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 b91038a..c2ebc37 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
@@ -33,7 +33,7 @@ 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.util.KeyValuePair;
-import org.apache.logging.log4j.message.StringMapMessage;
+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;
@@ -66,8 +66,8 @@ public class MapFilter extends AbstractFilter {
     @Override
     public Result filter(final Logger logger, final Level level, final Marker marker, final Message msg,
                          final Throwable t) {
-        if (msg instanceof StringMapMessage) {
-            return filter((StringMapMessage) msg) ? onMatch : onMismatch;
+        if (msg instanceof MapMessage) {
+            return filter((MapMessage) msg) ? onMatch : onMismatch;
         }
         return Result.NEUTRAL;
     }
@@ -75,13 +75,13 @@ public class MapFilter extends AbstractFilter {
     @Override
     public Result filter(final LogEvent event) {
         final Message msg = event.getMessage();
-        if (msg instanceof StringMapMessage) {
-            return filter((StringMapMessage) msg) ? onMatch : onMismatch;
+        if (msg instanceof MapMessage) {
+            return filter((MapMessage) msg) ? onMatch : onMismatch;
         }
         return Result.NEUTRAL;
     }
 
-    protected boolean filter(final StringMapMessage mapMessage) {
+    protected boolean filter(final MapMessage mapMessage) {
         boolean match = false;
         for (int i = 0; i < map.size(); i++) {
             final String toMatch = mapMessage.get(map.getKeyAt(i));

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1a153edb/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicyTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicyTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicyTest.java
index b834cff..caee345 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicyTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/MapRewritePolicyTest.java
@@ -96,7 +96,7 @@ public class MapRewritePolicyTest {
 
         rewritten = addPolicy.rewrite(logEvent2);
         compareLogEvents(logEvent2, rewritten);
-        checkAdded(((StringMapMessage)rewritten.getMessage()).getData());
+        checkAdded(((StructuredDataMessage)rewritten.getMessage()).getData());
 
         rewritten = addPolicy.rewrite(logEvent3);
         compareLogEvents(logEvent3, rewritten);
@@ -116,7 +116,7 @@ public class MapRewritePolicyTest {
 
         rewritten = updatePolicy.rewrite(logEvent2);
         compareLogEvents(logEvent2, rewritten);
-        checkUpdated(((StringMapMessage)rewritten.getMessage()).getData());
+        checkUpdated(((StructuredDataMessage)rewritten.getMessage()).getData());
 
         rewritten = updatePolicy.rewrite(logEvent3);
         compareLogEvents(logEvent3, rewritten);
@@ -136,7 +136,7 @@ public class MapRewritePolicyTest {
 
         rewritten = addPolicy.rewrite(logEvent2);
         compareLogEvents(logEvent2, rewritten);
-        checkAdded(((StringMapMessage)rewritten.getMessage()).getData());
+        checkAdded(((StructuredDataMessage)rewritten.getMessage()).getData());
 
         rewritten = addPolicy.rewrite(logEvent3);
         compareLogEvents(logEvent3, rewritten);

http://git-wip-us.apache.org/repos/asf/logging-log4j2/blob/1a153edb/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppenderTest.java
----------------------------------------------------------------------
diff --git a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppenderTest.java b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppenderTest.java
index 339855f..fb87ad9 100644
--- a/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppenderTest.java
+++ b/log4j-core/src/test/java/org/apache/logging/log4j/core/appender/rewrite/RewriteAppenderTest.java
@@ -29,7 +29,6 @@ import org.apache.logging.log4j.LogManager;
 import org.apache.logging.log4j.Logger;
 import org.apache.logging.log4j.core.LogEvent;
 import org.apache.logging.log4j.junit.LoggerContextRule;
-import org.apache.logging.log4j.message.StringMapMessage;
 import org.apache.logging.log4j.message.Message;
 import org.apache.logging.log4j.message.StructuredDataMessage;
 import org.apache.logging.log4j.test.appender.ListAppender;
@@ -71,8 +70,8 @@ public class RewriteAppenderTest {
         assertTrue("Incorrect number of events. Expected 1, got " + list.size(), list.size() == 1);
         final LogEvent event = list.get(0);
         final Message m = event.getMessage();
-        assertTrue("Message is not a MapMessage", m instanceof StringMapMessage);
-        final StringMapMessage message = (StringMapMessage) m;
+        assertTrue("Message is not a StringMapMessage: " + m.getClass(), m instanceof StructuredDataMessage);
+        final StructuredDataMessage message = (StructuredDataMessage) m;
         final Map<String, String> map = message.getData();
         assertNotNull("No Map", map);
         assertTrue("Incorrect number of map entries, expected 3 got " + map.size(), map.size() == 3);