--- a/jdk/src/share/classes/sun/util/locale/provider/JRELocaleProviderAdapter.java Thu Mar 14 16:59:06 2013 +0000
+++ b/jdk/src/share/classes/sun/util/locale/provider/JRELocaleProviderAdapter.java Thu Mar 14 11:29:16 2013 -0700
@@ -34,10 +34,12 @@
import java.text.spi.DateFormatSymbolsProvider;
import java.text.spi.DecimalFormatSymbolsProvider;
import java.text.spi.NumberFormatProvider;
+import java.util.Calendar;
import java.util.HashSet;
import java.util.Locale;
import java.util.Set;
import java.util.StringTokenizer;
+import java.util.TimeZone;
import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.ConcurrentMap;
import java.util.spi.CalendarDataProvider;
@@ -47,6 +49,7 @@
import java.util.spi.LocaleServiceProvider;
import java.util.spi.TimeZoneNameProvider;
import sun.util.resources.LocaleData;
+import sun.util.spi.CalendarProvider;
/**
* LocaleProviderAdapter implementation for the legacy JRE locale data.
@@ -104,6 +107,8 @@
return (P) getCalendarDataProvider();
case "CalendarNameProvider":
return (P) getCalendarNameProvider();
+ case "CalendarProvider":
+ return (P) getCalendarProvider();
default:
throw new InternalError("should not come down here");
}
@@ -122,6 +127,8 @@
private volatile CalendarDataProvider calendarDataProvider = null;
private volatile CalendarNameProvider calendarNameProvider = null;
+ private volatile CalendarProvider calendarProvider = null;
+
/*
* Getter methods for java.text.spi.* providers
*/
@@ -283,6 +290,23 @@
return calendarNameProvider;
}
+ /**
+ * Getter methods for sun.util.spi.* providers
+ */
+ @Override
+ public CalendarProvider getCalendarProvider() {
+ if (calendarProvider == null) {
+ CalendarProvider provider = new CalendarProviderImpl(getAdapterType(),
+ getLanguageTagSet("CalendarData"));
+ synchronized (this) {
+ if (calendarProvider == null) {
+ calendarProvider = provider;
+ }
+ }
+ }
+ return calendarProvider;
+ }
+
@Override
public LocaleResources getLocaleResources(Locale locale) {
LocaleResources lr = localeResourcesMap.get(locale);