Hi Joe, thanks for the review.
On 5/20/20 4:10 PM, Joe Wang wrote:
Hi Naoto,
I don't seem to see the DateFormat class or the getDateInstance methods
specify how errors may be handled (or logged). Is that stated somewhere
else?
Description of the system property "java.locale.providers" is in the
class description of java.util.spi.LocaleServiceProvider class, in which
the possible provider names can only be CLDR/COMPAT/SPI/HOST/JRE. So
possible error with this system property is user's typo of the provider
names. Although the behavior is not described, wrong names have been
simply ignored at runtime. The problem here is that user cannot tell
that he's done typo, and this fix is exactly to address it.
In other cases, I see that you've changed it to throw
ServiceConfigurationError, that looks to me may be better than a log as
a configuration error (or specifying wrong provider) sounds to me more
severe than info.
Those exceptions will never happen in normal situation, since those
locations are loading SPI/HostLocaleProviderAdapter class(es) that are
the JDK classes (classes/methods are known to exist).
On the other hand, I kept exception handlers in LocaleProviderAdapter to
generate Level.INFO log, as this is for the user's typo of the provider
names (explained above). Again this should be ignored and
replaced/continue with proper default behavior, and letting user know
the typo. If this were throwing SCError, it would break compatibility.
Of the three HostLocaleProviderAdapterImpl, the one for unix is deleted,
is there a specific reason?
Because it is simply not necessary (empty class). It was meant to be
implemented later, but the host provider on Unixes has never been
requested. Probably because OS date/time/number settings in Unixes are
less important to Java clients.
HTH,
Naoto
Best,
Joe
On 5/20/2020 10:29 AM, naoto.s...@oracle.com wrote:
Hello,
Please review the fix to the following issue:
https://bugs.openjdk.java.net/browse/JDK-8245241
The proposed changeset is located at:
https://cr.openjdk.java.net/~naoto/8245241/webrev.00/
Incorrect user-provided provider preference is supposed to be logged.
However it is not so because it is using
PlatformLogger(SurrogateLogger) which uses the default logging level.
I changed it to use j.l.System's logger and bumped it to INFO level
(it should notify the user by default). By taking this opportunity, I
did some clean-up in locale provider adapter's logging related code as
well.
Naoto