You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by oh...@apache.org on 2009/02/25 22:05:40 UTC
svn commit: r747924 - in
/commons/proper/configuration/branches/configuration2_experimental/src:
main/java/org/apache/commons/configuration2/base/
test/java/org/apache/commons/configuration2/base/
Author: oheger
Date: Wed Feb 25 21:05:39 2009
New Revision: 747924
URL: http://svn.apache.org/viewvc?rev=747924&view=rev
Log:
Added implementation for getKeys(String prefix) to ConfigurationSourceUtils.
Added:
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/PrefixedKeysIterator.java
- copied, changed from r746796, commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/PrefixedKeysIterator.java
Modified:
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/ConfigurationSourceUtils.java
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/base/TestConfigurationSourceUtils.java
Modified: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/ConfigurationSourceUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/ConfigurationSourceUtils.java?rev=747924&r1=747923&r2=747924&view=diff
==============================================================================
--- commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/ConfigurationSourceUtils.java (original)
+++ commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/ConfigurationSourceUtils.java Wed Feb 25 21:05:39 2009
@@ -134,6 +134,34 @@
}
/**
+ * Calls the {@code getKeys(String prefix)} method on the specified {@code
+ * ConfigurationSource}. If the source does not implement this method, a
+ * default algorithm is used to obtain an iteration over all keys starting
+ * with the specified prefix.
+ *
+ * @param source the {@code ConfigurationSource} (must not be <b>null</b>)
+ * @param prefix the prefix of the desired keys
+ * @return an {@code Iterator} over all keys contained in this {@code
+ * ConfigurationSource} starting with the given prefix
+ * @throws IllegalArgumentException if the source is <b>null</b>
+ * @see ConfigurationSource#getKeys(String)
+ */
+ public static Iterator<String> getKeys(ConfigurationSource source,
+ String prefix)
+ {
+ checkNullSource(source);
+
+ try
+ {
+ return source.getKeys(prefix);
+ }
+ catch (UnsupportedOperationException uoex)
+ {
+ return new PrefixedKeysIterator(source.getKeys(), prefix);
+ }
+ }
+
+ /**
* Helper method for checking for a <b>null</b> parameter. If the specified
* source is <b>null</b>, an exception is thrown.
*
Copied: commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/PrefixedKeysIterator.java (from r746796, commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/PrefixedKeysIterator.java)
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/PrefixedKeysIterator.java?p2=commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/PrefixedKeysIterator.java&p1=commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/PrefixedKeysIterator.java&r1=746796&r2=747924&rev=747924&view=diff
==============================================================================
--- commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/PrefixedKeysIterator.java (original)
+++ commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/base/PrefixedKeysIterator.java Wed Feb 25 21:05:39 2009
@@ -14,16 +14,16 @@
* See the License for the specific language governing permissions and
* limitations under the License.
*/
-package org.apache.commons.configuration2;
+package org.apache.commons.configuration2.base;
import java.util.Iterator;
import java.util.NoSuchElementException;
/**
* <p>
- * A specialized iterator implementation used by
- * <code>{@link AbstractConfiguration}</code> to return an iteration over all
- * keys starting with a specified prefix.
+ * A specialized iterator implementation used by the {@code getKeys(String
+ * prefix)} method to return an iteration over all keys starting with a
+ * specified prefix.
* </p>
* <p>
* This class is basically a stripped-down version of the
Modified: commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/base/TestConfigurationSourceUtils.java
URL: http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/base/TestConfigurationSourceUtils.java?rev=747924&r1=747923&r2=747924&view=diff
==============================================================================
--- commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/base/TestConfigurationSourceUtils.java (original)
+++ commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/base/TestConfigurationSourceUtils.java Wed Feb 25 21:05:39 2009
@@ -231,4 +231,69 @@
// ok
}
}
+
+ /**
+ * Tests the getKeys() implementation if this method is implemented by the
+ * source.
+ */
+ public void testGetKeysImplemented()
+ {
+ ConfigurationSource source = EasyMock
+ .createMock(ConfigurationSource.class);
+ @SuppressWarnings("unchecked")
+ Iterator<String> it = EasyMock.createMock(Iterator.class);
+ EasyMock.expect(source.getKeys(KEY)).andReturn(it);
+ EasyMock.replay(it, source);
+ assertEquals("Wrong iterator", it, ConfigurationSourceUtils.getKeys(
+ source, KEY));
+ EasyMock.verify(it, source);
+ }
+
+ /**
+ * Tests the getKeys() implementation if this method is not implemented by
+ * the source.
+ */
+ public void testGetKeysNotImplemented()
+ {
+ ConfigurationSource source = EasyMock
+ .createMock(ConfigurationSource.class);
+ EasyMock.expect(source.getKeys(KEY)).andThrow(
+ new UnsupportedOperationException());
+ Collection<String> keys = new ArrayList<String>();
+ keys.add(KEY);
+ final int count = 12;
+ final String key2 = "anotherKey";
+ for (int i = 0; i < count; i++)
+ {
+ keys.add(KEY + "." + i);
+ keys.add(key2 + i);
+ }
+ EasyMock.expect(source.getKeys()).andReturn(keys.iterator());
+ EasyMock.replay(source);
+ Iterator<String> it = ConfigurationSourceUtils.getKeys(source, KEY);
+ assertEquals("Wrong prefix", KEY, it.next());
+ for (int i = 0; i < count; i++)
+ {
+ assertEquals("Wrong key at " + i, KEY + "." + i, it.next());
+ }
+ assertFalse("Too many keys", it.hasNext());
+ EasyMock.verify(source);
+ }
+
+ /**
+ * Tests the getKeys() implementation if a null source is passed in. This
+ * should cause an exception.
+ */
+ public void testGetKeysNull()
+ {
+ try
+ {
+ ConfigurationSourceUtils.getKeys(null, KEY);
+ fail("No exception for null source!");
+ }
+ catch (IllegalArgumentException iex)
+ {
+ // ok
+ }
+ }
}