You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@commons.apache.org by cr...@apache.org on 2003/08/17 05:34:14 UTC

cvs commit: jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/impl ResourcesBaseTestCase.java TestResources.java

craigmcc    2003/08/16 20:34:14

  Modified:    resources/src/java/org/apache/commons/resources
                        Resources.java
               resources/src/java/org/apache/commons/resources/impl
                        CollectionResourcesBase.java
                        ResourceBundleResources.java ResourcesBase.java
               resources/src/test/org/apache/commons/resources/impl
                        ResourcesBaseTestCase.java TestResources.java
  Log:
  Add a getKeys() method to Resources, and all of the associated implementations,
  to support iterating over all of the defined keys that are known.
  
  Revision  Changes    Path
  1.10      +12 -4     jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/Resources.java
  
  Index: Resources.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/Resources.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Resources.java	28 Feb 2003 02:50:34 -0000	1.9
  +++ Resources.java	17 Aug 2003 03:34:14 -0000	1.10
  @@ -65,6 +65,7 @@
   import java.io.InputStream;
   import java.io.Reader;
   import java.io.Serializable;
  +import java.util.Iterator;
   import java.util.Locale;
   import java.util.TimeZone;
   
  @@ -132,6 +133,13 @@
   
   
       // ------------------------------------------------------------- Properties
  +
  +
  +    /**
  +     * <p>Return an <code>Iterator</code> over the defined keys in this
  +     * {@link Resources} instance.</p>
  +     */
  +    public Iterator getKeys();
   
   
       /**
  
  
  
  1.6       +31 -4     jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/impl/CollectionResourcesBase.java
  
  Index: CollectionResourcesBase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/impl/CollectionResourcesBase.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- CollectionResourcesBase.java	21 Jul 2003 04:57:21 -0000	1.5
  +++ CollectionResourcesBase.java	17 Aug 2003 03:34:14 -0000	1.6
  @@ -65,9 +65,12 @@
   
   import java.util.ArrayList;
   import java.util.HashMap;
  +import java.util.HashSet;
  +import java.util.Iterator;
   import java.util.List;
   import java.util.Locale;
   import java.util.Map;
  +import java.util.Set;
   import java.util.TimeZone;
   import org.apache.commons.resources.Resources;
   import org.apache.commons.resources.ResourcesException;
  @@ -140,6 +143,30 @@
        * </p>
        */
       private Map maps = new HashMap();
  +
  +
  +    // ------------------------------------------------------------- Properties
  +
  +
  +    public Iterator getKeys() {
  +
  +        synchronized (maps) {
  +
  +            Set results = new HashSet();
  +            Iterator locales = maps.keySet().iterator();
  +            while (locales.hasNext()) {
  +                Locale locale = (Locale) locales.next();
  +                Map map = (Map) maps.get(locale);
  +                results.addAll(map.keySet());
  +            }
  +            return (results.iterator());
  +
  +        }
  +
  +
  +
  +
  +    }
   
   
       // ---------------------------------------------- Content Retrieval Methods
  
  
  
  1.8       +52 -9     jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/impl/ResourceBundleResources.java
  
  Index: ResourceBundleResources.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/impl/ResourceBundleResources.java,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -r1.7 -r1.8
  --- ResourceBundleResources.java	21 Jul 2003 04:57:21 -0000	1.7
  +++ ResourceBundleResources.java	17 Aug 2003 03:34:14 -0000	1.8
  @@ -65,12 +65,16 @@
   
   import java.io.InputStream;
   import java.io.Reader;
  +import java.util.Collections;
  +import java.util.Enumeration;
   import java.util.HashMap;
  +import java.util.HashSet;
   import java.util.Iterator;
   import java.util.Locale;
   import java.util.Map;
   import java.util.MissingResourceException;
   import java.util.ResourceBundle;
  +import java.util.Set;
   import java.util.TimeZone;
   
   import org.apache.commons.logging.Log;
  @@ -198,6 +202,33 @@
       }
   
   
  +    public Iterator getKeys() {
  +
  +        synchronized (bundles) {
  +
  +            ClassLoader loader = getClassLoader();
  +            Map loaderMap = (Map) bundles.get(loader);
  +            if (loaderMap == null) {
  +                return (Collections.EMPTY_SET.iterator());
  +            }
  +            Set results = new HashSet();
  +            Iterator locales = loaderMap.keySet().iterator();
  +            while (locales.hasNext()) {
  +                Locale locale = (Locale) locales.next();
  +                ResourceBundle bundle = (ResourceBundle)
  +                    loaderMap.get(locale);
  +                Enumeration keys = bundle.getKeys();
  +                while (keys.hasMoreElements()) {
  +                    results.add(keys.nextElement());
  +                }
  +            }
  +            return (results.iterator());
  +
  +        }
  +
  +    }
  +
  +
       // ---------------------------------------------- Content Retrieval Methods
   
   
  @@ -386,11 +417,7 @@
           synchronized (bundles) {
   
               // Locate or create the Map for the appropriate ClassLoader
  -            ClassLoader loader =
  -                Thread.currentThread().getContextClassLoader();
  -            if (loader == null) {
  -                loader = this.getClass().getClassLoader();
  -            }
  +            ClassLoader loader = getClassLoader();
               Map loaderMap = (Map) bundles.get(loader);
               if (loaderMap == null) {
                   loaderMap = new HashMap();
  @@ -407,6 +434,22 @@
               return (bundle);
   
           }
  +
  +    }
  +
  +
  +    /**
  +     * <p>Return the <code>ClassLoader</code> for which we are mapping
  +     * <code>ResourceBundle</code> instances.</p>
  +     */
  +    protected ClassLoader getClassLoader() {
  +
  +        ClassLoader loader =
  +            Thread.currentThread().getContextClassLoader();
  +        if (loader == null) {
  +            loader = this.getClass().getClassLoader();
  +        }
  +        return (loader);
   
       }
   
  
  
  
  1.6       +8 -4      jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/impl/ResourcesBase.java
  
  Index: ResourcesBase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/resources/src/java/org/apache/commons/resources/impl/ResourcesBase.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ResourcesBase.java	19 Apr 2003 18:30:45 -0000	1.5
  +++ ResourcesBase.java	17 Aug 2003 03:34:14 -0000	1.6
  @@ -67,6 +67,7 @@
   import java.io.InputStream;
   import java.io.Reader;
   import java.io.StringReader;
  +import java.util.Iterator;
   import java.util.Locale;
   import java.util.TimeZone;
   
  @@ -172,6 +173,9 @@
   
   
       // ------------------------------------------------------------- Properties
  +
  +
  +    public abstract Iterator getKeys();
   
   
       /**
  
  
  
  1.6       +34 -4     jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/impl/ResourcesBaseTestCase.java
  
  Index: ResourcesBaseTestCase.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/impl/ResourcesBaseTestCase.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- ResourcesBaseTestCase.java	28 Feb 2003 02:54:50 -0000	1.5
  +++ ResourcesBaseTestCase.java	17 Aug 2003 03:34:14 -0000	1.6
  @@ -63,6 +63,9 @@
   package org.apache.commons.resources.impl;
   
   
  +import java.util.ArrayList;
  +import java.util.Iterator;
  +import java.util.List;
   import java.util.Locale;
   
   import junit.framework.Test;
  @@ -138,6 +141,33 @@
           assertEquals("fr_FR inherit value",
                        "[test] INHERIT",
                        resources.getString("test.inherit", locale, null));
  +
  +    }
  +
  +
  +    // Test retrieving all of the defined keys
  +    public void testKeys() throws Exception {
  +
  +        // Pre-seed all of the keys we expect to find
  +        Locale locale = new Locale("en", "US");
  +        resources.getString("test.base", locale, null);
  +        resources.getString("test.specific", locale, null);
  +        resources.getString("test.inherit", locale, null);
  +        resources.getString("test.message", locale, null);
  +
  +        // Accumulate all of the keys that are actually returned
  +        List results = new ArrayList();
  +        Iterator keys = resources.getKeys();
  +        while (keys.hasNext()) {
  +            results.add(keys.next());
  +        }
  +
  +        // Validate the keys that were actually returned
  +        assertEquals(4, results.size());
  +        assertTrue(results.contains("test.base"));
  +        assertTrue(results.contains("test.specific"));
  +        assertTrue(results.contains("test.inherit"));
  +        assertTrue(results.contains("test.message"));
   
       }
   
  
  
  
  1.5       +20 -4     jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/impl/TestResources.java
  
  Index: TestResources.java
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/resources/src/test/org/apache/commons/resources/impl/TestResources.java,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- TestResources.java	28 Feb 2003 02:54:50 -0000	1.4
  +++ TestResources.java	17 Aug 2003 03:34:14 -0000	1.5
  @@ -63,7 +63,10 @@
   package org.apache.commons.resources.impl;
   
   
  +import java.util.ArrayList;
   import java.util.HashMap;
  +import java.util.Iterator;
  +import java.util.List;
   import java.util.Locale;
   import java.util.Map;
   import java.util.TimeZone;
  @@ -127,6 +130,19 @@
   
   
       // ------------------------------------------------------------- Properties
  +
  +
  +    // Return the keys for all defined Resources
  +    public Iterator getKeys() {
  +
  +        List results = new ArrayList();
  +        results.add("test.base");
  +        results.add("test.specific");
  +        results.add("test.inherit");
  +        results.add("test.message");
  +        return (results.iterator());
  +
  +    }
   
   
       // Has this instance been initialized?
  
  
  

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