You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jena.apache.org by an...@apache.org on 2016/05/21 18:54:39 UTC

[19/23] jena git commit: Introduce Expr.NONE to replace NodeValue.nvNothing.

Introduce Expr.NONE to replace NodeValue.nvNothing.


Project: http://git-wip-us.apache.org/repos/asf/jena/repo
Commit: http://git-wip-us.apache.org/repos/asf/jena/commit/e4ef5bc7
Tree: http://git-wip-us.apache.org/repos/asf/jena/tree/e4ef5bc7
Diff: http://git-wip-us.apache.org/repos/asf/jena/diff/e4ef5bc7

Branch: refs/heads/master
Commit: e4ef5bc78c6e381a8428819c941bc60b14ffae3c
Parents: ee9aff0
Author: Andy Seaborne <an...@apache.org>
Authored: Mon Apr 25 21:48:06 2016 +0100
Committer: Andy Seaborne <an...@apache.org>
Committed: Sat May 21 18:29:13 2016 +0100

----------------------------------------------------------------------
 .../algebra/walker/ApplyTransformVisitor.java   |  7 +-
 .../algebra/walker/ElementWalker_New.java       |  2 +-
 .../sparql/algebra/walker/WalkerVisitor.java    | 12 ++-
 .../sparql/algebra/walker/WalkerVisitor0.java   |  4 +-
 .../java/org/apache/jena/sparql/expr/Expr.java  |  1 +
 .../org/apache/jena/sparql/expr/ExprNone.java   | 18 +++--
 .../apache/jena/sparql/expr/ExprTransform.java  |  2 +
 .../jena/sparql/expr/ExprTransformBase.java     |  1 +
 .../jena/sparql/expr/ExprTransformCopy.java     | 81 +++++++++-----------
 .../apache/jena/sparql/expr/ExprVisitor.java    | 10 +--
 .../org/apache/jena/sparql/expr/NodeValue.java  |  4 +-
 11 files changed, 74 insertions(+), 68 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/jena/blob/e4ef5bc7/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/ApplyTransformVisitor.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/ApplyTransformVisitor.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/ApplyTransformVisitor.java
index 43544c6..5020647 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/ApplyTransformVisitor.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/ApplyTransformVisitor.java
@@ -219,7 +219,7 @@ public class ApplyTransformVisitor implements OpVisitorByTypeAndExpr, ExprVisito
         List<Expr> x = new ArrayList<>(N) ;
         for ( int i = N-1 ; i >= 0 ; i-- ) {
             Expr e2 = pop(exprStack) ;
-            if ( e2 ==  Expr.NONE )
+            if ( e2 == Expr.NONE )
                 e2 = null ;
             x.add(0, e2) ;
         }
@@ -444,6 +444,11 @@ public class ApplyTransformVisitor implements OpVisitorByTypeAndExpr, ExprVisito
         Expr e = eAgg.apply(exprTransform) ;
         push(exprStack, e) ;
     }
+    
+    @Override
+    public void visit(ExprNone e) {
+        push(exprStack, e) ;
+    }
 
     private <T> void push(Deque<T> stack, T value) {
         if ( value == null )

http://git-wip-us.apache.org/repos/asf/jena/blob/e4ef5bc7/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/ElementWalker_New.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/ElementWalker_New.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/ElementWalker_New.java
index aab404a..b0fb10a 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/ElementWalker_New.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/ElementWalker_New.java
@@ -168,7 +168,7 @@ public class ElementWalker_New {
                 Expr expr = func.getArg(i) ;
                 if ( expr == null )
                     // Put a dummy in, e.g. to keep the transform stack aligned.
-                    NodeValue.nvNothing.visit(this) ;
+                    Expr.NONE.visit(this) ;
                 else
                     expr.visit(this) ;
             }

http://git-wip-us.apache.org/repos/asf/jena/blob/e4ef5bc7/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/WalkerVisitor.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/WalkerVisitor.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/WalkerVisitor.java
index 451aedb..f4c9e43 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/WalkerVisitor.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/WalkerVisitor.java
@@ -103,7 +103,7 @@ public class WalkerVisitor implements OpVisitorByTypeAndExpr, ExprVisitorFunctio
             return ;
         // retains order.
         varExprList.forEachVarExpr((v,e) -> {
-            Expr expr = (e!=null) ? e : Expr.NONE ; 
+            Expr expr = (e!=null) ? e : Expr.NONE ;
             walk(expr) ;
         });
     }
@@ -265,7 +265,7 @@ public class WalkerVisitor implements OpVisitorByTypeAndExpr, ExprVisitorFunctio
             Expr expr = func.getArg(i) ;
             if ( expr == null )
                 // Put a dummy in, e.g. to keep the transform stack aligned.
-                NodeValue.nvNothing.visit(this) ;
+                Expr.NONE.visit(this) ;
             else
                 expr.visit(this) ;
         }
@@ -293,6 +293,12 @@ public class WalkerVisitor implements OpVisitorByTypeAndExpr, ExprVisitorFunctio
     }
 
     @Override
+    public void visit(ExprNone none) {
+        if ( exprVisitor != null )
+            none.visit(exprVisitor) ;
+    }
+
+    @Override
     public void visit(ExprAggregator eAgg) {
         // This is the assignment variable of the aggregation
         // not a normal variable of an expression.
@@ -304,5 +310,3 @@ public class WalkerVisitor implements OpVisitorByTypeAndExpr, ExprVisitorFunctio
             eAgg.visit(exprVisitor) ;
     }
 }
-
-

http://git-wip-us.apache.org/repos/asf/jena/blob/e4ef5bc7/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/WalkerVisitor0.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/WalkerVisitor0.java b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/WalkerVisitor0.java
index 2b9dace..2acd7b6 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/WalkerVisitor0.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/algebra/walker/WalkerVisitor0.java
@@ -265,7 +265,7 @@ public class WalkerVisitor0 implements OpVisitorByTypeAndExpr, ExprVisitorFuncti
             Expr expr = func.getArg(i) ;
             if ( expr == null )
                 // Put a dummy in, e.g. to keep the transform stack aligned.
-                NodeValue.nvNothing.visit(this) ;
+                Expr.NONE.visit(this) ;
             else
                 expr.visit(this) ;
         }
@@ -304,5 +304,3 @@ public class WalkerVisitor0 implements OpVisitorByTypeAndExpr, ExprVisitorFuncti
             eAgg.visit(exprVisitor) ;
     }
 }
-
-

http://git-wip-us.apache.org/repos/asf/jena/blob/e4ef5bc7/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
index 90efc4f..8c24001 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/Expr.java
@@ -39,6 +39,7 @@ public interface Expr
     public static final int CMP_UNEQUAL  = -9 ;
     public static final int CMP_INDETERMINATE  = DatatypeConstants.INDETERMINATE ;
     
+    
     /** Test whether a Constraint is satisfied, given a set of bindings
      *  Includes error propagtion and Effective Boolean Value rules.
      * 

http://git-wip-us.apache.org/repos/asf/jena/blob/e4ef5bc7/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNone.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNone.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNone.java
index a0e07f4..8012c9a 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNone.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprNone.java
@@ -26,16 +26,22 @@ import org.apache.jena.sparql.graph.NodeTransform ;
 /** Marker, used in place of a null.
  *  This may be tested for using {@code ==} */
 
-/*package*/ class ExprNone extends ExprNode {
-    
-    /*paclage*/ static Expr NONE0 = new ExprNone() ; 
+//public /*package*/ class ExprNone extends ExprVar { // extends ExprNode {
+//    
+//    /*package*/ static Expr NONE0 = new ExprNone() ; 
+//    
+//    private ExprNone() { super("") ; }
+//}
+
+public class ExprNone extends ExprNode {
     
+    /*package*/ static Expr NONE0 = new ExprNone() ;
     private ExprNone() {}
-
-    @Override public void visit(ExprVisitor visitor) {}
+    
+    @Override public void visit(ExprVisitor visitor) { visitor.visit(this); }
 
     @Override public NodeValue eval(Binding binding, FunctionEnv env) {
-        throw new InternalErrorException("Attempt to evalk ExprNone") ;
+        throw new InternalErrorException("Attempt to eval ExprNone") ;
     }
 
     @Override

http://git-wip-us.apache.org/repos/asf/jena/blob/e4ef5bc7/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprTransform.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprTransform.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprTransform.java
index b8f0a2b..484d6c2 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprTransform.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprTransform.java
@@ -29,6 +29,8 @@ public interface ExprTransform
     public Expr transform(ExprFunctionN func, ExprList args) ;
     public Expr transform(ExprFunctionOp funcOp, ExprList args, Op opArg) ;
     public Expr transform(NodeValue nv) ;
+    //default public Expr transform(ExprNone exprNone) { return exprNone ; }
+    public Expr transform(ExprNone exprNone) ;
     public Expr transform(ExprVar nv) ;
     public Expr transform(ExprAggregator eAgg) ;
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/e4ef5bc7/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprTransformBase.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprTransformBase.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprTransformBase.java
index b364327..b50c92b 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprTransformBase.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprTransformBase.java
@@ -29,6 +29,7 @@ public class ExprTransformBase implements ExprTransform
     @Override public Expr transform(ExprFunctionN func, ExprList args)                        { return func ; }
     @Override public Expr transform(ExprFunctionOp funcOp, ExprList args, Op opArg)           { return funcOp ; }
     @Override public Expr transform(NodeValue nv)                                             { return nv ; }
+    @Override public Expr transform(ExprNone exprNone)                                        { return exprNone ; }
     @Override public Expr transform(ExprVar ev)                                               { return ev ; }
     @Override public Expr transform(ExprAggregator eAgg)                                      { return eAgg ; }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/e4ef5bc7/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprTransformCopy.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprTransformCopy.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprTransformCopy.java
index 174be6a..06c5b38 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprTransformCopy.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprTransformCopy.java
@@ -59,6 +59,10 @@ public class ExprTransformCopy implements ExprTransform
     public Expr transform(NodeValue nv)     
     { return xform(nv) ; }
     
+    @Override 
+    public Expr transform(ExprNone exprNone)
+    { return xform(exprNone) ; }
+
     @Override
     public Expr transform(ExprVar exprVar)       
     { return xform(exprVar) ; }
@@ -67,88 +71,75 @@ public class ExprTransformCopy implements ExprTransform
     public Expr transform(ExprAggregator eAgg)       
     { return xform(eAgg) ; }
 
-    private Expr xform(ExprFunction0 func)
-    {
+    private Expr xform(ExprFunction0 func) {
         if ( !alwaysCopy )
             return func ;
         return func.copy() ;
     }
 
-    private Expr xform(ExprFunction1 func, Expr expr1)
-    {
+    private Expr xform(ExprFunction1 func, Expr expr1) {
         if ( !alwaysCopy && expr1 == func.getArg() )
             return func ;
         return func.copy(expr1) ;
     }
-    
-    private Expr xform(ExprFunction2 func, Expr expr1, Expr expr2)
-    {
-        if ( !alwaysCopy && 
-                expr1 == func.getArg1() &&
-                expr2 == func.getArg2() )
+
+    private Expr xform(ExprFunction2 func, Expr expr1, Expr expr2) {
+        if ( !alwaysCopy && expr1 == func.getArg1() && expr2 == func.getArg2() )
             return func ;
         return func.copy(expr1, expr2) ;
     }
-    
-    private Expr xform(ExprFunction3 func, Expr expr1, Expr expr2, Expr expr3)
-    {
-        if ( !alwaysCopy && 
-                expr1 == func.getArg1() &&
-                expr2 == func.getArg2() &&
-                expr3 == func.getArg3() )
-        return func ;
-    return func.copy(expr1, expr2, expr3) ;
+
+    private Expr xform(ExprFunction3 func, Expr expr1, Expr expr2, Expr expr3) {
+        if ( !alwaysCopy && expr1 == func.getArg1() && expr2 == func.getArg2() && expr3 == func.getArg3() )
+            return func ;
+        return func.copy(expr1, expr2, expr3) ;
     }
-    
-    private Expr xform(ExprFunctionN func, ExprList args)
-    {
-        if ( ! alwaysCopy && equals1(func.getArgs(), args.getList()) )
+
+    private Expr xform(ExprFunctionN func, ExprList args) {
+        if ( !alwaysCopy && equals1(func.getArgs(), args.getList()) )
             return func ;
         return func.copy(args) ;
     }
-    
-    private boolean equals1(List<Expr> list1, List<Expr> list2)
-    {
+
+    private boolean equals1(List<Expr> list1, List<Expr> list2) {
         if ( list1 == null && list2 == null )
             return true ;
         if ( list1 == null )
             return false ;
         if ( list2 == null )
             return false ;
-        
+
         if ( list1.size() != list2.size() )
             return false ;
-        for ( int i = 0 ; i < list1.size() ; i++ )
-        {
+        for ( int i = 0 ; i < list1.size() ; i++ ) {
             if ( list1.get(i) != list2.get(i) )
                 return false ;
         }
         return true ;
     }
-    
-    private Expr xform(ExprFunctionOp funcOp, ExprList args, Op opArg)
-    {
-        if ( ! alwaysCopy && equals1(funcOp.getArgs(), args.getList()) && funcOp.getGraphPattern() == opArg )
+
+    private Expr xform(ExprFunctionOp funcOp, ExprList args, Op opArg) {
+        if ( !alwaysCopy && equals1(funcOp.getArgs(), args.getList()) && funcOp.getGraphPattern() == opArg )
             return funcOp ;
         return funcOp.copy(args, opArg) ;
     }
-    
-    private Expr xform(NodeValue nv)
-    {
+
+    private Expr xform(NodeValue nv) {
         return nv ;
     }
-    
-    private Expr xform(ExprVar exprVar)
-    {
+
+    private Expr xform(ExprNone exprNone) {
+        return exprNone ;
+    }
+
+    private Expr xform(ExprVar exprVar) {
         return exprVar ;
     }
-    
-    private Expr xform(ExprAggregator eAgg)
-    {
-        if ( ! alwaysCopy )
+
+    private Expr xform(ExprAggregator eAgg) {
+        if ( !alwaysCopy )
             return eAgg ;
-        
+
         return eAgg.copy(eAgg.getVar()) ;
     }
-
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/e4ef5bc7/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVisitor.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVisitor.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVisitor.java
index 796e3b4..5b7cea0 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVisitor.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/ExprVisitor.java
@@ -18,6 +18,7 @@
 
 package org.apache.jena.sparql.expr;
 
+import org.apache.jena.atlas.lib.InternalErrorException ;
 
 public interface ExprVisitor
 {
@@ -31,11 +32,6 @@ public interface ExprVisitor
     void visit(NodeValue nv) ;
     void visit(ExprVar nv) ;
     void visit(ExprAggregator eAgg) ;
-
-    /** @deprecated To be removed */
-    @Deprecated
-    default void startVisit() {}
-    /** @deprecated To be removed */
-    @Deprecated
-    default void finishVisit() {}
+    //void visit(ExprNone exprNone) ;
+    default void visit(ExprNone exprNone) { throw new InternalErrorException("Visit Expr.NONE") ; }
 }

http://git-wip-us.apache.org/repos/asf/jena/blob/e4ef5bc7/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
----------------------------------------------------------------------
diff --git a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
index dd149d6..21fe672 100644
--- a/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
+++ b/jena-arq/src/main/java/org/apache/jena/sparql/expr/NodeValue.java
@@ -138,7 +138,9 @@ public abstract class NodeValue extends ExprNode
     
     // Use "==" for equality.
     private static final String strForUnNode = "node value nothing" ;
-    public static final NodeValue nvNothing = NodeValue.makeNode(NodeFactory.createBlankNode("node value nothing")) ;
+    /** @deprecated Use Expr.NONE */
+    @Deprecated
+    public static final NodeValue nvNothing = NodeValue.makeNode(NodeFactory.createBlankNode(strForUnNode)) ;
     
     public static final String xsdNamespace = XSD+"#" ;