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 5cb4c714f68..24c5590c48d 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
@@ -1,5 +1,7 @@
package org.apache.lucene.analysis.br;
+import java.util.Locale;
+
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
@@ -21,6 +23,7 @@ package org.apache.lucene.analysis.br;
* A stemmer for Brazilian Portuguese words.
*/
public class BrazilianStemmer {
+ private static final Locale locale = new Locale("pt", "BR");
/**
* Changed term
@@ -243,7 +246,7 @@ public class BrazilianStemmer {
return null ;
}
- value = value.toLowerCase() ;
+ value = value.toLowerCase(locale) ;
for (j=0 ; j < value.length() ; j++) {
if ((value.charAt(j) == 'á') ||
(value.charAt(j) == 'â') ||
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 90d01832631..805437c0065 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
@@ -1,4 +1,7 @@
package org.apache.lucene.analysis.de;
+
+import java.util.Locale;
+
// This file is encoded in UTF-8
/*
@@ -37,6 +40,8 @@ public 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");
/**
* Stemms the given term to an unique discriminator.
@@ -47,7 +52,7 @@ public class GermanStemmer
protected String stem( String term )
{
// Use lowercase for medium stemming.
- term = term.toLowerCase();
+ term = term.toLowerCase(locale);
if ( !isStemmable( term ) )
return term;
// Reset the StringBuilder.
diff --git a/lucene/analysis/common/src/java/org/apache/lucene/analysis/sinks/DateRecognizerSinkFilter.java b/lucene/analysis/common/src/java/org/apache/lucene/analysis/sinks/DateRecognizerSinkFilter.java
index efa4ec47653..59f02176349 100644
--- a/lucene/analysis/common/src/java/org/apache/lucene/analysis/sinks/DateRecognizerSinkFilter.java
+++ b/lucene/analysis/common/src/java/org/apache/lucene/analysis/sinks/DateRecognizerSinkFilter.java
@@ -20,6 +20,7 @@ package org.apache.lucene.analysis.sinks;
import java.text.DateFormat;
import java.text.ParseException;
import java.util.Date;
+import java.util.Locale;
import org.apache.lucene.analysis.tokenattributes.CharTermAttribute;
import org.apache.lucene.util.AttributeSource;
@@ -37,10 +38,11 @@ public class DateRecognizerSinkFilter extends TeeSinkTokenFilter.SinkFilter {
protected CharTermAttribute termAtt;
/**
- * Uses {@link java.text.SimpleDateFormat#getDateInstance()} as the {@link java.text.DateFormat} object.
+ * Uses {@link java.text.SimpleDateFormat#getDateInstance(DateFormat.DEFAULT, Locale.ROOT)} as
+ * the {@link java.text.DateFormat} object.
*/
public DateRecognizerSinkFilter() {
- this(DateFormat.getDateInstance());
+ this(DateFormat.getDateInstance(DateFormat.DEFAULT, Locale.ROOT));
}
public DateRecognizerSinkFilter(DateFormat dateFormat) {
diff --git a/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/TestCharArrayIterator.java b/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/TestCharArrayIterator.java
index ed8e641e63e..cbabcf157ad 100644
--- a/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/TestCharArrayIterator.java
+++ b/lucene/analysis/common/src/test/org/apache/lucene/analysis/util/TestCharArrayIterator.java
@@ -32,7 +32,8 @@ public class TestCharArrayIterator extends LuceneTestCase {
}
public void testConsumeWordInstance() {
- BreakIterator bi = BreakIterator.getWordInstance();
+ // we use the default locale, as its randomized by LuceneTestCase
+ BreakIterator bi = BreakIterator.getWordInstance(Locale.getDefault());
CharArrayIterator ci = CharArrayIterator.newWordInstance();
for (int i = 0; i < 10000; i++) {
char text[] = _TestUtil.randomUnicodeString(random()).toCharArray();
@@ -43,7 +44,8 @@ public class TestCharArrayIterator extends LuceneTestCase {
/* run this to test if your JRE is buggy
public void testWordInstanceJREBUG() {
- BreakIterator bi = BreakIterator.getWordInstance();
+ // we use the default locale, as its randomized by LuceneTestCase
+ BreakIterator bi = BreakIterator.getWordInstance(Locale.getDefault());
Segment ci = new Segment();
for (int i = 0; i < 10000; i++) {
char text[] = _TestUtil.randomUnicodeString(random).toCharArray();
@@ -60,7 +62,8 @@ public class TestCharArrayIterator extends LuceneTestCase {
}
public void testConsumeSentenceInstance() {
- BreakIterator bi = BreakIterator.getSentenceInstance();
+ // we use the default locale, as its randomized by LuceneTestCase
+ BreakIterator bi = BreakIterator.getSentenceInstance(Locale.getDefault());
CharArrayIterator ci = CharArrayIterator.newSentenceInstance();
for (int i = 0; i < 10000; i++) {
char text[] = _TestUtil.randomUnicodeString(random()).toCharArray();
@@ -71,7 +74,8 @@ public class TestCharArrayIterator extends LuceneTestCase {
/* run this to test if your JRE is buggy
public void testSentenceInstanceJREBUG() {
- BreakIterator bi = BreakIterator.getSentenceInstance();
+ // we use the default locale, as its randomized by LuceneTestCase
+ BreakIterator bi = BreakIterator.getSentenceInstance(Locale.getDefault());
Segment ci = new Segment();
for (int i = 0; i < 10000; i++) {
char text[] = _TestUtil.randomUnicodeString(random).toCharArray();
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/TaskSequence.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/TaskSequence.java
index 4f3abec4d41..f89ea26f2a4 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/TaskSequence.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/tasks/TaskSequence.java
@@ -429,7 +429,7 @@ public class TaskSequence extends PerfTask {
sb.append(padd);
sb.append(!letChildReport ? ">" : (parallel ? "]" : "}"));
if (fixedTime) {
- sb.append(" " + NumberFormat.getNumberInstance().format(runTimeSec) + "s");
+ sb.append(" " + NumberFormat.getNumberInstance(Locale.ROOT).format(runTimeSec) + "s");
} else if (repetitions>1) {
sb.append(" * " + repetitions);
} else if (repetitions==REPEAT_EXHAUST) {
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/utils/Format.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/utils/Format.java
index 9b9c73bf426..e023df005e6 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/utils/Format.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/byTask/utils/Format.java
@@ -18,6 +18,7 @@ package org.apache.lucene.benchmark.byTask.utils;
*/
import java.text.NumberFormat;
+import java.util.Locale;
/**
* Formatting utilities (for reports).
@@ -25,9 +26,9 @@ import java.text.NumberFormat;
public class Format {
private static NumberFormat numFormat [] = {
- NumberFormat.getInstance(),
- NumberFormat.getInstance(),
- NumberFormat.getInstance(),
+ NumberFormat.getInstance(Locale.ROOT),
+ NumberFormat.getInstance(Locale.ROOT),
+ NumberFormat.getInstance(Locale.ROOT),
};
private static final String padd = " ";
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/QualityStats.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/QualityStats.java
index 27f656a64bf..dcafbb4352d 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/QualityStats.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/QualityStats.java
@@ -19,6 +19,7 @@ package org.apache.lucene.benchmark.quality;
import java.io.PrintWriter;
import java.text.NumberFormat;
import java.util.ArrayList;
+import java.util.Locale;
/**
* Results of quality benchmark run for a single query or for a set of queries.
@@ -141,7 +142,7 @@ public class QualityStats {
logger.println(title);
}
prefix = prefix==null ? "" : prefix;
- NumberFormat nf = NumberFormat.getInstance();
+ NumberFormat nf = NumberFormat.getInstance(Locale.ROOT);
nf.setMaximumFractionDigits(3);
nf.setMinimumFractionDigits(3);
nf.setGroupingUsed(true);
diff --git a/lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/utils/SubmissionReport.java b/lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/utils/SubmissionReport.java
index 7ca49e1b4d6..b64f600c799 100644
--- a/lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/utils/SubmissionReport.java
+++ b/lucene/benchmark/src/java/org/apache/lucene/benchmark/quality/utils/SubmissionReport.java
@@ -19,6 +19,7 @@ package org.apache.lucene.benchmark.quality.utils;
import java.io.IOException;
import java.io.PrintWriter;
import java.text.NumberFormat;
+import java.util.Locale;
import org.apache.lucene.benchmark.quality.QualityQuery;
import org.apache.lucene.search.ScoreDoc;
@@ -45,7 +46,7 @@ public class SubmissionReport {
public SubmissionReport (PrintWriter logger, String name) {
this.logger = logger;
this.name = name;
- nf = NumberFormat.getInstance();
+ nf = NumberFormat.getInstance(Locale.ROOT);
nf.setMaximumFractionDigits(4);
nf.setMinimumFractionDigits(4);
}
diff --git a/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java b/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
index c6281bb723e..aa66348841b 100644
--- a/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
+++ b/lucene/core/src/java/org/apache/lucene/index/CheckIndex.java
@@ -25,6 +25,7 @@ import java.util.ArrayList;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
+import java.util.Locale;
import java.util.Map;
import org.apache.lucene.codecs.BlockTreeTermsReader;
@@ -340,7 +341,7 @@ public class CheckIndex {
* you only call this when the index is not opened by any
* writer. */
public Status checkIndex(List onlySegments) throws IOException {
- NumberFormat nf = NumberFormat.getInstance();
+ NumberFormat nf = NumberFormat.getInstance(Locale.ROOT);
SegmentInfos sis = new SegmentInfos();
Status result = new Status();
result.dir = dir;
diff --git a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java
index ec393366a22..62ed5e9d395 100644
--- a/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java
+++ b/lucene/core/src/java/org/apache/lucene/index/DocumentsWriterPerThread.java
@@ -20,6 +20,7 @@ package org.apache.lucene.index;
import java.io.IOException;
import java.text.NumberFormat;
import java.util.HashSet;
+import java.util.Locale;
import org.apache.lucene.analysis.Analyzer;
import org.apache.lucene.codecs.Codec;
@@ -181,7 +182,7 @@ class DocumentsWriterPerThread {
private int flushedDocCount;
DocumentsWriterDeleteQueue deleteQueue;
DeleteSlice deleteSlice;
- private final NumberFormat nf = NumberFormat.getInstance();
+ private final NumberFormat nf = NumberFormat.getInstance(Locale.ROOT);
final Allocator byteBlockAllocator;
diff --git a/lucene/facet/src/test/org/apache/lucene/util/encoding/EncodingSpeed.java b/lucene/facet/src/test/org/apache/lucene/util/encoding/EncodingSpeed.java
index a000b0cfdb8..bb7ca21f31d 100644
--- a/lucene/facet/src/test/org/apache/lucene/util/encoding/EncodingSpeed.java
+++ b/lucene/facet/src/test/org/apache/lucene/util/encoding/EncodingSpeed.java
@@ -157,7 +157,7 @@ public class EncodingSpeed {
}
static {
- nf = NumberFormat.getInstance();
+ nf = NumberFormat.getInstance(Locale.ROOT);
nf.setMaximumFractionDigits(4);
nf.setMinimumFractionDigits(4);
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java
index 8926a4a7b4f..b542aa2b831 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/precedence/TestPrecedenceQueryParser.java
@@ -24,6 +24,7 @@ import java.util.Calendar;
import java.util.Date;
import java.util.GregorianCalendar;
import java.util.HashMap;
+import java.util.Locale;
import java.util.Map;
import org.apache.lucene.analysis.*;
@@ -385,13 +386,15 @@ public class TestPrecedenceQueryParser extends LuceneTestCase {
}
public String getDate(String s) throws Exception {
- DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
+ // we use the default Locale since LuceneTestCase randomizes it
+ DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
return DateTools.dateToString(df.parse(s), DateTools.Resolution.DAY);
}
private String getLocalizedDate(int year, int month, int day,
boolean extendLastDate) {
- DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
+ // we use the default Locale since LuceneTestCase randomizes it
+ DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
Calendar calendar = new GregorianCalendar();
calendar.set(year, month, day);
if (extendLastDate) {
@@ -441,7 +444,8 @@ public class TestPrecedenceQueryParser extends LuceneTestCase {
/** for testing DateTools support */
private String getDate(String s, DateTools.Resolution resolution) throws Exception {
- DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
+ // we use the default Locale since LuceneTestCase randomizes it
+ DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
return getDate(df.parse(s), resolution);
}
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java
index 4f66aa856fd..dcc6dd79a27 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/flexible/standard/TestQPHelper.java
@@ -675,7 +675,8 @@ public class TestQPHelper extends LuceneTestCase {
/** for testing DateTools support */
private String getDate(String s, DateTools.Resolution resolution)
throws Exception {
- DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
+ // we use the default Locale since LuceneTestCase randomizes it
+ DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
return getDate(df.parse(s), resolution);
}
@@ -693,7 +694,8 @@ public class TestQPHelper extends LuceneTestCase {
}
private String getLocalizedDate(int year, int month, int day) {
- DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
+ // we use the default Locale since LuceneTestCase randomizes it
+ DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
Calendar calendar = new GregorianCalendar();
calendar.clear();
calendar.set(year, month, day);
diff --git a/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java b/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java
index 431ebc08812..e72d91f9da0 100644
--- a/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java
+++ b/lucene/queryparser/src/test/org/apache/lucene/queryparser/util/QueryParserTestBase.java
@@ -581,7 +581,8 @@ public abstract class QueryParserTestBase extends LuceneTestCase {
/** for testing DateTools support */
private String getDate(String s, DateTools.Resolution resolution) throws Exception {
- DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
+ // we use the default Locale since LuceneTestCase randomizes it
+ DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
return getDate(df.parse(s), resolution);
}
@@ -591,7 +592,8 @@ public abstract class QueryParserTestBase extends LuceneTestCase {
}
private String getLocalizedDate(int year, int month, int day) {
- DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT);
+ // we use the default Locale since LuceneTestCase randomizes it
+ DateFormat df = DateFormat.getDateInstance(DateFormat.SHORT, Locale.getDefault());
Calendar calendar = new GregorianCalendar();
calendar.clear();
calendar.set(year, month, day);
diff --git a/lucene/spatial/src/java/org/apache/lucene/spatial/prefix/tree/QuadPrefixTree.java b/lucene/spatial/src/java/org/apache/lucene/spatial/prefix/tree/QuadPrefixTree.java
index 2ed1c0ab73a..21f158d2183 100644
--- a/lucene/spatial/src/java/org/apache/lucene/spatial/prefix/tree/QuadPrefixTree.java
+++ b/lucene/spatial/src/java/org/apache/lucene/spatial/prefix/tree/QuadPrefixTree.java
@@ -28,6 +28,7 @@ import java.text.NumberFormat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
+import java.util.Locale;
/**
* @lucene.experimental
@@ -107,7 +108,7 @@ public class QuadPrefixTree extends SpatialPrefixTree {
}
public void printInfo() {
- NumberFormat nf = NumberFormat.getNumberInstance();
+ NumberFormat nf = NumberFormat.getNumberInstance(Locale.ROOT);
nf.setMaximumFractionDigits(5);
nf.setMinimumFractionDigits(5);
nf.setMinimumIntegerDigits(3);