From 3831381763ca5f41d6f7406d590e1e38a8531e1c Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Tue, 18 Jun 2002 15:40:16 +0000 Subject: 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 --- libjava/java/util/ListResourceBundle.java | 117 +++++++++++++++++++----------- 1 file changed, 73 insertions(+), 44 deletions(-) (limited to 'libjava/java/util/ListResourceBundle.java') 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 ListResouceBundle 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. - *
- * 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. - *
- * XXX Example! + * A ListResouceBundle 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. * + *

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: + * +

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
+  };
+}
+ * + * @author Jochen Hoenicke + * @author Eric Blake * @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 getObject. - * @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 getObject. + * + * @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 -- cgit v1.1