diff --git a/core-signatures.txt b/core-signatures.txt new file mode 100644 index 00000000000..a502959bdaf --- /dev/null +++ b/core-signatures.txt @@ -0,0 +1,27 @@ +# Licensed to the Apache Software Foundation (ASF) under one or more +# contributor license agreements. See the NOTICE file distributed with +# this work for additional information regarding copyright ownership. +# The ASF licenses this file to You under the Apache License, Version 2.0 +# (the "License"); you may not use this file except in compliance with +# the License. You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# see Solr's DefaultSolrThreadFactory +# see Lucene's NamedThreadFactory + +@defaultMessage spawns threads with vague names; use a custom thread factory and name threads so that you can tell (by its name) which executor it is associated with + +java.util.concurrent.Executors#newFixedThreadPool(int) +java.util.concurrent.Executors#newSingleThreadExecutor() +java.util.concurrent.Executors#newCachedThreadPool() +java.util.concurrent.Executors#newSingleThreadScheduledExecutor() +java.util.concurrent.Executors#newScheduledThreadPool(int) +java.util.concurrent.Executors#defaultThreadFactory() +java.util.concurrent.Executors#privilegedThreadFactory() diff --git a/pom.xml b/pom.xml index 507d4e82d5c..b4d7c404b42 100644 --- a/pom.xml +++ b/pom.xml @@ -792,6 +792,68 @@ + + de.thetaphi + forbiddenapis + 1.3 + + + + check-forbidden-apis + + 1.6 + + true + + false + + jsr166e/** + jsr166y/** + + + + + jdk-unsafe + jdk-deprecated + + + + core-signatures.txt + + + test + + check + + + + check-forbidden-test-apis + + 1.6 + + true + + false + + + jdk-unsafe + jdk-deprecated + + + test + + testCheck + + + + diff --git a/src/main/java/org/elasticsearch/action/support/broadcast/BroadcastOperationThreading.java b/src/main/java/org/elasticsearch/action/support/broadcast/BroadcastOperationThreading.java index 45a66e42720..c1558cf8ee1 100644 --- a/src/main/java/org/elasticsearch/action/support/broadcast/BroadcastOperationThreading.java +++ b/src/main/java/org/elasticsearch/action/support/broadcast/BroadcastOperationThreading.java @@ -19,6 +19,8 @@ package org.elasticsearch.action.support.broadcast; +import java.util.Locale; + import org.elasticsearch.ElasticSearchIllegalArgumentException; /** @@ -69,6 +71,6 @@ public enum BroadcastOperationThreading { if (value == null) { return defaultValue; } - return BroadcastOperationThreading.valueOf(value.toUpperCase()); + return BroadcastOperationThreading.valueOf(value.toUpperCase(Locale.ROOT)); } } diff --git a/src/main/java/org/elasticsearch/action/support/replication/TransportIndicesReplicationOperationAction.java b/src/main/java/org/elasticsearch/action/support/replication/TransportIndicesReplicationOperationAction.java index 64709fce0b6..0cd37211f95 100644 --- a/src/main/java/org/elasticsearch/action/support/replication/TransportIndicesReplicationOperationAction.java +++ b/src/main/java/org/elasticsearch/action/support/replication/TransportIndicesReplicationOperationAction.java @@ -108,7 +108,6 @@ public abstract class TransportIndicesReplicationOperationActionEncodes and decodes to and from Base64 notation.

@@ -907,7 +908,7 @@ public class Base64 { if (off + len > source.length) { throw new IllegalArgumentException( - String.format("Cannot have offset of %d and length of %d with array of length %d", off, len, source.length)); + String.format(Locale.ROOT, "Cannot have offset of %d and length of %d with array of length %d", off, len, source.length)); } // end if: off < 0 @@ -1050,11 +1051,11 @@ public class Base64 { throw new NullPointerException("Destination array was null."); } // end if if (srcOffset < 0 || srcOffset + 3 >= source.length) { - throw new IllegalArgumentException(String.format( + throw new IllegalArgumentException(String.format(Locale.ROOT, "Source array with length %d cannot have offset of %d and still process four bytes.", source.length, srcOffset)); } // end if if (destOffset < 0 || destOffset + 2 >= destination.length) { - throw new IllegalArgumentException(String.format( + throw new IllegalArgumentException(String.format(Locale.ROOT, "Destination array with length %d cannot have offset of %d and still store three bytes.", destination.length, destOffset)); } // end if @@ -1160,7 +1161,7 @@ public class Base64 { throw new NullPointerException("Cannot decode null source array."); } // end if if (off < 0 || off + len > source.length) { - throw new IllegalArgumentException(String.format( + throw new IllegalArgumentException(String.format(Locale.ROOT, "Source array with length %d cannot have offset of %d and process %d bytes.", source.length, off, len)); } // end if @@ -1205,7 +1206,7 @@ public class Base64 { } // end if: white space, equals sign or better else { // There's a bad input character in the Base64 stream. - throw new java.io.IOException(String.format( + throw new java.io.IOException(String.format(Locale.ROOT, "Bad Base64 input character decimal %d in array position %d", ((int) source[i]) & 0xFF, i)); } // end else: } // each input character diff --git a/src/main/java/org/elasticsearch/common/Names.java b/src/main/java/org/elasticsearch/common/Names.java index 7753424cda8..994db851d7f 100644 --- a/src/main/java/org/elasticsearch/common/Names.java +++ b/src/main/java/org/elasticsearch/common/Names.java @@ -28,6 +28,8 @@ import java.io.InputStreamReader; import java.net.URL; import java.util.Random; +import org.elasticsearch.common.io.Streams; + /** * */ @@ -36,13 +38,13 @@ public abstract class Names { public static String randomNodeName(URL nodeNames) { BufferedReader reader = null; try { - reader = new BufferedReader(new InputStreamReader(nodeNames.openStream())); + reader = new BufferedReader(new InputStreamReader(nodeNames.openStream(), Streams.UTF8)); int numberOfNames = 0; while (reader.readLine() != null) { numberOfNames++; } reader.close(); - reader = new BufferedReader(new InputStreamReader(nodeNames.openStream())); + reader = new BufferedReader(new InputStreamReader(nodeNames.openStream(), Streams.UTF8)); int number = ((ThreadLocalRandom.current().nextInt(numberOfNames)) % numberOfNames); for (int i = 0; i < number; i++) { reader.readLine(); @@ -66,7 +68,7 @@ public abstract class Names { return null; } try { - BufferedReader reader = new BufferedReader(new InputStreamReader(nodeNames)); + BufferedReader reader = new BufferedReader(new InputStreamReader(nodeNames, Streams.UTF8)); int numberOfNames = Integer.parseInt(reader.readLine()); int number = ((new Random().nextInt(numberOfNames)) % numberOfNames) - 2; // remove 2 for last line and first line for (int i = 0; i < number; i++) { diff --git a/src/main/java/org/elasticsearch/common/StopWatch.java b/src/main/java/org/elasticsearch/common/StopWatch.java index 4592ae278c8..469d446bcc7 100644 --- a/src/main/java/org/elasticsearch/common/StopWatch.java +++ b/src/main/java/org/elasticsearch/common/StopWatch.java @@ -24,6 +24,7 @@ import org.elasticsearch.common.unit.TimeValue; import java.text.NumberFormat; import java.util.LinkedList; import java.util.List; +import java.util.Locale; import java.util.concurrent.TimeUnit; /** @@ -228,10 +229,10 @@ public class StopWatch { sb.append("-----------------------------------------\n"); sb.append("ms % Task name\n"); sb.append("-----------------------------------------\n"); - NumberFormat nf = NumberFormat.getNumberInstance(); + NumberFormat nf = NumberFormat.getNumberInstance(Locale.ROOT); nf.setMinimumIntegerDigits(5); nf.setGroupingUsed(false); - NumberFormat pf = NumberFormat.getPercentInstance(); + NumberFormat pf = NumberFormat.getPercentInstance(Locale.ROOT); pf.setMinimumIntegerDigits(3); pf.setGroupingUsed(false); for (TaskInfo task : taskInfo()) { diff --git a/src/main/java/org/elasticsearch/common/Strings.java b/src/main/java/org/elasticsearch/common/Strings.java index 3c001fe28fe..dd903042060 100644 --- a/src/main/java/org/elasticsearch/common/Strings.java +++ b/src/main/java/org/elasticsearch/common/Strings.java @@ -424,8 +424,8 @@ public class Strings { if (str.length() < prefix.length()) { return false; } - String lcStr = str.substring(0, prefix.length()).toLowerCase(); - String lcPrefix = prefix.toLowerCase(); + String lcStr = str.substring(0, prefix.length()).toLowerCase(Locale.ROOT); + String lcPrefix = prefix.toLowerCase(Locale.ROOT); return lcStr.equals(lcPrefix); } @@ -448,8 +448,8 @@ public class Strings { return false; } - String lcStr = str.substring(str.length() - suffix.length()).toLowerCase(); - String lcSuffix = suffix.toLowerCase(); + String lcStr = str.substring(str.length() - suffix.length()).toLowerCase(Locale.ROOT); + String lcSuffix = suffix.toLowerCase(Locale.ROOT); return lcStr.equals(lcSuffix); } diff --git a/src/main/java/org/elasticsearch/common/inject/Scopes.java b/src/main/java/org/elasticsearch/common/inject/Scopes.java index 7aedc52714a..ed5b261189f 100644 --- a/src/main/java/org/elasticsearch/common/inject/Scopes.java +++ b/src/main/java/org/elasticsearch/common/inject/Scopes.java @@ -21,6 +21,7 @@ import org.elasticsearch.common.inject.internal.InternalFactory; import org.elasticsearch.common.inject.internal.Scoping; import java.lang.annotation.Annotation; +import java.util.Locale; /** * Built-in scope implementations. @@ -61,7 +62,7 @@ public class Scopes { } public String toString() { - return String.format("%s[%s]", creator, SINGLETON); + return String.format(Locale.ROOT, "%s[%s]", creator, SINGLETON); } }; } diff --git a/src/main/java/org/elasticsearch/common/inject/internal/Errors.java b/src/main/java/org/elasticsearch/common/inject/internal/Errors.java index c764fdb4251..285134dd113 100644 --- a/src/main/java/org/elasticsearch/common/inject/internal/Errors.java +++ b/src/main/java/org/elasticsearch/common/inject/internal/Errors.java @@ -430,7 +430,7 @@ public final class Errors implements Serializable { for (int i = 0; i < arguments.length; i++) { arguments[i] = Errors.convert(arguments[i]); } - return String.format(messageFormat, arguments); + return String.format(Locale.ROOT, messageFormat, arguments); } public List getMessages() { @@ -452,36 +452,41 @@ public final class Errors implements Serializable { * Returns the formatted message for an exception with the specified messages. */ public static String format(String heading, Collection errorMessages) { - Formatter fmt = new Formatter().format(heading).format(":%n%n"); - int index = 1; - boolean displayCauses = getOnlyCause(errorMessages) == null; - - for (Message errorMessage : errorMessages) { - fmt.format("%s) %s%n", index++, errorMessage.getMessage()); - - List dependencies = errorMessage.getSources(); - for (int i = dependencies.size() - 1; i >= 0; i--) { - Object source = dependencies.get(i); - formatSource(fmt, source); + final Formatter fmt = new Formatter(Locale.ROOT); + try { + fmt.format(heading).format(":%n%n"); + int index = 1; + boolean displayCauses = getOnlyCause(errorMessages) == null; + + for (Message errorMessage : errorMessages) { + fmt.format("%s) %s%n", index++, errorMessage.getMessage()); + + List dependencies = errorMessage.getSources(); + for (int i = dependencies.size() - 1; i >= 0; i--) { + Object source = dependencies.get(i); + formatSource(fmt, source); + } + + Throwable cause = errorMessage.getCause(); + if (displayCauses && cause != null) { + StringWriter writer = new StringWriter(); + cause.printStackTrace(new PrintWriter(writer)); + fmt.format("Caused by: %s", writer.getBuffer()); + } + + fmt.format("%n"); } - - Throwable cause = errorMessage.getCause(); - if (displayCauses && cause != null) { - StringWriter writer = new StringWriter(); - cause.printStackTrace(new PrintWriter(writer)); - fmt.format("Caused by: %s", writer.getBuffer()); + + if (errorMessages.size() == 1) { + fmt.format("1 error"); + } else { + fmt.format("%s errors", errorMessages.size()); } - - fmt.format("%n"); + + return fmt.toString(); + } finally { + fmt.close(); } - - if (errorMessages.size() == 1) { - fmt.format("1 error"); - } else { - fmt.format("%s errors", errorMessages.size()); - } - - return fmt.toString(); } /** diff --git a/src/main/java/org/elasticsearch/common/io/FastByteArrayOutputStream.java b/src/main/java/org/elasticsearch/common/io/FastByteArrayOutputStream.java index 03c4ec069c7..c140d9ea7de 100644 --- a/src/main/java/org/elasticsearch/common/io/FastByteArrayOutputStream.java +++ b/src/main/java/org/elasticsearch/common/io/FastByteArrayOutputStream.java @@ -171,7 +171,7 @@ public class FastByteArrayOutputStream extends OutputStream implements BytesStre * @since JDK1.1 */ public String toString() { - return new String(buf, 0, count); + return new String(buf, 0, count, Streams.UTF8); } /** diff --git a/src/main/java/org/elasticsearch/common/io/Streams.java b/src/main/java/org/elasticsearch/common/io/Streams.java index 5065979187d..6593dbac971 100644 --- a/src/main/java/org/elasticsearch/common/io/Streams.java +++ b/src/main/java/org/elasticsearch/common/io/Streams.java @@ -24,6 +24,7 @@ import org.elasticsearch.common.io.stream.BytesStreamOutput; import org.elasticsearch.common.io.stream.CachedStreamOutput; import java.io.*; +import java.nio.charset.Charset; /** * Simple utility methods for file and stream copying. @@ -34,6 +35,8 @@ import java.io.*; * but also useful for application code. */ public abstract class Streams { + + public static final Charset UTF8 = Charset.forName("UTF-8"); public static final int BUFFER_SIZE = 1024 * 8; @@ -252,7 +255,7 @@ public abstract class Streams { if (is == null) { throw new FileNotFoundException("Resource [" + path + "] not found in classpath with class loader [" + classLoader + "]"); } - return copyToString(new InputStreamReader(is, "UTF-8")); + return copyToString(new InputStreamReader(is, UTF8)); } public static String copyToStringFromClasspath(String path) throws IOException { @@ -260,7 +263,7 @@ public abstract class Streams { if (is == null) { throw new FileNotFoundException("Resource [" + path + "] not found in classpath"); } - return copyToString(new InputStreamReader(is)); + return copyToString(new InputStreamReader(is, UTF8)); } public static byte[] copyToBytesFromClasspath(String path) throws IOException { diff --git a/src/main/java/org/elasticsearch/common/jna/Natives.java b/src/main/java/org/elasticsearch/common/jna/Natives.java index 3581fd7fcf0..8d136ff050e 100644 --- a/src/main/java/org/elasticsearch/common/jna/Natives.java +++ b/src/main/java/org/elasticsearch/common/jna/Natives.java @@ -19,6 +19,8 @@ package org.elasticsearch.common.jna; +import java.util.Locale; + import com.sun.jna.Native; import org.elasticsearch.common.logging.ESLogger; import org.elasticsearch.common.logging.Loggers; @@ -42,11 +44,11 @@ public class Natives { } if (errno != Integer.MIN_VALUE) { - if (errno == CLibrary.ENOMEM && System.getProperty("os.name").toLowerCase().contains("linux")) { + if (errno == CLibrary.ENOMEM && System.getProperty("os.name").toLowerCase(Locale.ROOT).contains("linux")) { logger.warn("Unable to lock JVM memory (ENOMEM)." + " This can result in part of the JVM being swapped out." + " Increase RLIMIT_MEMLOCK or run elasticsearch as root."); - } else if (!System.getProperty("os.name").toLowerCase().contains("mac")) { + } else if (!System.getProperty("os.name").toLowerCase(Locale.ROOT).contains("mac")) { // OS X allows mlockall to be called, but always returns an error logger.warn("Unknown mlockall error " + errno); } diff --git a/src/main/java/org/elasticsearch/common/lucene/LoggerInfoStream.java b/src/main/java/org/elasticsearch/common/lucene/LoggerInfoStream.java index 27217784e8e..f8eba8cb008 100644 --- a/src/main/java/org/elasticsearch/common/lucene/LoggerInfoStream.java +++ b/src/main/java/org/elasticsearch/common/lucene/LoggerInfoStream.java @@ -19,11 +19,13 @@ package org.elasticsearch.common.lucene; +import org.elasticsearch.common.io.Streams; import org.elasticsearch.common.logging.ESLogger; import org.elasticsearch.common.logging.Loggers; import java.io.OutputStream; import java.io.PrintStream; +import java.io.UnsupportedEncodingException; /** * A {@link java.io.PrintStream} that logs each {@link #println(String)} into a logger @@ -43,7 +45,12 @@ public class LoggerInfoStream extends PrintStream { * by appending to its NAME the {@link #SUFFIX}. */ public static LoggerInfoStream getInfoStream(ESLogger logger) { - return new LoggerInfoStream(Loggers.getLogger(logger, SUFFIX)); + try { + return new LoggerInfoStream(Loggers.getLogger(logger, SUFFIX)); + } catch (UnsupportedEncodingException e) { + // no UTF-8 ? + throw new RuntimeException(e); + } } /** @@ -51,7 +58,12 @@ public class LoggerInfoStream extends PrintStream { * by appending to it the {@link #SUFFIX}. */ public static LoggerInfoStream getInfoStream(String name) { - return new LoggerInfoStream(Loggers.getLogger(name + SUFFIX)); + try { + return new LoggerInfoStream(Loggers.getLogger(name + SUFFIX)); + } catch (UnsupportedEncodingException e) { + // no UTF-8 ? + throw new RuntimeException(e); + } } private final ESLogger logger; @@ -59,9 +71,10 @@ public class LoggerInfoStream extends PrintStream { /** * Constucts a new instance based on the provided logger. Will output * each {@link #println(String)} operation as a trace level. + * @throws UnsupportedEncodingException */ - public LoggerInfoStream(ESLogger logger) { - super((OutputStream) null); + public LoggerInfoStream(ESLogger logger) throws UnsupportedEncodingException { + super((OutputStream) null, false, Streams.UTF8.name()); this.logger = logger; } diff --git a/src/main/java/org/elasticsearch/common/lucene/Lucene.java b/src/main/java/org/elasticsearch/common/lucene/Lucene.java index 372de2d1f80..e56a3092867 100644 --- a/src/main/java/org/elasticsearch/common/lucene/Lucene.java +++ b/src/main/java/org/elasticsearch/common/lucene/Lucene.java @@ -322,27 +322,6 @@ public class Lucene { } } - private static final Field segmentReaderSegmentInfoField; - - static { - Field segmentReaderSegmentInfoFieldX = null; - try { - segmentReaderSegmentInfoFieldX = SegmentReader.class.getDeclaredField("si"); - segmentReaderSegmentInfoFieldX.setAccessible(true); - } catch (NoSuchFieldException e) { - e.printStackTrace(); - } - segmentReaderSegmentInfoField = segmentReaderSegmentInfoFieldX; - } - - public static SegmentInfoPerCommit getSegmentInfo(SegmentReader reader) { - try { - return (SegmentInfoPerCommit) segmentReaderSegmentInfoField.get(reader); - } catch (IllegalAccessException e) { - return null; - } - } - public static class ExistsCollector extends Collector { private boolean exists; diff --git a/src/main/java/org/elasticsearch/common/lucene/search/function/FiltersFunctionScoreQuery.java b/src/main/java/org/elasticsearch/common/lucene/search/function/FiltersFunctionScoreQuery.java index 09c6f9273b2..74aa6c426fc 100644 --- a/src/main/java/org/elasticsearch/common/lucene/search/function/FiltersFunctionScoreQuery.java +++ b/src/main/java/org/elasticsearch/common/lucene/search/function/FiltersFunctionScoreQuery.java @@ -30,6 +30,7 @@ import org.elasticsearch.common.lucene.docset.DocIdSets; import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; +import java.util.Locale; import java.util.Set; /** @@ -175,7 +176,7 @@ public class FiltersFunctionScoreQuery extends Query { // top level score = subquery.score * filter.score (this already has the query boost) float topLevelScore = subQueryExpl.getValue() * sc; - Explanation topLevel = new ComplexExplanation(true, topLevelScore, "custom score, score mode [" + scoreMode.toString().toLowerCase() + "]"); + Explanation topLevel = new ComplexExplanation(true, topLevelScore, "custom score, score mode [" + scoreMode.toString().toLowerCase(Locale.ROOT) + "]"); topLevel.addDetail(subQueryExpl); topLevel.addDetail(filterExplanation); return topLevel; @@ -230,7 +231,7 @@ public class FiltersFunctionScoreQuery extends Query { factor = maxBoost; } float sc = factor * subQueryExpl.getValue() * getBoost(); - Explanation res = new ComplexExplanation(true, sc, "custom score, score mode [" + scoreMode.toString().toLowerCase() + "]"); + Explanation res = new ComplexExplanation(true, sc, "custom score, score mode [" + scoreMode.toString().toLowerCase(Locale.ROOT) + "]"); res.addDetail(subQueryExpl); for (Explanation explanation : filtersExplanations) { res.addDetail(explanation); diff --git a/src/main/java/org/elasticsearch/common/math/MathRuntimeException.java b/src/main/java/org/elasticsearch/common/math/MathRuntimeException.java index 7adfe85c220..87de0168b78 100644 --- a/src/main/java/org/elasticsearch/common/math/MathRuntimeException.java +++ b/src/main/java/org/elasticsearch/common/math/MathRuntimeException.java @@ -21,12 +21,16 @@ package org.elasticsearch.common.math; import java.io.EOFException; import java.io.IOException; +import java.io.OutputStreamWriter; import java.io.PrintStream; import java.io.PrintWriter; +import java.io.UnsupportedEncodingException; import java.text.MessageFormat; import java.text.ParseException; import java.util.*; +import org.elasticsearch.common.io.Streams; + /** * Base class for commons-math unchecked exceptions. * @@ -193,7 +197,7 @@ public class MathRuntimeException extends RuntimeException { @Override public void printStackTrace(final PrintStream out) { synchronized (out) { - PrintWriter pw = new PrintWriter(out, false); + PrintWriter pw = new PrintWriter(new OutputStreamWriter(out, Streams.UTF8)); printStackTrace(pw); // Flush the PrintWriter before it's GC'ed. pw.flush(); diff --git a/src/main/java/org/elasticsearch/common/network/NetworkService.java b/src/main/java/org/elasticsearch/common/network/NetworkService.java index 1a4391d6bce..1e8d07ae7eb 100644 --- a/src/main/java/org/elasticsearch/common/network/NetworkService.java +++ b/src/main/java/org/elasticsearch/common/network/NetworkService.java @@ -32,6 +32,7 @@ import java.net.NetworkInterface; import java.net.UnknownHostException; import java.util.Collection; import java.util.List; +import java.util.Locale; import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.TimeUnit; @@ -154,19 +155,19 @@ public class NetworkService extends AbstractComponent { if (host.equals("local")) { return NetworkUtils.getLocalAddress(); } else if (host.startsWith("non_loopback")) { - if (host.toLowerCase().endsWith(":ipv4")) { + if (host.toLowerCase(Locale.ROOT).endsWith(":ipv4")) { return NetworkUtils.getFirstNonLoopbackAddress(NetworkUtils.StackType.IPv4); - } else if (host.toLowerCase().endsWith(":ipv6")) { + } else if (host.toLowerCase(Locale.ROOT).endsWith(":ipv6")) { return NetworkUtils.getFirstNonLoopbackAddress(NetworkUtils.StackType.IPv6); } else { return NetworkUtils.getFirstNonLoopbackAddress(NetworkUtils.getIpStackType()); } } else { NetworkUtils.StackType stackType = NetworkUtils.getIpStackType(); - if (host.toLowerCase().endsWith(":ipv4")) { + if (host.toLowerCase(Locale.ROOT).endsWith(":ipv4")) { stackType = NetworkUtils.StackType.IPv4; host = host.substring(0, host.length() - 5); - } else if (host.toLowerCase().endsWith(":ipv6")) { + } else if (host.toLowerCase(Locale.ROOT).endsWith(":ipv6")) { stackType = NetworkUtils.StackType.IPv6; host = host.substring(0, host.length() - 5); } diff --git a/src/main/java/org/elasticsearch/common/os/OsUtils.java b/src/main/java/org/elasticsearch/common/os/OsUtils.java index d037e87a476..1a1e1f25f4a 100644 --- a/src/main/java/org/elasticsearch/common/os/OsUtils.java +++ b/src/main/java/org/elasticsearch/common/os/OsUtils.java @@ -19,6 +19,8 @@ package org.elasticsearch.common.os; +import java.util.Locale; + /** * */ @@ -31,23 +33,23 @@ public class OsUtils { /** * True iff running on Linux. */ - public static final boolean LINUX = OS_NAME.trim().toLowerCase().startsWith("linux"); + public static final boolean LINUX = OS_NAME.trim().toLowerCase(Locale.ROOT).startsWith("linux"); /** * True iff running on Windows. */ - public static final boolean WINDOWS = OS_NAME.trim().toLowerCase().startsWith("windows"); + public static final boolean WINDOWS = OS_NAME.trim().toLowerCase(Locale.ROOT).startsWith("windows"); /** * True iff running on SunOS. */ - public static final boolean SOLARIS = OS_NAME.trim().toLowerCase().startsWith("sun"); + public static final boolean SOLARIS = OS_NAME.trim().toLowerCase(Locale.ROOT).startsWith("sun"); /** * True iff running on Mac. */ - public static final boolean MAC = OS_NAME.trim().toLowerCase().startsWith("mac"); + public static final boolean MAC = OS_NAME.trim().toLowerCase(Locale.ROOT).startsWith("mac"); /** * True iff running on HP. */ - public static final boolean HP = OS_NAME.trim().toLowerCase().startsWith("hp"); + public static final boolean HP = OS_NAME.trim().toLowerCase(Locale.ROOT).startsWith("hp"); private OsUtils() { diff --git a/src/main/java/org/elasticsearch/common/settings/ImmutableSettings.java b/src/main/java/org/elasticsearch/common/settings/ImmutableSettings.java index a783de44693..6c020c4fca0 100644 --- a/src/main/java/org/elasticsearch/common/settings/ImmutableSettings.java +++ b/src/main/java/org/elasticsearch/common/settings/ImmutableSettings.java @@ -341,7 +341,7 @@ public class ImmutableSettings implements Settings { } private Class loadClass(String prefixValue, String sValue, String suffixClassName, String setting) { - String fullClassName = prefixValue + toCamelCase(sValue).toLowerCase() + "." + Strings.capitalize(toCamelCase(sValue)) + suffixClassName; + String fullClassName = prefixValue + toCamelCase(sValue).toLowerCase(Locale.ROOT) + "." + Strings.capitalize(toCamelCase(sValue)) + suffixClassName; try { return (Class) getClassLoader().loadClass(fullClassName); } catch (ClassNotFoundException e2) { @@ -747,7 +747,7 @@ public class ImmutableSettings implements Settings { public Builder loadFromStream(String resourceName, InputStream is) throws SettingsException { SettingsLoader settingsLoader = SettingsLoaderFactory.loaderFromResource(resourceName); try { - Map loadedSettings = settingsLoader.load(Streams.copyToString(new InputStreamReader(is, "UTF-8"))); + Map loadedSettings = settingsLoader.load(Streams.copyToString(new InputStreamReader(is, Streams.UTF8))); put(loadedSettings); } catch (Exception e) { throw new SettingsException("Failed to load settings from [" + resourceName + "]", e); diff --git a/src/main/java/org/elasticsearch/common/util/BigLongArray.java b/src/main/java/org/elasticsearch/common/util/BigLongArray.java index b4d1a8f42cf..b02bf7d5e5f 100644 --- a/src/main/java/org/elasticsearch/common/util/BigLongArray.java +++ b/src/main/java/org/elasticsearch/common/util/BigLongArray.java @@ -19,6 +19,8 @@ package org.elasticsearch.common.util; +import java.util.Locale; + /** * A GC friendly long[]. * Allocating large arrays (that are not short-lived) generate fragmentation @@ -57,7 +59,7 @@ public class BigLongArray { public void set(int idx, long value) { if (idx < 0 || idx > size) - throw new IndexOutOfBoundsException(String.format("%d is not whithin [0, %d)", idx, size)); + throw new IndexOutOfBoundsException(String.format(Locale.ROOT, "%d is not whithin [0, %d)", idx, size)); int page = idx / pageSize; int pageIdx = idx % pageSize; @@ -66,7 +68,7 @@ public class BigLongArray { public long get(int idx) { if (idx < 0 || idx > size) - throw new IndexOutOfBoundsException(String.format("%d is not whithin [0, %d)", idx, size)); + throw new IndexOutOfBoundsException(String.format(Locale.ROOT, "%d is not whithin [0, %d)", idx, size)); int page = idx / pageSize; int pageIdx = idx % pageSize; diff --git a/src/main/java/org/elasticsearch/env/Environment.java b/src/main/java/org/elasticsearch/env/Environment.java index 85e9e2746f3..d4742f3f9a6 100644 --- a/src/main/java/org/elasticsearch/env/Environment.java +++ b/src/main/java/org/elasticsearch/env/Environment.java @@ -164,7 +164,7 @@ public class Environment { } public String resolveConfigAndLoadToString(String path) throws FailedToResolveConfigException, IOException { - return Streams.copyToString(new InputStreamReader(resolveConfig(path).openStream(), "UTF-8")); + return Streams.copyToString(new InputStreamReader(resolveConfig(path).openStream(), Streams.UTF8)); } public URL resolveConfig(String path) throws FailedToResolveConfigException { diff --git a/src/main/java/org/elasticsearch/http/HttpServer.java b/src/main/java/org/elasticsearch/http/HttpServer.java index a21b2288618..acea82371cd 100644 --- a/src/main/java/org/elasticsearch/http/HttpServer.java +++ b/src/main/java/org/elasticsearch/http/HttpServer.java @@ -32,6 +32,7 @@ import org.elasticsearch.rest.*; import java.io.File; import java.io.IOException; import java.util.HashMap; +import java.util.Locale; import java.util.Map; import static org.elasticsearch.rest.RestStatus.*; @@ -198,7 +199,7 @@ public class HttpServer extends AbstractLifecycleComponent { if (lastDot == -1) { return ""; } - String extension = path.substring(lastDot + 1).toLowerCase(); + String extension = path.substring(lastDot + 1).toLowerCase(Locale.ROOT); String mimeType = DEFAULT_MIME_TYPES.get(extension); if (mimeType == null) { return ""; diff --git a/src/main/java/org/elasticsearch/index/analysis/Analysis.java b/src/main/java/org/elasticsearch/index/analysis/Analysis.java index 4f5543bb254..a6d677052ef 100644 --- a/src/main/java/org/elasticsearch/index/analysis/Analysis.java +++ b/src/main/java/org/elasticsearch/index/analysis/Analysis.java @@ -244,7 +244,7 @@ public class Analysis { try { return loadWordList(new InputStreamReader(wordListFile.openStream(), Charsets.UTF_8), "#"); } catch (IOException ioe) { - String message = String.format("IOException while reading %s_path: %s", settingPrefix, ioe.getMessage()); + String message = String.format(Locale.ROOT, "IOException while reading %s_path: %s", settingPrefix, ioe.getMessage()); throw new ElasticSearchIllegalArgumentException(message); } } @@ -292,7 +292,7 @@ public class Analysis { try { reader = new InputStreamReader(fileUrl.openStream(), Charsets.UTF_8); } catch (IOException ioe) { - String message = String.format("IOException while reading %s_path: %s", settingPrefix, ioe.getMessage()); + String message = String.format(Locale.ROOT, "IOException while reading %s_path: %s", settingPrefix, ioe.getMessage()); throw new ElasticSearchIllegalArgumentException(message); } diff --git a/src/main/java/org/elasticsearch/index/analysis/HunspellTokenFilterFactory.java b/src/main/java/org/elasticsearch/index/analysis/HunspellTokenFilterFactory.java index 582602eed6d..b34bdf2349e 100644 --- a/src/main/java/org/elasticsearch/index/analysis/HunspellTokenFilterFactory.java +++ b/src/main/java/org/elasticsearch/index/analysis/HunspellTokenFilterFactory.java @@ -19,6 +19,8 @@ package org.elasticsearch.index.analysis; +import java.util.Locale; + import org.apache.lucene.analysis.TokenStream; import org.apache.lucene.analysis.hunspell.HunspellDictionary; import org.apache.lucene.analysis.hunspell.HunspellStemFilter; @@ -47,7 +49,7 @@ public class HunspellTokenFilterFactory extends AbstractTokenFilterFactory { dictionary = hunspellService.getDictionary(locale); if (dictionary == null) { - throw new ElasticSearchIllegalArgumentException(String.format("Unknown hunspell dictionary for locale [%s]", locale)); + throw new ElasticSearchIllegalArgumentException(String.format(Locale.ROOT, "Unknown hunspell dictionary for locale [%s]", locale)); } dedup = settings.getAsBoolean("dedup", true); diff --git a/src/main/java/org/elasticsearch/index/engine/robin/RobinEngine.java b/src/main/java/org/elasticsearch/index/engine/robin/RobinEngine.java index 8e1c77476d1..5790acac9ee 100644 --- a/src/main/java/org/elasticsearch/index/engine/robin/RobinEngine.java +++ b/src/main/java/org/elasticsearch/index/engine/robin/RobinEngine.java @@ -1180,7 +1180,7 @@ public class RobinEngine extends AbstractIndexShardComponent implements Engine { try { for (AtomicReaderContext reader : searcher.reader().leaves()) { assert reader.reader() instanceof SegmentReader; - SegmentInfoPerCommit info = Lucene.getSegmentInfo((SegmentReader) reader.reader()); + SegmentInfoPerCommit info = ((SegmentReader) reader.reader()).getSegmentInfo(); assert !segments.containsKey(info.info.name); Segment segment = new Segment(info.info.name); segment.search = true; diff --git a/src/main/java/org/elasticsearch/index/indexing/slowlog/ShardSlowLogIndexingService.java b/src/main/java/org/elasticsearch/index/indexing/slowlog/ShardSlowLogIndexingService.java index 15035219d7e..8f8af4ab2e3 100644 --- a/src/main/java/org/elasticsearch/index/indexing/slowlog/ShardSlowLogIndexingService.java +++ b/src/main/java/org/elasticsearch/index/indexing/slowlog/ShardSlowLogIndexingService.java @@ -33,6 +33,7 @@ import org.elasticsearch.index.shard.AbstractIndexShardComponent; import org.elasticsearch.index.shard.ShardId; import java.io.IOException; +import java.util.Locale; import java.util.concurrent.TimeUnit; /** @@ -80,8 +81,8 @@ public class ShardSlowLogIndexingService extends AbstractIndexShardComponent { String level = settings.get(INDEX_INDEXING_SLOWLOG_LEVEL, ShardSlowLogIndexingService.this.level); if (!level.equals(ShardSlowLogIndexingService.this.level)) { - ShardSlowLogIndexingService.this.indexLogger.setLevel(level.toUpperCase()); - ShardSlowLogIndexingService.this.deleteLogger.setLevel(level.toUpperCase()); + ShardSlowLogIndexingService.this.indexLogger.setLevel(level.toUpperCase(Locale.ROOT)); + ShardSlowLogIndexingService.this.deleteLogger.setLevel(level.toUpperCase(Locale.ROOT)); ShardSlowLogIndexingService.this.level = level; } @@ -103,7 +104,7 @@ public class ShardSlowLogIndexingService extends AbstractIndexShardComponent { this.indexDebugThreshold = componentSettings.getAsTime("threshold.index.debug", TimeValue.timeValueNanos(-1)).nanos(); this.indexTraceThreshold = componentSettings.getAsTime("threshold.index.trace", TimeValue.timeValueNanos(-1)).nanos(); - this.level = componentSettings.get("level", "TRACE").toUpperCase(); + this.level = componentSettings.get("level", "TRACE").toUpperCase(Locale.ROOT); this.indexLogger = Loggers.getLogger(logger, ".index"); this.deleteLogger = Loggers.getLogger(logger, ".delete"); diff --git a/src/main/java/org/elasticsearch/index/mapper/core/DateFieldMapper.java b/src/main/java/org/elasticsearch/index/mapper/core/DateFieldMapper.java index a79aca68f18..09bff50492d 100644 --- a/src/main/java/org/elasticsearch/index/mapper/core/DateFieldMapper.java +++ b/src/main/java/org/elasticsearch/index/mapper/core/DateFieldMapper.java @@ -148,7 +148,7 @@ public class DateFieldMapper extends NumberFieldMapper { } else if (propName.equals("format")) { builder.dateTimeFormatter(parseDateTimeFormatter(propName, propNode)); } else if (propName.equals("numeric_resolution")) { - builder.timeUnit(TimeUnit.valueOf(propNode.toString().toUpperCase())); + builder.timeUnit(TimeUnit.valueOf(propNode.toString().toUpperCase(Locale.ROOT))); } else if (propName.equals("locale")) { builder.locale(parseLocal(propNode.toString())); } @@ -446,7 +446,7 @@ public class DateFieldMapper extends NumberFieldMapper { builder.field("include_in_all", includeInAll); } if (timeUnit != Defaults.TIME_UNIT) { - builder.field("numeric_resolution", timeUnit.name().toLowerCase()); + builder.field("numeric_resolution", timeUnit.name().toLowerCase(Locale.ROOT)); } if (dateTimeFormatter.locale() != null) { builder.field("locale", dateTimeFormatter.format()); diff --git a/src/main/java/org/elasticsearch/index/mapper/geo/GeoPointFieldMapper.java b/src/main/java/org/elasticsearch/index/mapper/geo/GeoPointFieldMapper.java index b3a52c24164..3544b51f917 100644 --- a/src/main/java/org/elasticsearch/index/mapper/geo/GeoPointFieldMapper.java +++ b/src/main/java/org/elasticsearch/index/mapper/geo/GeoPointFieldMapper.java @@ -42,6 +42,7 @@ import org.elasticsearch.index.mapper.core.StringFieldMapper; import org.elasticsearch.index.mapper.object.ArrayValueMapperParser; import java.io.IOException; +import java.util.Locale; import java.util.Map; import static org.elasticsearch.index.mapper.MapperBuilders.doubleField; @@ -495,7 +496,7 @@ public class GeoPointFieldMapper implements Mapper, ArrayValueMapperParser { builder.startObject(name); builder.field("type", CONTENT_TYPE); if (pathType != Defaults.PATH_TYPE) { - builder.field("path", pathType.name().toLowerCase()); + builder.field("path", pathType.name().toLowerCase(Locale.ROOT)); } if (enableLatLon != Defaults.ENABLE_LATLON) { builder.field("lat_lon", enableLatLon); diff --git a/src/main/java/org/elasticsearch/index/mapper/multifield/MultiFieldMapper.java b/src/main/java/org/elasticsearch/index/mapper/multifield/MultiFieldMapper.java index 351c944e5dc..d6849ae1c3f 100644 --- a/src/main/java/org/elasticsearch/index/mapper/multifield/MultiFieldMapper.java +++ b/src/main/java/org/elasticsearch/index/mapper/multifield/MultiFieldMapper.java @@ -29,6 +29,7 @@ import org.elasticsearch.index.mapper.internal.AllFieldMapper; import java.io.IOException; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.TreeMap; @@ -298,7 +299,7 @@ public class MultiFieldMapper implements Mapper, AllFieldMapper.IncludeInAll { builder.startObject(name); builder.field("type", CONTENT_TYPE); if (pathType != Defaults.PATH_TYPE) { - builder.field("path", pathType.name().toLowerCase()); + builder.field("path", pathType.name().toLowerCase(Locale.ROOT)); } builder.startObject("fields"); diff --git a/src/main/java/org/elasticsearch/index/mapper/object/ObjectMapper.java b/src/main/java/org/elasticsearch/index/mapper/object/ObjectMapper.java index 85fc6b6bc1a..a97c808d00a 100644 --- a/src/main/java/org/elasticsearch/index/mapper/object/ObjectMapper.java +++ b/src/main/java/org/elasticsearch/index/mapper/object/ObjectMapper.java @@ -870,18 +870,18 @@ public class ObjectMapper implements Mapper, AllFieldMapper.IncludeInAll { // inherit the root behavior if (this instanceof RootObjectMapper) { if (dynamic != Dynamic.TRUE) { - builder.field("dynamic", dynamic.name().toLowerCase()); + builder.field("dynamic", dynamic.name().toLowerCase(Locale.ROOT)); } } else { if (dynamic != Defaults.DYNAMIC) { - builder.field("dynamic", dynamic.name().toLowerCase()); + builder.field("dynamic", dynamic.name().toLowerCase(Locale.ROOT)); } } if (enabled != Defaults.ENABLED) { builder.field("enabled", enabled); } if (pathType != Defaults.PATH_TYPE) { - builder.field("path", pathType.name().toLowerCase()); + builder.field("path", pathType.name().toLowerCase(Locale.ROOT)); } if (includeInAll != null) { builder.field("include_in_all", includeInAll); diff --git a/src/main/java/org/elasticsearch/index/query/FieldQueryBuilder.java b/src/main/java/org/elasticsearch/index/query/FieldQueryBuilder.java index 806f848ee58..cceb79f3d1e 100644 --- a/src/main/java/org/elasticsearch/index/query/FieldQueryBuilder.java +++ b/src/main/java/org/elasticsearch/index/query/FieldQueryBuilder.java @@ -22,6 +22,7 @@ package org.elasticsearch.index.query; import org.elasticsearch.common.xcontent.XContentBuilder; import java.io.IOException; +import java.util.Locale; /** * A query that executes the query string against a field. It is a simplified @@ -302,7 +303,7 @@ public class FieldQueryBuilder extends BaseQueryBuilder implements BoostableQuer builder.startObject(name); builder.field("query", query); if (defaultOperator != null) { - builder.field("default_operator", defaultOperator.name().toLowerCase()); + builder.field("default_operator", defaultOperator.name().toLowerCase(Locale.ROOT)); } if (analyzer != null) { builder.field("analyzer", analyzer); diff --git a/src/main/java/org/elasticsearch/index/query/GeoDistanceFilterBuilder.java b/src/main/java/org/elasticsearch/index/query/GeoDistanceFilterBuilder.java index 1179edb3308..14bd7946599 100644 --- a/src/main/java/org/elasticsearch/index/query/GeoDistanceFilterBuilder.java +++ b/src/main/java/org/elasticsearch/index/query/GeoDistanceFilterBuilder.java @@ -24,6 +24,7 @@ import org.elasticsearch.common.unit.DistanceUnit; import org.elasticsearch.common.xcontent.XContentBuilder; import java.io.IOException; +import java.util.Locale; /** * @@ -125,7 +126,7 @@ public class GeoDistanceFilterBuilder extends BaseFilterBuilder { } builder.field("distance", distance); if (geoDistance != null) { - builder.field("distance_type", geoDistance.name().toLowerCase()); + builder.field("distance_type", geoDistance.name().toLowerCase(Locale.ROOT)); } if (optimizeBbox != null) { builder.field("optimize_bbox", optimizeBbox); diff --git a/src/main/java/org/elasticsearch/index/query/GeoDistanceRangeFilterBuilder.java b/src/main/java/org/elasticsearch/index/query/GeoDistanceRangeFilterBuilder.java index adc4734f02e..396f504ebc8 100644 --- a/src/main/java/org/elasticsearch/index/query/GeoDistanceRangeFilterBuilder.java +++ b/src/main/java/org/elasticsearch/index/query/GeoDistanceRangeFilterBuilder.java @@ -23,6 +23,7 @@ import org.elasticsearch.common.geo.GeoDistance; import org.elasticsearch.common.xcontent.XContentBuilder; import java.io.IOException; +import java.util.Locale; /** * @@ -164,7 +165,7 @@ public class GeoDistanceRangeFilterBuilder extends BaseFilterBuilder { builder.field("include_lower", includeLower); builder.field("include_upper", includeUpper); if (geoDistance != null) { - builder.field("distance_type", geoDistance.name().toLowerCase()); + builder.field("distance_type", geoDistance.name().toLowerCase(Locale.ROOT)); } if (optimizeBbox != null) { builder.field("optimize_bbox", optimizeBbox); diff --git a/src/main/java/org/elasticsearch/index/query/QueryStringQueryBuilder.java b/src/main/java/org/elasticsearch/index/query/QueryStringQueryBuilder.java index ba290d23e8e..7e55faf871c 100644 --- a/src/main/java/org/elasticsearch/index/query/QueryStringQueryBuilder.java +++ b/src/main/java/org/elasticsearch/index/query/QueryStringQueryBuilder.java @@ -25,6 +25,7 @@ import org.elasticsearch.common.xcontent.XContentBuilder; import java.io.IOException; import java.util.List; +import java.util.Locale; import static com.google.common.collect.Lists.newArrayList; @@ -330,7 +331,7 @@ public class QueryStringQueryBuilder extends BaseQueryBuilder implements Boostab builder.field("tie_breaker", tieBreaker); } if (defaultOperator != null) { - builder.field("default_operator", defaultOperator.name().toLowerCase()); + builder.field("default_operator", defaultOperator.name().toLowerCase(Locale.ROOT)); } if (analyzer != null) { builder.field("analyzer", analyzer); diff --git a/src/main/java/org/elasticsearch/index/query/RegexpFlag.java b/src/main/java/org/elasticsearch/index/query/RegexpFlag.java index 53961dbf63b..4af9cc6db3d 100644 --- a/src/main/java/org/elasticsearch/index/query/RegexpFlag.java +++ b/src/main/java/org/elasticsearch/index/query/RegexpFlag.java @@ -19,6 +19,8 @@ package org.elasticsearch.index.query; +import java.util.Locale; + import org.apache.lucene.util.automaton.RegExp; import org.elasticsearch.ElasticSearchIllegalArgumentException; import org.elasticsearch.common.Strings; @@ -118,7 +120,7 @@ public enum RegexpFlag { continue; } try { - RegexpFlag flag = RegexpFlag.valueOf(s.toUpperCase()); + RegexpFlag flag = RegexpFlag.valueOf(s.toUpperCase(Locale.ROOT)); if (flag == RegexpFlag.NONE) { continue; } diff --git a/src/main/java/org/elasticsearch/index/search/nested/NestedFieldComparatorSource.java b/src/main/java/org/elasticsearch/index/search/nested/NestedFieldComparatorSource.java index 108e1a1bd7c..f4918b5785d 100644 --- a/src/main/java/org/elasticsearch/index/search/nested/NestedFieldComparatorSource.java +++ b/src/main/java/org/elasticsearch/index/search/nested/NestedFieldComparatorSource.java @@ -32,6 +32,7 @@ import org.elasticsearch.index.fielddata.fieldcomparator.NumberComparatorBase; import org.elasticsearch.index.fielddata.fieldcomparator.SortMode; import java.io.IOException; +import java.util.Locale; /** */ @@ -64,7 +65,7 @@ public class NestedFieldComparatorSource extends IndexFieldData.XFieldComparator return new NestedFieldComparator.Avg((NumberComparatorBase) wrappedComparator, rootDocumentsFilter, innerDocumentsFilter, numHits); default: throw new ElasticSearchIllegalArgumentException( - String.format("Unsupported sort_mode[%s] for nested type", sortMode) + String.format(Locale.ROOT, "Unsupported sort_mode[%s] for nested type", sortMode) ); } } diff --git a/src/main/java/org/elasticsearch/index/search/slowlog/ShardSlowLogSearchService.java b/src/main/java/org/elasticsearch/index/search/slowlog/ShardSlowLogSearchService.java index 8e21ef68a8e..52c4859f0fd 100644 --- a/src/main/java/org/elasticsearch/index/search/slowlog/ShardSlowLogSearchService.java +++ b/src/main/java/org/elasticsearch/index/search/slowlog/ShardSlowLogSearchService.java @@ -33,6 +33,7 @@ import org.elasticsearch.index.shard.ShardId; import org.elasticsearch.search.internal.SearchContext; import java.io.IOException; +import java.util.Locale; import java.util.concurrent.TimeUnit; /** @@ -106,8 +107,8 @@ public class ShardSlowLogSearchService extends AbstractIndexShardComponent { String level = settings.get(INDEX_SEARCH_SLOWLOG_LEVEL, ShardSlowLogSearchService.this.level); if (!level.equals(ShardSlowLogSearchService.this.level)) { - ShardSlowLogSearchService.this.queryLogger.setLevel(level.toUpperCase()); - ShardSlowLogSearchService.this.fetchLogger.setLevel(level.toUpperCase()); + ShardSlowLogSearchService.this.queryLogger.setLevel(level.toUpperCase(Locale.ROOT)); + ShardSlowLogSearchService.this.fetchLogger.setLevel(level.toUpperCase(Locale.ROOT)); ShardSlowLogSearchService.this.level = level; } @@ -134,7 +135,7 @@ public class ShardSlowLogSearchService extends AbstractIndexShardComponent { this.fetchDebugThreshold = componentSettings.getAsTime("threshold.fetch.debug", TimeValue.timeValueNanos(-1)).nanos(); this.fetchTraceThreshold = componentSettings.getAsTime("threshold.fetch.trace", TimeValue.timeValueNanos(-1)).nanos(); - this.level = componentSettings.get("level", "TRACE").toUpperCase(); + this.level = componentSettings.get("level", "TRACE").toUpperCase(Locale.ROOT); this.queryLogger = Loggers.getLogger(logger, ".query"); this.fetchLogger = Loggers.getLogger(logger, ".fetch"); diff --git a/src/main/java/org/elasticsearch/index/shard/service/InternalIndexShard.java b/src/main/java/org/elasticsearch/index/shard/service/InternalIndexShard.java index a20785009bf..ea9d88b6a39 100644 --- a/src/main/java/org/elasticsearch/index/shard/service/InternalIndexShard.java +++ b/src/main/java/org/elasticsearch/index/shard/service/InternalIndexShard.java @@ -34,6 +34,7 @@ import org.elasticsearch.common.Strings; import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.inject.Inject; import org.elasticsearch.common.io.FastByteArrayOutputStream; +import org.elasticsearch.common.io.Streams; import org.elasticsearch.common.lucene.Lucene; import org.elasticsearch.common.lucene.search.XFilteredQuery; import org.elasticsearch.common.metrics.MeanMetric; @@ -840,7 +841,7 @@ public class InternalIndexShard extends AbstractIndexShardComponent implements I } CheckIndex checkIndex = new CheckIndex(store.directory()); FastByteArrayOutputStream os = new FastByteArrayOutputStream(); - PrintStream out = new PrintStream(os); + PrintStream out = new PrintStream(os, false, Streams.UTF8.name()); checkIndex.setInfoStream(out); out.flush(); CheckIndex.Status status = checkIndex.checkIndex(); diff --git a/src/main/java/org/elasticsearch/indices/analysis/HunspellService.java b/src/main/java/org/elasticsearch/indices/analysis/HunspellService.java index 5fc191b928f..8eceec94d59 100644 --- a/src/main/java/org/elasticsearch/indices/analysis/HunspellService.java +++ b/src/main/java/org/elasticsearch/indices/analysis/HunspellService.java @@ -37,6 +37,7 @@ import java.net.MalformedURLException; import java.util.ArrayList; import java.util.Collections; import java.util.List; +import java.util.Locale; import java.util.Map; /** @@ -153,7 +154,7 @@ public class HunspellService extends AbstractComponent { } File dicDir = new File(hunspellDir, locale); if (!dicDir.exists() || !dicDir.isDirectory()) { - throw new ElasticSearchException(String.format("Could not find hunspell dictionary [%s]", locale)); + throw new ElasticSearchException(String.format(Locale.ROOT, "Could not find hunspell dictionary [%s]", locale)); } // merging node settings with hunspell dictionary specific settings @@ -164,7 +165,7 @@ public class HunspellService extends AbstractComponent { File[] affixFiles = dicDir.listFiles(AFFIX_FILE_FILTER); if (affixFiles.length != 1) { - throw new ElasticSearchException(String.format("Missing affix file for hunspell dictionary [%s]", locale)); + throw new ElasticSearchException(String.format(Locale.ROOT, "Missing affix file for hunspell dictionary [%s]", locale)); } InputStream affixStream = null; @@ -217,7 +218,7 @@ public class HunspellService extends AbstractComponent { try { return ImmutableSettings.settingsBuilder().loadFromUrl(file.toURI().toURL()).put(defaults).build(); } catch (MalformedURLException e) { - throw new ElasticSearchException(String.format("Could not load hunspell dictionary settings from [%s]", file.getAbsolutePath()), e); + throw new ElasticSearchException(String.format(Locale.ROOT, "Could not load hunspell dictionary settings from [%s]", file.getAbsolutePath()), e); } } @@ -226,7 +227,7 @@ public class HunspellService extends AbstractComponent { try { return ImmutableSettings.settingsBuilder().loadFromUrl(file.toURI().toURL()).put(defaults).build(); } catch (MalformedURLException e) { - throw new ElasticSearchException(String.format("Could not load hunspell dictionary settings from [%s]", file.getAbsolutePath()), e); + throw new ElasticSearchException(String.format(Locale.ROOT, "Could not load hunspell dictionary settings from [%s]", file.getAbsolutePath()), e); } } @@ -239,7 +240,7 @@ public class HunspellService extends AbstractComponent { static class DictionaryFileFilter implements FilenameFilter { @Override public boolean accept(File dir, String name) { - return name.toLowerCase().endsWith(".dic"); + return name.toLowerCase(Locale.ROOT).endsWith(".dic"); } } @@ -249,7 +250,7 @@ public class HunspellService extends AbstractComponent { static class AffixFileFilter implements FilenameFilter { @Override public boolean accept(File dir, String name) { - return name.toLowerCase().endsWith(".aff"); + return name.toLowerCase(Locale.ROOT).endsWith(".aff"); } } diff --git a/src/main/java/org/elasticsearch/monitor/dump/AbstractDump.java b/src/main/java/org/elasticsearch/monitor/dump/AbstractDump.java index 4e14fab2d51..f14cc175f73 100644 --- a/src/main/java/org/elasticsearch/monitor/dump/AbstractDump.java +++ b/src/main/java/org/elasticsearch/monitor/dump/AbstractDump.java @@ -21,6 +21,7 @@ package org.elasticsearch.monitor.dump; import com.google.common.collect.ImmutableMap; import org.elasticsearch.common.Nullable; +import org.elasticsearch.common.io.Streams; import java.io.*; import java.util.ArrayList; @@ -88,10 +89,6 @@ public abstract class AbstractDump implements Dump { @Override public Writer createFileWriter(String name) throws DumpException { - try { - return new FileWriter(createFile(name)); - } catch (IOException e) { - throw new DumpException("Failed to create file [" + name + "]", e); - } + return new OutputStreamWriter(createFileOutputStream(name), Streams.UTF8); } } diff --git a/src/main/java/org/elasticsearch/monitor/dump/summary/SummaryDumpContributor.java b/src/main/java/org/elasticsearch/monitor/dump/summary/SummaryDumpContributor.java index 552bfe84339..8b63ff9cf44 100644 --- a/src/main/java/org/elasticsearch/monitor/dump/summary/SummaryDumpContributor.java +++ b/src/main/java/org/elasticsearch/monitor/dump/summary/SummaryDumpContributor.java @@ -31,13 +31,14 @@ import java.text.DateFormat; import java.text.SimpleDateFormat; import java.util.Collection; import java.util.Date; +import java.util.Locale; /** * */ public class SummaryDumpContributor implements DumpContributor { - private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS"); + private final DateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss,SSS", Locale.ROOT); private final Object formatterLock = new Object(); public static final String SUMMARY = "summary"; diff --git a/src/main/java/org/elasticsearch/monitor/dump/thread/ThreadDumpContributor.java b/src/main/java/org/elasticsearch/monitor/dump/thread/ThreadDumpContributor.java index de2ae2e9acc..97fd78d6816 100644 --- a/src/main/java/org/elasticsearch/monitor/dump/thread/ThreadDumpContributor.java +++ b/src/main/java/org/elasticsearch/monitor/dump/thread/ThreadDumpContributor.java @@ -31,6 +31,7 @@ import java.lang.management.ManagementFactory; import java.lang.management.MonitorInfo; import java.lang.management.ThreadInfo; import java.lang.management.ThreadMXBean; +import java.util.Locale; /** * @@ -103,11 +104,11 @@ public class ThreadDumpContributor implements DumpContributor { } private void write(ThreadInfo threadInfo, PrintWriter writer) { - writer.print(String.format("\"%s\" Id=%s %s", threadInfo.getThreadName(), threadInfo.getThreadId(), threadInfo.getThreadState())); + writer.print(String.format(Locale.ROOT, "\"%s\" Id=%s %s", threadInfo.getThreadName(), threadInfo.getThreadId(), threadInfo.getThreadState())); if (threadInfo.getLockName() != null) { - writer.print(String.format(" on %s", threadInfo.getLockName())); + writer.print(String.format(Locale.ROOT, " on %s", threadInfo.getLockName())); if (threadInfo.getLockOwnerName() != null) - writer.print(String.format(" owned by \"%s\" Id=%s", threadInfo.getLockOwnerName(), threadInfo.getLockOwnerId())); + writer.print(String.format(Locale.ROOT, " owned by \"%s\" Id=%s", threadInfo.getLockOwnerName(), threadInfo.getLockOwnerId())); } if (threadInfo.isInNative()) writer.println(" (in native)"); diff --git a/src/main/java/org/elasticsearch/monitor/jvm/HotThreads.java b/src/main/java/org/elasticsearch/monitor/jvm/HotThreads.java index eb68ffacfb0..e7a72b8f9ea 100644 --- a/src/main/java/org/elasticsearch/monitor/jvm/HotThreads.java +++ b/src/main/java/org/elasticsearch/monitor/jvm/HotThreads.java @@ -163,7 +163,7 @@ public class HotThreads { time = hotties.get(t).blockedTime; } double percent = (((double) time) / interval.nanos()) * 100; - sb.append(String.format("%n%4.1f%% (%s out of %s) %s usage by thread '%s'%n", percent, TimeValue.timeValueNanos(time), interval, type, allInfos[0][t].getThreadName())); + sb.append(String.format(Locale.ROOT, "%n%4.1f%% (%s out of %s) %s usage by thread '%s'%n", percent, TimeValue.timeValueNanos(time), interval, type, allInfos[0][t].getThreadName())); // for each snapshot (2nd array index) find later snapshot for same thread with max number of // identical StackTraceElements (starting from end of each) boolean[] done = new boolean[threadElementsSnapshotCount]; @@ -190,14 +190,14 @@ public class HotThreads { } StackTraceElement[] show = allInfos[i][t].getStackTrace(); if (count == 1) { - sb.append(String.format(" unique snapshot%n")); + sb.append(String.format(Locale.ROOT, " unique snapshot%n")); for (int l = 0; l < show.length; l++) { - sb.append(String.format(" %s%n", show[l])); + sb.append(String.format(Locale.ROOT, " %s%n", show[l])); } } else { - sb.append(String.format(" %d/%d snapshots sharing following %d elements%n", count, threadElementsSnapshotCount, maxSim)); + sb.append(String.format(Locale.ROOT, " %d/%d snapshots sharing following %d elements%n", count, threadElementsSnapshotCount, maxSim)); for (int l = show.length - maxSim; l < show.length; l++) { - sb.append(String.format(" %s%n", show[l])); + sb.append(String.format(Locale.ROOT, " %s%n", show[l])); } } } diff --git a/src/main/java/org/elasticsearch/rest/action/admin/cluster/health/RestClusterHealthAction.java b/src/main/java/org/elasticsearch/rest/action/admin/cluster/health/RestClusterHealthAction.java index 1bc8d07300c..7a315c2ecad 100644 --- a/src/main/java/org/elasticsearch/rest/action/admin/cluster/health/RestClusterHealthAction.java +++ b/src/main/java/org/elasticsearch/rest/action/admin/cluster/health/RestClusterHealthAction.java @@ -31,6 +31,7 @@ import org.elasticsearch.rest.action.support.RestActions; import org.elasticsearch.rest.action.support.RestXContentBuilder; import java.io.IOException; +import java.util.Locale; import static org.elasticsearch.client.Requests.clusterHealthRequest; import static org.elasticsearch.rest.RestStatus.PRECONDITION_FAILED; @@ -59,7 +60,7 @@ public class RestClusterHealthAction extends BaseRestHandler { clusterHealthRequest.timeout(request.paramAsTime("timeout", clusterHealthRequest.timeout())); String waitForStatus = request.param("wait_for_status"); if (waitForStatus != null) { - clusterHealthRequest.waitForStatus(ClusterHealthStatus.valueOf(waitForStatus.toUpperCase())); + clusterHealthRequest.waitForStatus(ClusterHealthStatus.valueOf(waitForStatus.toUpperCase(Locale.ROOT))); } clusterHealthRequest.waitForRelocatingShards(request.paramAsInt("wait_for_relocating_shards", clusterHealthRequest.waitForRelocatingShards())); clusterHealthRequest.waitForActiveShards(request.paramAsInt("wait_for_active_shards", clusterHealthRequest.waitForActiveShards())); @@ -98,7 +99,7 @@ public class RestClusterHealthAction extends BaseRestHandler { builder.startObject(); builder.field(Fields.CLUSTER_NAME, response.getClusterName()); - builder.field(Fields.STATUS, response.getStatus().name().toLowerCase()); + builder.field(Fields.STATUS, response.getStatus().name().toLowerCase(Locale.ROOT)); builder.field(Fields.TIMED_OUT, response.isTimedOut()); builder.field(Fields.NUMBER_OF_NODES, response.getNumberOfNodes()); builder.field(Fields.NUMBER_OF_DATA_NODES, response.getNumberOfDataNodes()); @@ -138,7 +139,7 @@ public class RestClusterHealthAction extends BaseRestHandler { for (ClusterIndexHealth indexHealth : response) { builder.startObject(indexHealth.getIndex(), XContentBuilder.FieldCaseConversion.NONE); - builder.field(Fields.STATUS, indexHealth.getStatus().name().toLowerCase()); + builder.field(Fields.STATUS, indexHealth.getStatus().name().toLowerCase(Locale.ROOT)); builder.field(Fields.NUMBER_OF_SHARDS, indexHealth.getNumberOfShards()); builder.field(Fields.NUMBER_OF_REPLICAS, indexHealth.getNumberOfReplicas()); builder.field(Fields.ACTIVE_PRIMARY_SHARDS, indexHealth.getActivePrimaryShards()); @@ -161,7 +162,7 @@ public class RestClusterHealthAction extends BaseRestHandler { for (ClusterShardHealth shardHealth : indexHealth) { builder.startObject(Integer.toString(shardHealth.getId())); - builder.field(Fields.STATUS, shardHealth.getStatus().name().toLowerCase()); + builder.field(Fields.STATUS, shardHealth.getStatus().name().toLowerCase(Locale.ROOT)); builder.field(Fields.PRIMARY_ACTIVE, shardHealth.isPrimaryActive()); builder.field(Fields.ACTIVE_SHARDS, shardHealth.getActiveShards()); builder.field(Fields.RELOCATING_SHARDS, shardHealth.getRelocatingShards()); diff --git a/src/main/java/org/elasticsearch/river/RiverModule.java b/src/main/java/org/elasticsearch/river/RiverModule.java index 5a890b670a7..1d18d62aa52 100644 --- a/src/main/java/org/elasticsearch/river/RiverModule.java +++ b/src/main/java/org/elasticsearch/river/RiverModule.java @@ -28,6 +28,7 @@ import org.elasticsearch.common.inject.SpawnModules; import org.elasticsearch.common.settings.NoClassSettingsException; import org.elasticsearch.common.settings.Settings; +import java.util.Locale; import java.util.Map; import static org.elasticsearch.common.Strings.toCamelCase; @@ -79,7 +80,7 @@ public class RiverModule extends AbstractModule implements SpawnModules { try { return (Class) globalSettings.getClassLoader().loadClass(fullClassName); } catch (ClassNotFoundException e2) { - fullClassName = prefixPackage + toCamelCase(type).toLowerCase() + "." + Strings.capitalize(toCamelCase(type)) + suffixClassName; + fullClassName = prefixPackage + toCamelCase(type).toLowerCase(Locale.ROOT) + "." + Strings.capitalize(toCamelCase(type)) + suffixClassName; try { return (Class) globalSettings.getClassLoader().loadClass(fullClassName); } catch (ClassNotFoundException e3) { diff --git a/src/main/java/org/elasticsearch/script/ScriptService.java b/src/main/java/org/elasticsearch/script/ScriptService.java index 80d8e62aa13..53f073f3fce 100644 --- a/src/main/java/org/elasticsearch/script/ScriptService.java +++ b/src/main/java/org/elasticsearch/script/ScriptService.java @@ -121,7 +121,7 @@ public class ScriptService extends AbstractComponent { if (s.equals(ext)) { found = true; try { - String script = Streams.copyToString(new InputStreamReader(new FileInputStream(file), "UTF-8")); + String script = Streams.copyToString(new InputStreamReader(new FileInputStream(file), Streams.UTF8)); staticCache.put(scriptName, new CompiledScript(engineService.types()[0], engineService.compile(script))); } catch (Exception e) { logger.warn("failed to load/compile script [{}]", e, scriptName); diff --git a/src/main/java/org/elasticsearch/search/facet/geodistance/GeoDistanceFacetBuilder.java b/src/main/java/org/elasticsearch/search/facet/geodistance/GeoDistanceFacetBuilder.java index aecea0e5a8b..51671635b33 100644 --- a/src/main/java/org/elasticsearch/search/facet/geodistance/GeoDistanceFacetBuilder.java +++ b/src/main/java/org/elasticsearch/search/facet/geodistance/GeoDistanceFacetBuilder.java @@ -30,6 +30,7 @@ import org.elasticsearch.search.facet.FacetBuilder; import java.io.IOException; import java.util.List; +import java.util.Locale; import java.util.Map; /** @@ -266,7 +267,7 @@ public class GeoDistanceFacetBuilder extends FacetBuilder { builder.field("unit", unit); } if (geoDistance != null) { - builder.field("distance_type", geoDistance.name().toLowerCase()); + builder.field("distance_type", geoDistance.name().toLowerCase(Locale.ROOT)); } builder.endObject(); diff --git a/src/main/java/org/elasticsearch/search/facet/terms/TermsFacetBuilder.java b/src/main/java/org/elasticsearch/search/facet/terms/TermsFacetBuilder.java index 302f6988949..47f1daad655 100644 --- a/src/main/java/org/elasticsearch/search/facet/terms/TermsFacetBuilder.java +++ b/src/main/java/org/elasticsearch/search/facet/terms/TermsFacetBuilder.java @@ -27,6 +27,7 @@ import org.elasticsearch.search.builder.SearchSourceBuilderException; import org.elasticsearch.search.facet.FacetBuilder; import java.io.IOException; +import java.util.Locale; import java.util.Map; /** @@ -226,7 +227,7 @@ public class TermsFacetBuilder extends FacetBuilder { } } if (comparatorType != null) { - builder.field("order", comparatorType.name().toLowerCase()); + builder.field("order", comparatorType.name().toLowerCase(Locale.ROOT)); } if (allTerms != null) { builder.field("all_terms", allTerms); diff --git a/src/main/java/org/elasticsearch/search/facet/termsstats/TermsStatsFacetBuilder.java b/src/main/java/org/elasticsearch/search/facet/termsstats/TermsStatsFacetBuilder.java index 628d1c83f5c..b2ff0976eeb 100644 --- a/src/main/java/org/elasticsearch/search/facet/termsstats/TermsStatsFacetBuilder.java +++ b/src/main/java/org/elasticsearch/search/facet/termsstats/TermsStatsFacetBuilder.java @@ -25,6 +25,7 @@ import org.elasticsearch.search.builder.SearchSourceBuilderException; import org.elasticsearch.search.facet.FacetBuilder; import java.io.IOException; +import java.util.Locale; import java.util.Map; /** @@ -139,7 +140,7 @@ public class TermsStatsFacetBuilder extends FacetBuilder { } if (comparatorType != null) { - builder.field("order", comparatorType.name().toLowerCase()); + builder.field("order", comparatorType.name().toLowerCase(Locale.ROOT)); } if (size != -1) { diff --git a/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java b/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java index 8bbb69438c9..6926148b67c 100644 --- a/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java +++ b/src/main/java/org/elasticsearch/search/sort/GeoDistanceSortBuilder.java @@ -25,6 +25,7 @@ import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.index.query.FilterBuilder; import java.io.IOException; +import java.util.Locale; /** * A geo distance based sorting on a geo point like field. @@ -147,7 +148,7 @@ public class GeoDistanceSortBuilder extends SortBuilder { builder.field("unit", unit); } if (geoDistance != null) { - builder.field("distance_type", geoDistance.name().toLowerCase()); + builder.field("distance_type", geoDistance.name().toLowerCase(Locale.ROOT)); } if (order == SortOrder.DESC) { builder.field("reverse", true); diff --git a/src/test/java/org/elasticsearch/test/integration/rest/helper/HttpClient.java b/src/test/java/org/elasticsearch/test/integration/rest/helper/HttpClient.java index 895a1bbda8d..600f6e7ac87 100644 --- a/src/test/java/org/elasticsearch/test/integration/rest/helper/HttpClient.java +++ b/src/test/java/org/elasticsearch/test/integration/rest/helper/HttpClient.java @@ -96,7 +96,7 @@ public class HttpClient { InputStream inputStream = urlConnection.getInputStream(); String body = null; try { - body = Streams.copyToString(new InputStreamReader(inputStream)); + body = Streams.copyToString(new InputStreamReader(inputStream, Streams.UTF8)); } catch (IOException e1) { throw new ElasticSearchException("problem reading error stream", e1); } @@ -105,7 +105,7 @@ public class HttpClient { InputStream errStream = urlConnection.getErrorStream(); String body = null; try { - body = Streams.copyToString(new InputStreamReader(errStream)); + body = Streams.copyToString(new InputStreamReader(errStream, Streams.UTF8)); } catch (IOException e1) { throw new ElasticSearchException("problem reading error stream", e1); } diff --git a/src/test/java/org/elasticsearch/test/integration/search/child/SimpleChildQuerySearchTests.java b/src/test/java/org/elasticsearch/test/integration/search/child/SimpleChildQuerySearchTests.java index 457154199e8..4c6fe5531b9 100644 --- a/src/test/java/org/elasticsearch/test/integration/search/child/SimpleChildQuerySearchTests.java +++ b/src/test/java/org/elasticsearch/test/integration/search/child/SimpleChildQuerySearchTests.java @@ -40,6 +40,7 @@ import java.io.IOException; import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.Locale; import java.util.Map; import static com.google.common.collect.Maps.newHashMap; @@ -787,13 +788,13 @@ public class SimpleChildQuerySearchTests extends AbstractNodesTests { int numberOfParents = 4; int numberOfChildrenPerParent = 123; for (int i = 1; i <= numberOfParents; i++) { - String parentId = String.format("p%d", i); + String parentId = String.format(Locale.ROOT, "p%d", i); client.prepareIndex("test", "parent", parentId) - .setSource("p_field", String.format("p_value%d", i)) + .setSource("p_field", String.format(Locale.ROOT, "p_value%d", i)) .execute() .actionGet(); for (int j = 1; j <= numberOfChildrenPerParent; j++) { - client.prepareIndex("test", "child", String.format("%s_c%d", parentId, j)) + client.prepareIndex("test", "child", String.format(Locale.ROOT, "%s_c%d", parentId, j)) .setSource( "c_field1", parentId, "c_field2", i % 2 == 0 ? "even" : "not_even" @@ -1233,13 +1234,13 @@ public class SimpleChildQuerySearchTests extends AbstractNodesTests { // index simple data int childId = 0; for (int i = 0; i < 10; i++) { - String parentId = String.format("p%03d", i); + String parentId = String.format(Locale.ROOT, "p%03d", i); client.prepareIndex("test", "parent", parentId) .setSource("p_field", parentId) .execute().actionGet(); int j = childId; for (; j < childId + 50; j++) { - String childUid = String.format("c%03d", j); + String childUid = String.format(Locale.ROOT, "c%03d", j); client.prepareIndex("test", "child", childUid) .setSource("c_field", childUid) .setParent(parentId) diff --git a/src/test/java/org/elasticsearch/test/integration/search/facet/ExtendedFacetsTests.java b/src/test/java/org/elasticsearch/test/integration/search/facet/ExtendedFacetsTests.java index 1059571bad0..0ad50593a66 100644 --- a/src/test/java/org/elasticsearch/test/integration/search/facet/ExtendedFacetsTests.java +++ b/src/test/java/org/elasticsearch/test/integration/search/facet/ExtendedFacetsTests.java @@ -211,7 +211,7 @@ public class ExtendedFacetsTests extends AbstractNodesTests { TermsFacet actualFacetEntries = response.getFacets().facet("facet1"); List> expectedFacetEntries = getExpectedFacetEntries(allFieldValues, queryControlFacets, size, compType, excludes, regex, allTerms); - String reason = String.format("query: [%s] field: [%s] size: [%d] order: [%s] all_terms: [%s] fields: [%s] regex: [%s] excludes: [%s]", queryVal, facetField, size, compType, allTerms, useFields, regex, excludes); + String reason = String.format(Locale.ROOT, "query: [%s] field: [%s] size: [%d] order: [%s] all_terms: [%s] fields: [%s] regex: [%s] excludes: [%s]", queryVal, facetField, size, compType, allTerms, useFields, regex, excludes); assertThat(reason, actualFacetEntries.getEntries().size(), equalTo(expectedFacetEntries.size())); for (int i = 0; i < expectedFacetEntries.size(); i++) { assertThat(reason, actualFacetEntries.getEntries().get(i).getTerm(), equalTo(expectedFacetEntries.get(i).v1())); diff --git a/src/test/java/org/elasticsearch/test/integration/search/suggest/SuggestSearchTests.java b/src/test/java/org/elasticsearch/test/integration/search/suggest/SuggestSearchTests.java index 71031a4f88c..a36c791a10e 100644 --- a/src/test/java/org/elasticsearch/test/integration/search/suggest/SuggestSearchTests.java +++ b/src/test/java/org/elasticsearch/test/integration/search/suggest/SuggestSearchTests.java @@ -43,6 +43,7 @@ import org.elasticsearch.action.search.SearchRequestBuilder; import org.elasticsearch.action.search.SearchResponse; import org.elasticsearch.action.search.SearchType; import org.elasticsearch.client.Client; +import org.elasticsearch.common.io.Streams; import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.common.settings.ImmutableSettings.Builder; import org.elasticsearch.common.xcontent.XContentBuilder; @@ -569,7 +570,7 @@ public class SuggestSearchTests extends AbstractNodesTests { client.admin().indices().prepareCreate("test").setSettings(builder.build()).addMapping("type1", mapping).execute().actionGet(); client.admin().cluster().prepareHealth("test").setWaitForGreenStatus().execute().actionGet(); - BufferedReader reader = new BufferedReader(new InputStreamReader(SuggestSearchTests.class.getResourceAsStream("/config/names.txt"))); + BufferedReader reader = new BufferedReader(new InputStreamReader(SuggestSearchTests.class.getResourceAsStream("/config/names.txt"), Streams.UTF8)); String line = null; while ((line = reader.readLine()) != null) { client.prepareIndex("test", "type1") @@ -904,7 +905,7 @@ public class SuggestSearchTests extends AbstractNodesTests { client.admin().indices().prepareCreate("test").setSettings(builder.build()).addMapping("type1", mapping).execute().actionGet(); client.admin().cluster().prepareHealth("test").setWaitForGreenStatus().execute().actionGet(); - BufferedReader reader = new BufferedReader(new InputStreamReader(SuggestSearchTests.class.getResourceAsStream("/config/names.txt"))); + BufferedReader reader = new BufferedReader(new InputStreamReader(SuggestSearchTests.class.getResourceAsStream("/config/names.txt"), Streams.UTF8)); String line = null; while ((line = reader.readLine()) != null) { client.prepareIndex("test", "type1") diff --git a/src/test/java/org/elasticsearch/test/integration/validate/SimpleValidateQueryTests.java b/src/test/java/org/elasticsearch/test/integration/validate/SimpleValidateQueryTests.java index d6cf0fc4df2..c17bf6fc1cc 100644 --- a/src/test/java/org/elasticsearch/test/integration/validate/SimpleValidateQueryTests.java +++ b/src/test/java/org/elasticsearch/test/integration/validate/SimpleValidateQueryTests.java @@ -23,6 +23,7 @@ import org.elasticsearch.action.admin.indices.validate.query.ValidateQueryRespon import org.elasticsearch.client.Client; import org.elasticsearch.common.Priority; import org.elasticsearch.common.geo.GeoDistance; +import org.elasticsearch.common.io.Streams; import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.common.unit.DistanceUnit; import org.elasticsearch.common.xcontent.XContentFactory; @@ -79,7 +80,7 @@ public class SimpleValidateQueryTests extends AbstractNodesTests { client.admin().indices().prepareRefresh().execute().actionGet(); - assertThat(client.admin().indices().prepareValidateQuery("test").setQuery("foo".getBytes()).execute().actionGet().isValid(), equalTo(false)); + assertThat(client.admin().indices().prepareValidateQuery("test").setQuery("foo".getBytes(Streams.UTF8)).execute().actionGet().isValid(), equalTo(false)); assertThat(client.admin().indices().prepareValidateQuery("test").setQuery(QueryBuilders.queryString("_id:1")).execute().actionGet().isValid(), equalTo(true)); assertThat(client.admin().indices().prepareValidateQuery("test").setQuery(QueryBuilders.queryString("_i:d:1")).execute().actionGet().isValid(), equalTo(false)); @@ -119,7 +120,7 @@ public class SimpleValidateQueryTests extends AbstractNodesTests { ValidateQueryResponse response; response = client.admin().indices().prepareValidateQuery("test") - .setQuery("foo".getBytes()) + .setQuery("foo".getBytes(Streams.UTF8)) .setExplain(true) .execute().actionGet(); assertThat(response.isValid(), equalTo(false)); @@ -225,7 +226,7 @@ public class SimpleValidateQueryTests extends AbstractNodesTests { ValidateQueryResponse response; response = client("node1").admin().indices().prepareValidateQuery("test") - .setQuery("foo".getBytes()) + .setQuery("foo".getBytes(Streams.UTF8)) .setExplain(true) .execute().actionGet(); assertThat(response.isValid(), equalTo(false)); @@ -234,7 +235,7 @@ public class SimpleValidateQueryTests extends AbstractNodesTests { assertThat(response.getQueryExplanation().get(0).getExplanation(), nullValue()); response = client("node2").admin().indices().prepareValidateQuery("test") - .setQuery("foo".getBytes()) + .setQuery("foo".getBytes(Streams.UTF8)) .setExplain(true) .execute().actionGet(); assertThat(response.isValid(), equalTo(false)); diff --git a/src/test/java/org/elasticsearch/test/unit/action/bulk/BulkRequestTests.java b/src/test/java/org/elasticsearch/test/unit/action/bulk/BulkRequestTests.java index e3ddb36adc7..3f60116ae33 100644 --- a/src/test/java/org/elasticsearch/test/unit/action/bulk/BulkRequestTests.java +++ b/src/test/java/org/elasticsearch/test/unit/action/bulk/BulkRequestTests.java @@ -24,6 +24,7 @@ import org.elasticsearch.action.delete.DeleteRequest; import org.elasticsearch.action.index.IndexRequest; import org.elasticsearch.action.update.UpdateRequest; import org.elasticsearch.common.bytes.BytesArray; +import org.elasticsearch.common.io.Streams; import org.testng.annotations.Test; import static org.elasticsearch.common.io.Streams.copyToStringFromClasspath; @@ -37,7 +38,7 @@ public class BulkRequestTests { public void testSimpleBulk1() throws Exception { String bulkAction = copyToStringFromClasspath("/org/elasticsearch/test/unit/action/bulk/simple-bulk.json"); BulkRequest bulkRequest = new BulkRequest(); - bulkRequest.add(bulkAction.getBytes(), 0, bulkAction.length(), true, null, null); + bulkRequest.add(bulkAction.getBytes(Streams.UTF8), 0, bulkAction.length(), true, null, null); assertThat(bulkRequest.numberOfActions(), equalTo(3)); assertThat(((IndexRequest) bulkRequest.requests().get(0)).source().toBytes(), equalTo(new BytesArray("{ \"field1\" : \"value1\" }").toBytes())); assertThat(bulkRequest.requests().get(1), instanceOf(DeleteRequest.class)); @@ -48,7 +49,7 @@ public class BulkRequestTests { public void testSimpleBulk2() throws Exception { String bulkAction = copyToStringFromClasspath("/org/elasticsearch/test/unit/action/bulk/simple-bulk2.json"); BulkRequest bulkRequest = new BulkRequest(); - bulkRequest.add(bulkAction.getBytes(), 0, bulkAction.length(), true, null, null); + bulkRequest.add(bulkAction.getBytes(Streams.UTF8), 0, bulkAction.length(), true, null, null); assertThat(bulkRequest.numberOfActions(), equalTo(3)); } @@ -56,7 +57,7 @@ public class BulkRequestTests { public void testSimpleBulk3() throws Exception { String bulkAction = copyToStringFromClasspath("/org/elasticsearch/test/unit/action/bulk/simple-bulk3.json"); BulkRequest bulkRequest = new BulkRequest(); - bulkRequest.add(bulkAction.getBytes(), 0, bulkAction.length(), true, null, null); + bulkRequest.add(bulkAction.getBytes(Streams.UTF8), 0, bulkAction.length(), true, null, null); assertThat(bulkRequest.numberOfActions(), equalTo(3)); } @@ -64,7 +65,7 @@ public class BulkRequestTests { public void testSimpleBulk4() throws Exception { String bulkAction = copyToStringFromClasspath("/org/elasticsearch/test/unit/action/bulk/simple-bulk4.json"); BulkRequest bulkRequest = new BulkRequest(); - bulkRequest.add(bulkAction.getBytes(), 0, bulkAction.length(), true, null, null); + bulkRequest.add(bulkAction.getBytes(Streams.UTF8), 0, bulkAction.length(), true, null, null); assertThat(bulkRequest.numberOfActions(), equalTo(4)); assertThat(((UpdateRequest) bulkRequest.requests().get(0)).id(), equalTo("1")); assertThat(((UpdateRequest) bulkRequest.requests().get(0)).retryOnConflict(), equalTo(2)); diff --git a/src/test/java/org/elasticsearch/test/unit/common/io/StreamsTests.java b/src/test/java/org/elasticsearch/test/unit/common/io/StreamsTests.java index 864820b31ae..de375e34bd8 100644 --- a/src/test/java/org/elasticsearch/test/unit/common/io/StreamsTests.java +++ b/src/test/java/org/elasticsearch/test/unit/common/io/StreamsTests.java @@ -19,6 +19,7 @@ package org.elasticsearch.test.unit.common.io; +import org.elasticsearch.common.io.Streams; import org.testng.annotations.Test; import java.io.*; @@ -37,7 +38,7 @@ public class StreamsTests { @Test public void testCopyFromInputStream() throws IOException { - byte[] content = "content".getBytes(); + byte[] content = "content".getBytes(Streams.UTF8); ByteArrayInputStream in = new ByteArrayInputStream(content); ByteArrayOutputStream out = new ByteArrayOutputStream(content.length); long count = copy(in, out); @@ -48,7 +49,7 @@ public class StreamsTests { @Test public void testCopyFromByteArray() throws IOException { - byte[] content = "content".getBytes(); + byte[] content = "content".getBytes(Streams.UTF8); ByteArrayOutputStream out = new ByteArrayOutputStream(content.length); copy(content, out); assertThat(Arrays.equals(content, out.toByteArray()), equalTo(true)); @@ -56,7 +57,7 @@ public class StreamsTests { @Test public void testCopyToByteArray() throws IOException { - byte[] content = "content".getBytes(); + byte[] content = "content".getBytes(Streams.UTF8); ByteArrayInputStream in = new ByteArrayInputStream(content); byte[] result = copyToByteArray(in); assertThat(Arrays.equals(content, result), equalTo(true)); diff --git a/src/test/java/org/elasticsearch/test/unit/common/xcontent/builder/XContentBuilderTests.java b/src/test/java/org/elasticsearch/test/unit/common/xcontent/builder/XContentBuilderTests.java index f186bc9213f..409b5cfddc7 100644 --- a/src/test/java/org/elasticsearch/test/unit/common/xcontent/builder/XContentBuilderTests.java +++ b/src/test/java/org/elasticsearch/test/unit/common/xcontent/builder/XContentBuilderTests.java @@ -113,7 +113,7 @@ public class XContentBuilderTests { public void testDateTypesConversion() throws Exception { Date date = new Date(); String expectedDate = XContentBuilder.defaultDatePrinter.print(date.getTime()); - Calendar calendar = new GregorianCalendar(); + Calendar calendar = new GregorianCalendar(TimeZone.getTimeZone("UTC"), Locale.ROOT); String expectedCalendar = XContentBuilder.defaultDatePrinter.print(calendar.getTimeInMillis()); XContentBuilder builder = XContentFactory.contentBuilder(XContentType.JSON); builder.startObject().field("date", date).endObject(); diff --git a/src/test/java/org/elasticsearch/test/unit/index/analysis/AnalysisModuleTests.java b/src/test/java/org/elasticsearch/test/unit/index/analysis/AnalysisModuleTests.java index 56820b36fed..e985ce95d30 100644 --- a/src/test/java/org/elasticsearch/test/unit/index/analysis/AnalysisModuleTests.java +++ b/src/test/java/org/elasticsearch/test/unit/index/analysis/AnalysisModuleTests.java @@ -28,6 +28,7 @@ import org.apache.lucene.analysis.standard.StandardAnalyzer; import org.apache.lucene.util.Version; import org.elasticsearch.common.inject.Injector; import org.elasticsearch.common.inject.ModulesBuilder; +import org.elasticsearch.common.io.Streams; import org.elasticsearch.common.lucene.Lucene; import org.elasticsearch.common.settings.ImmutableSettings; import org.elasticsearch.common.settings.Settings; @@ -46,7 +47,9 @@ import org.testng.annotations.Test; import java.io.BufferedWriter; import java.io.File; +import java.io.FileOutputStream; import java.io.FileWriter; +import java.io.OutputStreamWriter; import java.io.StringReader; import java.util.Set; @@ -169,7 +172,7 @@ public class AnalysisModuleTests { BufferedWriter writer = null; try { - writer = new BufferedWriter(new FileWriter(wordListFile)); + writer = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(wordListFile), Streams.UTF8)); for (String word : words) { writer.write(word); writer.write('\n'); diff --git a/src/test/java/org/elasticsearch/test/unit/index/cache/id/SimpleIdCacheTests.java b/src/test/java/org/elasticsearch/test/unit/index/cache/id/SimpleIdCacheTests.java index 7a803796159..b3ce03e98ba 100644 --- a/src/test/java/org/elasticsearch/test/unit/index/cache/id/SimpleIdCacheTests.java +++ b/src/test/java/org/elasticsearch/test/unit/index/cache/id/SimpleIdCacheTests.java @@ -64,6 +64,7 @@ import org.testng.annotations.Test; import java.io.IOException; import java.util.Iterator; import java.util.List; +import java.util.Locale; import static org.hamcrest.MatcherAssert.assertThat; import static org.hamcrest.Matchers.equalTo; @@ -221,14 +222,14 @@ public class SimpleIdCacheTests { private Document doc(String type, String id) { Document parent = new Document(); - parent.add(new StringField(UidFieldMapper.NAME, String.format("%s#%s", type, id), Field.Store.NO)); + parent.add(new StringField(UidFieldMapper.NAME, String.format(Locale.ROOT, "%s#%s", type, id), Field.Store.NO)); return parent; } private Document childDoc(String type, String id, String parentType, String parentId) { Document parent = new Document(); - parent.add(new StringField(UidFieldMapper.NAME, String.format("%s#%s", type, id), Field.Store.NO)); - parent.add(new StringField(ParentFieldMapper.NAME, String.format("%s#%s", parentType, parentId), Field.Store.NO)); + parent.add(new StringField(UidFieldMapper.NAME, String.format(Locale.ROOT, "%s#%s", type, id), Field.Store.NO)); + parent.add(new StringField(ParentFieldMapper.NAME, String.format(Locale.ROOT, "%s#%s", parentType, parentId), Field.Store.NO)); return parent; } diff --git a/src/test/java/org/elasticsearch/test/unit/index/fielddata/DuellFieldDataTest.java b/src/test/java/org/elasticsearch/test/unit/index/fielddata/DuellFieldDataTest.java index 7ede58b00ef..b44d2b34770 100644 --- a/src/test/java/org/elasticsearch/test/unit/index/fielddata/DuellFieldDataTest.java +++ b/src/test/java/org/elasticsearch/test/unit/index/fielddata/DuellFieldDataTest.java @@ -25,6 +25,7 @@ import static org.hamcrest.Matchers.nullValue; import java.util.ArrayList; import java.util.HashMap; import java.util.List; +import java.util.Locale; import java.util.Map; import java.util.Map.Entry; import java.util.Random; @@ -113,10 +114,10 @@ public class DuellFieldDataTest extends AbstractFieldDataTests { right = left = list.remove(0); } ifdService.clear(); - IndexFieldData leftFieldData = ifdService.getForField(new FieldMapper.Names(left.getValue().name().toLowerCase()), + IndexFieldData leftFieldData = ifdService.getForField(new FieldMapper.Names(left.getValue().name().toLowerCase(Locale.ROOT)), left.getKey()); ifdService.clear(); - IndexFieldData rightFieldData = ifdService.getForField(new FieldMapper.Names(right.getValue().name().toLowerCase()), + IndexFieldData rightFieldData = ifdService.getForField(new FieldMapper.Names(right.getValue().name().toLowerCase(Locale.ROOT)), right.getKey()); duellFieldDataBytes(random, context, leftFieldData, rightFieldData, pre); duellFieldDataBytes(random, context, rightFieldData, leftFieldData, pre); @@ -169,10 +170,10 @@ public class DuellFieldDataTest extends AbstractFieldDataTests { right = left = list.remove(0); } ifdService.clear(); - IndexNumericFieldData leftFieldData = ifdService.getForField(new FieldMapper.Names(left.getValue().name().toLowerCase()), + IndexNumericFieldData leftFieldData = ifdService.getForField(new FieldMapper.Names(left.getValue().name().toLowerCase(Locale.ROOT)), left.getKey()); ifdService.clear(); - IndexNumericFieldData rightFieldData = ifdService.getForField(new FieldMapper.Names(right.getValue().name().toLowerCase()), + IndexNumericFieldData rightFieldData = ifdService.getForField(new FieldMapper.Names(right.getValue().name().toLowerCase(Locale.ROOT)), right.getKey()); duellFieldDataLong(random, context, leftFieldData, rightFieldData); duellFieldDataLong(random, context, rightFieldData, leftFieldData); @@ -223,10 +224,10 @@ public class DuellFieldDataTest extends AbstractFieldDataTests { right = left = list.remove(0); } ifdService.clear(); - IndexNumericFieldData leftFieldData = ifdService.getForField(new FieldMapper.Names(left.getValue().name().toLowerCase()), + IndexNumericFieldData leftFieldData = ifdService.getForField(new FieldMapper.Names(left.getValue().name().toLowerCase(Locale.ROOT)), left.getKey()); ifdService.clear(); - IndexNumericFieldData rightFieldData = ifdService.getForField(new FieldMapper.Names(right.getValue().name().toLowerCase()), + IndexNumericFieldData rightFieldData = ifdService.getForField(new FieldMapper.Names(right.getValue().name().toLowerCase(Locale.ROOT)), right.getKey()); duellFieldDataDouble(random, context, leftFieldData, rightFieldData); duellFieldDataDouble(random, context, rightFieldData, leftFieldData); @@ -283,10 +284,10 @@ public class DuellFieldDataTest extends AbstractFieldDataTests { right = left = list.remove(0); } ifdService.clear(); - IndexFieldData leftFieldData = ifdService.getForField(new FieldMapper.Names(left.getValue().name().toLowerCase()), + IndexFieldData leftFieldData = ifdService.getForField(new FieldMapper.Names(left.getValue().name().toLowerCase(Locale.ROOT)), left.getKey()); ifdService.clear(); - IndexFieldData rightFieldData = ifdService.getForField(new FieldMapper.Names(right.getValue().name().toLowerCase()), + IndexFieldData rightFieldData = ifdService.getForField(new FieldMapper.Names(right.getValue().name().toLowerCase(Locale.ROOT)), right.getKey()); duellFieldDataBytes(random, context, leftFieldData, rightFieldData, pre); duellFieldDataBytes(random, context, rightFieldData, leftFieldData, pre); diff --git a/src/test/java/org/elasticsearch/test/unit/index/gateway/CommitPointsTests.java b/src/test/java/org/elasticsearch/test/unit/index/gateway/CommitPointsTests.java index d87528cb3dc..4c7594d9bd7 100644 --- a/src/test/java/org/elasticsearch/test/unit/index/gateway/CommitPointsTests.java +++ b/src/test/java/org/elasticsearch/test/unit/index/gateway/CommitPointsTests.java @@ -20,6 +20,8 @@ package org.elasticsearch.test.unit.index.gateway; import com.google.common.collect.Lists; + +import org.elasticsearch.common.io.Streams; import org.elasticsearch.common.logging.ESLogger; import org.elasticsearch.common.logging.Loggers; import org.elasticsearch.index.gateway.CommitPoint; @@ -52,7 +54,7 @@ public class CommitPointsTests { CommitPoint commitPoint = new CommitPoint(1, "test", CommitPoint.Type.GENERATED, indexFiles, translogFiles); byte[] serialized = CommitPoints.toXContent(commitPoint); - logger.info("serialized commit_point {}", new String(serialized)); + logger.info("serialized commit_point {}", new String(serialized, Streams.UTF8)); CommitPoint desCp = CommitPoints.fromXContent(serialized); assertThat(desCp.version(), equalTo(commitPoint.version())); diff --git a/src/test/java/org/elasticsearch/test/unit/index/mapper/simple/SimpleMapperTests.java b/src/test/java/org/elasticsearch/test/unit/index/mapper/simple/SimpleMapperTests.java index fff1e4c9f0c..569748e2997 100644 --- a/src/test/java/org/elasticsearch/test/unit/index/mapper/simple/SimpleMapperTests.java +++ b/src/test/java/org/elasticsearch/test/unit/index/mapper/simple/SimpleMapperTests.java @@ -22,6 +22,7 @@ package org.elasticsearch.test.unit.index.mapper.simple; import org.apache.lucene.document.Document; import org.elasticsearch.common.bytes.BytesArray; import org.elasticsearch.common.bytes.BytesReference; +import org.elasticsearch.common.io.Streams; import org.elasticsearch.index.mapper.DocumentMapper; import org.elasticsearch.index.mapper.DocumentMapperParser; import org.elasticsearch.index.mapper.MapperParsingException; @@ -123,7 +124,7 @@ public class SimpleMapperTests { .add(object("name").add(stringField("first").store(true).index(false))) ).build(mapperParser); - BytesReference json = new BytesArray("".getBytes()); + BytesReference json = new BytesArray("".getBytes(Streams.UTF8)); try { docMapper.parse("person", "1", json).rootDoc(); assertThat("this point is never reached", false); diff --git a/src/test/java/org/elasticsearch/test/unit/index/mapper/timestamp/TimestampMappingTests.java b/src/test/java/org/elasticsearch/test/unit/index/mapper/timestamp/TimestampMappingTests.java index a7ba2bc575d..67e8af3c7e5 100644 --- a/src/test/java/org/elasticsearch/test/unit/index/mapper/timestamp/TimestampMappingTests.java +++ b/src/test/java/org/elasticsearch/test/unit/index/mapper/timestamp/TimestampMappingTests.java @@ -19,6 +19,8 @@ package org.elasticsearch.test.unit.index.mapper.timestamp; +import java.util.Locale; + import org.elasticsearch.common.bytes.BytesReference; import org.elasticsearch.common.xcontent.XContentBuilder; import org.elasticsearch.common.xcontent.XContentFactory; @@ -128,6 +130,6 @@ public class TimestampMappingTests { mapper.timestampFieldMapper().toXContent(builder, null); builder.endObject(); - assertThat(builder.string(), is(String.format("{\"%s\":{}}", TimestampFieldMapper.NAME))); + assertThat(builder.string(), is(String.format(Locale.ROOT, "{\"%s\":{}}", TimestampFieldMapper.NAME))); } } \ No newline at end of file diff --git a/src/test/java/org/elasticsearch/test/unit/search/suggest/phrase/NoisyChannelSpellCheckerTests.java b/src/test/java/org/elasticsearch/test/unit/search/suggest/phrase/NoisyChannelSpellCheckerTests.java index 21bddf9b271..5c9805a8a4c 100644 --- a/src/test/java/org/elasticsearch/test/unit/search/suggest/phrase/NoisyChannelSpellCheckerTests.java +++ b/src/test/java/org/elasticsearch/test/unit/search/suggest/phrase/NoisyChannelSpellCheckerTests.java @@ -50,6 +50,7 @@ import org.apache.lucene.search.spell.SuggestMode; import org.apache.lucene.store.RAMDirectory; import org.apache.lucene.util.BytesRef; import org.apache.lucene.util.Version; +import org.elasticsearch.common.io.Streams; import org.elasticsearch.search.suggest.phrase.CandidateGenerator; import org.elasticsearch.search.suggest.phrase.Correction; import org.elasticsearch.search.suggest.phrase.DirectCandidateGenerator; @@ -93,7 +94,7 @@ public class NoisyChannelSpellCheckerTests { IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_41, wrapper); IndexWriter writer = new IndexWriter(dir, conf); - BufferedReader reader = new BufferedReader(new InputStreamReader(NoisyChannelSpellCheckerTests.class.getResourceAsStream("/config/names.txt"))); + BufferedReader reader = new BufferedReader(new InputStreamReader(NoisyChannelSpellCheckerTests.class.getResourceAsStream("/config/names.txt"), Streams.UTF8)); String line = null; while ((line = reader.readLine()) != null) { Document doc = new Document(); @@ -204,7 +205,7 @@ public class NoisyChannelSpellCheckerTests { IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_41, wrapper); IndexWriter writer = new IndexWriter(dir, conf); - BufferedReader reader = new BufferedReader(new InputStreamReader(NoisyChannelSpellCheckerTests.class.getResourceAsStream("/config/names.txt"))); + BufferedReader reader = new BufferedReader(new InputStreamReader(NoisyChannelSpellCheckerTests.class.getResourceAsStream("/config/names.txt"), Streams.UTF8)); String line = null; while ((line = reader.readLine()) != null) { Document doc = new Document(); @@ -289,7 +290,7 @@ public class NoisyChannelSpellCheckerTests { IndexWriterConfig conf = new IndexWriterConfig(Version.LUCENE_41, wrapper); IndexWriter writer = new IndexWriter(dir, conf); - BufferedReader reader = new BufferedReader(new InputStreamReader(NoisyChannelSpellCheckerTests.class.getResourceAsStream("/config/names.txt"))); + BufferedReader reader = new BufferedReader(new InputStreamReader(NoisyChannelSpellCheckerTests.class.getResourceAsStream("/config/names.txt"), Streams.UTF8)); String line = null; while ((line = reader.readLine()) != null) { Document doc = new Document();