< 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 >