You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openjpa.apache.org by aw...@apache.org on 2006/08/19 03:03:43 UTC

svn commit: r432778 [2/2] - in /incubator/openjpa/trunk: openjpa-jdbc/src/main/java/org/apache/openjpa/jdbc/kernel/exps/ openjpa-kernel/src/main/java/org/apache/openjpa/kernel/ openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Args.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Args.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Args.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Args.java Fri Aug 18 18:03:35 2006
@@ -49,10 +49,6 @@
         return (Value[]) _args.toArray(new Value[_args.size()]);
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         return Object[].class;
     }
@@ -67,18 +63,18 @@
     public void setImplicitType(Class type) {
     }
 
-    public boolean hasVariables() {
-        for (int i = 0; i < _args.size(); i++)
-            if (((Val) _args.get(i)).hasVariables())
-                return true;
-        return false;
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
         Object[] vals = new Object[_args.size()];
         for (int i = 0; i < _args.size(); i++)
             vals[i] = ((Val) _args.get(i)).eval(candidate, orig, ctx, params);
         return vals;
+    }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        for (int i = 0; i < _args.size(); i++)
+            ((Val) _args.get(i)).acceptVisit(visitor);
+        visitor.exit(this);
     }
 }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/BindVariableExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/BindVariableExpression.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/BindVariableExpression.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/BindVariableExpression.java Fri Aug 18 18:03:35 2006
@@ -79,5 +79,12 @@
         Object obj = candidates.iterator().next();
         return eval(obj, obj, ctx, params);
 	}
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _var.acceptVisit(visitor);
+        _val.acceptVisit(visitor);
+        visitor.exit(this);
+    }
 }
 

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/BoundVariable.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/BoundVariable.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/BoundVariable.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/BoundVariable.java Fri Aug 18 18:03:35 2006
@@ -63,10 +63,6 @@
         _type = type;
     }
 
-    public boolean hasVariables() {
-        return true;
-    }
-
     /**
      * Cast this value to the given type.
      */

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CandidatePath.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CandidatePath.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CandidatePath.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CandidatePath.java Fri Aug 18 18:03:35 2006
@@ -48,10 +48,6 @@
         _actions.add(new Traversal(field, nullTraversal));
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         if (_actions == null)
             return getCandidateType();
@@ -71,10 +67,6 @@
     }
 
     public void setImplicitType(Class type) {
-    }
-
-    public boolean hasVariables() {
-        return false;
     }
 
     public FieldMetaData last() {

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Cast.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Cast.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Cast.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Cast.java Fri Aug 18 18:03:35 2006
@@ -41,10 +41,6 @@
         _cast = cast;
     }
 
-    public boolean isVariable() {
-        return _val.isVariable();
-    }
-
     public Class getType() {
         return _cast;
     }
@@ -52,10 +48,6 @@
     public void setImplicitType(Class type) {
     }
 
-    public boolean hasVariables() {
-        return _val.hasVariables();
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
         return Filters.convert(_val.eval(candidate, orig, ctx, params), _cast);
@@ -71,5 +63,11 @@
         for (Iterator itr = res.iterator(); itr.hasNext();)
             casts.add(Filters.convert(itr.next(), _cast));
         return casts;
+    }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val.acceptVisit(visitor);
+        visitor.exit(this);
     }
 }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CompareExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CompareExpression.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CompareExpression.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CompareExpression.java Fri Aug 18 18:03:35 2006
@@ -72,4 +72,11 @@
      * Compare the two values.
      */
     protected abstract boolean compare(Object o1, Object o2);
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val1.acceptVisit(visitor);
+        _val2.acceptVisit(visitor);
+        visitor.exit(this);
+    }
 }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Concat.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Concat.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Concat.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Concat.java Fri Aug 18 18:03:35 2006
@@ -37,10 +37,6 @@
         _args = args;
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         return String.class;
     }
@@ -48,10 +44,6 @@
     public void setImplicitType(Class type) {
     }
 
-    public boolean hasVariables() {
-        return _val.hasVariables() || _args.hasVariables();
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
         Object str = _val.eval(candidate, orig, ctx, params);
@@ -65,6 +57,13 @@
             cat.append(arg.toString());
 
         return cat.toString();
+    }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val.acceptVisit(visitor);
+        _args.acceptVisit(visitor);
+        visitor.exit(this);
     }
 }
 

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ContainsExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ContainsExpression.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ContainsExpression.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ContainsExpression.java Fri Aug 18 18:03:35 2006
@@ -70,5 +70,12 @@
     protected Collection getCollection(Object obj) {
         return (Collection) obj;
     }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val1.acceptVisit(visitor);
+        _val2.acceptVisit(visitor);
+        visitor.exit(this);
+    }
 }
 

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CurrentDate.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CurrentDate.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CurrentDate.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/CurrentDate.java Fri Aug 18 18:03:35 2006
@@ -27,14 +27,6 @@
 class CurrentDate
     extends Val {
 
-    public boolean hasVariables() {
-        return false;
-    }
-
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         return Date.class;
     }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Distinct.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Distinct.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Distinct.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Distinct.java Fri Aug 18 18:03:35 2006
@@ -38,10 +38,6 @@
         _val = val;
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         return Collection.class;
     }
@@ -49,18 +45,12 @@
     public void setImplicitType(Class type) {
     }
 
-    public boolean hasVariables() {
-        return _val.hasVariables();
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
         if (candidate == null)
             candidate = Collections.EMPTY_LIST;
-        
         Collection arg = candidate instanceof Collection
             ? (Collection) candidate : Collections.singleton(candidate);
-
         return eval(arg, orig, ctx, params).iterator().next();
     }
 
@@ -68,6 +58,12 @@
         StoreContext ctx, Object[] params) {
         Collection args = _val.eval(candidates, orig, ctx, params);
         return new HashSet(args);
+    }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val.acceptVisit(visitor);
+        visitor.exit(this);
     }
 }
 

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Exp.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Exp.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Exp.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Exp.java Fri Aug 18 18:03:35 2006
@@ -71,4 +71,9 @@
         Object[] params) {
         return true;
 	}
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        visitor.exit(this);
+    }
 }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Expression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Expression.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Expression.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Expression.java Fri Aug 18 18:03:35 2006
@@ -16,11 +16,15 @@
 package org.apache.openjpa.kernel.exps;
 
 /**
- * Marker interface for a set of conditions that must be met for the query
+ * Interface for a set of conditions that must be met for the query
  * to be true.
  *
  * @author Abe White
  */
 public interface Expression {
 
+    /**
+     * Accept a visit from a tree visitor.
+     */
+    public void acceptVisit(ExpressionVisitor visitor);
 }

Added: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ExpressionVisitor.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ExpressionVisitor.java?rev=432778&view=auto
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ExpressionVisitor.java (added)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ExpressionVisitor.java Fri Aug 18 18:03:35 2006
@@ -0,0 +1,31 @@
+package org.apache.openjpa.kernel.exps;
+
+
+/**
+ * Visits nodes of a query expression tree.
+ *
+ * @author Abe White
+ */
+public interface ExpressionVisitor {
+
+    /**
+     * Enter an expression.  The expression will then invoke visits on its
+     * components.
+     */
+    public void enter(Expression exp);
+
+    /**
+     * Leave an expression.
+     */
+    public void exit(Expression exp);
+
+    /**
+     * Enter a value.  The value will then invoke visits on its components.
+     */
+    public void enter(Value val);
+
+    /**
+     * Leave a value.
+     */
+    public void exit(Value val);
+}

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Extension.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Extension.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Extension.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Extension.java Fri Aug 18 18:03:35 2006
@@ -39,10 +39,6 @@
         _arg = arg;
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         Class targetClass = (_target == null) ? null : _target.getType();
         return _listener.getType(targetClass, getArgTypes());
@@ -51,11 +47,6 @@
     public void setImplicitType(Class type) {
     }
 
-    public boolean hasVariables() {
-        return _target != null && _target.hasVariables()
-            || _arg != null && _arg.hasVariables();
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
         Object target = null;
@@ -85,6 +76,15 @@
         if (_arg instanceof Args)
             return (Object[]) arg;
         return new Object[]{ arg };
+    }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        if (_target != null)
+            _target.acceptVisit(visitor);
+        if (_arg != null)
+            _arg.acceptVisit(visitor);
+        visitor.exit(this);
     }
 }
 

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/GetObjectId.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/GetObjectId.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/GetObjectId.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/GetObjectId.java Fri Aug 18 18:03:35 2006
@@ -34,10 +34,6 @@
         _val = val;
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         return Object.class;
     }
@@ -45,12 +41,14 @@
     public void setImplicitType(Class type) {
     }
 
-    public boolean hasVariables() {
-        return _val.hasVariables();
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
         return ctx.getObjectId(_val.eval(candidate, orig, ctx, params));
+    }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val.acceptVisit(visitor);
+        visitor.exit(this);
     }
 }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/IndexOf.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/IndexOf.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/IndexOf.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/IndexOf.java Fri Aug 18 18:03:35 2006
@@ -38,10 +38,6 @@
         _args = args;
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         return int.class;
     }
@@ -49,10 +45,6 @@
     public void setImplicitType(Class type) {
     }
 
-    public boolean hasVariables() {
-        return _val.hasVariables() || _args.hasVariables();
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
         Object str = _val.eval(candidate, orig, ctx, params);
@@ -65,5 +57,12 @@
         } else
             idx = str.toString().indexOf(arg.toString());
         return Numbers.valueOf(idx);
+    }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val.acceptVisit(visitor);
+        _args.acceptVisit(visitor);
+        visitor.exit(this);
     }
 }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/InstanceofExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/InstanceofExpression.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/InstanceofExpression.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/InstanceofExpression.java Fri Aug 18 18:03:35 2006
@@ -57,4 +57,10 @@
         Object o = (c == null || c.isEmpty()) ? null : c.iterator().next();
         return _cls.isInstance(o);
 	}
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val.acceptVisit(visitor);
+        visitor.exit(this);
+    }
 }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/IsEmptyExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/IsEmptyExpression.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/IsEmptyExpression.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/IsEmptyExpression.java Fri Aug 18 18:03:35 2006
@@ -63,5 +63,11 @@
             return ((Map) obj).isEmpty();
         return false;
     }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val.acceptVisit(visitor);
+        visitor.exit(this);
+    }
 }
 

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Lit.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Lit.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Lit.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Lit.java Fri Aug 18 18:03:35 2006
@@ -38,10 +38,6 @@
         _ptype = ptype;
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Object getValue() {
         return _val;
     }
@@ -64,10 +60,6 @@
 
     public void setImplicitType(Class type) {
         _val = Filters.convert(_val, type);
-    }
-
-    public boolean hasVariables() {
-        return false;
     }
 
     protected Object eval(Object candidate, Object orig,

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/MathVal.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/MathVal.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/MathVal.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/MathVal.java Fri Aug 18 18:03:35 2006
@@ -37,10 +37,6 @@
         _val2 = val2;
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         Class c1 = _val1.getType();
         Class c2 = _val2.getType();
@@ -50,10 +46,6 @@
     public void setImplicitType(Class type) {
     }
 
-    public boolean hasVariables() {
-        return _val1.hasVariables() || _val2.hasVariables();
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
         Object o1 = _val1.eval(candidate, orig, ctx, params);
@@ -66,4 +58,11 @@
      */
     protected abstract Object operate(Object o1, Class c1, Object o2,
         Class c2);
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val1.acceptVisit(visitor);
+        _val2.acceptVisit(visitor);
+        visitor.exit(this);
+    }
 }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/NotExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/NotExpression.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/NotExpression.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/NotExpression.java Fri Aug 18 18:03:35 2006
@@ -45,5 +45,11 @@
         Object[] params) {
         return !_exp.evaluate(candidates, ctx, params);
     }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _exp.acceptVisit(visitor);
+        visitor.exit(this);
+    }
 }
 

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Null.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Null.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Null.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Null.java Fri Aug 18 18:03:35 2006
@@ -25,14 +25,6 @@
 class Null
     extends Val {
 
-    public boolean hasVariables() {
-        return false;
-    }
-
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         return Object.class;
     }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/OrExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/OrExpression.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/OrExpression.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/OrExpression.java Fri Aug 18 18:03:35 2006
@@ -49,5 +49,12 @@
         return _exp1.evaluate(candidates, ctx, params)
             || _exp2.evaluate(candidates, ctx, params);
     }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _exp1.acceptVisit(visitor);
+        _exp2.acceptVisit(visitor);
+        visitor.exit(this);
+    }
 }
 

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Param.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Param.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Param.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Param.java Fri Aug 18 18:03:35 2006
@@ -42,20 +42,12 @@
         return _name;
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         return _type;
     }
 
     public void setImplicitType(Class type) {
         _type = type;
-    }
-
-    public boolean hasVariables() {
-        return false;
     }
 
     public void setIndex(int index) {

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Path.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Path.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Path.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Path.java Fri Aug 18 18:03:35 2006
@@ -19,6 +19,7 @@
 
 /**
  * A path represents a traversal into fields of a candidate object.
+ * Equivalent paths should compare equal.
  *
  * @author Abe White
  */

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/StringLength.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/StringLength.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/StringLength.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/StringLength.java Fri Aug 18 18:03:35 2006
@@ -36,10 +36,6 @@
         _val = val;
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         if (_cast != null)
             return _cast;
@@ -50,10 +46,6 @@
         _cast = type;
     }
 
-    public boolean hasVariables() {
-        return _val.hasVariables();
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
         Object eval = _val.eval(candidate, orig, ctx, params);
@@ -61,6 +53,12 @@
             return Numbers.valueOf(0);
 
         return Numbers.valueOf(eval.toString().length());
+    }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val.acceptVisit(visitor);
+        visitor.exit(this);
     }
 }
 

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/SubQ.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/SubQ.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/SubQ.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/SubQ.java Fri Aug 18 18:03:35 2006
@@ -46,20 +46,12 @@
         long endIdx) {
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         return _type;
     }
 
     public void setImplicitType(Class type) {
         _type = type;
-    }
-
-    public boolean hasVariables() {
-        return false;
     }
 
     protected Object eval(Object candidate, Object orig,

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Substring.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Substring.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Substring.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Substring.java Fri Aug 18 18:03:35 2006
@@ -37,10 +37,6 @@
         _args = args;
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         return String.class;
     }
@@ -48,10 +44,6 @@
     public void setImplicitType(Class type) {
     }
 
-    public boolean hasVariables() {
-        return _val.hasVariables() || _args.hasVariables();
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
         Object str = _val.eval(candidate, orig, ctx, params);
@@ -62,5 +54,12 @@
                 ((Number) args[1]).intValue());
         }
         return str.toString().substring(((Number) arg).intValue());
+    }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val.acceptVisit(visitor);
+        _args.acceptVisit(visitor);
+        visitor.exit(this);
     }
 }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/This.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/This.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/This.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/This.java Fri Aug 18 18:03:35 2006
@@ -25,14 +25,6 @@
 class This
     extends Val {
 
-    public boolean hasVariables() {
-        return false;
-    }
-
-    public boolean isVariable() {
-        return false;
-    }
-
     public void setImplicitType(Class type) {
     }
 

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ToLowerCase.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ToLowerCase.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ToLowerCase.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ToLowerCase.java Fri Aug 18 18:03:35 2006
@@ -34,10 +34,6 @@
         _val = val;
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         return String.class;
     }
@@ -45,13 +41,14 @@
     public void setImplicitType(Class type) {
     }
 
-    public boolean hasVariables() {
-        return _val.hasVariables();
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
-        return _val.eval(candidate, orig, ctx, params).toString().
-            toLowerCase();
+        return _val.eval(candidate, orig, ctx, params).toString().toLowerCase();
+    }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val.acceptVisit(visitor);
+        visitor.exit(this);
     }
 }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ToUpperCase.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ToUpperCase.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ToUpperCase.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ToUpperCase.java Fri Aug 18 18:03:35 2006
@@ -34,10 +34,6 @@
         _val = val;
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         return String.class;
     }
@@ -45,13 +41,15 @@
     public void setImplicitType(Class type) {
     }
 
-    public boolean hasVariables() {
-        return _val.hasVariables();
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
         return _val.eval(candidate, orig, ctx, params).toString().
             toUpperCase();
+    }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val.acceptVisit(visitor);
+        visitor.exit(this);
     }
 }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Trim.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Trim.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Trim.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Trim.java Fri Aug 18 18:03:35 2006
@@ -38,10 +38,6 @@
         _where = where;
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         return String.class;
     }
@@ -49,20 +45,14 @@
     public void setImplicitType(Class type) {
     }
 
-    public boolean hasVariables() {
-        return _val.hasVariables();
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
         Object eval = _val.eval(candidate, orig, ctx, params);
-
         if (eval == null)
             return null;
 
         String toTrim = _trimChar.eval(candidate, orig, ctx, params).
             toString();
-
         String str = eval.toString();
 
         // null indicates both, TRUE indicates leading
@@ -76,8 +66,14 @@
             while (str.endsWith(toTrim))
                 str = str.substring(0, str.length() - toTrim.length());
         }
-
         return str;
+    }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val.acceptVisit(visitor);
+        _trimChar.acceptVisit(visitor);
+        visitor.exit(this);
     }
 }
 

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/UnaryMathVal.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/UnaryMathVal.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/UnaryMathVal.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/UnaryMathVal.java Fri Aug 18 18:03:35 2006
@@ -34,10 +34,6 @@
         _val = val;
     }
 
-    public boolean isVariable() {
-        return false;
-    }
-
     public Class getType() {
         return getType(_val.getType());
     }
@@ -45,10 +41,6 @@
     public void setImplicitType(Class type) {
     }
 
-    public boolean hasVariables() {
-        return _val.hasVariables();
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
         Object o1 = _val.eval(candidate, orig, ctx, params);
@@ -65,4 +57,10 @@
      * Return the result of this mathematical operation on the given value.
      */
     protected abstract Object operate(Object o, Class c);
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val.acceptVisit(visitor);
+        visitor.exit(this);
+    }
 }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/UnboundVariable.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/UnboundVariable.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/UnboundVariable.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/UnboundVariable.java Fri Aug 18 18:03:35 2006
@@ -58,10 +58,6 @@
         _val = value;
     }
 
-    public boolean hasVariables() {
-        return true;
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
         return _val;

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Val.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Val.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Val.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Val.java Fri Aug 18 18:03:35 2006
@@ -67,11 +67,6 @@
     }
 
     /**
-     * Return true if this value involves the use of variables.
-     */
-    public abstract boolean hasVariables();
-
-    /**
      * Return this value for the given candidate.
      */
     protected abstract Object eval(Object candidate, Object orig,
@@ -103,4 +98,13 @@
     public void setMetaData(ClassMetaData meta) {
         _meta = meta;
 	}
+
+    public boolean isVariable() {
+        return false;
+    }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        visitor.exit(this);
+    }
 }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ValExpression.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ValExpression.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ValExpression.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ValExpression.java Fri Aug 18 18:03:35 2006
@@ -48,4 +48,10 @@
         Object o = (c == null || c.isEmpty()) ? null : c.iterator().next();
         return o != null && ((Boolean) o).booleanValue();
     }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val.acceptVisit(visitor);
+        visitor.exit(this);
+    }
 }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Value.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Value.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Value.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/Value.java Fri Aug 18 18:03:35 2006
@@ -52,4 +52,9 @@
      * Associate a persistent type with this value.
      */
     public void setMetaData(ClassMetaData meta);
+
+    /**
+     * Accept a visit from a tree visitor.
+     */
+    public void acceptVisit(ExpressionVisitor visitor);
 }

Modified: incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ValuePath.java
URL: http://svn.apache.org/viewvc/incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ValuePath.java?rev=432778&r1=432777&r2=432778&view=diff
==============================================================================
--- incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ValuePath.java (original)
+++ incubator/openjpa/trunk/openjpa-kernel/src/main/java/org/apache/openjpa/kernel/exps/ValuePath.java Fri Aug 18 18:03:35 2006
@@ -38,15 +38,17 @@
         return _val.getType();
     }
 
-    public boolean hasVariables() {
-        return _val.hasVariables();
-    }
-
     protected Object eval(Object candidate, Object orig,
         StoreContext ctx, Object[] params) {
         // evaluate with the value's value
         return super.eval(_val.eval(candidate, orig, ctx, params), orig,
             ctx, params);
+    }
+
+    public void acceptVisit(ExpressionVisitor visitor) {
+        visitor.enter(this);
+        _val.acceptVisit(visitor);
+        visitor.exit(this);
     }
 }