-
Bug
-
Resolution: Fixed
-
P4
-
None
-
None
-
b15
-
generic
-
generic
-
Verified
Description:
Locale.filterTags method is returning duplicate tags in the matching output tags. However it is not written in the javadoc that only distinct tags will be returned in the output, but that behaviour varies between the language ranges.
For LanguageRange("*", 0.6) and for the input tags "de-CH", "hi-IN", "fr-CH", "de-CH", "en", it returns,
de-CH, hi-IN, fr-CH, de-CH, en // duplicate "de-CH"
OTOH, for LanguageRange("*-CH", 0.6) and for the same input tags ("de-CH", "hi-IN", "fr-CH", "de-CH", "en"), it returns,
de-CH, fr-CH // no duplicate de-CH
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Execute the code provided
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class DuplicateTags {
public static void main (String[] args) {
List<Locale.LanguageRange> langRanges = List.of(new Locale.LanguageRange("*", 0.6));
List<String> tags = List.of("de-CH", "hi-IN", "fr-CH", "de-CH", "en");
List<String> list = Locale.filterTags(langRanges, tags, Locale.FilteringMode.AUTOSELECT_FILTERING);
for (String str : list) {
System.out.print(str+" "); // return duplicate tags de-ch
}
System.out.println("");
langRanges = List.of(new Locale.LanguageRange("*-CH", 0.6));
tags = List.of("de-CH", "hi-IN", "fr-CH", "de-CH", "en");
list = Locale.filterTags(langRanges, tags, Locale.FilteringMode.AUTOSELECT_FILTERING);
for (String str : list) {
System.out.print(str+" "); // no duplicates are returned
}
System.out.println("");
}
}
---------- END SOURCE ----------
Locale.filterTags method is returning duplicate tags in the matching output tags. However it is not written in the javadoc that only distinct tags will be returned in the output, but that behaviour varies between the language ranges.
For LanguageRange("*", 0.6) and for the input tags "de-CH", "hi-IN", "fr-CH", "de-CH", "en", it returns,
de-CH, hi-IN, fr-CH, de-CH, en // duplicate "de-CH"
OTOH, for LanguageRange("*-CH", 0.6) and for the same input tags ("de-CH", "hi-IN", "fr-CH", "de-CH", "en"), it returns,
de-CH, fr-CH // no duplicate de-CH
STEPS TO FOLLOW TO REPRODUCE THE PROBLEM :
Execute the code provided
REPRODUCIBILITY :
This bug can be reproduced always.
---------- BEGIN SOURCE ----------
public class DuplicateTags {
public static void main (String[] args) {
List<Locale.LanguageRange> langRanges = List.of(new Locale.LanguageRange("*", 0.6));
List<String> tags = List.of("de-CH", "hi-IN", "fr-CH", "de-CH", "en");
List<String> list = Locale.filterTags(langRanges, tags, Locale.FilteringMode.AUTOSELECT_FILTERING);
for (String str : list) {
System.out.print(str+" "); // return duplicate tags de-ch
}
System.out.println("");
langRanges = List.of(new Locale.LanguageRange("*-CH", 0.6));
tags = List.of("de-CH", "hi-IN", "fr-CH", "de-CH", "en");
list = Locale.filterTags(langRanges, tags, Locale.FilteringMode.AUTOSELECT_FILTERING);
for (String str : list) {
System.out.print(str+" "); // no duplicates are returned
}
System.out.println("");
}
}
---------- END SOURCE ----------
- csr for
-
JDK-8181073 Locale.filterTags()/lookupTag() methods return lowercased language tags
-
- Closed
-
- relates to
-
JDK-8032842 Locale.filterTags()/lookupTag() methods return lowercased language tags
-
- Closed
-