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

ggregory pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/commons-configuration.git


The following commit(s) were added to refs/heads/master by this push:
     new 24a1baf9 [CONFIGURATION-848] SubsetConfiguration does not account for 
delimiters as it did in 2.9.0
24a1baf9 is described below

commit 24a1baf929a44d210c80fb932d8275e506b41d46
Author: Gary Gregory <garydgreg...@gmail.com>
AuthorDate: Mon Jul 1 19:37:13 2024 -0400

    [CONFIGURATION-848] SubsetConfiguration does not account for delimiters
    as it did in 2.9.0
---
 src/changes/changes.xml                                  |  1 +
 .../commons/configuration2/AbstractConfiguration.java    |  7 ++++++-
 .../AbstractHierarchicalConfiguration.java               | 16 +++++++++++++++-
 .../apache/commons/configuration2/JNDIConfiguration.java |  4 ++--
 .../commons/configuration2/PrefixedKeysIterator.java     |  2 +-
 .../configuration2/TestSubsetConfiguration848.java       |  1 -
 6 files changed, 25 insertions(+), 6 deletions(-)

diff --git a/src/changes/changes.xml b/src/changes/changes.xml
index 6a0c31e3..84fde247 100644
--- a/src/changes/changes.xml
+++ b/src/changes/changes.xml
@@ -28,6 +28,7 @@
       <action type="fix" dev="ggregory" due-to="Gary 
Gregory">PropertyConverter.to(Class, Object, DefaultConversionHandler) doesn't 
convert custom java.lang.Number subclasses.</action> 
       <action type="fix" dev="ggregory" due-to="Gary 
Gregory">DefaultConversionHandler.convertValue(Object, Class, 
ConfigurationInterpolator) doesn't convert custom java.lang.Number 
subclasses.</action> 
       <action type="fix" dev="ggregory" due-to="Gary 
Gregory">DefaultConversionHandler.to(Object, Class, ConfigurationInterpolator) 
doesn't convert custom java.lang.Number subclasses.</action> 
+      <action type="fix" issue="CONFIGURATION-848" dev="ggregory" 
due-to="Laszlo Hujber, Gary Gregory">SubsetConfiguration does not account for 
delimiters as it did in 2.9.0.</action> 
       <!-- ADD -->
       <action type="add" dev="ggregory" due-to="Gary Gregory">Add 
PrefixedKeysIterator.toString() to package-private 
PrefixedKeysIterator.</action> 
       <!-- UPDATE -->
diff --git 
a/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java 
b/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java
index df58fba7..d97b843f 100644
--- a/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java
+++ b/src/main/java/org/apache/commons/configuration2/AbstractConfiguration.java
@@ -92,6 +92,11 @@ import org.apache.commons.lang3.StringUtils;
  */
 public abstract class AbstractConfiguration extends BaseEventSource implements 
Configuration {
 
+    /**
+     * Default configuration delimiter for properties and keys.
+     */
+    static final String DELIMITER = ".";
+
     /**
      * Checks an object provided as default value for the {@code getArray()} 
method. Throws an exception if this is not an
      * array with the correct component type.
@@ -1569,7 +1574,7 @@ public abstract class AbstractConfiguration extends 
BaseEventSource implements C
 
     @Override
     public Configuration subset(final String prefix) {
-        return new SubsetConfiguration(this, prefix, ".");
+        return new SubsetConfiguration(this, prefix, DELIMITER);
     }
 
     /**
diff --git 
a/src/main/java/org/apache/commons/configuration2/AbstractHierarchicalConfiguration.java
 
b/src/main/java/org/apache/commons/configuration2/AbstractHierarchicalConfiguration.java
index 8857d1c3..b7b2fd04 100644
--- 
a/src/main/java/org/apache/commons/configuration2/AbstractHierarchicalConfiguration.java
+++ 
b/src/main/java/org/apache/commons/configuration2/AbstractHierarchicalConfiguration.java
@@ -510,6 +510,21 @@ public abstract class AbstractHierarchicalConfiguration<T> 
extends AbstractConfi
      */
     @Override
     protected Iterator<String> getKeysInternal(final String prefix) {
+        return getKeysInternal(prefix, DELIMITER);
+    }
+
+    /**
+     * Gets an iterator with all keys defined in this configuration that start 
with the given prefix. The returned keys
+     * will not contain any indices. This implementation tries to locate a 
node whose key is the same as the passed in
+     * prefix. Then the subtree of this node is traversed, and the keys of all 
nodes encountered (including attributes) are
+     * added to the result set.
+     *
+     * @param prefix the prefix of the keys to start with
+     * @param delimiter TODO
+     * @return an iterator with the found keys
+     */
+    @Override
+    protected Iterator<String> getKeysInternal(final String prefix, final 
String delimiter) {
         final DefinedKeysVisitor visitor = new DefinedKeysVisitor(prefix);
         if (containsKey(prefix)) {
             // explicitly add the prefix
@@ -528,7 +543,6 @@ public abstract class AbstractHierarchicalConfiguration<T> 
extends AbstractConfi
 
         return visitor.getKeyList().iterator();
     }
-
     /**
      * Gets the maximum defined index for the given key. This is useful if 
there are multiple values for this key. They
      * can then be addressed separately by specifying indices from 0 to the 
return value of this method. If the passed in
diff --git 
a/src/main/java/org/apache/commons/configuration2/JNDIConfiguration.java 
b/src/main/java/org/apache/commons/configuration2/JNDIConfiguration.java
index b44fc913..5de9413d 100644
--- a/src/main/java/org/apache/commons/configuration2/JNDIConfiguration.java
+++ b/src/main/java/org/apache/commons/configuration2/JNDIConfiguration.java
@@ -242,7 +242,7 @@ public class JNDIConfiguration extends 
AbstractConfiguration {
     @Override
     protected Iterator<String> getKeysInternal(final String prefix) {
         // build the path
-        final String[] splitPath = StringUtils.split(prefix, ".");
+        final String[] splitPath = StringUtils.split(prefix, DELIMITER);
 
         final List<String> path = Arrays.asList(splitPath);
 
@@ -354,7 +354,7 @@ public class JNDIConfiguration extends 
AbstractConfiguration {
                 final StringBuilder keyBuilder = new StringBuilder();
                 keyBuilder.append(prefix);
                 if (keyBuilder.length() > 0) {
-                    keyBuilder.append(".");
+                    keyBuilder.append(DELIMITER);
                 }
                 keyBuilder.append(name);
 
diff --git 
a/src/main/java/org/apache/commons/configuration2/PrefixedKeysIterator.java 
b/src/main/java/org/apache/commons/configuration2/PrefixedKeysIterator.java
index eb65b038..9b3083b1 100644
--- a/src/main/java/org/apache/commons/configuration2/PrefixedKeysIterator.java
+++ b/src/main/java/org/apache/commons/configuration2/PrefixedKeysIterator.java
@@ -52,7 +52,7 @@ final class PrefixedKeysIterator implements Iterator<String> {
      * @param keyPrefix the prefix of the allowed keys
      */
     public PrefixedKeysIterator(final Iterator<String> wrappedIterator, final 
String keyPrefix) {
-        this(wrappedIterator, keyPrefix, ".");
+        this(wrappedIterator, keyPrefix, AbstractConfiguration.DELIMITER);
     }
 
     /**
diff --git 
a/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration848.java
 
b/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration848.java
index 9ebea255..e65fc67f 100644
--- 
a/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration848.java
+++ 
b/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration848.java
@@ -67,7 +67,6 @@ public class TestSubsetConfiguration848 {
     }
 
     @Test
-    @Disabled
     public void testSubsetWithJSONConfiguration() throws 
ConfigurationException, IOException {
         final JSONConfiguration jsonConfiguration = new JSONConfiguration();
         try (FileReader in = new 
FileReader(ConfigurationAssert.getTestFile("test-configuration-848.json").getAbsolutePath()))
 {

Reply via email to