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