Isolate argument list by making it a copy every time. Use the unmodifiable wrapper for ExprFunctionN.
Project: http://git-wip-us.apache.org/repos/asf/jena/repo Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/86dc2d46 Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/86dc2d46 Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/86dc2d46 Branch: refs/heads/master Commit: 86dc2d46ed5ab4ce694ad809b06556e14a45a228 Parents: cf26830 Author: Andy Seaborne <[email protected]> Authored: Tue Dec 29 12:11:09 2015 +0000 Committer: Andy Seaborne <[email protected]> Committed: Tue Dec 29 21:13:05 2015 +0000 ---------------------------------------------------------------------- .../src/main/java/org/apache/jena/sparql/expr/ExprFunction.java | 5 +---- .../main/java/org/apache/jena/sparql/expr/ExprFunctionN.java | 1 - .../src/main/java/org/apache/jena/sparql/expr/ExprList.java | 2 +- 3 files changed, 2 insertions(+), 6 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/jena/blob/86dc2d46/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction.java index 442618a..785d184 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunction.java @@ -33,7 +33,6 @@ public abstract class ExprFunction extends ExprNode { protected FunctionLabel funcSymbol ; protected String opSign ; - private List<Expr> argList = null ; protected ExprFunction(String fName) { funcSymbol = new FunctionLabel(fName) ; @@ -51,9 +50,7 @@ public abstract class ExprFunction extends ExprNode // ExprFunctionN overrides this. public List<Expr> getArgs() { - if ( argList != null ) - return argList ; - argList = new ArrayList<>() ; + List<Expr> argList = new ArrayList<>(numArgs()) ; for ( int i = 1 ; i <= numArgs() ; i++ ) argList.add(this.getArg(i)) ; return argList ; http://git-wip-us.apache.org/repos/asf/jena/blob/86dc2d46/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java ---------------------------------------------------------------------- diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java index 76300ad..e9916ee 100644 --- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java +++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprFunctionN.java @@ -50,7 +50,6 @@ public abstract class ExprFunctionN extends ExprFunction return exprList ; } - @Override public Expr getArg(int i) { http://git-wip-us.apache.org/repos/asf/jena/blob/86dc2d46/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprList.java ---------------------------------------------------------------------- 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 59fcb3a..a0125fb 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 @@ -93,7 +93,7 @@ public class ExprList implements Iterable<Expr> public void addAll(ExprList exprs) { expressions.addAll(exprs.getList()) ; } public void add(Expr expr) { expressions.add(expr) ; } - public List<Expr> getList() { return expressions ; } + public List<Expr> getList() { return Collections.unmodifiableList(expressions) ; } @Override public Iterator<Expr> iterator() { return expressions.iterator() ; }
