< prev index next >
src/java.desktop/share/classes/javax/accessibility/AccessibleBundle.java
Print this page
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 1997, 2017, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2019, Oracle and/or its affiliates. All rights reserved.
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* This code is free software; you can redistribute it and/or modify it
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation. Oracle designates this
@@ -28,11 +28,10 @@
import java.util.Enumeration;
import java.util.Hashtable;
import java.util.Locale;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
-
import sun.awt.AWTAccessor;
/**
* Base class used to maintain a strongly typed enumeration. This is the
* superclass of {@link AccessibleState} and {@link AccessibleRole}.
@@ -48,11 +47,11 @@
* @see AccessibleRole
* @see AccessibleState
*/
public abstract class AccessibleBundle {
- private static Hashtable<Locale, Hashtable<String, Object>> table = new Hashtable<>();
+ private static Hashtable<String, Hashtable<String, Object>> table = new Hashtable<>();
private final String defaultResourceBundleName
= "com.sun.accessibility.internal.resources.accessibility";
static {
@@ -92,16 +91,18 @@
* @param locale the locale for which to obtain a localized string
* @return a localized string for the key
*/
protected String toDisplayString(String resourceBundleName,
Locale locale) {
-
// loads the resource bundle if necessary
loadResourceBundle(resourceBundleName, locale);
+ // use the resource bundle name and locale based tag
+ String hashCodeKey = resourceBundleName + locale.toLanguageTag();
+
// returns the localized string
- Hashtable<String, Object> ht = table.get(locale);
+ Hashtable<String, Object> ht = table.get(hashCodeKey);
if (ht != null) {
Object o = ht.get(key);
if (o != null && o instanceof String) {
return (String)o;
}
@@ -143,12 +144,14 @@
/**
* Loads the Accessibility resource bundle if necessary.
*/
private void loadResourceBundle(String resourceBundleName,
Locale locale) {
- if (! table.containsKey(locale)) {
+ // use the resource bundle name and locale based tag
+ String hashCodeKey = resourceBundleName + locale.toLanguageTag();
+ if (! table.containsKey(hashCodeKey)) {
try {
Hashtable<String, Object> resourceTable = new Hashtable<>();
ResourceBundle bundle = ResourceBundle.getBundle(resourceBundleName, locale);
@@ -156,11 +159,11 @@
while(iter.hasMoreElements()) {
String key = iter.nextElement();
resourceTable.put(key, bundle.getObject(key));
}
- table.put(locale, resourceTable);
+ table.put(hashCodeKey, resourceTable);
}
catch (MissingResourceException e) {
System.err.println("loadResourceBundle: " + e);
// Just return so toDisplayString() returns the
// non-localized key.
< prev index next >