src/share/classes/sun/util/locale/provider/AuxLocaleProviderAdapter.java

Print this page
rev 6663 : imported patch 8008576


  26 package sun.util.locale.provider;
  27 
  28 import java.text.spi.BreakIteratorProvider;
  29 import java.text.spi.CollatorProvider;
  30 import java.text.spi.DateFormatProvider;
  31 import java.text.spi.DateFormatSymbolsProvider;
  32 import java.text.spi.DecimalFormatSymbolsProvider;
  33 import java.text.spi.NumberFormatProvider;
  34 import java.util.Arrays;
  35 import java.util.HashSet;
  36 import java.util.Locale;
  37 import java.util.Set;
  38 import java.util.concurrent.ConcurrentHashMap;
  39 import java.util.concurrent.ConcurrentMap;
  40 import java.util.spi.CalendarDataProvider;
  41 import java.util.spi.CalendarNameProvider;
  42 import java.util.spi.CurrencyNameProvider;
  43 import java.util.spi.LocaleNameProvider;
  44 import java.util.spi.LocaleServiceProvider;
  45 import java.util.spi.TimeZoneNameProvider;

  46 
  47 /**
  48  * An abstract parent class for the
  49  * HostLocaleProviderAdapter/SPILocaleProviderAdapter.
  50  *
  51  * @author Naoto Sato
  52  * @author Masayoshi Okutsu
  53  */
  54 public abstract class AuxLocaleProviderAdapter extends LocaleProviderAdapter {
  55     /**
  56      * SPI implementations map
  57      */
  58     private ConcurrentMap<Class<? extends LocaleServiceProvider>, LocaleServiceProvider> providersMap =
  59             new ConcurrentHashMap<>();
  60 
  61     /**
  62      * Getter method for Locale Service Providers
  63      */
  64     @Override
  65     public <P extends LocaleServiceProvider> P getLocaleServiceProvider(Class<P> c) {


 123     @Override
 124     public LocaleNameProvider getLocaleNameProvider() {
 125         return getLocaleServiceProvider(LocaleNameProvider.class);
 126     }
 127 
 128     @Override
 129     public TimeZoneNameProvider getTimeZoneNameProvider() {
 130         return getLocaleServiceProvider(TimeZoneNameProvider.class);
 131     }
 132 
 133     @Override
 134     public CalendarDataProvider getCalendarDataProvider() {
 135         return getLocaleServiceProvider(CalendarDataProvider.class);
 136     }
 137 
 138     @Override
 139     public CalendarNameProvider getCalendarNameProvider() {
 140         return getLocaleServiceProvider(CalendarNameProvider.class);
 141     }
 142 








 143     @Override
 144     public LocaleResources getLocaleResources(Locale locale) {
 145         return null;
 146     }
 147 
 148     private static Locale[] availableLocales = null;
 149 
 150     @Override
 151     public Locale[] getAvailableLocales() {
 152         if (availableLocales == null) {
 153             Set<Locale> avail = new HashSet<>();
 154             for (Class<? extends LocaleServiceProvider> c :
 155                     LocaleServiceProviderPool.spiClasses) {
 156                 LocaleServiceProvider lsp = getLocaleServiceProvider(c);
 157                 if (lsp != null) {
 158                     avail.addAll(Arrays.asList(lsp.getAvailableLocales()));
 159                 }
 160             }
 161             availableLocales = avail.toArray(new Locale[0]);
 162         }


  26 package sun.util.locale.provider;
  27 
  28 import java.text.spi.BreakIteratorProvider;
  29 import java.text.spi.CollatorProvider;
  30 import java.text.spi.DateFormatProvider;
  31 import java.text.spi.DateFormatSymbolsProvider;
  32 import java.text.spi.DecimalFormatSymbolsProvider;
  33 import java.text.spi.NumberFormatProvider;
  34 import java.util.Arrays;
  35 import java.util.HashSet;
  36 import java.util.Locale;
  37 import java.util.Set;
  38 import java.util.concurrent.ConcurrentHashMap;
  39 import java.util.concurrent.ConcurrentMap;
  40 import java.util.spi.CalendarDataProvider;
  41 import java.util.spi.CalendarNameProvider;
  42 import java.util.spi.CurrencyNameProvider;
  43 import java.util.spi.LocaleNameProvider;
  44 import java.util.spi.LocaleServiceProvider;
  45 import java.util.spi.TimeZoneNameProvider;
  46 import sun.util.spi.CalendarProvider;
  47 
  48 /**
  49  * An abstract parent class for the
  50  * HostLocaleProviderAdapter/SPILocaleProviderAdapter.
  51  *
  52  * @author Naoto Sato
  53  * @author Masayoshi Okutsu
  54  */
  55 public abstract class AuxLocaleProviderAdapter extends LocaleProviderAdapter {
  56     /**
  57      * SPI implementations map
  58      */
  59     private ConcurrentMap<Class<? extends LocaleServiceProvider>, LocaleServiceProvider> providersMap =
  60             new ConcurrentHashMap<>();
  61 
  62     /**
  63      * Getter method for Locale Service Providers
  64      */
  65     @Override
  66     public <P extends LocaleServiceProvider> P getLocaleServiceProvider(Class<P> c) {


 124     @Override
 125     public LocaleNameProvider getLocaleNameProvider() {
 126         return getLocaleServiceProvider(LocaleNameProvider.class);
 127     }
 128 
 129     @Override
 130     public TimeZoneNameProvider getTimeZoneNameProvider() {
 131         return getLocaleServiceProvider(TimeZoneNameProvider.class);
 132     }
 133 
 134     @Override
 135     public CalendarDataProvider getCalendarDataProvider() {
 136         return getLocaleServiceProvider(CalendarDataProvider.class);
 137     }
 138 
 139     @Override
 140     public CalendarNameProvider getCalendarNameProvider() {
 141         return getLocaleServiceProvider(CalendarNameProvider.class);
 142     }
 143 
 144     /**
 145      * Getter methods for sun.util.spi.* providers
 146      */
 147     @Override
 148     public CalendarProvider getCalendarProvider() {
 149         return getLocaleServiceProvider(CalendarProvider.class);
 150     }
 151 
 152     @Override
 153     public LocaleResources getLocaleResources(Locale locale) {
 154         return null;
 155     }
 156 
 157     private static Locale[] availableLocales = null;
 158 
 159     @Override
 160     public Locale[] getAvailableLocales() {
 161         if (availableLocales == null) {
 162             Set<Locale> avail = new HashSet<>();
 163             for (Class<? extends LocaleServiceProvider> c :
 164                     LocaleServiceProviderPool.spiClasses) {
 165                 LocaleServiceProvider lsp = getLocaleServiceProvider(c);
 166                 if (lsp != null) {
 167                     avail.addAll(Arrays.asList(lsp.getAvailableLocales()));
 168                 }
 169             }
 170             availableLocales = avail.toArray(new Locale[0]);
 171         }