diff options
author | Mark Wielaard <mark@klomp.org> | 2002-12-08 23:38:02 +0000 |
---|---|---|
committer | Mark Wielaard <mark@gcc.gnu.org> | 2002-12-08 23:38:02 +0000 |
commit | 24632117ce14a2ced57f5ab3fb4551d5c985f04d (patch) | |
tree | 0428606bc42926355571268cacfa44d7ecf4659c /libjava | |
parent | 37c66aa6ef3000be23ee0f2f53ffd860ab88fee8 (diff) | |
download | gcc-24632117ce14a2ced57f5ab3fb4551d5c985f04d.zip gcc-24632117ce14a2ced57f5ab3fb4551d5c985f04d.tar.gz gcc-24632117ce14a2ced57f5ab3fb4551d5c985f04d.tar.bz2 |
ResourceBundle.java (resourceBundleCache): Not final.
* java/util/ResourceBundle.java (resourceBundleCache): Not final.
(lastDefaultLocale): New field.
(getBundle): When Locale.getDefault != lastDefaultLocale reset
resourceBundleCache.
From-SVN: r59948
Diffstat (limited to 'libjava')
-rw-r--r-- | libjava/ChangeLog | 7 | ||||
-rw-r--r-- | libjava/java/util/ResourceBundle.java | 18 |
2 files changed, 22 insertions, 3 deletions
diff --git a/libjava/ChangeLog b/libjava/ChangeLog index 3bc2866..9e255b2 100644 --- a/libjava/ChangeLog +++ b/libjava/ChangeLog @@ -1,3 +1,10 @@ +2002-12-08 Mark Wielaard <mark@klomp.org> + + * java/util/ResourceBundle.java (resourceBundleCache): Not final. + (lastDefaultLocale): New field. + (getBundle): When Locale.getDefault != lastDefaultLocale reset + resourceBundleCache. + 2002-12-06 Mark Wielaard <mark@klomp.org> * java/net/InetAddress.java (toString): Use hostname when not null, diff --git a/libjava/java/util/ResourceBundle.java b/libjava/java/util/ResourceBundle.java index ecc63af..2a4e348 100644 --- a/libjava/java/util/ResourceBundle.java +++ b/libjava/java/util/ResourceBundle.java @@ -111,7 +111,13 @@ public abstract class ResourceBundle * second hash map is the localized name, the value is a soft * references to the resource bundle. */ - private static final Map resourceBundleCache = new HashMap(); + private static Map resourceBundleCache; + + /** + * The last default Locale we saw. If this ever changes then we have to + * reset our caches. + */ + private static Locale lastDefaultLocale; /** * The `empty' locale is created once in order to optimize @@ -312,6 +318,12 @@ public abstract class ResourceBundle { // This implementation searches the bundle in the reverse direction // and builds the parent chain on the fly. + Locale defaultLocale = Locale.getDefault(); + if (defaultLocale != lastDefaultLocale) + { + resourceBundleCache = new HashMap(); + lastDefaultLocale = defaultLocale; + } HashMap cache = (HashMap) resourceBundleCache.get(classLoader); StringBuffer sb = new StringBuffer(60); sb.append(baseName).append('_').append(locale); @@ -359,9 +371,9 @@ public abstract class ResourceBundle // bundle. ResourceBundle bundle = tryLocalBundle(baseName, locale, classLoader, baseBundle, cache); - if (bundle == baseBundle && !locale.equals(Locale.getDefault())) + if (bundle == baseBundle && !locale.equals(defaultLocale)) { - bundle = tryLocalBundle(baseName, Locale.getDefault(), + bundle = tryLocalBundle(baseName, defaultLocale, classLoader, baseBundle, cache); // We need to record that the argument locale maps to the // bundle we just found. If we didn't find a bundle, record |