aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark Wielaard <mark@klomp.org>2002-12-08 23:38:02 +0000
committerMark Wielaard <mark@gcc.gnu.org>2002-12-08 23:38:02 +0000
commit24632117ce14a2ced57f5ab3fb4551d5c985f04d (patch)
tree0428606bc42926355571268cacfa44d7ecf4659c
parent37c66aa6ef3000be23ee0f2f53ffd860ab88fee8 (diff)
downloadgcc-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
-rw-r--r--libjava/ChangeLog7
-rw-r--r--libjava/java/util/ResourceBundle.java18
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