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;
}