Author: oheger
Date: Mon Feb  4 08:55:15 2008
New Revision: 618324

URL: http://svn.apache.org/viewvc?rev=618324&view=rev
Log:
Removed dependency to commons-collections from SubsetConfiguration and some 
Java 1.5-related changes

Modified:
    
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java
    
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration.java

Modified: 
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java
URL: 
http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java?rev=618324&r1=618323&r2=618324&view=diff
==============================================================================
--- 
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java
 (original)
+++ 
commons/proper/configuration/branches/configuration2_experimental/src/main/java/org/apache/commons/configuration2/SubsetConfiguration.java
 Mon Feb  4 08:55:15 2008
@@ -19,9 +19,6 @@
 
 import java.util.Iterator;
 
-import org.apache.commons.collections.Transformer;
-import org.apache.commons.collections.iterators.TransformIterator;
-
 /**
  * <p>A subset of another configuration. The new Configuration object contains
  * every key from the parent Configuration that starts with prefix. The prefix
@@ -149,6 +146,7 @@
         this.prefix = prefix;
     }
 
+    @Override
     public Configuration subset(String prefix)
     {
         return parent.subset(getParentKey(prefix));
@@ -164,16 +162,19 @@
         return parent.containsKey(getParentKey(key));
     }
 
+    @Override
     public void addPropertyDirect(String key, Object value)
     {
         parent.addProperty(getParentKey(key), value);
     }
 
+    @Override
     public void setProperty(String key, Object value)
     {
         parent.setProperty(getParentKey(key), value);
     }
 
+    @Override
     public void clearProperty(String key)
     {
         parent.clearProperty(getParentKey(key));
@@ -184,28 +185,18 @@
         return parent.getProperty(getParentKey(key));
     }
 
-    public Iterator getKeys(String prefix)
+    @Override
+    public Iterator<String> getKeys(String prefix)
     {
-        return new TransformIterator(parent.getKeys(getParentKey(prefix)), new 
Transformer()
-        {
-            public Object transform(Object obj)
-            {
-                return getChildKey((String) obj);
-            }
-        });
+        return new SubsetIterator(parent.getKeys(getParentKey(prefix)));
     }
 
-    public Iterator getKeys()
+    public Iterator<String> getKeys()
     {
-        return new TransformIterator(parent.getKeys(prefix), new Transformer()
-        {
-            public Object transform(Object obj)
-            {
-                return getChildKey((String) obj);
-            }
-        });
+        return new SubsetIterator(parent.getKeys(prefix));
     }
 
+    @Override
     protected Object interpolate(Object base)
     {
         if (delimiter == null && "".equals(prefix))
@@ -219,6 +210,7 @@
         }
     }
 
+    @Override
     protected String interpolate(String base)
     {
         return super.interpolate(base);
@@ -229,6 +221,7 @@
      *
      * Change the behaviour of the parent configuration if it supports this 
feature.
      */
+    @Override
     public void setThrowExceptionOnMissing(boolean throwExceptionOnMissing)
     {
         if (parent instanceof AbstractConfiguration)
@@ -246,6 +239,7 @@
      *
      * The subset inherits this feature from its parent if it supports this 
feature.
      */
+    @Override
     public boolean isThrowExceptionOnMissing()
     {
         if (parent instanceof AbstractConfiguration)
@@ -265,6 +259,7 @@
      * @return the list delimiter
      * @since 1.4
      */
+    @Override
     public char getListDelimiter()
     {
         return (parent instanceof AbstractConfiguration) ? 
((AbstractConfiguration) parent)
@@ -279,6 +274,7 @@
      * @param delim the new list delimiter
      * @since 1.4
      */
+    @Override
     public void setListDelimiter(char delim)
     {
         if (parent instanceof AbstractConfiguration)
@@ -300,6 +296,7 @@
      * @return the delimiter parsing disabled flag
      * @since 1.4
      */
+    @Override
     public boolean isDelimiterParsingDisabled()
     {
         return (parent instanceof AbstractConfiguration) ? 
((AbstractConfiguration) parent)
@@ -315,6 +312,7 @@
      * @param delimiterParsingDisabled the delimiter parsing disabled flag
      * @since 1.4
      */
+    @Override
     public void setDelimiterParsingDisabled(boolean delimiterParsingDisabled)
     {
         if (parent instanceof AbstractConfiguration)
@@ -325,6 +323,61 @@
         else
         {
             super.setDelimiterParsingDisabled(delimiterParsingDisabled);
+        }
+    }
+
+    /**
+     * A specialized iterator to be returned by the <code>getKeys()</code>
+     * methods. This implementation wraps an iterator from the parent
+     * configuration. The keys returned by this iterator are correspondigly
+     * transformed.
+     */
+    private class SubsetIterator implements Iterator<String>
+    {
+        /** Stores the wrapped iterator. */
+        private final Iterator<String> parentIterator;
+
+        /**
+         * Creates a new instance of <code>SubsetIterator</code> and
+         * initializes it with the parent iterator.
+         *
+         * @param it the iterator of the parent configuration
+         */
+        public SubsetIterator(Iterator<String> it)
+        {
+            parentIterator = it;
+        }
+
+        /**
+         * Checks whether there are more elements. Delegates to the parent
+         * iterator.
+         *
+         * @return a flag whether there are more elements
+         */
+        public boolean hasNext()
+        {
+            return parentIterator.hasNext();
+        }
+
+        /**
+         * Returns the next element in the iteration. This is the next key from
+         * the parent configuration, transformed to correspond to the point of
+         * view of this subset configuration.
+         *
+         * @return the next element
+         */
+        public String next()
+        {
+            return getChildKey(parentIterator.next());
+        }
+
+        /**
+         * Removes the current element from the iteration. Delegates to the
+         * parent iterator.
+         */
+        public void remove()
+        {
+            parentIterator.remove();
         }
     }
 }

Modified: 
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration.java
URL: 
http://svn.apache.org/viewvc/commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration.java?rev=618324&r1=618323&r2=618324&view=diff
==============================================================================
--- 
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration.java
 (original)
+++ 
commons/proper/configuration/branches/configuration2_experimental/src/test/java/org/apache/commons/configuration2/TestSubsetConfiguration.java
 Mon Feb  4 08:55:15 2008
@@ -107,7 +107,7 @@
 
         Configuration subset = new SubsetConfiguration(conf, "test", ".");
 
-        Iterator it = subset.getKeys();
+        Iterator<String> it = subset.getKeys();
         assertEquals("1st key", "", it.next());
         assertEquals("2nd key", "key1", it.next());
         assertFalse("too many elements", it.hasNext());
@@ -122,7 +122,7 @@
 
         Configuration subset = new SubsetConfiguration(conf, "test", ".");
 
-        Iterator it = subset.getKeys("abc");
+        Iterator<String> it = subset.getKeys("abc");
         assertEquals("1st key", "abc", it.next());
         assertEquals("2nd key", "abc.key1", it.next());
         assertFalse("too many elements", it.hasNext());
@@ -135,7 +135,7 @@
         conf.addProperty("test.abc", "value3");
 
         Configuration subset = new SubsetConfiguration(conf, "test", ".");
-        List list = subset.getList("abc", new ArrayList());
+        List<Object> list = subset.getList("abc", new ArrayList<Object>());
         assertEquals(3, list.size());
     }
 
@@ -201,13 +201,13 @@
     {
         ConfigurationFactory factory = new ConfigurationFactory();
         File src = new File(new File(TEST_DIR), TEST_FILE);
-        factory.setConfigurationURL(src.toURL());
+        factory.setConfigurationURL(src.toURI().toURL());
         Configuration config = factory.getConfiguration();
         Configuration subConf = config.subset("tables.table(0)");
         assertTrue(subConf.getKeys().hasNext());
         Configuration subSubConf = subConf.subset("fields.field(1)");
-        Iterator itKeys = subSubConf.getKeys();
-        Set keys = new HashSet();
+        Iterator<String> itKeys = subSubConf.getKeys();
+        Set<String> keys = new HashSet<String>();
         keys.add("name");
         keys.add("type");
         while(itKeys.hasNext())


Reply via email to