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