--- old/src/share/classes/java/util/Calendar.java Fri Mar 8 15:04:35 2013 +++ new/src/share/classes/java/util/Calendar.java Fri Mar 8 15:04:34 2013 @@ -57,6 +57,9 @@ import sun.util.BuddhistCalendar; import sun.util.calendar.ZoneInfo; import sun.util.locale.provider.CalendarDataUtility; +import sun.util.locale.provider.JRELocaleProviderAdapter; +import sun.util.locale.provider.LocaleProviderAdapter; +import sun.util.spi.CalendarProvider; /** * The Calendar class is an abstract class that provides methods @@ -1660,6 +1663,18 @@ private static Calendar createCalendar(TimeZone zone, Locale aLocale) { + LocaleProviderAdapter adapter = + LocaleProviderAdapter.getAdapter(CalendarProvider.class, aLocale); + // Kludge Alert: JRE's CalendarProvider should instantiate Calendar instances + // in it, but it's not possible since JapaneseImperialCalendar is package + // private. + if (!(adapter instanceof JRELocaleProviderAdapter)) { + CalendarProvider provider = adapter.getCalendarProvider(); + if (provider != null) { + return provider.getInstance(zone, aLocale); + } + } + Calendar cal = null; if (aLocale.hasExtensions()) {