<i18n dev> RFR: 8248695: HostLocaleProviderAdapterImpl provides invalid date-only

Joe Wang huizhe.wang at oracle.com
Tue Jul 14 05:20:31 UTC 2020



On 7/13/2020 9:04 PM, naoto.sato at oracle.com wrote:
> Hi Joe,
>
> On 7/13/20 7:28 PM, Joe Wang wrote:
>>
>>
>> On 7/13/2020 7:01 PM, naoto.sato at oracle.com wrote:
>>> Hi Joe,
>>>
>>> Thank you for your review.
>>>
>>> On 7/13/20 3:55 PM, Joe Wang wrote:
>>>> Hi Naoto,
>>>>
>>>> Would it make sense to provide an additional test using the public 
>>>> APIs similar to the one provided in the bug report? I'm sure yours 
>>>> is correct and covers more cases than the original, but it would be 
>>>> nice to have an actual use case and use the public APIs. The report 
>>>> showed it was failed somewhere down the stream than when it is run 
>>>> against the current build, which produces IAE "Too many pattern 
>>>> letters: a" instead of what's reported.
>>>
>>> I am not quite sure I got your suggestion, but the test case uses 
>>> the same API as in the bug report (LocaleProviders.java, line 
>>> 421-428) that are supposed to catch two cases, i.e., 
>>> ofLocalizedDate()/ofLocalizedTime() tests catch "unsupported 
>>> temporal field" exception, such as HourOfDay, and 
>>> ofLocalizedDateTime() catches "Too many pattern letters: aa" which 
>>> you saw in (possibly) en_US locale. To make it clearer, I added some 
>>> comments to it.
>>
>> Yes, the test covered the cases. What I was suggesting was an 
>> additional test that uses only public APIs similar to that in the bug 
>> report, that is what users would do and how they may encounter this 
>> issue, e.g.
>>      System.setProperty("java.locale.providers", "HOST");
>>      DateTimeFormatter formatter = 
>> DateTimeFormatter.ofLocalizedDate(FormatStyle.FULL);
>>
>> It's unlikely for an user application to refer to a private 
>> package/class like sun.util.locale.provider.LocaleProviderAdapter.
>>
>> I understand it's been that way for these test. But to me, a real 
>> world use case is always nice to have. Your call whether you want to 
>> add it or not. There's no missing coverage.
>
> Now I got what you are talking about. The way the bug report is doing 
> is in fact discouraged, as once it is read at the startup, it won't be 
> read again with later setProperty() call. Apps are supposed to specify 
> the property as -D launcher parameter. (And the test case is doing it, 
> at line 184 of LocaleProvidersRun.java) Internal interface is used 
> only to tell whether HOST provider is actually used or not, so apps 
> should not depend on it.

I see. Thanks for the clarification. Also, nice comments to the test, 
helpful for understanding the details if ever it's read again.

Best,
Joe

>
>>
>>>
>>>>
>>>> HostLocaleProviderAdapter_md:849 - 865: may be compacted into one 
>>>> if statement, (bCal && getCalendarInfoWrapper(...) || 
>>>> getLocaleInfoWrapper(...)).
>>>
>>> Quite right. Modified.
>>>
>>> The updated webrev is located at:
>>>
>>> https://cr.openjdk.java.net/~naoto/8248695/webrev.01/
>>
>> Looks good to me.
>
> Thanks!
>
> Naoto
>
>>
>> Best,
>> Joe
>>
>>>
>>> Naoto
>>>
>>>>
>>>> Regards,
>>>> Joe
>>>>
>>>> On 7/13/2020 5:54 AM, naoto.sato at oracle.com wrote:
>>>>> Ping.
>>>>>
>>>>> On 7/7/20 3:55 PM, naoto.sato at oracle.com wrote:
>>>>>> Hello,
>>>>>>
>>>>>> Please review the fix to the following issue:
>>>>>>
>>>>>> https://bugs.openjdk.java.net/browse/JDK-8248695
>>>>>>
>>>>>> The proposed changeset is located at:
>>>>>>
>>>>>> http://cr.openjdk.java.net/~naoto/8248695/webrev.00/
>>>>>>
>>>>>> There were two causes that resulted in throwing exceptions. One 
>>>>>> was that the Host adapter for Windows always produced Date and 
>>>>>> Time combined patterns, so formatting a LocalDate ended up with 
>>>>>> unsupported temporal field for HourOfDay (reported in the bug), 
>>>>>> and the other cause was the pattern for am/pm was "aa", which was 
>>>>>> not valid as a DateTimeFormatter pattern.
>>>>>>
>>>>>> Besides these issues, localized DayOfWeek/AM_PM names have not 
>>>>>> been correctly implemented in the host adapter. Now those names 
>>>>>> are correctly returned from Windows.
>>>>>>
>>>>>> Naoto
>>>>
>>



More information about the i18n-dev mailing list