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() ; }
     

Reply via email to