diff -r fcad3b6ec812 -r 8e30386cc014 jdk/src/share/classes/sun/util/locale/provider/JRELocaleProviderAdapter.java --- 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);