This is an automated email from the ASF dual-hosted git repository. andy pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/jena.git
commit e017ba1a93cb35d5a18cc69941df6e08394b61b2 Author: Andy Seaborne <[email protected]> AuthorDate: Wed Jun 4 21:21:53 2025 +0100 Clean code of functional form expressions --- .../java/org/apache/jena/sparql/expr/E_Bound.java | 47 +++++------ .../org/apache/jena/sparql/expr/E_Coalesce.java | 48 +++++------ .../java/org/apache/jena/sparql/expr/E_OneOf.java | 37 ++++---- .../org/apache/jena/sparql/expr/E_OneOfBase.java | 98 ++++++++++------------ .../java/org/apache/jena/sparql/expr/ExprList.java | 40 +++++---- .../jena/fuseki/geosparql/DatasetOperations.java | 1 - 6 files changed, 132 insertions(+), 139 deletions(-) diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Bound.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Bound.java index 2f405e48b7..8a793b750f 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Bound.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Bound.java @@ -18,51 +18,50 @@ package org.apache.jena.sparql.expr; -import org.apache.jena.sparql.engine.binding.Binding ; -import org.apache.jena.sparql.function.FunctionEnv ; -import org.apache.jena.sparql.sse.Tags ; +import org.apache.jena.sparql.engine.binding.Binding; +import org.apache.jena.sparql.function.FunctionEnv; +import org.apache.jena.sparql.sse.Tags; public class E_Bound extends ExprFunction1 { - private static final String symbol = Tags.tagBound ; - boolean isBound = false ; + private static final String symbol = Tags.tagBound; + boolean isBound = false; - public E_Bound(Expr expr) - { - super(expr, symbol) ; + public E_Bound(Expr expr) { + super(expr, symbol); } - + @Override - public NodeValue evalSpecial(Binding binding, FunctionEnv env) { + public NodeValue evalSpecial(Binding binding, FunctionEnv env) { // See also ExprLib.evalOrNull. - // This code predates that; it handles exceptions + // This code predates that; it handles exceptions // slightly differently (VariableNotBoundException not // a general ExprEvalException). - + if ( expr.isConstant() ) // The case of the variable having been substituted for a constant. - // Note: this has often been optimized away by constant folding + // Note: this has often been optimized away by constant folding // (ExprTransformConstantFold) which called eval(NodeValue x) -> TRUE. - return NodeValue.TRUE ; - + return NodeValue.TRUE; + if ( expr.isVariable() ) - // The case of the expr being a single variable. - return NodeValue.booleanReturn(binding.contains(expr.asVar())) ; - + // The case of the expr being a single variable. + return NodeValue.booleanReturn(binding.contains(expr.asVar())); + // General expression. This case can't be written in SPARQL // but we keep the code general in case some optimization rewrite // or algebra expression uses the generalized feature. try { - expr.eval(binding, env) ; - return NodeValue.TRUE ; + expr.eval(binding, env); + return NodeValue.TRUE; } catch (VariableNotBoundException ex) { - return NodeValue.FALSE ; + return NodeValue.FALSE; } } @Override - public NodeValue eval(NodeValue x) { return NodeValue.TRUE ; } - + public NodeValue eval(NodeValue x) { return NodeValue.TRUE; } + @Override - public Expr copy(Expr expr) { return new E_Bound(expr) ; } + public Expr copy(Expr expr) { return new E_Bound(expr); } } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Coalesce.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Coalesce.java index 975ef7478e..23d47304d2 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Coalesce.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_Coalesce.java @@ -18,44 +18,40 @@ package org.apache.jena.sparql.expr; -import java.util.List ; +import java.util.List; -import org.apache.jena.sparql.ARQInternalErrorException ; -import org.apache.jena.sparql.engine.binding.Binding ; -import org.apache.jena.sparql.function.FunctionEnv ; -import org.apache.jena.sparql.sse.Tags ; +import org.apache.jena.sparql.ARQInternalErrorException; +import org.apache.jena.sparql.engine.binding.Binding; +import org.apache.jena.sparql.function.FunctionEnv; +import org.apache.jena.sparql.sse.Tags; /** SPARQL coalesce special form. */ -public class E_Coalesce extends ExprFunctionN -{ - private static final String name = Tags.tagCoalesce ; - - public E_Coalesce(ExprList args) - { - super(name, args) ; +public class E_Coalesce extends ExprFunctionN { + private static final String name = Tags.tagCoalesce; + + public E_Coalesce(ExprList args) { + super(name, args); } @Override - public NodeValue evalSpecial(Binding binding, FunctionEnv env) - { - for ( Expr expr : super.getArgs() ) - { - try { - NodeValue nv = expr.eval(binding, env) ; - return nv ; + public NodeValue evalSpecial(Binding binding, FunctionEnv env) { + for ( Expr expr : super.getArgs() ) { + try { + NodeValue nv = expr.eval(binding, env); + return nv; } catch (ExprEvalException ex) {} } - throw new ExprEvalException("COALESCE: no value") ; + throw new ExprEvalException("COALESCE: no value"); } - + @Override - public Expr copy(ExprList newArgs) - { - return new E_Coalesce(newArgs) ; + public Expr copy(ExprList newArgs) { + return new E_Coalesce(newArgs); } @Override - public NodeValue eval(List<NodeValue> args) - { throw new ARQInternalErrorException() ; } + public NodeValue eval(List<NodeValue> args) { + throw new ARQInternalErrorException(); + } } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_OneOf.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_OneOf.java index 3ddaab5987..3785db1074 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_OneOf.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_OneOf.java @@ -28,32 +28,29 @@ import org.apache.jena.sparql.sse.Tags ; public class E_OneOf extends E_OneOfBase { - private static final String functionName = Tags.tagIn ; - - public E_OneOf(Expr expr, ExprList args) - { - super(functionName, expr, args) ; + private static final String functionName = Tags.tagIn; + + public E_OneOf(Expr expr, ExprList args) { + super(functionName, expr, args); } - - protected E_OneOf(ExprList args) - { - super(functionName, args) ; + + protected E_OneOf(ExprList args) { + super(functionName, args); } @Override - public NodeValue evalSpecial(Binding binding, FunctionEnv env) - { - boolean b = super.evalOneOf(binding, env) ; - return NodeValue.booleanReturn(b) ; + public NodeValue evalSpecial(Binding binding, FunctionEnv env) { + boolean b = super.evalOneOf(binding, env); + return NodeValue.booleanReturn(b); } - + @Override - public NodeValue eval(List<NodeValue> args) - { throw new ARQInternalErrorException() ; } - + public NodeValue eval(List<NodeValue> args) { + throw new ARQInternalErrorException(); + } + @Override - public Expr copy(ExprList newArgs) - { - return new E_OneOf(newArgs) ; + public Expr copy(ExprList newArgs) { + return new E_OneOf(newArgs); } } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_OneOfBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_OneOfBase.java index 5e7f00a69d..10db20b0d0 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_OneOfBase.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/E_OneOfBase.java @@ -18,75 +18,69 @@ package org.apache.jena.sparql.expr; -import org.apache.jena.sparql.engine.binding.Binding ; -import org.apache.jena.sparql.function.FunctionEnv ; +import org.apache.jena.sparql.engine.binding.Binding; +import org.apache.jena.sparql.function.FunctionEnv; + +public abstract class E_OneOfBase extends ExprFunctionN { + /* This operation stores it's arguments as a single list. The first element of + * the array is the expression being tested, the rest are the items to be used to + * test against. There are cached copies of the LHS (car) and RHS (cdr). */ -public abstract class E_OneOfBase extends ExprFunctionN -{ - /* This operation stores it's arguments as a single list. - * The first element of the array is the expression being tested, - * the rest are the items to be used to test against. - * There are cached copies of the LHS (car) and RHS (cdr). - */ - // Cached values. - protected final Expr expr ; - protected final ExprList possibleValues ; - - protected E_OneOfBase(String name, Expr expr, ExprList args) - { - super(name, fixup(expr, args)) ; - this.expr = expr ; - this.possibleValues = args ; + protected final Expr expr; + protected final ExprList possibleValues; + + protected E_OneOfBase(String name, Expr expr, ExprList args) { + super(name, fixup(expr, args)); + this.expr = expr; + this.possibleValues = args; } - + // All ArgList, first arg is the expression. - protected E_OneOfBase(String name, ExprList args) - { - super(name, args) ; - this.expr = args.get(0) ; - this.possibleValues = args.tail(1) ; + protected E_OneOfBase(String name, ExprList args) { + super(name, args); + this.expr = args.get(0); + this.possibleValues = args.tail(1); + } + + private static ExprList fixup(Expr expr2, ExprList args) { + ExprList allArgs = new ExprList(expr2); + allArgs.addAll(args); + return allArgs; } - - private static ExprList fixup(Expr expr2, ExprList args) - { - ExprList allArgs = new ExprList(expr2) ; - allArgs.addAll(args) ; - return allArgs ; + + public Expr getLHS() { + return expr; } - public Expr getLHS() { return expr ; } - public ExprList getRHS() { return possibleValues; } + public ExprList getRHS() { + return possibleValues; + } - -// public Expr getLHS() { return expr ; } -// public ExprList getRHS() { return possibleValues ; } +// public Expr getLHS() { return expr ; } +// public ExprList getRHS() { return possibleValues ; } - protected boolean evalOneOf(Binding binding, FunctionEnv env) - { + protected boolean evalOneOf(Binding binding, FunctionEnv env) { // Special form. // Like ( expr = expr1 ) || ( expr = expr2 ) || ... - NodeValue nv = expr.eval(binding, env) ; - ExprEvalException error = null ; - for ( Expr inExpr : possibleValues ) - { + NodeValue nv = expr.eval(binding, env); + ExprEvalException error = null; + for ( Expr inExpr : possibleValues ) { try { - NodeValue maybe = inExpr.eval(binding, env) ; + NodeValue maybe = inExpr.eval(binding, env); if ( NodeValue.sameValueAs(nv, maybe) ) - return true ; - } catch (ExprEvalException ex) - { - error = ex ; + return true; + } catch (ExprEvalException ex) { + error = ex; } } if ( error != null ) - throw error ; - return false ; + throw error; + return false; } - - protected boolean evalNotOneOf(Binding binding, FunctionEnv env) - { - return ! evalOneOf(binding, env) ; + + protected boolean evalNotOneOf(Binding binding, FunctionEnv env) { + return !evalOneOf(binding, env); } } diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java index 2be17d8b8f..d5e1b9fad5 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java @@ -30,21 +30,29 @@ import org.apache.jena.sparql.util.Context ; public class ExprList implements Iterable<Expr> { private final List<Expr> expressions ; - /** Create a copy which does not share the list of expressions with the original */ + /** Create a copy which does not share the list of expressions with the original */ public static ExprList copy(ExprList other) { return new ExprList(other) ; } - + /** Create an ExprList that contains the expressions */ public static ExprList create(Collection<Expr> exprs) { ExprList exprList = new ExprList() ; exprs.forEach(exprList::add) ; - return exprList ; - } - + return exprList ; + } + + /** Create an ExprList from a number of Expr or an array. */ + public static ExprList create(Expr...exprs) { + ExprList exprList = new ExprList() ; + for (Expr expr : exprs) + exprList.add(expr); + return exprList ; + } + /** Empty, immutable ExprList */ public static final ExprList emptyList = new ExprList(Collections.emptyList()) ; - + public ExprList() { expressions = new ArrayList<>() ; } - + private ExprList(ExprList other) { this() ; expressions.addAll(other.expressions) ; @@ -64,13 +72,13 @@ public class ExprList implements Iterable<Expr> } return true ; } - + public Expr get(int idx) { return expressions.get(idx) ; } public int size() { return expressions.size() ; } public boolean isEmpty() { return expressions.isEmpty() ; } public ExprList subList(int fromIdx, int toIdx) { return new ExprList(expressions.subList(fromIdx, toIdx)) ; } public ExprList tail(int fromIdx) { return subList(fromIdx, expressions.size()) ; } - + public Set<Var> getVarsMentioned() { return ExprVars.getVarsMentioned(this); } @@ -82,7 +90,7 @@ public class ExprList implements Iterable<Expr> ExprList x = new ExprList() ; for ( Expr e : expressions) x.add(e.applyNodeTransform(transform)); - return x ; + return x ; } public ExprList copySubstitute(Binding binding) { @@ -101,34 +109,34 @@ public class ExprList implements Iterable<Expr> public List<Expr> getListRaw() { return expressions ; } @Override public Iterator<Expr> iterator() { return expressions.iterator() ; } - + public void prepareExprs(Context context) { ExprBuild build = new ExprBuild(context) ; // Give each expression the chance to set up (bind functions) for (Expr expr : expressions) Walker.walk(expr, build) ; } - + @Override public String toString() { return expressions.toString() ; } - + @Override public int hashCode() { return expressions.hashCode() ; } public boolean equals(ExprList other, boolean bySyntax) { if ( this == other ) return true ; if (expressions.size() != other.expressions.size()) return false; - + for ( int i = 0 ; i < expressions.size() ; i++ ) { Expr e1 = expressions.get(i) ; Expr e2 = other.expressions.get(i) ; - if ( ! e1.equals(e2, bySyntax) ) + if ( ! e1.equals(e2, bySyntax) ) return false ; } return true ; } - + @Override public boolean equals(Object other) { if ( this == other ) return true ; diff --git a/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/fuseki/geosparql/DatasetOperations.java b/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/fuseki/geosparql/DatasetOperations.java index 57a6d02302..f5c077a9e6 100644 --- a/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/fuseki/geosparql/DatasetOperations.java +++ b/jena-fuseki2/jena-fuseki-geosparql/src/main/java/org/apache/jena/fuseki/geosparql/DatasetOperations.java @@ -215,7 +215,6 @@ public class DatasetOperations { dataset.end(); } } - } private static void prepareSpatialExtension(Dataset dataset, ArgsConfig argsConfig) throws SpatialIndexException {
