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 <[email protected]> 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 <[email protected]> --- .../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; }
