diff options
author | Tom Tromey <tromey@redhat.com> | 2002-06-18 15:40:16 +0000 |
---|---|---|
committer | Tom Tromey <tromey@gcc.gnu.org> | 2002-06-18 15:40:16 +0000 |
commit | 3831381763ca5f41d6f7406d590e1e38a8531e1c (patch) | |
tree | 6b8dcd38b7dbb7c4c618080eb1958b6f042d581c /libjava/java/util/ListResourceBundle.java | |
parent | 0fd534ed06e92a7232b2373321f113ee8dd482c4 (diff) | |
download | gcc-3831381763ca5f41d6f7406d590e1e38a8531e1c.zip gcc-3831381763ca5f41d6f7406d590e1e38a8531e1c.tar.gz gcc-3831381763ca5f41d6f7406d590e1e38a8531e1c.tar.bz2 |
javaprims.h: Updated class declaration list.
* gcj/javaprims.h: Updated class declaration list.
* Makefile.in: Rebuilt.
* Makefile.am (core_java_source_files): Added
PropertyPermissionCollection.java.
* java/lang/Thread.java (group, name): Now package-private.
* java/lang/ThreadGroup.java: Re-merge with Classpath.
* java/util/AbstractList.java: Likewise.
* java/util/AbstractMap.java: Likewise.
* java/util/Calendar.java: Likewise.
* java/util/Collections.java: Likewise.
* java/util/HashMap.java: Likewise.
* java/util/Hashtable.java: Likewise.
* java/util/LinkedHashMap.java: Likewise.
* java/util/LinkedList.java: Likewise.
* java/util/List.java: Likewise.
* java/util/ListResourceBundle.java: Likewise.
* java/util/Map.java: Likewise.
* java/util/Observable.java: Likewise.
* java/util/Properties.java: Likewise.
* java/util/PropertyPermission.java: Likewise.
* java/util/PropertyPermissionCollection.java: Likewise.
* java/util/PropertyResourceBundle.java: Likewise.
* java/util/Random.java: Likewise.
* java/util/SimpleTimeZone.java: Likewise.
* java/util/StringTokenizer.java: Likewise.
* java/util/TimerTask.java: Likewise.
* java/util/TreeMap.java: Likewise.
* java/util/WeakHashMap.java: Likewise.
* java/util/jar/Attributes.java: Likewise.
* java/util/jar/JarException.java: Likewise.
* java/util/jar/Manifest.java: Likewise.
From-SVN: r54743
Diffstat (limited to 'libjava/java/util/ListResourceBundle.java')
-rw-r--r-- | libjava/java/util/ListResourceBundle.java | 117 |
1 files changed, 73 insertions, 44 deletions
diff --git a/libjava/java/util/ListResourceBundle.java b/libjava/java/util/ListResourceBundle.java index 45508c7..b7b32c2 100644 --- a/libjava/java/util/ListResourceBundle.java +++ b/libjava/java/util/ListResourceBundle.java @@ -1,5 +1,5 @@ -/* java.util.ListResourceBundle - Copyright (C) 1998, 1999, 2001 Free Software Foundation, Inc. +/* ListResourceBundle -- a resource bundle build around a list + Copyright (C) 1998, 1999, 2001, 2002 Free Software Foundation, Inc. This file is part of GNU Classpath. @@ -39,73 +39,102 @@ exception statement from your version. */ package java.util; /** - * A <code>ListResouceBundle</code> provides an easy way, to create - * your own resource bundle. It is an abstract class that you can - * subclass. You should then overwrite the getContents method, that - * provides a key/value list. - * <br> - * The key/value list is a two dimensional list of Object. The first - * dimension ranges over the resources. The second dimension ranges - * from zero (key) to one (value). The keys must be of type String. - * <br> - * XXX Example! + * A <code>ListResouceBundle</code> provides an easy way, to create your own + * resource bundle. It is an abstract class that you can subclass. You should + * then overwrite the getContents method, that provides a key/value list. * + * <p>The key/value list is a two dimensional list of Object. The first + * dimension ranges over the resources. The second dimension ranges from + * zero (key) to one (value). The keys must be of type String, and they are + * case-sensitive. For example: + * +<br><pre>public class MyResources + extends ListResourceBundle +{ + public Object[][] getContents() + { + return contents; + } + + static final Object[][] contents = + { + // LOCALIZED STRINGS + {"s1", "The disk \"{1}\" contains {0}."}, // MessageFormat pattern + {"s2", "1"}, // location of {0} in pattern + {"s3", "My Disk"}, // sample disk name + {"s4", "no files"}, // first ChoiceFormat choice + {"s5", "one file"}, // second ChoiceFormat choice + {"s6", "{0,number} files"} // third ChoiceFormat choice + {"s7", "3 Mar 96"}, // sample date + {"s8", new Dimension(1,5)} // real object, not just string + // END OF LOCALIZED MATERIAL + }; +}</pre> + * + * @author Jochen Hoenicke + * @author Eric Blake <ebb9@email.byu.edu> * @see Locale * @see PropertyResourceBundle - * @author Jochen Hoenicke */ + * @since 1.1 + * @status updated to 1.4 + */ public abstract class ListResourceBundle extends ResourceBundle { /** - * The constructor. It does nothing special. + * The constructor. It does nothing special. */ public ListResourceBundle() { } /** - * Gets the key/value list. You must override this method. - * @return a two dimensional list of Objects. The first dimension - * ranges over the objects, and the second dimension ranges from - * zero (key) to one (value). - */ - protected abstract Object[][] getContents(); - - /** - * Override this method to provide the resource for a keys. This gets - * called by <code>getObject</code>. - * @param key The key of the resource. - * @return The resource for the key or null if it doesn't exists. + * Gets a resource for a given key. This is called by <code>getObject</code>. + * + * @param key the key of the resource + * @return the resource for the key, or null if it doesn't exist */ public final Object handleGetObject(String key) { Object[][] contents = getContents(); - for (int i = 0; i < contents.length; i++) - { - if (key.equals(contents[i][0])) - return contents[i][1]; - } + int i = contents.length; + while (--i >= 0) + if (key.equals(contents[i][0])) + return contents[i][1]; return null; } /** * This method should return all keys for which a resource exists. - * @return An enumeration of the keys. + * + * @return an enumeration of the keys */ public Enumeration getKeys() { + // We make a new Set that holds all the keys, then return an enumeration + // for that. This prevents modifications from ruining the enumeration, + // as well as ignoring duplicates. final Object[][] contents = getContents(); - - return new Enumeration() - { - int i = 0; - public boolean hasMoreElements() - { - return i < contents.length; - } - public Object nextElement() + Set s = new HashSet(); + int i = contents.length; + while (--i >= 0) + s.add(contents[i][0]); + ResourceBundle bundle = parent; + // Eliminate tail recursion. + while (bundle != null) { - return contents[i++][0]; + Enumeration e = bundle.getKeys(); + while (e.hasMoreElements()) + s.add(e.nextElement()); + bundle = bundle.parent; } - }; + return Collections.enumeration(s); } -} + + /** + * Gets the key/value list. You must override this method, and should not + * provide duplicate keys or null entries. + * + * @return a two dimensional list of String key / Object resouce pairs + */ + protected abstract Object[][] getContents(); +} // class ListResourceBundle |