<i18n dev> RFR: 8039165: [Doc] MessageFormat null locale generates NullPointerException [v2]

Justin Lu jlu at openjdk.org
Tue Jul 18 20:59:43 UTC 2023


On Mon, 17 Jul 2023 21:54:37 GMT, Naoto Sato <naoto at openjdk.org> wrote:

>> Justin Lu has updated the pull request incrementally with two additional commits since the last revision:
>> 
>>  - Slight wording adjustment
>>  - Review: Explicitly declare when NPE thrown instead of 'may'
>
> src/java.base/share/classes/java/text/MessageFormat.java line 396:
> 
>> 394:      * {@code NullPointerException} if {@code locale} is {@code null}
>> 395:      * either during the creation of the {@code MessageFormat} object or later
>> 396:      * when {@code format()} is called by the constructed {@code MessageFormat} object.
> 
> It looks a bit vague as it contains `may`. I think it would be clearer if it explains a bit more, e.g., it throws NPE if any of the subformats require the locale, or along with those lines. Probably the same wording is needed at `format()` and other public methods that use the `locale` field.

The only other public methods that use `locale` are setLocale(), getLocale(), toString(), and equals(). In all of these cases I don't believe if a MessageFormat that was created with a null locale (and did not throw NPE) calls them, a NPE will occur in any case.

Thus I have updated the spec to not use 'may' and explicitly state NPE is thrown if a subformat is localized and needed by the MessageFormat.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/14911#discussion_r1267298674


More information about the i18n-dev mailing list