summaryrefslogtreecommitdiffstats
path: root/searchlib
diff options
context:
space:
mode:
authorJon Bratseth <bratseth@gmail.com>2022-02-28 14:28:45 +0100
committerJon Bratseth <bratseth@gmail.com>2022-02-28 14:28:45 +0100
commit9775e3a373363ff4657c1361ebd1c3b6b5a20af6 (patch)
tree0dcd085fa04b5594fc455fe8cd00b7c7a09b4ee5 /searchlib
parent1af7b7470742445943fa2870fc0bd80666143f04 (diff)
Pass type context
Diffstat (limited to 'searchlib')
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/SerializationContext.java47
-rw-r--r--searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/TensorFunctionNode.java9
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 */