You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@logging.apache.org by ma...@apache.org on 2022/01/29 03:42:26 UTC

[logging-log4j2] 02/03: Forward-port PropertiesUtil fix from #729

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

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

commit 56ffc715a03b249185c6234e53abd39a03f91360
Author: Matt Sicker <ma...@apache.org>
AuthorDate: Fri Jan 28 21:41:11 2022 -0600

    Forward-port PropertiesUtil fix from #729
    
    This copies over the changes from https://github.com/apache/logging-log4j2/pull/729 which are needed in order to port the changes from https://github.com/apache/logging-log4j2/pull/733
    
    Signed-off-by: Matt Sicker <ma...@apache.org>
---
 .../test/java/org/apache/logging/log4j/util/PropertiesUtilTest.java | 3 ++-
 log4j-api-test/src/test/resources/PropertiesUtilTest.properties     | 3 +++
 .../src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java | 6 ++++--
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/log4j-api-test/src/test/java/org/apache/logging/log4j/util/PropertiesUtilTest.java b/log4j-api-test/src/test/java/org/apache/logging/log4j/util/PropertiesUtilTest.java
index da9d18b..f7671b6 100644
--- a/log4j-api-test/src/test/java/org/apache/logging/log4j/util/PropertiesUtilTest.java
+++ b/log4j-api-test/src/test/java/org/apache/logging/log4j/util/PropertiesUtilTest.java
@@ -28,6 +28,7 @@ import java.nio.charset.StandardCharsets;
 import java.util.Map;
 import java.util.Properties;
 
+import static org.assertj.core.api.Assertions.assertThat;
 import static org.junit.jupiter.api.Assertions.*;
 
 public class PropertiesUtilTest {
@@ -45,7 +46,7 @@ public class PropertiesUtilTest {
         assertHasAllProperties(PropertiesUtil.extractSubset(properties, "b."));
         assertHasAllProperties(PropertiesUtil.extractSubset(properties, "c.1"));
         assertHasAllProperties(PropertiesUtil.extractSubset(properties, "dd"));
-        assertEquals(0, properties.size());
+        assertThat(properties).containsOnly(Map.entry("a", "invalid"));
     }
 
     @Test
diff --git a/log4j-api-test/src/test/resources/PropertiesUtilTest.properties b/log4j-api-test/src/test/resources/PropertiesUtilTest.properties
index 46e67d5..0107458 100644
--- a/log4j-api-test/src/test/resources/PropertiesUtilTest.properties
+++ b/log4j-api-test/src/test/resources/PropertiesUtilTest.properties
@@ -27,3 +27,6 @@ c.1.3 = 3
 dd.1 = 1
 dd.2 = 2
 dd.3 = 3
+
+# dotless entry should be ignored by partitionOnCommonPrefixes()
+a = invalid
diff --git a/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java b/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java
index 1efd771..d0f972f 100644
--- a/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java
+++ b/log4j-api/src/main/java/org/apache/logging/log4j/util/PropertiesUtil.java
@@ -552,11 +552,13 @@ public final class PropertiesUtil {
     public static Map<String, Properties> partitionOnCommonPrefixes(final Properties properties) {
         final Map<String, Properties> parts = new ConcurrentHashMap<>();
         for (final String key : properties.stringPropertyNames()) {
-            final String prefix = key.substring(0, key.indexOf('.'));
+            final int idx = key.indexOf('.');
+            if (idx < 0) continue;
+            final String prefix = key.substring(0, idx);
             if (!parts.containsKey(prefix)) {
                 parts.put(prefix, new Properties());
             }
-            parts.get(prefix).setProperty(key.substring(key.indexOf('.') + 1), properties.getProperty(key));
+            parts.get(prefix).setProperty(key.substring(idx + 1), properties.getProperty(key));
         }
         return parts;
     }