142 OpenListResourceBundle supp = getSupplementary(suppName, formatData.getLocale()); 143 formatData.setParallelContents(supp); 144 resetKeySet |= supp != null; 145 // If any parents or this bundle has parallel data, reset keyset to create 146 // a new keyset with the data. 147 if (resetKeySet) { 148 formatData.resetKeySet(); 149 } 150 return resetKeySet; 151 } 152 153 /** 154 * Gets a number format data resource bundle, using privileges 155 * to allow accessing a sun.* package. 156 */ 157 public ResourceBundle getNumberFormatData(Locale locale) { 158 return getBundle(type.getTextResourcesPackage() + ".FormatData", locale); 159 } 160 161 public static ResourceBundle getBundle(final String baseName, final Locale locale) { 162 return AccessController.doPrivileged(new PrivilegedAction<ResourceBundle>() { 163 @Override 164 public ResourceBundle run() { 165 return ResourceBundle 166 .getBundle(baseName, locale, LocaleDataResourceBundleControl.INSTANCE); 167 } 168 }); 169 } 170 171 private static OpenListResourceBundle getSupplementary(final String baseName, final Locale locale) { 172 return AccessController.doPrivileged(new PrivilegedAction<OpenListResourceBundle>() { 173 @Override 174 public OpenListResourceBundle run() { 175 OpenListResourceBundle rb = null; 176 try { 177 rb = (OpenListResourceBundle) ResourceBundle.getBundle(baseName, 178 locale, SupplementaryResourceBundleControl.INSTANCE); 179 180 } catch (MissingResourceException e) { 181 // return null if no supplementary is available 182 } 183 return rb; 184 } 185 }); 186 } 187 188 private static class LocaleDataResourceBundleControl extends ResourceBundle.Control { 189 /* Singlton instance of ResourceBundle.Control. */ 190 private static final LocaleDataResourceBundleControl INSTANCE = 191 new LocaleDataResourceBundleControl(); 192 | 142 OpenListResourceBundle supp = getSupplementary(suppName, formatData.getLocale()); 143 formatData.setParallelContents(supp); 144 resetKeySet |= supp != null; 145 // If any parents or this bundle has parallel data, reset keyset to create 146 // a new keyset with the data. 147 if (resetKeySet) { 148 formatData.resetKeySet(); 149 } 150 return resetKeySet; 151 } 152 153 /** 154 * Gets a number format data resource bundle, using privileges 155 * to allow accessing a sun.* package. 156 */ 157 public ResourceBundle getNumberFormatData(Locale locale) { 158 return getBundle(type.getTextResourcesPackage() + ".FormatData", locale); 159 } 160 161 public static ResourceBundle getBundle(final String baseName, final Locale locale) { 162 return AccessController.doPrivileged(new PrivilegedAction<>() { 163 @Override 164 public ResourceBundle run() { 165 return ResourceBundle 166 .getBundle(baseName, locale, LocaleDataResourceBundleControl.INSTANCE); 167 } 168 }); 169 } 170 171 private static OpenListResourceBundle getSupplementary(final String baseName, final Locale locale) { 172 return AccessController.doPrivileged(new PrivilegedAction<>() { 173 @Override 174 public OpenListResourceBundle run() { 175 OpenListResourceBundle rb = null; 176 try { 177 rb = (OpenListResourceBundle) ResourceBundle.getBundle(baseName, 178 locale, SupplementaryResourceBundleControl.INSTANCE); 179 180 } catch (MissingResourceException e) { 181 // return null if no supplementary is available 182 } 183 return rb; 184 } 185 }); 186 } 187 188 private static class LocaleDataResourceBundleControl extends ResourceBundle.Control { 189 /* Singlton instance of ResourceBundle.Control. */ 190 private static final LocaleDataResourceBundleControl INSTANCE = 191 new LocaleDataResourceBundleControl(); 192 |