From 25b4a9f673f3148cfdbd2bfec232e3092cfbd4c4 Mon Sep 17 00:00:00 2001 From: Jon Bratseth Date: Sat, 17 Feb 2018 16:01:39 +0100 Subject: Cleanup --- .../rankingexpression/rule/Arguments.java | 4 +++- .../rankingexpression/rule/ReferenceNode.java | 26 +++++++++------------- 2 files changed, 14 insertions(+), 16 deletions(-) (limited to 'searchlib') diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Arguments.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Arguments.java index ea590ec7139..d3a12d0f312 100644 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Arguments.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/Arguments.java @@ -14,7 +14,6 @@ import java.util.List; /** * A set of argument expressions to a function or feature. * This is a value object. - *. * * @author bratseth */ @@ -46,6 +45,9 @@ public final class Arguments implements Serializable { /** Returns an unmodifiable list of the expressions in this, never null */ public List expressions() { return expressions; } + /** Returns the number of arguments in this */ + public int size() { return expressions.size(); } + /** Evaluate all arguments in this */ public Value[] evaluate(Context context) { Value[] values=new Value[expressions.size()]; diff --git a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNode.java b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNode.java index 81c8d203167..5605b8b8963 100755 --- a/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNode.java +++ b/searchlib/src/main/java/com/yahoo/searchlib/rankingexpression/rule/ReferenceNode.java @@ -66,41 +66,37 @@ public final class ReferenceNode extends CompositeNode { public String toString(SerializationContext context, Deque path, CompositeNode parent) { if (path == null) path = new ArrayDeque<>(); - String myName = getName(); - String myOutput = getOutput(); - List myArguments = getArguments().expressions(); - if (reference.isIdentifier() && context.getBinding(myName) != null) { + if (reference.isIdentifier() && context.getBinding(getName()) != null) { // a bound identifier: replace by the value it is bound to - return context.getBinding(myName); + return context.getBinding(getName()); } - ExpressionFunction function = context.getFunction(myName); - if (function != null && function.arguments().size() == myArguments.size() && myOutput == null) { + ExpressionFunction function = context.getFunction(getName()); + if (function != null && function.arguments().size() == getArguments().size() && getOutput() == null) { // a function reference: replace by the referenced function wrapped in rankingExpression String myPath = getName() + getArguments().expressions(); if (path.contains(myPath)) throw new IllegalStateException("Cycle in ranking expression function: " + path); path.addLast(myPath); - ExpressionFunction.Instance instance = function.expand(context, myArguments, path); + ExpressionFunction.Instance instance = function.expand(context, getArguments().expressions(), path); path.removeLast(); context.addFunctionSerialization(RankingExpression.propertyName(instance.getName()), instance.getExpressionString()); return "rankingExpression(" + instance.getName() + ")"; } - // Always print the same way, the magic is already done. - StringBuilder ret = new StringBuilder(myName); - if (myArguments != null && myArguments.size() > 0) { + StringBuilder ret = new StringBuilder(getName()); + if (getArguments().size() > 0) { ret.append("("); - for (int i = 0; i < myArguments.size(); ++i) { - ret.append(myArguments.get(i).toString(context, path, this)); - if (i < myArguments.size() - 1) { + for (int i = 0; i < getArguments().size(); ++i) { + ret.append(getArguments().expressions().get(i).toString(context, path, this)); + if (i < getArguments().size() - 1) { ret.append(","); } } ret.append(")"); } - ret.append(myOutput != null ? "." + myOutput : ""); + ret.append(getOutput() != null ? "." + getOutput() : ""); return ret.toString(); } -- cgit v1.2.3