summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--config-model/src/test/java/com/yahoo/searchdefinition/derived/GeminiTestCase.java70
-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
-rw-r--r--vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java2
4 files changed, 30 insertions, 98 deletions
diff --git a/config-model/src/test/java/com/yahoo/searchdefinition/derived/GeminiTestCase.java b/config-model/src/test/java/com/yahoo/searchdefinition/derived/GeminiTestCase.java
deleted file mode 100644
index 07e6fbf7b1b..00000000000
--- a/config-model/src/test/java/com/yahoo/searchdefinition/derived/GeminiTestCase.java
+++ /dev/null
@@ -1,70 +0,0 @@
-// Copyright Yahoo. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root.
-package com.yahoo.searchdefinition.derived;
-
-import com.yahoo.collections.Pair;
-import com.yahoo.searchdefinition.parser.ParseException;
-import org.junit.Test;
-import static org.junit.Assert.assertEquals;
-
-import java.io.IOException;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-/**
- * @author bratseth
- */
-public class GeminiTestCase extends AbstractExportingTestCase {
-
- @Test
- public void testRanking2() throws IOException, ParseException {
- DerivedConfiguration c = assertCorrectDeriving("gemini2");
- RawRankProfile p = c.getRankProfileList().getRankProfile("test");
- Map<String, String> ranking = removePartKeySuffixes(asMap(p.configProperties()));
- assertEquals("attribute(right)", resolve(lookup("toplevel", ranking), ranking));
- }
-
- private Map<String, String> asMap(List<Pair<String, String>> properties) {
- Map<String, String> map = new HashMap<>();
- for (Pair<String, String> property : properties)
- map.put(property.getFirst(), property.getSecond());
- return map;
- }
-
- private Map<String, String> removePartKeySuffixes(Map<String, String> p) {
- Map<String, String> pWithoutSuffixes = new HashMap<>();
- for (Map.Entry<String, String> entry : p.entrySet())
- pWithoutSuffixes.put(removePartSuffix(entry.getKey()), entry.getValue());
- return pWithoutSuffixes;
- }
-
- private String removePartSuffix(String s) {
- int partIndex = s.indexOf(".part");
- if (partIndex <= 0) return s;
- return s.substring(0, partIndex);
- }
-
- /**
- * Recursively resolves references to other ranking expressions - rankingExpression(name) -
- * and replaces the reference by the expression
- */
- private String resolve(String expression, Map<String, String> ranking) {
- int referenceStartIndex;
- while ((referenceStartIndex = expression.indexOf("rankingExpression(")) >= 0) {
- int referenceEndIndex = expression.indexOf(")", referenceStartIndex);
- expression = expression.substring(0, referenceStartIndex) +
- resolve(lookup(expression.substring(referenceStartIndex + "rankingExpression(".length(), referenceEndIndex), ranking), ranking) +
- expression.substring(referenceEndIndex + 1);
- }
- return expression;
- }
-
- private String lookup(String expressionName, Map<String, String> ranking) {
- String value = ranking.get("rankingExpression(" + expressionName + ").rankingScript");
- if (value == null) {
- return expressionName;
- }
- return value;
- }
-
-}
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 */
diff --git a/vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java b/vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java
index 233779fcebe..72f0a267449 100644
--- a/vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java
+++ b/vespajlib/src/main/java/com/yahoo/tensor/functions/ToStringContext.java
@@ -13,7 +13,7 @@ import java.util.Optional;
*/
public interface ToStringContext<NAMETYPE extends Name> {
- static <NAMETYPE extends Name> ToStringContext<NAMETYPE> empty() { return new EmptyStringContext<NAMETYPE>(); }
+ static <NAMETYPE extends Name> ToStringContext<NAMETYPE> empty() { return new EmptyStringContext<>(); }
/** Returns the name an identifier is bound to, or null if not bound in this context */
String getBinding(String name);