jdk/src/windows/classes/sun/util/locale/provider/HostLocaleProviderAdapterImpl.java
changeset 16733 9267ec7004a1
parent 16481 8e30386cc014
child 17169 5e5039c3181d
equal deleted inserted replaced
16732:c96397eeca72 16733:9267ec7004a1
   301                     dfs.setMinusSign(getMinusSign(langTag, dfs.getMinusSign()));
   301                     dfs.setMinusSign(getMinusSign(langTag, dfs.getMinusSign()));
   302                     dfs.setMonetaryDecimalSeparator(getMonetaryDecimalSeparator(langTag, dfs.getMonetaryDecimalSeparator()));
   302                     dfs.setMonetaryDecimalSeparator(getMonetaryDecimalSeparator(langTag, dfs.getMonetaryDecimalSeparator()));
   303                     dfs.setNaN(getNaN(langTag, dfs.getNaN()));
   303                     dfs.setNaN(getNaN(langTag, dfs.getNaN()));
   304                     dfs.setPercent(getPercent(langTag, dfs.getPercent()));
   304                     dfs.setPercent(getPercent(langTag, dfs.getPercent()));
   305                     dfs.setPerMill(getPerMill(langTag, dfs.getPerMill()));
   305                     dfs.setPerMill(getPerMill(langTag, dfs.getPerMill()));
   306                     if (isNativeDigit(langTag)) {
   306                     dfs.setZeroDigit(getZeroDigit(langTag, dfs.getZeroDigit()));
   307                         dfs.setZeroDigit(getZeroDigit(langTag, dfs.getZeroDigit()));
       
   308                     }
       
   309                     ref = new SoftReference<>(dfs);
   307                     ref = new SoftReference<>(dfs);
   310                     decimalFormatSymbolsCache.put(locale, ref);
   308                     decimalFormatSymbolsCache.put(locale, ref);
   311                 }
   309                 }
   312                 return (DecimalFormatSymbols)dfs.clone();
   310                 return (DecimalFormatSymbols)dfs.clone();
   313             }
   311             }
   418         Locale base = locale.stripExtensions();
   416         Locale base = locale.stripExtensions();
   419         if (!supportedLocaleSet.contains(base)) {
   417         if (!supportedLocaleSet.contains(base)) {
   420             return false;
   418             return false;
   421         }
   419         }
   422 
   420 
       
   421         int calid = getCalendarID(locale.toLanguageTag());
       
   422         if (calid <= 0 || calid >= calIDToLDML.length) {
       
   423             return false;
       
   424         }
       
   425 
   423         String requestedCalType = locale.getUnicodeLocaleType("ca");
   426         String requestedCalType = locale.getUnicodeLocaleType("ca");
   424         String nativeCalType =
   427         String nativeCalType = calIDToLDML[calid]
   425                 calIDToLDML[getCalendarID(locale.toLanguageTag())]
       
   426                 .replaceFirst("_.*", ""); // remove locale part.
   428                 .replaceFirst("_.*", ""); // remove locale part.
   427 
   429 
   428         if (requestedCalType == null) {
   430         if (requestedCalType == null) {
   429             return Calendar.getAvailableCalendarTypes().contains(nativeCalType);
   431             return Calendar.getAvailableCalendarTypes().contains(nativeCalType);
   430         } else {
   432         } else {