summaryrefslogtreecommitdiffstats
path: root/indexinglanguage
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2023-01-20 10:48:10 +0100
committerJon Bratseth <bratseth@gmail.com>2023-01-20 10:48:10 +0100
commit1e29c4da6f91d13a6889d1b71058a09fcbb4eb43 (patch)
treecd7f25f3bb5822c7be685f3fd1c5c9aa679f903b /indexinglanguage
parent2cf4cc1f2a4ad1adace9b0e5877d9fbed6983323 (diff)
Cleanup - no functional changes
Diffstat (limited to 'indexinglanguage')
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateHelper.java5
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldUpdateHelper.java125
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java12
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java14
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java9
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/ScriptExpression.java5
-rw-r--r--indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java5
7 files changed, 82 insertions, 93 deletions
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateHelper.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateHelper.java
index 9500bd6a185..2074a157022 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateHelper.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldPathUpdateHelper.java
@@ -16,10 +16,9 @@ import com.yahoo.document.fieldpathupdate.RemoveFieldPathUpdate;
*/
public abstract class FieldPathUpdateHelper {
+ /** Returns true if this update completely replaces the value of the field, false otherwise. */
public static boolean isComplete(FieldPathUpdate update) {
- if (!(update instanceof AssignFieldPathUpdate)) {
- return false;
- }
+ if (!(update instanceof AssignFieldPathUpdate)) return false;
// Only consider field path updates that touch a top-level field as 'complete',
// as these may be converted to regular field value updates.
return ((update.getFieldPath().size() == 1)
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldUpdateHelper.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldUpdateHelper.java
index fd0642e27ea..8c32f2e451d 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldUpdateHelper.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/FieldUpdateHelper.java
@@ -30,26 +30,22 @@ import com.yahoo.document.update.ValueUpdate;
@SuppressWarnings("rawtypes")
public abstract class FieldUpdateHelper {
+ /** Returns true if this update completely replaces the value of the field, false otherwise. */
public static boolean isComplete(Field field, ValueUpdate update) {
- if (update instanceof AssignValueUpdate) {
- return true;
- }
- if (!(update instanceof MapValueUpdate)) {
- return false;
- }
+ if (update instanceof AssignValueUpdate) return true;
+ if (!(update instanceof MapValueUpdate)) return false;
+
DataType fieldType = field.getDataType();
- if (!(fieldType instanceof StructuredDataType)) {
- return false;
- }
+ if (!(fieldType instanceof StructuredDataType)) return false;
+
field = ((StructuredDataType)fieldType).getField(String.valueOf(update.getValue()));
- if (field == null) {
- return false;
- }
+ if (field == null) return false;
+
return isComplete(field, ((MapValueUpdate)update).getUpdate());
}
public static void applyUpdate(Field field, ValueUpdate update, Document doc) {
- doc.setFieldValue(field, createFieldValue(field.getDataType().createFieldValue(), update));
+ doc.setFieldValue(field, applyUpdate(update, field.getDataType().createFieldValue()));
}
public static Document newPartialDocument(DocumentType docType, DocumentId docId, Field field, ValueUpdate update) {
@@ -58,73 +54,74 @@ public abstract class FieldUpdateHelper {
return doc;
}
+ /** Applies the given update to the given (empty) field value. */
@SuppressWarnings({ "unchecked" })
- private static FieldValue createFieldValue(FieldValue val, ValueUpdate upd) {
- if (upd instanceof ClearValueUpdate) {
- return val;
- } else if (upd instanceof AssignValueUpdate) {
- val.assign(upd.getValue());
- return val;
- } else if (upd instanceof AddValueUpdate) {
- if (val instanceof Array) {
- ((Array)val).add(upd.getValue());
- } else if (val instanceof WeightedSet) {
- ((WeightedSet)val).put(upd.getValue(), ((AddValueUpdate)upd).getWeight());
+ private static FieldValue applyUpdate(ValueUpdate update, FieldValue value) {
+ if (update instanceof ClearValueUpdate) {
+ return value;
+ } else if (update instanceof AssignValueUpdate) {
+ value.assign(update.getValue());
+ return value;
+ } else if (update instanceof AddValueUpdate) {
+ if (value instanceof Array) {
+ ((Array)value).add(update.getValue());
+ } else if (value instanceof WeightedSet) {
+ ((WeightedSet)value).put(update.getValue(), ((AddValueUpdate)update).getWeight());
}
- return val;
- } else if (upd instanceof ArithmeticValueUpdate) {
- if (((ArithmeticValueUpdate)upd).getOperator() == ArithmeticValueUpdate.Operator.DIV &&
- ((ArithmeticValueUpdate)upd).getOperand().doubleValue() == 0) {
- throw new IllegalArgumentException("Division by zero.");
+ return value;
+ } else if (update instanceof ArithmeticValueUpdate) {
+ if (((ArithmeticValueUpdate)update).getOperator() == ArithmeticValueUpdate.Operator.DIV &&
+ ((ArithmeticValueUpdate)update).getOperand().doubleValue() == 0) {
+ throw new IllegalArgumentException("Division by zero");
}
- val.assign(upd.getValue());
- return val;
- } else if (upd instanceof RemoveValueUpdate) {
- if (val instanceof Array) {
- ((Array)val).add(upd.getValue());
- } else if (val instanceof WeightedSet) {
- ((WeightedSet)val).put(upd.getValue(), 1);
+ value.assign(update.getValue());
+ return value;
+ } else if (update instanceof RemoveValueUpdate) {
+ if (value instanceof Array) {
+ ((Array)value).add(update.getValue());
+ } else if (value instanceof WeightedSet) {
+ ((WeightedSet)value).put(update.getValue(), 1);
}
- return val;
- } else if (upd instanceof MapValueUpdate) {
- if (val instanceof Array) {
- var nestedUpdate = ((MapValueUpdate)upd).getUpdate();
+ return value;
+ } else if (update instanceof MapValueUpdate) {
+ if (value instanceof Array) {
+ var nestedUpdate = ((MapValueUpdate)update).getUpdate();
if (nestedUpdate instanceof AssignValueUpdate) {
// Can't assign an array's value type directly to the array, so we have to add it as a
// singular element to the partial document.
- ((Array)val).add(nestedUpdate.getValue());
- return val;
+ ((Array)value).add(nestedUpdate.getValue());
+ return value;
} else {
- return createFieldValue(val, nestedUpdate);
+ return applyUpdate(nestedUpdate, value);
}
- } else if (val instanceof MapFieldValue) {
- throw new UnsupportedOperationException("Can not map into a " + val.getClass().getName() + ".");
- } else if (val instanceof StructuredFieldValue) {
- Field field = ((StructuredFieldValue)val).getField(String.valueOf(upd.getValue()));
+ } else if (value instanceof MapFieldValue) {
+ throw new UnsupportedOperationException("Can not map into a " + value.getClass().getName() + ".");
+ } else if (value instanceof StructuredFieldValue) {
+ Field field = ((StructuredFieldValue)value).getField(String.valueOf(update.getValue()));
if (field == null) {
- throw new IllegalArgumentException("Field '" + upd.getValue() + "' not found.");
+ throw new IllegalArgumentException("Field '" + update.getValue() + "' not found");
}
- ((StructuredFieldValue)val).setFieldValue(field, createFieldValue(field.getDataType().createFieldValue(),
- ((MapValueUpdate)upd).getUpdate()));
- return val;
- } else if (val instanceof WeightedSet) {
- FieldValue weight = createFieldValue(new IntegerFieldValue(), ((MapValueUpdate)upd).getUpdate());
+ ((StructuredFieldValue)value).setFieldValue(field, applyUpdate(((MapValueUpdate)update).getUpdate(), field.getDataType().createFieldValue()
+ ));
+ return value;
+ } else if (value instanceof WeightedSet) {
+ FieldValue weight = applyUpdate(((MapValueUpdate)update).getUpdate(), new IntegerFieldValue());
if (!(weight instanceof IntegerFieldValue)) {
- throw new IllegalArgumentException("Expected integer, got " + weight.getClass().getName() + ".");
+ throw new IllegalArgumentException("Expected integer, got " + weight.getClass().getName());
}
- ((WeightedSet)val).put(upd.getValue(), ((IntegerFieldValue)weight).getInteger());
- return val;
+ ((WeightedSet)value).put(update.getValue(), ((IntegerFieldValue)weight).getInteger());
+ return value;
} else {
- throw new IllegalArgumentException("Expected multi-value data type, got " + val.getDataType().getName() + ".");
+ throw new IllegalArgumentException("Expected multi-value data type, got " + value.getDataType().getName());
}
- } else if (upd instanceof TensorModifyUpdate) {
- return val;
- } else if (upd instanceof TensorAddUpdate) {
- return val;
- } else if (upd instanceof TensorRemoveUpdate) {
- return val;
+ } else if (update instanceof TensorModifyUpdate) {
+ return value;
+ } else if (update instanceof TensorAddUpdate) {
+ return value;
+ } else if (update instanceof TensorRemoveUpdate) {
+ return value;
}
- throw new UnsupportedOperationException("Value update type " + upd.getClass().getName() + " not supported.");
+ throw new UnsupportedOperationException("Value update type " + update.getClass().getName() + " not supported");
}
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java
index 3b7d09d0ea8..bba41240fb4 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/SimpleAdapterFactory.java
@@ -44,12 +44,12 @@ public class SimpleAdapterFactory implements AdapterFactory {
}
@Override
- public List<UpdateAdapter> newUpdateAdapterList(DocumentUpdate upd) {
+ public List<UpdateAdapter> newUpdateAdapterList(DocumentUpdate update) {
List<UpdateAdapter> ret = new ArrayList<>();
- DocumentType docType = upd.getDocumentType();
- DocumentId docId = upd.getId();
- Document complete = new Document(docType, upd.getId());
- for (FieldPathUpdate fieldUpd : upd) {
+ DocumentType docType = update.getDocumentType();
+ DocumentId docId = update.getId();
+ Document complete = new Document(docType, update.getId());
+ for (FieldPathUpdate fieldUpd : update) {
try {
if (FieldPathUpdateHelper.isComplete(fieldUpd)) {
// A 'complete' field path update is basically a regular top-level field update
@@ -64,7 +64,7 @@ public class SimpleAdapterFactory implements AdapterFactory {
"' to field '" + fieldUpd.getFieldPath() + "'", e);
}
}
- for (FieldUpdate fieldUpdate : upd.fieldUpdates()) {
+ for (FieldUpdate fieldUpdate : update.fieldUpdates()) {
Field field = fieldUpdate.getField();
for (ValueUpdate valueUpdate : fieldUpdate.getValueUpdates()) {
try {
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java
index e5bf4711ad1..cabf4f631c8 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/Expression.java
@@ -52,21 +52,21 @@ public abstract class Expression extends Selectable {
}
public static DocumentUpdate execute(Expression expression, AdapterFactory factory, DocumentUpdate update) {
- DocumentUpdate ret = null;
+ DocumentUpdate result = null;
for (UpdateAdapter adapter : factory.newUpdateAdapterList(update)) {
DocumentUpdate output = adapter.getExpression(expression).execute(adapter);
if (output == null) {
// ignore
- } else if (ret != null) {
- ret.addAll(output);
+ } else if (result != null) {
+ result.addAll(output);
} else {
- ret = output;
+ result = output;
}
}
- if (ret != null) {
- ret.setCreateIfNonExistent(update.getCreateIfNonExistent());
+ if (result != null) {
+ result.setCreateIfNonExistent(update.getCreateIfNonExistent());
}
- return ret;
+ return result;
}
public final DocumentUpdate execute(UpdateAdapter adapter) {
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java
index cbec1ddd930..de347904a21 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/InputExpression.java
@@ -57,13 +57,8 @@ public final class InputExpression extends Expression {
@Override
public boolean equals(Object obj) {
- if (!(obj instanceof InputExpression)) {
- return false;
- }
- InputExpression rhs = (InputExpression)obj;
- if (!equals(fieldName, rhs.fieldName)) {
- return false;
- }
+ if ( ! (obj instanceof InputExpression rhs)) return false;
+ if ( ! equals(fieldName, rhs.fieldName)) return false;
return true;
}
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 c905042882d..d2f807b99ae 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
@@ -37,9 +37,8 @@ public final class ScriptExpression extends ExpressionList<StatementExpression>
@Override
protected void doExecute(ExecutionContext context) {
FieldValue input = context.getValue();
- for (Expression exp : this) {
- context.setValue(input).execute(exp);
- }
+ for (Expression expression : this)
+ context.setValue(input).execute(expression);
context.setValue(input);
}
diff --git a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java
index 1ea88d29444..1a43d2fb36c 100644
--- a/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java
+++ b/indexinglanguage/src/main/java/com/yahoo/vespa/indexinglanguage/expressions/StatementExpression.java
@@ -38,9 +38,8 @@ public final class StatementExpression extends ExpressionList<Expression> {
@Override
protected void doExecute(ExecutionContext context) {
- for (Expression exp : this) {
- context.execute(exp);
- }
+ for (Expression expression : this)
+ context.execute(expression);
}
@Override