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