The caller of CalendarNameProvider is responsible for specifying the calendar type to use. The locale gives what language to use for names. Otherwise, a call like provider.getDisplayName("gregory", ERA, 1, SHORT, Locale.forLanguageTag("ja-JP-u-ca-japanese")) works wrong.

This may be confusing. So I did put a note to the SPI documentation to avoid this confusion.

   |calendarType| - the calendar type. (Any calendar type given by
   |locale| is ignored.)

The stack trace seems to show the following call (equivalent) was made.

provider.getDisplayName("gregory", ERA, 2, SHORT, Locale.forLanguageTag("ja-JP-u-ca-japanese"))

Maybe the value parameter should be checked. A question is that it should return null or throw an IllegalArgumentException.

Thanks,
Masayoshi

On 1/31/2013 11:49 AM, Naoto Sato wrote:
I agree that there also is a problem in 310 side, but the bug I am trying to fix is the one in LocaleResources, which is independent of how 310 code is calling into this getCalendarNames() method. LocaleResources.getCalendarNames() should return the calendar names for the specified calendar.

Naoto

On 1/30/13 6:01 PM, Masayoshi Okutsu wrote:
It's not correct to use locale's calendar for the fix. The calendar type
needs to be from the Chrono(logy) set to the formatter. The 310 code
needs to be fixed.

Thanks,
Masayoshi

On 1/31/2013 7:02 AM, Naoto Sato wrote:
Hello,

Please review the following changes for 8007038:

http://cr.openjdk.java.net/~naoto/8007038/webrev.00/

The bug description can be found here:

http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=8007038

The cause of the bug was that the calendar name provider
implementation did not take the Unicode -u extension into account.

Naoto



Reply via email to