jdk/src/share/classes/sun/util/locale/provider/JRELocaleProviderAdapter.java
changeset 16481 8e30386cc014
parent 15260 7af2d7a87806
child 17944 bbd67fc49daa
equal deleted inserted replaced
16480:fcad3b6ec812 16481:8e30386cc014
    32 import java.text.spi.CollatorProvider;
    32 import java.text.spi.CollatorProvider;
    33 import java.text.spi.DateFormatProvider;
    33 import java.text.spi.DateFormatProvider;
    34 import java.text.spi.DateFormatSymbolsProvider;
    34 import java.text.spi.DateFormatSymbolsProvider;
    35 import java.text.spi.DecimalFormatSymbolsProvider;
    35 import java.text.spi.DecimalFormatSymbolsProvider;
    36 import java.text.spi.NumberFormatProvider;
    36 import java.text.spi.NumberFormatProvider;
       
    37 import java.util.Calendar;
    37 import java.util.HashSet;
    38 import java.util.HashSet;
    38 import java.util.Locale;
    39 import java.util.Locale;
    39 import java.util.Set;
    40 import java.util.Set;
    40 import java.util.StringTokenizer;
    41 import java.util.StringTokenizer;
       
    42 import java.util.TimeZone;
    41 import java.util.concurrent.ConcurrentHashMap;
    43 import java.util.concurrent.ConcurrentHashMap;
    42 import java.util.concurrent.ConcurrentMap;
    44 import java.util.concurrent.ConcurrentMap;
    43 import java.util.spi.CalendarDataProvider;
    45 import java.util.spi.CalendarDataProvider;
    44 import java.util.spi.CalendarNameProvider;
    46 import java.util.spi.CalendarNameProvider;
    45 import java.util.spi.CurrencyNameProvider;
    47 import java.util.spi.CurrencyNameProvider;
    46 import java.util.spi.LocaleNameProvider;
    48 import java.util.spi.LocaleNameProvider;
    47 import java.util.spi.LocaleServiceProvider;
    49 import java.util.spi.LocaleServiceProvider;
    48 import java.util.spi.TimeZoneNameProvider;
    50 import java.util.spi.TimeZoneNameProvider;
    49 import sun.util.resources.LocaleData;
    51 import sun.util.resources.LocaleData;
       
    52 import sun.util.spi.CalendarProvider;
    50 
    53 
    51 /**
    54 /**
    52  * LocaleProviderAdapter implementation for the legacy JRE locale data.
    55  * LocaleProviderAdapter implementation for the legacy JRE locale data.
    53  *
    56  *
    54  * @author Naoto Sato
    57  * @author Naoto Sato
   102             return (P) getTimeZoneNameProvider();
   105             return (P) getTimeZoneNameProvider();
   103         case "CalendarDataProvider":
   106         case "CalendarDataProvider":
   104             return (P) getCalendarDataProvider();
   107             return (P) getCalendarDataProvider();
   105         case "CalendarNameProvider":
   108         case "CalendarNameProvider":
   106             return (P) getCalendarNameProvider();
   109             return (P) getCalendarNameProvider();
       
   110         case "CalendarProvider":
       
   111             return (P) getCalendarProvider();
   107         default:
   112         default:
   108             throw new InternalError("should not come down here");
   113             throw new InternalError("should not come down here");
   109         }
   114         }
   110     }
   115     }
   111 
   116 
   120     private volatile LocaleNameProvider localeNameProvider = null;
   125     private volatile LocaleNameProvider localeNameProvider = null;
   121     private volatile TimeZoneNameProvider timeZoneNameProvider = null;
   126     private volatile TimeZoneNameProvider timeZoneNameProvider = null;
   122     private volatile CalendarDataProvider calendarDataProvider = null;
   127     private volatile CalendarDataProvider calendarDataProvider = null;
   123     private volatile CalendarNameProvider calendarNameProvider = null;
   128     private volatile CalendarNameProvider calendarNameProvider = null;
   124 
   129 
       
   130     private volatile CalendarProvider calendarProvider = null;
       
   131 
   125     /*
   132     /*
   126      * Getter methods for java.text.spi.* providers
   133      * Getter methods for java.text.spi.* providers
   127      */
   134      */
   128     @Override
   135     @Override
   129     public BreakIteratorProvider getBreakIteratorProvider() {
   136     public BreakIteratorProvider getBreakIteratorProvider() {
   279                     calendarNameProvider = provider;
   286                     calendarNameProvider = provider;
   280                 }
   287                 }
   281             }
   288             }
   282         }
   289         }
   283         return calendarNameProvider;
   290         return calendarNameProvider;
       
   291     }
       
   292 
       
   293     /**
       
   294      * Getter methods for sun.util.spi.* providers
       
   295      */
       
   296     @Override
       
   297     public CalendarProvider getCalendarProvider() {
       
   298         if (calendarProvider == null) {
       
   299             CalendarProvider provider = new CalendarProviderImpl(getAdapterType(),
       
   300                                                     getLanguageTagSet("CalendarData"));
       
   301             synchronized (this) {
       
   302                 if (calendarProvider == null) {
       
   303                     calendarProvider = provider;
       
   304                 }
       
   305             }
       
   306         }
       
   307         return calendarProvider;
   284     }
   308     }
   285 
   309 
   286     @Override
   310     @Override
   287     public LocaleResources getLocaleResources(Locale locale) {
   311     public LocaleResources getLocaleResources(Locale locale) {
   288         LocaleResources lr = localeResourcesMap.get(locale);
   312         LocaleResources lr = localeResourcesMap.get(locale);