On 7/13/2020 9:04 PM, naoto.s...@oracle.com wrote:
Hi Joe,

On 7/13/20 7:28 PM, Joe Wang wrote:


On 7/13/2020 7:01 PM, naoto.s...@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.s...@oracle.com wrote:
Ping.

On 7/7/20 3:55 PM, naoto.s...@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



Reply via email to