From 5f2fbedd8c7570bcc2ea74f38dce0b1736a85cee Mon Sep 17 00:00:00 2001 From: Marios Trivyzas Date: Tue, 8 Jan 2019 23:56:00 +0200 Subject: [PATCH] SQL: Replace String.format() with LoggerMessageFormat.format() (#37216) Fixes: #36532 --- .../sql/jdbc/JdbcPreparedStatementTests.java | 16 +++++++--------- .../xpack/sql/analysis/AnalysisException.java | 4 ++-- .../sql/expression/function/scalar/Cast.java | 6 +++--- .../xpack/sql/expression/gen/script/Param.java | 4 ++-- .../predicate/operator/comparison/In.java | 6 +++--- .../xpack/sql/parser/ParsingException.java | 4 ++-- .../xpack/sql/planner/FoldingException.java | 4 ++-- .../sql/analysis/index/IndexResolverTests.java | 9 +++++---- .../xpack/sql/expression/QuotingTests.java | 4 ++-- .../sql/parser/LikeEscapingParsingTests.java | 8 ++++---- 10 files changed, 32 insertions(+), 33 deletions(-) diff --git a/x-pack/plugin/sql/jdbc/src/test/java/org/elasticsearch/xpack/sql/jdbc/JdbcPreparedStatementTests.java b/x-pack/plugin/sql/jdbc/src/test/java/org/elasticsearch/xpack/sql/jdbc/JdbcPreparedStatementTests.java index ef674d30da9..50143f72937 100644 --- a/x-pack/plugin/sql/jdbc/src/test/java/org/elasticsearch/xpack/sql/jdbc/JdbcPreparedStatementTests.java +++ b/x-pack/plugin/sql/jdbc/src/test/java/org/elasticsearch/xpack/sql/jdbc/JdbcPreparedStatementTests.java @@ -5,10 +5,8 @@ */ package org.elasticsearch.xpack.sql.jdbc; +import org.elasticsearch.common.logging.LoggerMessageFormat; import org.elasticsearch.test.ESTestCase; -import org.elasticsearch.xpack.sql.jdbc.EsType; -import org.elasticsearch.xpack.sql.jdbc.JdbcConfiguration; -import org.elasticsearch.xpack.sql.jdbc.JdbcPreparedStatement; import java.net.URL; import java.nio.charset.StandardCharsets; @@ -287,12 +285,12 @@ public class JdbcPreparedStatementTests extends ESTestCase { Float floatNotInt = 5_155_000_000f; sqle = expectThrows(SQLException.class, () -> jps.setObject(1, floatNotInt, Types.INTEGER)); - assertEquals(String.format(Locale.ROOT, "Numeric %s out of range", - Long.toString(Math.round(floatNotInt.doubleValue()))), sqle.getMessage()); + assertEquals(LoggerMessageFormat.format("Numeric {} out of range", + Math.round(floatNotInt.doubleValue())), sqle.getMessage()); sqle = expectThrows(SQLException.class, () -> jps.setObject(1, floatNotInt, Types.SMALLINT)); - assertEquals(String.format(Locale.ROOT, "Numeric %s out of range", - Long.toString(Math.round(floatNotInt.doubleValue()))), sqle.getMessage()); + assertEquals(LoggerMessageFormat.format("Numeric {} out of range", + Math.round(floatNotInt.doubleValue())), sqle.getMessage()); } public void testSettingDoubleValues() throws SQLException { @@ -328,8 +326,8 @@ public class JdbcPreparedStatementTests extends ESTestCase { Double doubleNotInt = 5_155_000_000d; sqle = expectThrows(SQLException.class, () -> jps.setObject(1, doubleNotInt, Types.INTEGER)); - assertEquals(String.format(Locale.ROOT, "Numeric %s out of range", - Long.toString(((Number) doubleNotInt).longValue())), sqle.getMessage()); + assertEquals(LoggerMessageFormat.format("Numeric {} out of range", + ((Number) doubleNotInt).longValue()), sqle.getMessage()); } public void testUnsupportedClasses() throws SQLException { diff --git a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/analysis/AnalysisException.java b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/analysis/AnalysisException.java index d85f17f6ab6..262d62814e1 100644 --- a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/analysis/AnalysisException.java +++ b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/analysis/AnalysisException.java @@ -10,7 +10,7 @@ import org.elasticsearch.xpack.sql.ClientSqlException; import org.elasticsearch.xpack.sql.tree.Location; import org.elasticsearch.xpack.sql.tree.Node; -import java.util.Locale; +import static org.elasticsearch.common.logging.LoggerMessageFormat.format; public class AnalysisException extends ClientSqlException { @@ -54,6 +54,6 @@ public class AnalysisException extends ClientSqlException { @Override public String getMessage() { - return String.format(Locale.ROOT, "line %s:%s: %s", getLineNumber(), getColumnNumber(), super.getMessage()); + return format("line {}:{}: {}", getLineNumber(), getColumnNumber(), super.getMessage()); } } diff --git a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/expression/function/scalar/Cast.java b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/expression/function/scalar/Cast.java index 7281476b1f9..04f9b13ff33 100644 --- a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/expression/function/scalar/Cast.java +++ b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/expression/function/scalar/Cast.java @@ -9,15 +9,15 @@ import org.elasticsearch.xpack.sql.expression.Expression; import org.elasticsearch.xpack.sql.expression.Nullability; import org.elasticsearch.xpack.sql.expression.gen.processor.Processor; import org.elasticsearch.xpack.sql.expression.gen.script.ScriptTemplate; -import org.elasticsearch.xpack.sql.tree.Source; import org.elasticsearch.xpack.sql.tree.NodeInfo; +import org.elasticsearch.xpack.sql.tree.Source; import org.elasticsearch.xpack.sql.type.DataType; import org.elasticsearch.xpack.sql.type.DataTypeConversion; import org.elasticsearch.xpack.sql.type.DataTypes; -import java.util.Locale; import java.util.Objects; +import static org.elasticsearch.common.logging.LoggerMessageFormat.format; import static org.elasticsearch.xpack.sql.expression.gen.script.ParamsBuilder.paramsBuilder; public class Cast extends UnaryScalarFunction { @@ -86,7 +86,7 @@ public class Cast extends UnaryScalarFunction { public ScriptTemplate asScript() { ScriptTemplate fieldAsScript = asScript(field()); return new ScriptTemplate( - formatTemplate(String.format(Locale.ROOT, "{sql}.cast(%s,{})", fieldAsScript.template())), + formatTemplate(format("{sql}.", "cast({},{})", fieldAsScript.template())), paramsBuilder() .script(fieldAsScript.params()) .variable(dataType.name()) diff --git a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/expression/gen/script/Param.java b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/expression/gen/script/Param.java index 579eacd036b..e8151ada18a 100644 --- a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/expression/gen/script/Param.java +++ b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/expression/gen/script/Param.java @@ -5,7 +5,7 @@ */ package org.elasticsearch.xpack.sql.expression.gen.script; -import java.util.Locale; +import static org.elasticsearch.common.logging.LoggerMessageFormat.format; abstract class Param { private final T value; @@ -22,6 +22,6 @@ abstract class Param { @Override public String toString() { - return String.format(Locale.ROOT, "{%s=%s}", prefix(), value); + return format(null, "{{}={}}", prefix(), value); } } diff --git a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/expression/predicate/operator/comparison/In.java b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/expression/predicate/operator/comparison/In.java index bf2bddee68b..f9e6b72fb59 100644 --- a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/expression/predicate/operator/comparison/In.java +++ b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/expression/predicate/operator/comparison/In.java @@ -12,19 +12,19 @@ import org.elasticsearch.xpack.sql.expression.Nullability; import org.elasticsearch.xpack.sql.expression.function.scalar.ScalarFunction; import org.elasticsearch.xpack.sql.expression.gen.pipeline.Pipe; import org.elasticsearch.xpack.sql.expression.gen.script.ScriptTemplate; -import org.elasticsearch.xpack.sql.tree.Source; import org.elasticsearch.xpack.sql.tree.NodeInfo; +import org.elasticsearch.xpack.sql.tree.Source; import org.elasticsearch.xpack.sql.type.DataType; import org.elasticsearch.xpack.sql.util.CollectionUtils; import java.util.ArrayList; import java.util.LinkedHashSet; import java.util.List; -import java.util.Locale; import java.util.Objects; import java.util.StringJoiner; import java.util.stream.Collectors; +import static org.elasticsearch.common.logging.LoggerMessageFormat.format; import static org.elasticsearch.xpack.sql.expression.gen.script.ParamsBuilder.paramsBuilder; public class In extends ScalarFunction { @@ -100,7 +100,7 @@ public class In extends ScalarFunction { List values = new ArrayList<>(new LinkedHashSet<>(Foldables.valuesOf(list, value.dataType()))); return new ScriptTemplate( - formatTemplate(String.format(Locale.ROOT, "{sql}.in(%s, {})", leftScript.template())), + formatTemplate(format("{sql}.","in({}, {})", leftScript.template())), paramsBuilder() .script(leftScript.params()) .variable(values) diff --git a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/ParsingException.java b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/ParsingException.java index 1a6f2ff6e35..a4a2a8df940 100644 --- a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/ParsingException.java +++ b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/parser/ParsingException.java @@ -9,7 +9,7 @@ import org.elasticsearch.rest.RestStatus; import org.elasticsearch.xpack.sql.ClientSqlException; import org.elasticsearch.xpack.sql.tree.Source; -import java.util.Locale; +import static org.elasticsearch.common.logging.LoggerMessageFormat.format; public class ParsingException extends ClientSqlException { private final int line; @@ -56,6 +56,6 @@ public class ParsingException extends ClientSqlException { @Override public String getMessage() { - return String.format(Locale.ROOT, "line %s:%s: %s", getLineNumber(), getColumnNumber(), getErrorMessage()); + return format("line {}:{}: {}", getLineNumber(), getColumnNumber(), getErrorMessage()); } } diff --git a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/planner/FoldingException.java b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/planner/FoldingException.java index 654e20866e0..7cdd26d5404 100644 --- a/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/planner/FoldingException.java +++ b/x-pack/plugin/sql/src/main/java/org/elasticsearch/xpack/sql/planner/FoldingException.java @@ -10,7 +10,7 @@ import org.elasticsearch.xpack.sql.ClientSqlException; import org.elasticsearch.xpack.sql.tree.Location; import org.elasticsearch.xpack.sql.tree.Node; -import java.util.Locale; +import static org.elasticsearch.common.logging.LoggerMessageFormat.format; public class FoldingException extends ClientSqlException { @@ -54,6 +54,6 @@ public class FoldingException extends ClientSqlException { @Override public String getMessage() { - return String.format(Locale.ROOT, "line %s:%s: %s", getLineNumber(), getColumnNumber(), super.getMessage()); + return format("line {}:{}: {}", getLineNumber(), getColumnNumber(), super.getMessage()); } } diff --git a/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/analysis/index/IndexResolverTests.java b/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/analysis/index/IndexResolverTests.java index 7ef57972b31..b53d00cfbb7 100644 --- a/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/analysis/index/IndexResolverTests.java +++ b/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/analysis/index/IndexResolverTests.java @@ -15,10 +15,11 @@ import org.elasticsearch.xpack.sql.type.TypesTests; 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 static org.elasticsearch.common.logging.LoggerMessageFormat.format; + public class IndexResolverTests extends ESTestCase { public void testMergeSameMapping() throws Exception { @@ -218,14 +219,14 @@ public class IndexResolverTests extends ESTestCase { @Override public String toString() { - return String.format(Locale.ROOT, "%s,%s->%s", getName(), getType(), indices); + return format("{},{}->{}", getName(), getType(), indices); } } private static void assertEqualsMaps(Map left, Map right) { for (Entry entry : left.entrySet()) { V rv = right.get(entry.getKey()); - assertEquals(String.format(Locale.ROOT, "Key [%s] has different values", entry.getKey()), entry.getValue(), rv); + assertEquals(format("Key [{}] has different values", entry.getKey()), entry.getValue(), rv); } } @@ -235,4 +236,4 @@ public class IndexResolverTests extends ESTestCase { cap.put(name, new FieldCapabilities(name, type, isSearchable, isAggregatable)); fieldCaps.put(name, cap); } -} \ No newline at end of file +} diff --git a/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/expression/QuotingTests.java b/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/expression/QuotingTests.java index e19f3409c0d..a7cae7df431 100644 --- a/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/expression/QuotingTests.java +++ b/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/expression/QuotingTests.java @@ -14,7 +14,6 @@ import org.elasticsearch.xpack.sql.tree.Source; import java.util.ArrayList; import java.util.List; -import java.util.Locale; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.hasSize; @@ -22,6 +21,7 @@ import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; import static org.hamcrest.Matchers.nullValue; +import static org.elasticsearch.common.logging.LoggerMessageFormat.format; public class QuotingTests extends ESTestCase { @@ -48,7 +48,7 @@ public class QuotingTests extends ESTestCase { public void testMultiSingleQuotedLiteral() { String first = "bucket"; String second = "head"; - Expression exp = new SqlParser().createExpression(String.format(Locale.ROOT, "'%s' '%s'", first, second)); + Expression exp = new SqlParser().createExpression(format(null, "'{}' '{}'", first, second)); assertThat(exp, instanceOf(Literal.class)); Literal l = (Literal) exp; assertThat(l.value(), equalTo(first + second)); diff --git a/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/parser/LikeEscapingParsingTests.java b/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/parser/LikeEscapingParsingTests.java index 9f8cae9e529..5221f969569 100644 --- a/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/parser/LikeEscapingParsingTests.java +++ b/x-pack/plugin/sql/src/test/java/org/elasticsearch/xpack/sql/parser/LikeEscapingParsingTests.java @@ -12,19 +12,19 @@ import org.elasticsearch.xpack.sql.expression.predicate.regex.LikePattern; import org.elasticsearch.xpack.sql.proto.SqlTypedParamValue; import org.elasticsearch.xpack.sql.type.DataType; -import java.util.Locale; - import static java.util.Collections.singletonList; import static org.hamcrest.Matchers.instanceOf; import static org.hamcrest.Matchers.is; +import static org.elasticsearch.common.logging.LoggerMessageFormat.format; + public class LikeEscapingParsingTests extends ESTestCase { private final SqlParser parser = new SqlParser(); private String error(String pattern) { ParsingException ex = expectThrows(ParsingException.class, - () -> parser.createExpression(String.format(Locale.ROOT, "exp LIKE %s", pattern))); + () -> parser.createExpression(format(null, "exp LIKE {}", pattern))); return ex.getMessage(); } @@ -35,7 +35,7 @@ public class LikeEscapingParsingTests extends ESTestCase { if (parameterized) { exp = parser.createExpression("exp LIKE ?", singletonList(new SqlTypedParamValue(DataType.KEYWORD.esType, pattern))); } else { - exp = parser.createExpression(String.format(Locale.ROOT, "exp LIKE '%s'", pattern)); + exp = parser.createExpression(format(null, "exp LIKE '{}'", pattern)); } assertThat(exp, instanceOf(Like.class)); Like l = (Like) exp;