diff --git a/tools/cldr-code/src/main/java/org/unicode/cldr/draft/Misc.java b/tools/cldr-code/src/main/java/org/unicode/cldr/draft/Misc.java index 208b904941e..369f9da9190 100644 --- a/tools/cldr-code/src/main/java/org/unicode/cldr/draft/Misc.java +++ b/tools/cldr-code/src/main/java/org/unicode/cldr/draft/Misc.java @@ -144,12 +144,11 @@ private static void showDefaultContent(String... strings) { private static void showSortKey() { String[] tests = "a ä A ぁ あ ァ ァ ア ア ㋐".split(" "); - // TODO: freeze the Collator; problematic since changed in innermost for loop below - // Reference: https://unicode-org.atlassian.net/browse/CLDR-7428 RuleBasedCollator c = (RuleBasedCollator) Collator.getInstance(ULocale.ROOT); c.setStrength(RuleBasedCollator.QUATERNARY); c.setCaseLevel(true); c.setHiraganaQuaternary(true); + // Do not freeze the collator since it is changed in the innermost "for" loop below for (String test : tests) { for (boolean caseLevel : new boolean[] {false, true}) { c.setCaseLevel(caseLevel); diff --git a/tools/cldr-code/src/main/java/org/unicode/cldr/tool/CLDRModify.java b/tools/cldr-code/src/main/java/org/unicode/cldr/tool/CLDRModify.java index c3f7317d03b..4862da08f0f 100644 --- a/tools/cldr-code/src/main/java/org/unicode/cldr/tool/CLDRModify.java +++ b/tools/cldr-code/src/main/java/org/unicode/cldr/tool/CLDRModify.java @@ -2102,7 +2102,7 @@ public void handlePath(String xpath) { "add annotation names to keywords", new CLDRFilter() { Set available = Annotations.getAllAvailable(); - TreeSet sorted = new TreeSet<>(Collator.getInstance(ULocale.ROOT)); + TreeSet sorted = new TreeSet<>(CollatorHelper.ROOT_COLLATOR); CLDRFile resolved; Set handledCharacters = new HashSet<>(); boolean isTop; diff --git a/tools/cldr-code/src/main/java/org/unicode/cldr/tool/ExtractMessages.java b/tools/cldr-code/src/main/java/org/unicode/cldr/tool/ExtractMessages.java index 3fd97cc8c16..ef1bfc29ab3 100644 --- a/tools/cldr-code/src/main/java/org/unicode/cldr/tool/ExtractMessages.java +++ b/tools/cldr-code/src/main/java/org/unicode/cldr/tool/ExtractMessages.java @@ -20,6 +20,7 @@ import org.unicode.cldr.util.CLDRFile.WinningChoice; import org.unicode.cldr.util.CLDRPaths; import org.unicode.cldr.util.CldrUtility; +import org.unicode.cldr.util.CollatorHelper; import org.unicode.cldr.util.Factory; import org.unicode.cldr.util.Pair; import org.unicode.cldr.util.PathUtilities; @@ -205,12 +206,7 @@ public void handlePathValue(String path, String value) { } } - public static Collator col = Collator.getInstance(ULocale.ROOT); // freeze below - - static { - col.setStrength(Collator.SECONDARY); - col = col.freeze(); - } + public static Collator col = CollatorHelper.ROOT_SECONDARY; private static OtherHandler otherHandler = new OtherHandler();