You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by ep...@apache.org on 2003/06/18 19:45:50 UTC

cvs commit: jakarta-commons-sandbox/configuration/src/java/org/apache/commons/configuration CompositeConfiguration.java

epugh       2003/06/18 10:45:50

  Modified:    configuration/src/test/org/apache/commons/configuration
                        TestCompositeConfiguration.java
               configuration/xdocs tasks.xml
               configuration/src/java/org/apache/commons/configuration
                        CompositeConfiguration.java
  Log:
  Fix for CompositeConfiguration.getKeys() being unordered.
  Now it is ordered.
  
  Revision  Changes    Path
  1.8       +44 -1     jakarta-commons-sandbox/configuration/src/test/org/apache/commons/configuration/TestCompositeConfiguration.java
  
  Index: TestCompositeConfiguration.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/configuration/src/test/org/apache/commons/configuration/TestCompositeConfiguration.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- TestCompositeConfiguration.java	22 Mar 2003 05:18:16 -0000	1.7
  +++ TestCompositeConfiguration.java	18 Jun 2003 17:45:50 -0000	1.8
  @@ -56,6 +56,9 @@
   
   import java.io.File;
   import java.util.Vector;
  +import java.util.Iterator;
  +import java.util.List;
  +import java.util.ArrayList;
   
   import junit.framework.TestCase;
   
  @@ -271,4 +274,44 @@
           // we should get 0 packages here
           assertEquals(0, packages.length);
       }
  +    
  +    /**
  +      * Tests <code>getKeys</code> preserves the order
  +      */
  +    public void testGetKeysPreservesOrder() throws Exception
  +    {
  +        cc.addConfiguration(conf1);
  +        List orderedList = new ArrayList();
  +        for (Iterator keys = conf1.getKeys();keys.hasNext();){
  +            orderedList.add(keys.next());
  +        }
  +        List iteratedList = new ArrayList();
  +        for (Iterator keys = cc.getKeys();keys.hasNext();){
  +            iteratedList.add(keys.next());
  +        }
  +        assertEquals(orderedList.size(),iteratedList.size());
  +        for (int i =0;i<orderedList.size();i++){
  +            assertEquals(orderedList.get(i),iteratedList.get(i));
  +        }        
  +    }    
  +
  +    /**
  +      * Tests <code>getKeys(String key)</code> preserves the order
  +      */
  +    public void testGetKeys2PreservesOrder() throws Exception
  +    {
  +        cc.addConfiguration(conf1);
  +        List orderedList = new ArrayList();
  +        for (Iterator keys = conf1.getKeys("test");keys.hasNext();){
  +            orderedList.add(keys.next());
  +        }
  +        List iteratedList = new ArrayList();
  +        for (Iterator keys = cc.getKeys("test");keys.hasNext();){
  +            iteratedList.add(keys.next());
  +        }
  +        assertEquals(orderedList.size(),iteratedList.size());
  +        for (int i =0;i<orderedList.size();i++){
  +            assertEquals(orderedList.get(i),iteratedList.get(i));
  +        }        
  +    }        
   }
  
  
  
  1.4       +9 -0      jakarta-commons-sandbox/configuration/xdocs/tasks.xml
  
  Index: tasks.xml
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/configuration/xdocs/tasks.xml,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- tasks.xml	7 Jun 2003 19:30:44 -0000	1.3
  +++ tasks.xml	18 Jun 2003 17:45:50 -0000	1.4
  @@ -49,6 +49,15 @@
   </section>
   <section name='Completed'>
       <subsection name="Since Last Release"> 
  +       <ul>
  +          <li>
  +              <strong>CompositeConfiguration.getKeys() Fix</strong>
  +			  The CompositeConfiguration.getKeys() method was returning an
  +			  unordered list of configuration values.  However, many apps
  +			  expect the order that keys are returned to be the order they
  +			  are added into the properties file.
  +          </li>
  +       </ul>
       </subsection>
   </section>
     </body>
  
  
  
  1.11      +10 -6     jakarta-commons-sandbox/configuration/src/java/org/apache/commons/configuration/CompositeConfiguration.java
  
  Index: CompositeConfiguration.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/configuration/src/java/org/apache/commons/configuration/CompositeConfiguration.java,v
  retrieving revision 1.10
  retrieving revision 1.11
  diff -u -r1.10 -r1.11
  --- CompositeConfiguration.java	7 Jun 2003 19:30:43 -0000	1.10
  +++ CompositeConfiguration.java	18 Jun 2003 17:45:50 -0000	1.11
  @@ -57,6 +57,7 @@
   import java.util.ArrayList;
   import java.util.HashSet;
   import java.util.Iterator;
  +import java.util.List;
   import java.util.ListIterator;
   import java.util.NoSuchElementException;
   import java.util.Properties;
  @@ -138,19 +139,20 @@
        */
       public Iterator getKeys()
       {
  -        HashSet keys = new HashSet();
  +        List keys = new ArrayList();
           for (ListIterator i = configList.listIterator(); i.hasNext();)
           {
               Configuration config = (Configuration) i.next();
               for (Iterator j = config.getKeys(); j.hasNext();)
               {
                   String key = (String) j.next();
  -                keys.add(key);
  +                if (!keys.contains(key)){
  +                    keys.add(key);
  +                }
               }
           }
           return keys.iterator();
       }
  -
       /**
        * Get the list of the keys contained in the configuration
        * repository.
  @@ -159,14 +161,16 @@
        */
       public Iterator getKeys(String key)
       {
  -        HashSet keys = new HashSet();
  +        List keys = new ArrayList();
           for (ListIterator i = configList.listIterator(); i.hasNext();)
           {
               Configuration config = (Configuration) i.next();
               for (Iterator j = config.getKeys(key); j.hasNext();)
               {
                   String newKey = (String) j.next();
  -                keys.add(newKey);
  +                if (!keys.contains(newKey)){
  +                     keys.add(newKey);
  +                 }
               }
           }
           return keys.iterator();
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: commons-dev-unsubscribe@jakarta.apache.org
For additional commands, e-mail: commons-dev-help@jakarta.apache.org