src/share/classes/java/util/Calendar.java

Print this page
rev 6663 : imported patch 8008576

*** 55,64 **** --- 55,67 ---- import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentMap; 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 <code>Calendar</code> class is an abstract class that provides methods * for converting between a specific instant in time and a set of {@link * #fields calendar fields} such as <code>YEAR</code>, <code>MONTH</code>,
*** 1658,1667 **** --- 1661,1682 ---- } 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()) { String caltype = aLocale.getUnicodeLocaleType("ca"); if (caltype != null) {