diff options
author | Jon Bratseth <bratseth@gmail.com> | 2022-02-28 14:28:45 +0100 |
---|---|---|
committer | Jon Bratseth <bratseth@gmail.com> | 2022-02-28 14:28:45 +0100 |
commit | 9775e3a373363ff4657c1361ebd1c3b6b5a20af6 (patch) | |
tree | 0dcd085fa04b5594fc455fe8cd00b7c7a09b4ee5 /searchlib | |
parent | 1af7b7470742445943fa2870fc0bd80666143f04 (diff) |
Pass type context
Diffstat (limited to 'searchlib')
2 files changed, 29 insertions, 27 deletions
diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java index 1f3203f2e35..bb1101fdbfc 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java @@ -32,17 +32,20 @@ public class SerializationContext extends FunctionReferenceContext { this(Collections.emptyList()); } - /** Create a context for a single serialization task */ + /** @deprecated Use {@link #SerializationContext(Map, Map, Optional, Map) instead}*/ + @Deprecated(forRemoval = true, since = "7") public SerializationContext(Collection<ExpressionFunction> functions) { this(functions, Collections.emptyMap(), Optional.empty(), new LinkedHashMap<>()); } - /** Create a context for a single serialization task */ + /** @deprecated Use {@link #SerializationContext(Map, Map, Optional, Map) instead}*/ + @Deprecated(forRemoval = true, since = "7") public SerializationContext(Map<String, ExpressionFunction> functions) { this(functions.values()); } - /** Create a context for a single serialization task */ + /** @deprecated Use {@link #SerializationContext(Collection, Map, TypeContext) instead}*/ + @Deprecated(forRemoval = true, since = "7") public SerializationContext(Collection<ExpressionFunction> functions, Map<String, String> bindings) { this(functions, bindings, Optional.empty(), new LinkedHashMap<>()); } @@ -68,30 +71,14 @@ public class SerializationContext extends FunctionReferenceContext { this(toMap(functions), bindings, typeContext, serializedFunctions); } - /** Returns the type context of this, if it is able to resolve types. */ - public Optional<TypeContext<Reference>> typeContext() { return typeContext; } - - private static Map<String, ExpressionFunction> toMap(Collection<ExpressionFunction> list) { - Map<String,ExpressionFunction> mapBuilder = new HashMap<>(); - for (ExpressionFunction function : list) - mapBuilder.put(function.getName(), function); - return Map.copyOf(mapBuilder); - } - - /** - * Create a context for a single serialization task - * - * @param functions the functions of this - * @param bindings the arguments of this - * @param serializedFunctions a cache of serializedFunctions - the ownership of this map - * is <b>transferred</b> to this and will be modified in it - */ + /** @deprecated Use {@link #SerializationContext(Map, Map, Optional, Map) instead}*/ + @Deprecated(forRemoval = true, since = "7") public SerializationContext(Map<String, ExpressionFunction> functions, Map<String, String> bindings, Map<String, String> serializedFunctions) { this(functions, bindings, Optional.empty(), serializedFunctions); } - public SerializationContext(Map<String,ExpressionFunction> functions, Map<String, String> bindings, + public SerializationContext(Map<String, ExpressionFunction> functions, Map<String, String> bindings, Optional<TypeContext<Reference>> typeContext, Map<String, String> serializedFunctions) { super(functions, bindings); @@ -99,13 +86,23 @@ public class SerializationContext extends FunctionReferenceContext { this.serializedFunctions = serializedFunctions; } - /** @deprecated Use {@link #SerializationContext(Map, Map, Map) instead}*/ + /** @deprecated Use {@link #SerializationContext(Map, Map, Optional, Map) instead}*/ @Deprecated(forRemoval = true, since = "7") public SerializationContext(ImmutableMap<String,ExpressionFunction> functions, Map<String, String> bindings, Map<String, String> serializedFunctions) { this((Map<String, ExpressionFunction>)functions, bindings, serializedFunctions); } + /** Returns the type context of this, if it is able to resolve types. */ + public Optional<TypeContext<Reference>> typeContext() { return typeContext; } + + private static Map<String, ExpressionFunction> toMap(Collection<ExpressionFunction> list) { + Map<String,ExpressionFunction> mapBuilder = new HashMap<>(); + for (ExpressionFunction function : list) + mapBuilder.put(function.getName(), function); + return Map.copyOf(mapBuilder); + } + /** Adds the serialization of a function */ public void addFunctionSerialization(String name, String expressionString) { serializedFunctions.put(name, expressionString); @@ -124,13 +121,13 @@ public class SerializationContext extends FunctionReferenceContext { @Override public SerializationContext withBindings(Map<String, String> bindings) { - return new SerializationContext(getFunctions(), bindings, this.serializedFunctions); + return new SerializationContext(getFunctions(), bindings, typeContext, this.serializedFunctions); } /** Returns a fresh context without bindings */ @Override public SerializationContext withoutBindings() { - return new SerializationContext(getFunctions(), null, this.serializedFunctions); + return new SerializationContext(getFunctions(), null, typeContext, this.serializedFunctions); } public Map<String, String> serializedFunctions() { return serializedFunctions; } diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java index 52d54c9163e..ce5832027b7 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java @@ -360,17 +360,22 @@ public class TensorFunctionNode extends CompositeNode { /** Returns a new context with the bindings replaced by the given bindings */ @Override public ExpressionToStringContext withBindings(Map<String, String> bindings) { - SerializationContext serializationContext = new SerializationContext(getFunctions(), bindings, serializedFunctions()); + SerializationContext serializationContext = new SerializationContext(getFunctions(), bindings, typeContext(), serializedFunctions()); return new ExpressionToStringContext(serializationContext, wrappedToStringContext, path, parent); } /** Returns a fresh context without bindings */ @Override public SerializationContext withoutBindings() { - SerializationContext serializationContext = new SerializationContext(getFunctions(), null, serializedFunctions()); + SerializationContext serializationContext = new SerializationContext(getFunctions(), null, typeContext(), serializedFunctions()); return new ExpressionToStringContext(serializationContext, null, path, parent); } + @Override + public String toString() { + return "TensorFunctionNode.ExpressionToStringContext with wrapped serialization context: " + wrappedSerializationContext; + } + } /** Turns an EvaluationContext into a Context */ |