diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/br/BrazilianStemmer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/br/BrazilianStemmer.java
index f5647fceeff3..f999c25133f0 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/br/BrazilianStemmer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/br/BrazilianStemmer.java
@@ -20,7 +20,7 @@
/** A stemmer for Brazilian Portuguese words. */
class BrazilianStemmer {
- private static final Locale locale = new Locale("pt", "BR");
+ private static final Locale locale = new Locale.Builder().setLanguageTag("pt-BR").build();
/** Changed term */
private String TERM;
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/de/GermanStemmer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/de/GermanStemmer.java
index ba668b238efe..866b160df87a 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/de/GermanStemmer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/de/GermanStemmer.java
@@ -33,7 +33,7 @@ class GermanStemmer {
/** Amount of characters that are removed with substitute()
while stemming. */
private int substCount = 0;
- private static final Locale locale = new Locale("de", "DE");
+ private static final Locale locale = new Locale.Builder().setLanguageTag("de-DE").build();
/**
* Stemms the given term to an unique discriminator
.
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/th/ThaiTokenizer.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/th/ThaiTokenizer.java
index d098d753fb02..50674f1f657a 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/th/ThaiTokenizer.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/th/ThaiTokenizer.java
@@ -38,7 +38,8 @@ public class ThaiTokenizer extends SegmentingTokenizerBase {
*/
public static final boolean DBBI_AVAILABLE;
- private static final BreakIterator proto = BreakIterator.getWordInstance(new Locale("th"));
+ private static final BreakIterator proto =
+ BreakIterator.getWordInstance(new Locale.Builder().setLanguageTag("th").build());
static {
// check that we have a working dictionary-based break iterator for thai
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/collation/TestCollationKeyAnalyzer.java b/lucene/analysis/common/src/test/org/apache/lucene/collation/TestCollationKeyAnalyzer.java
index 7ecfb7b58b31..b76c1d0d07b7 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/collation/TestCollationKeyAnalyzer.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/collation/TestCollationKeyAnalyzer.java
@@ -26,7 +26,8 @@ public class TestCollationKeyAnalyzer extends CollationTestBase {
// Neither Java 1.4.2 nor 1.5.0 has Farsi Locale collation available in
// RuleBasedCollator. However, the Arabic Locale seems to order the Farsi
// characters properly.
- private Collator collator = Collator.getInstance(new Locale("ar"));
+ private Collator collator =
+ Collator.getInstance(new Locale.Builder().setLanguageTag("ar").build());
private Analyzer analyzer;
@Override
diff --git a/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUCollationKeyAnalyzer.java b/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUCollationKeyAnalyzer.java
index e9141c242b89..fa867e28ae90 100644
--- a/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUCollationKeyAnalyzer.java
+++ b/lucene/analysis/icu/src/test/org/apache/lucene/analysis/icu/TestICUCollationKeyAnalyzer.java
@@ -24,7 +24,8 @@
public class TestICUCollationKeyAnalyzer extends CollationTestBase {
- private Collator collator = Collator.getInstance(new Locale("fa"));
+ private Collator collator =
+ Collator.getInstance(new Locale.Builder().setLanguageTag("fa").build());
private Analyzer analyzer;
@Override
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/NewLocaleTask.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/NewLocaleTask.java
index cbeab25c52fb..7137bc1f6a54 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/NewLocaleTask.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/NewLocaleTask.java
@@ -17,47 +17,44 @@
package org.apache.lucene.benchmark.byTask.tasks;
import java.util.Locale;
-import java.util.StringTokenizer;
import org.apache.lucene.benchmark.byTask.PerfRunData;
/**
* Set a {@link java.util.Locale} for use in benchmarking.
*
- *
Locales can be specified in the following ways:
+ *
Locales can be specified as BCP-47 language tag or as ROOT or empty string.
*
*
* de
: Language "de"
- * en,US
: Language "en", country "US"
- * no,NO,NY
: Language "no", country "NO", variant "NY"
+ * en-US
: Language "en", country "US"
* ROOT
: The root (language-agnostic) Locale
* - <empty string>: Erase the Locale (null)
*
*/
public class NewLocaleTask extends PerfTask {
- private String language;
- private String country;
- private String variant;
+ private String tag;
/**
- * Create a new {@link java.util.Locale} and set it it in the getRunData() for use by all future
+ * Create a new {@link java.util.Locale} and set it in the getRunData() for use by all future
* tasks.
*/
public NewLocaleTask(PerfRunData runData) {
super(runData);
}
- static Locale createLocale(String language, String country, String variant) {
- if (language == null || language.length() == 0) return null;
+ static Locale createLocale(String tag) {
+ if (tag == null || tag.length() == 0) return null;
- String lang = language;
- if (lang.equalsIgnoreCase("ROOT")) lang = ""; // empty language is the root locale in the JDK
+ if (tag.equalsIgnoreCase("ROOT")) {
+ return Locale.ROOT;
+ }
- return new Locale(lang, country, variant);
+ return new Locale.Builder().setLanguageTag(tag).build();
}
@Override
public int doLogic() throws Exception {
- Locale locale = createLocale(language, country, variant);
+ Locale locale = createLocale(tag);
getRunData().setLocale(locale);
System.out.println(
"Changed Locale to: "
@@ -70,11 +67,7 @@ public int doLogic() throws Exception {
@Override
public void setParams(String params) {
super.setParams(params);
- language = country = variant = "";
- StringTokenizer st = new StringTokenizer(params, ",");
- if (st.hasMoreTokens()) language = st.nextToken();
- if (st.hasMoreTokens()) country = st.nextToken();
- if (st.hasMoreTokens()) variant = st.nextToken();
+ tag = params;
}
@Override
diff --git a/lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/TestPerfTasksLogic.java b/lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/TestPerfTasksLogic.java
index 0ded6008ab85..312e1c1fdf70 100644
--- a/lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/TestPerfTasksLogic.java
+++ b/lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/TestPerfTasksLogic.java
@@ -793,19 +793,17 @@ public void testLocale() throws Exception {
// ROOT locale
benchmark = execBenchmark(getLocaleConfig("ROOT"));
- assertEquals(new Locale(""), benchmark.getRunData().getLocale());
+ assertEquals(Locale.ROOT, benchmark.getRunData().getLocale());
// specify just a language
benchmark = execBenchmark(getLocaleConfig("de"));
- assertEquals(new Locale("de"), benchmark.getRunData().getLocale());
+ assertEquals(
+ new Locale.Builder().setLanguageTag("de").build(), benchmark.getRunData().getLocale());
// specify language + country
- benchmark = execBenchmark(getLocaleConfig("en,US"));
- assertEquals(new Locale("en", "US"), benchmark.getRunData().getLocale());
-
- // specify language + country + variant
- benchmark = execBenchmark(getLocaleConfig("no,NO,NY"));
- assertEquals(new Locale("no", "NO", "NY"), benchmark.getRunData().getLocale());
+ benchmark = execBenchmark(getLocaleConfig("en-US"));
+ assertEquals(
+ new Locale.Builder().setLanguageTag("en-US").build(), benchmark.getRunData().getLocale());
}
private String[] getLocaleConfig(String localeParam) {
@@ -832,22 +830,28 @@ private String[] getLocaleConfig(String localeParam) {
public void testCollator() throws Exception {
// ROOT locale
Benchmark benchmark = execBenchmark(getCollatorConfig("ROOT", "impl:jdk"));
- CollationKeyAnalyzer expected = new CollationKeyAnalyzer(Collator.getInstance(new Locale("")));
+ CollationKeyAnalyzer expected = new CollationKeyAnalyzer(Collator.getInstance(Locale.ROOT));
assertEqualCollation(expected, benchmark.getRunData().getAnalyzer(), "foobar");
// specify just a language
benchmark = execBenchmark(getCollatorConfig("de", "impl:jdk"));
- expected = new CollationKeyAnalyzer(Collator.getInstance(new Locale("de")));
+ expected =
+ new CollationKeyAnalyzer(
+ Collator.getInstance(new Locale.Builder().setLanguageTag("de").build()));
assertEqualCollation(expected, benchmark.getRunData().getAnalyzer(), "foobar");
// specify language + country
- benchmark = execBenchmark(getCollatorConfig("en,US", "impl:jdk"));
- expected = new CollationKeyAnalyzer(Collator.getInstance(new Locale("en", "US")));
+ benchmark = execBenchmark(getCollatorConfig("en-US", "impl:jdk"));
+ expected =
+ new CollationKeyAnalyzer(
+ Collator.getInstance(new Locale.Builder().setLanguageTag("en-US").build()));
assertEqualCollation(expected, benchmark.getRunData().getAnalyzer(), "foobar");
// specify language + country + variant
- benchmark = execBenchmark(getCollatorConfig("no,NO,NY", "impl:jdk"));
- expected = new CollationKeyAnalyzer(Collator.getInstance(new Locale("no", "NO", "NY")));
+ benchmark = execBenchmark(getCollatorConfig("nn-NO", "impl:jdk"));
+ expected =
+ new CollationKeyAnalyzer(
+ Collator.getInstance(new Locale.Builder().setLanguageTag("nn-NO").build()));
assertEqualCollation(expected, benchmark.getRunData().getAnalyzer(), "foobar");
}
diff --git a/lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/feeds/TestHtmlParser.java b/lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/feeds/TestHtmlParser.java
index 9d147832bf47..c318a01e58ad 100644
--- a/lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/feeds/TestHtmlParser.java
+++ b/lucene/benchmark/src/test/org/apache/lucene/benchmark/byTask/feeds/TestHtmlParser.java
@@ -96,7 +96,7 @@ public void testTitle() throws Exception {
public void testTurkish() throws Exception {
final Locale saved = Locale.getDefault();
try {
- Locale.setDefault(new Locale("tr", "TR"));
+ Locale.setDefault(new Locale.Builder().setLanguageTag("tr-TR").build());
String text =
"ııı"
+ ""
diff --git a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/fragments/search/QueryParserPaneProvider.java b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/fragments/search/QueryParserPaneProvider.java
index 4dc585ea461d..0c32b2a65ebf 100644
--- a/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/fragments/search/QueryParserPaneProvider.java
+++ b/lucene/luke/src/java/org/apache/lucene/luke/app/desktop/components/fragments/search/QueryParserPaneProvider.java
@@ -421,7 +421,7 @@ public QueryParserConfig getConfig() {
.fuzzyMinSim(fuzzyMinSimFloat)
.fuzzyPrefixLength(fuzzyPrefLenInt)
.dateResolution(DateTools.Resolution.valueOf((String) dateResCB.getSelectedItem()))
- .locale(new Locale(locationTF.getText()))
+ .locale(new Locale.Builder().setLanguageTag(locationTF.getText()).build())
.timeZone(TimeZone.getTimeZone(timezoneTF.getText()))
.typeMap(typeMap)
.build();
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/messages/TestNLS.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/messages/TestNLS.java
index ba6b4131f145..0065c45d3bd1 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/messages/TestNLS.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/messages/TestNLS.java
@@ -68,7 +68,7 @@ public void testNLSLoading_ja() {
}
public void testNLSLoading_xx_XX() {
- Locale locale = new Locale("xx", "XX", "");
+ Locale locale = new Locale.Builder().setLanguageTag("xx-XX").build();
String message =
NLS.getLocalizedMessage(
MessagesTestBundle.Q0004E_INVALID_SYNTAX_ESCAPE_UNICODE_TRUNCATION, locale);