From 7a95ae6b51b590a8b8b9ee06768204c5d6a4a90f Mon Sep 17 00:00:00 2001 From: Tom Tromey Date: Fri, 31 Aug 2001 21:31:20 +0000 Subject: Makefile.in: Rebuilt. * Makefile.in: Rebuilt. * Makefile.am (ordinary_java_source_files): Removed EnumerationChain, added DoubleEnumeration. (nat_source_files): Added natResourceBundle.cc. * java/util/natResourceBundle.cc: New file. * gnu/java/util/DoubleEnumeration.java: New file. * gnu/gcj/util/EnumerationChain.java: Removed. * java/beans/VetoableChangeSupport.java: Merged with Classpath. * java/util/ResourceBundle.java: Merged with Classpath. * java/util/StringTokenizer.java: Merged with Classpath. * java/util/Locale.java: Merged with Classpath. * java/util/Random.java: Merged with Classpath. * java/util/PropertyResourceBundle.java: Merged with Classpath. * java/util/ListResourceBundle.java: Merged with Classpath. * java/util/ConcurrentModificationException.java: Re-merged with Classpath. * java/util/EmptyStackException.java: Likewise. * java/util/MissingResourceException.java: Likewise. * java/util/NoSuchElementException.java: Likewise. * java/util/TooManyListenersException.java: Likewise. From-SVN: r45335 --- libjava/java/util/PropertyResourceBundle.java | 156 ++++++++++++++++++++------ 1 file changed, 121 insertions(+), 35 deletions(-) (limited to 'libjava/java/util/PropertyResourceBundle.java') diff --git a/libjava/java/util/PropertyResourceBundle.java b/libjava/java/util/PropertyResourceBundle.java index 4171ddd..3a5629c 100644 --- a/libjava/java/util/PropertyResourceBundle.java +++ b/libjava/java/util/PropertyResourceBundle.java @@ -1,47 +1,133 @@ -/* Copyright (C) 1999 Free Software Foundation +/* java.util.PropertyResourceBundle + Copyright (C) 1998, 1999 Free Software Foundation, Inc. - This file is part of libgcj. +This file is part of GNU Classpath. -This software is copyrighted work licensed under the terms of the -Libgcj License. Please consult the file "LIBGCJ_LICENSE" for -details. */ +GNU Classpath is free software; you can redistribute it and/or modify +it under the terms of the GNU General Public License as published by +the Free Software Foundation; either version 2, or (at your option) +any later version. -package java.util; +GNU Classpath is distributed in the hope that it will be useful, but +WITHOUT ANY WARRANTY; without even the implied warranty of +MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +General Public License for more details. -import java.io.InputStream; -import java.io.IOException; -import gnu.gcj.util.EnumerationChain; +You should have received a copy of the GNU General Public License +along with GNU Classpath; see the file COPYING. If not, write to the +Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA +02111-1307 USA. -/** - * @author Anthony Green - * @date April 29, 1999. - */ +As a special exception, if you link this library with other files to +produce an executable, this library does not by itself cause the +resulting executable to be covered by the GNU General Public License. +This exception does not however invalidate any other reasons why the +executable file might be covered by the GNU General Public License. */ -/* Written using "Java Class Libraries", 2nd edition, ISBN 0-201-31002-3, - * and "The Java Language Specification", ISBN 0-201-63451-1. */ +package java.util; + +import gnu.java.util.DoubleEnumeration; + +/** + * This class is a concrete ResourceBundle that gets it + * resources from a property file. This implies that the resources are + * strings. For more information about resource bundles see the class + * ResourceBundle. + * + * You should not use this class directly, or subclass it, but you get + * an object of this class automatically when you call + * ResourceBundle.getBundle() and there is a properties + * file. + * + * If there is also a class for this resource and the same locale, the + * class does win. + * + * The properties file should have the name of the resource bundle, + * appended with the locale (e.g. _de.properties. The file should have the same format + * as for Properties.load() + * + * XXX- move this to properties. + * The file should have the following + * format: An empty line or a line starting with # is + * ignored. An backslash (\) at the end of the line + * makes the line continueing on the next line. Otherwise, each line + * describes a key/value pair. The chars up to the first whitespace, + * = or : are the key. The key is followed by one or more + * whitespaces, = or :. The rest of the + * line is the resource belonging to the key. You can give unicode + * characters with the \\uxxxx notation, where + * xxxx is the hex encoding of the 16 bit unicode char + * number. + * + * An example of a properties file for the german language is given + * here. This extends the example given in ListResourceBundle. + * Create a file MyResource_de.properties with the following contents + * and put it in the CLASSPATH. (The char \u00e4 is the + * german ä) + * + *
+ * s1=3
+ * s2=MeineDisk
+ * s3=3. M\u00e4rz 96
+ * s4=Die Diskette ''{1}'' enth\u00e4lt {0} in {2}.
+ * s5=0
+ * s6=keine Dateien
+ * s7=1
+ * s8=eine Datei
+ * s9=2
+ * s10={0,number} Dateien
+ * s11=Die Formatierung warf eine Exception: {0}
+ * s12=FEHLER
+ * s13=Ergebnis
+ * s14=Dialog
+ * s15=Auswahlkriterium
+ * s16=1,3
+ * 
+ * + * @see ResourceBundle + * @see ListResourceBundle + * @see Properties#load() + * @author Jochen Hoenicke */ public class PropertyResourceBundle extends ResourceBundle { - private Properties properties; + Properties properties; + + /** + * Creates a new property resource bundle. + * @param stream An input stream, where the resources are read from. + */ + public PropertyResourceBundle(java.io.InputStream stream) + throws java.io.IOException + { + properties = new Properties(); + properties.load(stream); + } - public PropertyResourceBundle (InputStream pstream) throws IOException - { - // Initialize and load our Properties. - properties = new Properties(); - properties.load(pstream); - } + /** + * Called by getObject when a resource is needed. This + * returns the resource given by the key. + * @param key The key of the resource. + * @return The resource for the key or null if it doesn't exists. + */ + protected Object handleGetObject(String key) + { + return properties.getProperty(key); + } + /** + * This method should return all keys for which a resource exists. + * @return An enumeration of the keys. + */ public Enumeration getKeys() - { - if (parent == null) - return properties.propertyNames(); - else - return new EnumerationChain (properties.propertyNames(), - parent.getKeys ()); - } - - public Object handleGetObject (String key) - { - return properties.getProperty(key); - } -} + { + // We must also return the keys of our parent. + if (parent != null) + { + return new DoubleEnumeration(properties.propertyNames(), + parent.getKeys()); + } + return properties.propertyNames(); + } +} -- cgit v1.1