diff options
3 files changed, 32 insertions, 34 deletions
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContext.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContext.java index b0478f8001c..39e8d10facd 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContext.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ExecutionContext.java @@ -10,11 +10,12 @@ import com.yahoo.language.detect.Detection; import java.util.HashMap; import java.util.Map; +import java.util.Objects; /** * @author Simon Thoresen Hult */ -public class ExecutionContext implements FieldTypeAdapter, FieldValueAdapter, Cloneable { +public class ExecutionContext implements FieldTypeAdapter, FieldValueAdapter { private final Map<String, FieldValue> variables = new HashMap<>(); private final FieldValueAdapter adapter; @@ -40,7 +41,9 @@ public class ExecutionContext implements FieldTypeAdapter, FieldValueAdapter, Cl * Returns whether this is for a complete execution of all statements of a script, * or a partial execution of only the statements accessing the available data. */ - public boolean isComplete() { return adapter == null ? false : adapter.isComplete(); } + public boolean isComplete() { + return adapter != null && adapter.isComplete(); + } @Override public DataType getInputType(Expression exp, String fieldName) { @@ -89,37 +92,26 @@ public class ExecutionContext implements FieldTypeAdapter, FieldValueAdapter, Cl return this; } - public Language getLanguage() { - return language; - } + public Language getLanguage() { return language; } public ExecutionContext setLanguage(Language language) { - language.getClass(); - this.language = language; + this.language = Objects.requireNonNull(language); return this; } public Language resolveLanguage(Linguistics linguistics) { - if (language != null && language != Language.UNKNOWN) { - return language; - } - if (linguistics == null) { - return Language.ENGLISH; - } + if (language != null && language != Language.UNKNOWN) return language; + if (linguistics == null) return Language.ENGLISH; + Detection detection = linguistics.getDetector().detect(String.valueOf(value), null); - if (detection == null) { - return Language.ENGLISH; - } + if (detection == null) return Language.ENGLISH; + Language detected = detection.getLanguage(); - if (detected == Language.UNKNOWN) { - return Language.ENGLISH; - } + if (detected == Language.UNKNOWN) return Language.ENGLISH; return detected; } - public FieldValue getValue() { - return value; - } + public FieldValue getValue() { return value; } public ExecutionContext setValue(FieldValue value) { this.value = value; diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java index a88e56939ee..7d180b9fd7a 100644 --- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java +++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java @@ -51,7 +51,8 @@ public final class ScriptExpression extends ExpressionList<StatementExpression> for (StatementExpression statement : this) { if (context.isComplete() || (statement.getInputFields().isEmpty() || containsAtLeastOneInputFrom(statement.getInputFields(), context))) { - context.setValue(input).execute(statement); + context.setValue(input); + context.execute(statement); } } context.setValue(input); diff --git a/vespajlib/src/test/java/com/yahoo/slime/JsonBenchmark.java b/vespajlib/src/test/java/com/yahoo/slime/JsonBenchmark.java index 4f77a933a74..ee755a44010 100644 --- a/vespajlib/src/test/java/com/yahoo/slime/JsonBenchmark.java +++ b/vespajlib/src/test/java/com/yahoo/slime/JsonBenchmark.java @@ -15,10 +15,11 @@ import java.lang.Integer; * @author baldersheim */ public class JsonBenchmark { - private static byte [] createJson(int numElements) { + + private static byte[] createJson(int numElements) { Slime slime = new Slime(); Cursor a = slime.setArray(); - for (int i=0; i < numElements; i++) { + for (int i = 0; i < numElements; i++) { Cursor e = a.addObject(); e.setString("key", "i"); e.setLong("weight", i); @@ -32,12 +33,13 @@ public class JsonBenchmark { } return bs.toByteArray(); } - private static long benchmarkJacksonStreaming(byte [] json, int numIterations) { + + private static long benchmarkJacksonStreaming(byte[] json, int numIterations) { long count = 0; JsonFactory jsonFactory = new JsonFactory(); try { - for (int i=0; i < numIterations; i++) { + for (int i = 0; i < numIterations; i++) { try (JsonParser jsonParser = jsonFactory.createParser(json)) { JsonToken array = jsonParser.nextToken(); for (JsonToken token = jsonParser.nextToken(); !JsonToken.END_ARRAY.equals(token); token = jsonParser.nextToken()) { @@ -53,12 +55,13 @@ public class JsonBenchmark { } return count; } - private static long benchmarkJacksonTree(byte [] json, int numIterations) { + + private static long benchmarkJacksonTree(byte[] json, int numIterations) { long count = 0; // use the ObjectMapper to read the json string and create a tree var mapper = Jackson.mapper(); try { - for (int i=0; i < numIterations; i++) { + for (int i = 0; i < numIterations; i++) { JsonNode node = mapper.readTree(json); for(JsonNode item : node) { count += item.get("weight").asLong(); @@ -69,9 +72,10 @@ public class JsonBenchmark { } return count; } - private static long benchmarkSlime(byte [] json, int numIterations) { + + private static long benchmarkSlime(byte[] json, int numIterations) { long count = 0; - for (int i=0; i < numIterations; i++) { + for (int i = 0; i < numIterations; i++) { JsonDecoder decoder = new JsonDecoder(); Slime slime = decoder.decode(new Slime(), json); @@ -83,7 +87,7 @@ public class JsonBenchmark { } return count; } - private static void warmup(byte [] json) { + private static void warmup(byte[] json) { System.out.println(System.currentTimeMillis() + " Warming up"); benchmarkSlime(json, 5000); System.out.println(System.currentTimeMillis() + " Done Warming up"); @@ -95,9 +99,9 @@ public class JsonBenchmark { * slime 1000 40000 = 17.5 seconds * @param argv type, num elements in weigted set, num iterations */ - static public void main(String [] argv) { + static public void main(String[] argv) { String type = argv[0]; - byte [] json = createJson(Integer.parseInt(argv[1])); + byte[] json = createJson(Integer.parseInt(argv[1])); warmup(json); int count = Integer.parseInt(argv[2]); System.out.println(System.currentTimeMillis() + " Start"); @@ -112,4 +116,5 @@ public class JsonBenchmark { } System.out.println(System.currentTimeMillis() + " End with " + numValues + " values in " + (System.currentTimeMillis() - start) + " milliseconds."); } + } |