Commit 24632117 by Mark Wielaard Committed by Mark Wielaard

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
parent 37c66aa6
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> 2002-12-06 Mark Wielaard <mark@klomp.org>
* java/net/InetAddress.java (toString): Use hostname when not null, * java/net/InetAddress.java (toString): Use hostname when not null,
......
...@@ -111,7 +111,13 @@ public abstract class ResourceBundle ...@@ -111,7 +111,13 @@ public abstract class ResourceBundle
* second hash map is the localized name, the value is a soft * second hash map is the localized name, the value is a soft
* references to the resource bundle. * 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 * The `empty' locale is created once in order to optimize
...@@ -312,6 +318,12 @@ public abstract class ResourceBundle ...@@ -312,6 +318,12 @@ public abstract class ResourceBundle
{ {
// This implementation searches the bundle in the reverse direction // This implementation searches the bundle in the reverse direction
// and builds the parent chain on the fly. // 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); HashMap cache = (HashMap) resourceBundleCache.get(classLoader);
StringBuffer sb = new StringBuffer(60); StringBuffer sb = new StringBuffer(60);
sb.append(baseName).append('_').append(locale); sb.append(baseName).append('_').append(locale);
...@@ -359,9 +371,9 @@ public abstract class ResourceBundle ...@@ -359,9 +371,9 @@ public abstract class ResourceBundle
// bundle. // bundle.
ResourceBundle bundle = tryLocalBundle(baseName, locale, ResourceBundle bundle = tryLocalBundle(baseName, locale,
classLoader, baseBundle, cache); 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); classLoader, baseBundle, cache);
// We need to record that the argument locale maps to the // We need to record that the argument locale maps to the
// bundle we just found. If we didn't find a bundle, record // bundle we just found. If we didn't find a bundle, record
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment