diff options
author | Jon Bratseth <bratseth@gmail.com> | 2023-01-20 10:48:10 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2023-01-20 10:48:10 +0100 |
commit | 1e29c4da6f91d13a6889d1b71058a09fcbb4eb43 (patch) | |
tree | cd7f25f3bb5822c7be685f3fd1c5c9aa679f903b /indexinglanguage | |
parent | 2cf4cc1f2a4ad1adace9b0e5877d9fbed6983323 (diff) |
Cleanup - no functional changes
Diffstat (limited to 'indexinglanguage')
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 |