This is an automated email from the ASF dual-hosted git repository.

ckozak pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/logging-log4j2.git

commit 7df9c1b9e24759dca329197b9175cb673feb4c47
Author: Yanming Zhou <[email protected]>
AuthorDate: Tue Dec 21 09:02:07 2021 +0800

    LOG4J2-3264: Fix MapLookup to lookup MapMessage before DefaultMap
---
 .../apache/logging/log4j/core/lookup/InterpolatorTest.java    |  2 +-
 .../org/apache/logging/log4j/core/lookup/MapLookupTest.java   |  6 ++++--
 .../java/org/apache/logging/log4j/core/lookup/MapLookup.java  | 11 ++++-------
 3 files changed, 9 insertions(+), 10 deletions(-)

diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java
index d366d7a..64ae473 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/InterpolatorTest.java
@@ -155,6 +155,6 @@ public class InterpolatorTest {
                 .setLevel(Level.INFO)
                 .setMessage(new StringMapMessage(map))
                 .build();
-        assertEquals("configProperties", interpolator.lookup(event, 
"map:key"));
+        assertEquals("mapMessage", interpolator.lookup(event, "map:key"));
     }
 }
diff --git 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java
 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java
index 2804e97..426c717 100644
--- 
a/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java
+++ 
b/log4j-core-test/src/test/java/org/apache/logging/log4j/core/lookup/MapLookupTest.java
@@ -97,9 +97,10 @@ public class MapLookupTest {
     }
 
     @Test
-    public void testLookupDefaultMapIsCheckedBeforeMapMessage() {
+    public void testLookupMapMessageIsCheckedBeforeDefaultMap() {
         final HashMap<String, String> map = new HashMap<>();
         map.put("A", "ADefault");
+        map.put("B", "BDefault");
         final HashMap<String, Object> eventMap = new HashMap<>();
         eventMap.put("A", "AEvent");
         final MapMessage message = new MapMessage<>(eventMap);
@@ -107,7 +108,8 @@ public class MapLookupTest {
                 .setMessage(message)
                 .build();
         final MapLookup lookup = new MapLookup(map);
-        assertEquals("ADefault", lookup.lookup(event, "A"));
+        assertEquals("AEvent", lookup.lookup(event, "A"));
+        assertEquals("BDefault", lookup.lookup(event, "B"));
     }
 
     @Test
diff --git 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java
index dba88c7..b190e5c 100644
--- 
a/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java
+++ 
b/log4j-core/src/main/java/org/apache/logging/log4j/core/lookup/MapLookup.java
@@ -88,17 +88,14 @@ public class MapLookup implements StrLookup {
     @Override
     public String lookup(final LogEvent event, final String key) {
         final boolean isMapMessage = event != null && event.getMessage() 
instanceof MapMessage;
-        if (map == null && !isMapMessage) {
-            return null;
-        }
-        if (map != null && map.containsKey(key)) {
-            final String obj = map.get(key);
+        if (isMapMessage) {
+            final String obj = ((MapMessage) event.getMessage()).get(key);
             if (obj != null) {
                 return obj;
             }
         }
-        if (isMapMessage) {
-            return ((MapMessage) event.getMessage()).get(key);
+        if (map != null) {
+            return map.get(key);
         }
         return null;
     }

Reply via email to