<i18n dev> RFR: JDK-8276302: Locale.filterTags methods ignore actual weight when matching "*" (as if it is 1)
Naoto Sato
naoto at openjdk.java.net
Mon Dec 20 18:33:11 UTC 2021
On Fri, 10 Dec 2021 00:02:31 GMT, Daniel Le <duke at openjdk.java.net> wrote:
> Locale.filterTags methods ignore actual weight when matching "*" (as if
> it is 1) because LocaleMatcher.{filterBasic,filterExtended} do so.
>
> Fix the bug and add regression test cases for it as well as existing
> behavior.
Thanks for the fix. Looks good overall. Some minor comments follow. Also for the test case,
- add the bug id `8276302` to the `@bug` tag.
- modify the copyright year to 2021.
src/java.base/share/classes/sun/util/locale/LocaleMatcher.java line 131:
> 129:
> 130: if (!caseInsensitiveMatch(list, lowerCaseTag)
> 131: && !shouldIgnoreFilterBasicMatch(zeroRanges, lowerCaseTag)) {
Is there any reason to flip the evaluation order of the `if` statement?
src/java.base/share/classes/sun/util/locale/LocaleMatcher.java line 157:
> 155: * returning all the tags, remove those which are matching the range with
> 156: * quality weight q=0.
> 157: */
Please keep the comments in the modified code (except the `*` part). Although it's OK to remove this method as it eliminates extra `ArrayList` allocation, please keep the comments in the modified code (except the `*` part).
src/java.base/share/classes/sun/util/locale/LocaleMatcher.java line 161:
> 159: List<LanguageRange> zeroRange, Collection<String> tags) {
> 160: if (zeroRange.isEmpty()) {
> 161: tags = removeDuplicates(tags);
Can `removeDuplicates()` now be removed? There seems to be no usage.
src/java.base/share/classes/sun/util/locale/LocaleMatcher.java line 167:
> 165: List<String> matchingTags = new ArrayList<>();
> 166: for (String tag : tags) {
> 167: // change to lowercase for case-insensitive matching
Applies to this comment.
src/java.base/share/classes/sun/util/locale/LocaleMatcher.java line 171:
> 169: if (!shouldIgnoreFilterBasicMatch(zeroRange, lowerCaseTag)
> 170: && !caseInsensitiveMatch(matchingTags, lowerCaseTag)) {
> 171: matchingTags.add(tag); // preserving the case of the input tag
And this comment, too.
-------------
PR: https://git.openjdk.java.net/jdk/pull/6789
More information about the i18n-dev
mailing list