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); |