diff options
author | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-12-07 12:54:24 +0100 |
---|---|---|
committer | Bjørn Christian Seime <bjorncs@verizonmedia.com> | 2021-12-07 13:22:41 +0100 |
commit | 92fb7c5a6b124a9f384ed54cb5be166c14a5e910 (patch) | |
tree | 08c9b5a3838491f792129e65e772d24342a80fd1 /searchlib | |
parent | e2818c4593f6964e57bdbd332ebe0481d39bb0d8 (diff) |
Deprecate ctors and methods in 'searchlib' using Guava ImmutableMap
- com.yahoo.searchlib.rankingexpression.rule.FunctionReferenceContext
- com.yahoo.searchlib.rankingexpression.rule.SerializationContext
- com.yahoo.searchlib.rankingexpression.rule.TensorFunctionNode
Diffstat (limited to 'searchlib')
4 files changed, 41 insertions, 18 deletions
diff --git a/searchlib/abi-spec.json b/searchlib/abi-spec.json index e5611324254..2d7daf2300e 100644 --- a/searchlib/abi-spec.json +++ b/searchlib/abi-spec.json @@ -1457,6 +1457,7 @@ "protected void <init>(com.google.common.collect.ImmutableMap, java.util.Map)", "public com.yahoo.searchlib.rankingexpression.ExpressionFunction getFunction(java.lang.String)", "protected com.google.common.collect.ImmutableMap functions()", + "protected java.util.Map getFunctions()", "public java.lang.String getBinding(java.lang.String)", "public com.yahoo.searchlib.rankingexpression.rule.FunctionReferenceContext withBindings(java.util.Map)", "public com.yahoo.searchlib.rankingexpression.rule.FunctionReferenceContext withoutBindings()" @@ -1611,6 +1612,7 @@ "public void <init>(java.util.Map)", "public void <init>(java.util.Collection, java.util.Map)", "public void <init>(java.util.Collection, java.util.Map, java.util.Map)", + "public void <init>(java.util.Map, java.util.Map, java.util.Map)", "public void <init>(com.google.common.collect.ImmutableMap, java.util.Map, java.util.Map)", "public void addFunctionSerialization(java.lang.String, java.lang.String)", "public void addArgumentTypeSerialization(java.lang.String, java.lang.String, com.yahoo.tensor.TensorType)", diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionReferenceContext.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionReferenceContext.java index f0586297b0d..287bc2655f5 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionReferenceContext.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/FunctionReferenceContext.java @@ -17,7 +17,7 @@ import java.util.Map; public class FunctionReferenceContext { /** Expression functions indexed by name */ - private final ImmutableMap<String, ExpressionFunction> functions; + private final Map<String, ExpressionFunction> functions; /** Mapping from argument names to the expressions they resolve to */ private final Map<String, String> bindings = new HashMap<>(); @@ -43,26 +43,32 @@ public class FunctionReferenceContext { /** Create a context for a single serialization task */ public FunctionReferenceContext(Map<String, ExpressionFunction> functions, Map<String, String> bindings) { - this(ImmutableMap.copyOf(functions), bindings); + this.functions = Map.copyOf(functions); + if (bindings != null) + this.bindings.putAll(bindings); } + /** @deprecated Use {@link #FunctionReferenceContext(Map, Map)} instead */ + @Deprecated(forRemoval = true, since = "7") protected FunctionReferenceContext(ImmutableMap<String, ExpressionFunction> functions, Map<String, String> bindings) { - this.functions = functions; - if (bindings != null) - this.bindings.putAll(bindings); + this((Map<String, ExpressionFunction>)functions, bindings); } - private static ImmutableMap<String, ExpressionFunction> toMap(Collection<ExpressionFunction> list) { - ImmutableMap.Builder<String,ExpressionFunction> mapBuilder = new ImmutableMap.Builder<>(); + 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 mapBuilder.build(); + return Map.copyOf(mapBuilder); } /** Returns a function or null if it isn't defined in this context */ public ExpressionFunction getFunction(String name) { return functions.get(name); } - protected ImmutableMap<String, ExpressionFunction> functions() { return functions; } + /** @deprecated Use {@link #getFunctions()} instead */ + @Deprecated(forRemoval = true, since = "7") + protected ImmutableMap<String, ExpressionFunction> functions() { return ImmutableMap.copyOf(functions); } + + protected Map<String, ExpressionFunction> getFunctions() { return functions; } /** Returns the resolution of an identifier, or null if it isn't defined in this context */ public String getBinding(String name) { return bindings.get(name); } 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 cd2f966cc22..535ad013caf 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 @@ -8,6 +8,7 @@ import com.yahoo.tensor.TensorType; import java.util.Collection; import java.util.Collections; +import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; @@ -54,11 +55,11 @@ public class SerializationContext extends FunctionReferenceContext { this(toMap(functions), bindings, serializedFunctions); } - private static ImmutableMap<String, ExpressionFunction> toMap(Collection<ExpressionFunction> list) { - ImmutableMap.Builder<String,ExpressionFunction> mapBuilder = new ImmutableMap.Builder<>(); + 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 mapBuilder.build(); + return Map.copyOf(mapBuilder); } /** @@ -69,12 +70,19 @@ public class SerializationContext extends FunctionReferenceContext { * @param serializedFunctions a cache of serializedFunctions - the ownership of this map * is <b>transferred</b> to this and will be modified in it */ - public SerializationContext(ImmutableMap<String,ExpressionFunction> functions, Map<String, String> bindings, + public SerializationContext(Map<String,ExpressionFunction> functions, Map<String, String> bindings, Map<String, String> serializedFunctions) { super(functions, bindings); this.serializedFunctions = serializedFunctions; } + /** @deprecated Use {@link #SerializationContext(Map, Map, 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); + } + /** Adds the serialization of a function */ public void addFunctionSerialization(String name, String expressionString) { serializedFunctions.put(name, expressionString); @@ -93,13 +101,13 @@ public class SerializationContext extends FunctionReferenceContext { @Override public SerializationContext withBindings(Map<String, String> bindings) { - return new SerializationContext(functions(), bindings, this.serializedFunctions); + return new SerializationContext(getFunctions(), bindings, this.serializedFunctions); } /** Returns a fresh context without bindings */ @Override public SerializationContext withoutBindings() { - return new SerializationContext(functions(), null, this.serializedFunctions); + return new SerializationContext(getFunctions(), null, 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 ba5a243464e..d873963bb6e 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 @@ -328,7 +328,14 @@ public class TensorFunctionNode extends CompositeNode { /** Returns a function or null if it isn't defined in this context */ public ExpressionFunction getFunction(String name) { return wrappedSerializationContext.getFunction(name); } - protected ImmutableMap<String, ExpressionFunction> functions() { return wrappedSerializationContext.functions(); } + /** @deprecated Use {@link #getFunctions()} instead */ + @SuppressWarnings("removal") + @Deprecated(forRemoval = true, since = "7") + protected ImmutableMap<String, ExpressionFunction> functions() { + return ImmutableMap.copyOf(wrappedSerializationContext.getFunctions()); + } + + @Override protected Map<String, ExpressionFunction> getFunctions() { return wrappedSerializationContext.getFunctions(); } public ToStringContext parent() { return wrappedToStringContext; } @@ -344,14 +351,14 @@ 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(functions(), bindings, serializedFunctions()); + SerializationContext serializationContext = new SerializationContext(getFunctions(), bindings, serializedFunctions()); return new ExpressionToStringContext(serializationContext, wrappedToStringContext, path, parent); } /** Returns a fresh context without bindings */ @Override public SerializationContext withoutBindings() { - SerializationContext serializationContext = new SerializationContext(functions(), null, serializedFunctions()); + SerializationContext serializationContext = new SerializationContext(getFunctions(), null, serializedFunctions()); return new ExpressionToStringContext(serializationContext, null, path, parent); } } |