You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@activemq.apache.org by js...@apache.org on 2007/04/24 11:54:44 UTC
svn commit: r531854 - in /activemq/camel/trunk:
camel-core/src/main/java/org/apache/camel/
camel-core/src/main/java/org/apache/camel/builder/
camel-core/src/main/java/org/apache/camel/builder/xpath/
camel-core/src/main/java/org/apache/camel/component/m...
Author: jstrachan
Date: Tue Apr 24 02:54:42 2007
New Revision: 531854
URL: http://svn.apache.org/viewvc?view=rev&rev=531854
Log:
added the ability to add assertions to predicates for easier testing of routing rules; such as with the MockEndpoint
Added:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/BinaryPredicateSupport.java (with props)
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/PredicateSupport.java (with props)
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Predicate.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xpath/XPathBuilder.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
activemq/camel/trunk/camel-josql/src/main/java/org/apache/camel/builder/sql/SqlBuilder.java
activemq/camel/trunk/camel-saxon/src/main/java/org/apache/camel/builder/saxon/XQueryBuilder.java
activemq/camel/trunk/camel-script/src/main/java/org/apache/camel/builder/script/ScriptBuilder.java
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Predicate.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Predicate.java?view=diff&rev=531854&r1=531853&r2=531854
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Predicate.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/Predicate.java Tue Apr 24 02:54:42 2007
@@ -31,4 +31,16 @@
* @return true if the predicate matches
*/
boolean matches(E exchange);
+
+ /**
+ * Allows this predicate to be used nicely in testing to generate
+ * a nicely formatted exception and message if this predicate does not
+ * match for the given exchange.
+ *
+ * @param text the description to use in the exception message
+ * @param exchange the exchange to evaluate the expression on
+ * @throws AssertionError if the predicate does not match
+ */
+ void assertMatches(String text, E exchange) throws AssertionError;
+
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java?view=diff&rev=531854&r1=531853&r2=531854
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/PredicateBuilder.java Tue Apr 24 02:54:42 2007
@@ -16,9 +16,12 @@
*/
package org.apache.camel.builder;
+import static org.apache.camel.util.ObjectHelper.compare;
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
+import org.apache.camel.impl.PredicateSupport;
+import org.apache.camel.impl.BinaryPredicateSupport;
import org.apache.camel.util.ObjectHelper;
import static org.apache.camel.util.ObjectHelper.notNull;
@@ -37,7 +40,7 @@
public static <E extends Exchange> Predicate<E> and(final Predicate<E> left, final Predicate<E> right) {
notNull(left, "left");
notNull(right, "right");
- return new Predicate<E>() {
+ return new PredicateSupport<E>() {
public boolean matches(E exchange) {
return left.matches(exchange) && right.matches(exchange);
}
@@ -55,7 +58,7 @@
public static <E extends Exchange> Predicate<E> or(final Predicate<E> left, final Predicate<E> right) {
notNull(left, "left");
notNull(right, "right");
- return new Predicate<E>() {
+ return new PredicateSupport<E>() {
public boolean matches(E exchange) {
return left.matches(exchange) || right.matches(exchange);
}
@@ -68,176 +71,122 @@
}
public static <E extends Exchange> Predicate<E> isEqualTo(final Expression<E> left, final Expression<E> right) {
- notNull(left, "left");
- notNull(right, "right");
+ return new BinaryPredicateSupport<E>(left, right) {
- return new Predicate<E>() {
- public boolean matches(E exchange) {
- Object value1 = left.evaluate(exchange);
- Object value2 = right.evaluate(exchange);
- return ObjectHelper.equals(value1, value2);
+ protected boolean matches(E exchange, Object leftValue, Object rightValue) {
+ return ObjectHelper.equals(leftValue, rightValue);
}
- @Override
- public String toString() {
- return left + " == " + right;
+ protected String getOperationText() {
+ return "==";
}
};
}
public static <E extends Exchange> Predicate<E> isNotEqualTo(final Expression<E> left, final Expression<E> right) {
- notNull(left, "left");
- notNull(right, "right");
+ return new BinaryPredicateSupport<E>(left, right) {
- return new Predicate<E>() {
- public boolean matches(E exchange) {
- Object value1 = left.evaluate(exchange);
- Object value2 = right.evaluate(exchange);
- return !ObjectHelper.equals(value1, value2);
+ protected boolean matches(E exchange, Object leftValue, Object rightValue) {
+ return !ObjectHelper.equals(leftValue, rightValue);
}
- @Override
- public String toString() {
- return left + " != " + right;
+ protected String getOperationText() {
+ return "==";
}
};
}
public static <E extends Exchange> Predicate<E> isLessThan(final Expression<E> left, final Expression<E> right) {
- notNull(left, "left");
- notNull(right, "right");
+ return new BinaryPredicateSupport<E>(left, right) {
- return new Predicate<E>() {
- public boolean matches(E exchange) {
- Object value1 = left.evaluate(exchange);
- Object value2 = right.evaluate(exchange);
- return ObjectHelper.compare(value1, value2) < 0;
+ protected boolean matches(E exchange, Object leftValue, Object rightValue) {
+ return compare(leftValue, rightValue) < 0;
}
- @Override
- public String toString() {
- return left + " < " + right;
+ protected String getOperationText() {
+ return "<";
}
};
}
public static <E extends Exchange> Predicate<E> isLessThanOrEqualTo(final Expression<E> left, final Expression<E> right) {
- notNull(left, "left");
- notNull(right, "right");
+ return new BinaryPredicateSupport<E>(left, right) {
- return new Predicate<E>() {
- public boolean matches(E exchange) {
- Object value1 = left.evaluate(exchange);
- Object value2 = right.evaluate(exchange);
- return ObjectHelper.compare(value1, value2) <= 0;
+ protected boolean matches(E exchange, Object leftValue, Object rightValue) {
+ return compare(leftValue, rightValue) <= 0;
}
- @Override
- public String toString() {
- return left + " <= " + right;
+ protected String getOperationText() {
+ return "<=";
}
};
}
public static <E extends Exchange> Predicate<E> isGreaterThan(final Expression<E> left, final Expression<E> right) {
- notNull(left, "left");
- notNull(right, "right");
+ return new BinaryPredicateSupport<E>(left, right) {
- return new Predicate<E>() {
- public boolean matches(E exchange) {
- Object value1 = left.evaluate(exchange);
- Object value2 = right.evaluate(exchange);
- return ObjectHelper.compare(value1, value2) > 0;
+ protected boolean matches(E exchange, Object leftValue, Object rightValue) {
+ return compare(leftValue, rightValue) > 0;
}
- @Override
- public String toString() {
- return left + " > " + right;
+ protected String getOperationText() {
+ return ">";
}
};
}
public static <E extends Exchange> Predicate<E> isGreaterThanOrEqualTo(final Expression<E> left, final Expression<E> right) {
- notNull(left, "left");
- notNull(right, "right");
+ return new BinaryPredicateSupport<E>(left, right) {
- return new Predicate<E>() {
- public boolean matches(E exchange) {
- Object value1 = left.evaluate(exchange);
- Object value2 = right.evaluate(exchange);
- return ObjectHelper.compare(value1, value2) >= 0;
+ protected boolean matches(E exchange, Object leftValue, Object rightValue) {
+ return compare(leftValue, rightValue) < 0;
}
- @Override
- public String toString() {
- return left + " >= " + right;
+ protected String getOperationText() {
+ return ">=";
}
};
}
- public static <E extends Exchange> Predicate<E> isInstanceOf(final Expression<E> expression, final Class type) {
- notNull(expression, "expression");
- notNull(type, "type");
+ public static <E extends Exchange> Predicate<E> contains(final Expression<E> left, final Expression<E> right) {
+ return new BinaryPredicateSupport<E>(left, right) {
- return new Predicate<E>() {
- public boolean matches(E exchange) {
- Object value = expression.evaluate(exchange);
- return type.isInstance(value);
+ protected boolean matches(E exchange, Object leftValue, Object rightValue) {
+ return ObjectHelper.contains(leftValue, rightValue);
}
- @Override
- public String toString() {
- return expression + " instanceof " + type.getName();
+ protected String getOperationText() {
+ return "contains";
}
};
}
public static <E extends Exchange> Predicate<E> isNull(final Expression<E> expression) {
- notNull(expression, "expression");
-
- return new Predicate<E>() {
- public boolean matches(E exchange) {
- Object value = expression.evaluate(exchange);
- return value == null;
- }
-
- @Override
- public String toString() {
- return expression + " == null";
- }
- };
+ return isEqualTo(expression, (Expression<E>) ExpressionBuilder.constantExpression(null));
}
public static <E extends Exchange> Predicate<E> isNotNull(final Expression<E> expression) {
+ return isNotEqualTo(expression, (Expression<E>) ExpressionBuilder.constantExpression(null));
+ }
+
+ public static <E extends Exchange> Predicate<E> isInstanceOf(final Expression<E> expression, final Class type) {
notNull(expression, "expression");
+ notNull(type, "type");
- return new Predicate<E>() {
+ return new PredicateSupport<E>() {
public boolean matches(E exchange) {
Object value = expression.evaluate(exchange);
- return value != null;
+ return type.isInstance(value);
}
@Override
public String toString() {
- return expression + " != null";
- }
- };
- }
-
- public static <E extends Exchange> Predicate<E> contains(final Expression<E> left, final Expression<E> right) {
- notNull(left, "left");
- notNull(right, "right");
-
- return new Predicate<E>() {
- public boolean matches(E exchange) {
- Object value1 = left.evaluate(exchange);
- Object value2 = right.evaluate(exchange);
- return ObjectHelper.contains(value1, value2);
+ return expression + " instanceof " + type.getName();
}
@Override
- public String toString() {
- return left + ".contains(" + right + ")";
+ protected String assertionFailureMessage(E exchange) {
+ return super.assertionFailureMessage(exchange) + " for <" + expression.evaluate(exchange) + ">";
}
};
}
@@ -265,7 +214,7 @@
notNull(expression, "expression");
notNull(pattern, "pattern");
- return new Predicate<E>() {
+ return new PredicateSupport<E>() {
public boolean matches(E exchange) {
Object value = expression.evaluate(exchange);
if (value != null) {
@@ -279,6 +228,12 @@
public String toString() {
return expression + ".matches(" + pattern + ")";
}
+
+ @Override
+ protected String assertionFailureMessage(E exchange) {
+ return super.assertionFailureMessage(exchange) + " for <" + expression.evaluate(exchange) + ">";
+ }
+
};
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xpath/XPathBuilder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xpath/XPathBuilder.java?view=diff&rev=531854&r1=531853&r2=531854
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xpath/XPathBuilder.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/xpath/XPathBuilder.java Tue Apr 24 02:54:42 2007
@@ -17,6 +17,7 @@
*/
package org.apache.camel.builder.xpath;
+import static org.apache.camel.converter.ObjectConverter.toBoolean;
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
@@ -66,7 +67,15 @@
}
public boolean matches(E exchange) {
- return ObjectConverter.toBoolean(evaluateAs(exchange, XPathConstants.BOOLEAN));
+ Object booleanResult = evaluateAs(exchange, XPathConstants.BOOLEAN);
+ return toBoolean(booleanResult);
+ }
+
+ public void assertMatches(String text, E exchange) throws AssertionError {
+ Object booleanResult = evaluateAs(exchange, XPathConstants.BOOLEAN);
+ if (!toBoolean(booleanResult)) {
+ throw new AssertionError(this + " failed on " + exchange + " as returned <" + booleanResult + ">");
+ }
}
public Object evaluate(E exchange) {
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java?view=diff&rev=531854&r1=531853&r2=531854
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/AssertionClause.java Tue Apr 24 02:54:42 2007
@@ -117,8 +117,7 @@
protected Predicate<E> onNewPredicate(Predicate<E> predicate) {
- //addPredicate(predicate);
- predicates.add(predicate);
+ addPredicate(predicate);
return predicate;
}
}
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java?view=diff&rev=531854&r1=531853&r2=531854
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/converter/ObjectConverter.java Tue Apr 24 02:54:42 2007
@@ -23,6 +23,7 @@
import java.util.Collections;
import java.util.Collection;
import java.util.Arrays;
+import java.util.List;
/**
* Some core java.lang based
@@ -66,4 +67,5 @@
}
return false;
}
+
}
Added: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/BinaryPredicateSupport.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/BinaryPredicateSupport.java?view=auto&rev=531854
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/BinaryPredicateSupport.java (added)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/BinaryPredicateSupport.java Tue Apr 24 02:54:42 2007
@@ -0,0 +1,70 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.impl;
+
+import org.apache.camel.Predicate;
+import org.apache.camel.Exchange;
+import org.apache.camel.Expression;
+import org.apache.camel.util.ObjectHelper;
+import static org.apache.camel.util.ObjectHelper.notNull;
+
+/**
+ * A useful base class for {@link Predicate} implementations
+ *
+ * @version $Revision: 1.1 $
+ */
+public abstract class BinaryPredicateSupport<E extends Exchange> implements Predicate<E> {
+
+ private final Expression<E> left;
+ private final Expression<E> right;
+
+ protected BinaryPredicateSupport(Expression<E> left, Expression<E> right) {
+ notNull(left, "left");
+ notNull(right, "right");
+
+ this.left = left;
+ this.right = right;
+ }
+
+ @Override
+ public String toString() {
+ return left + " " + getOperationText() + " " + right;
+ }
+
+ public boolean matches(E exchange) {
+ Object leftValue = left.evaluate(exchange);
+ Object rightValue = right.evaluate(exchange);
+ return matches(exchange, leftValue, rightValue);
+ }
+
+ public void assertMatches(String text, E exchange) {
+ Object leftValue = left.evaluate(exchange);
+ Object rightValue = right.evaluate(exchange);
+ if (!matches(exchange, leftValue, rightValue)) {
+ throw new AssertionError(assertionFailureMessage(exchange, leftValue, rightValue));
+ }
+ }
+
+ protected abstract boolean matches(E exchange, Object leftValue, Object rightValue);
+
+ protected abstract String getOperationText();
+
+ protected String assertionFailureMessage(E exchange, Object leftValue, Object rightValue) {
+ return this + " failed on " + exchange + " with left value <" + leftValue + "> right value <" + rightValue + ">";
+ }
+}
Propchange: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/BinaryPredicateSupport.java
------------------------------------------------------------------------------
svn:eol-style = native
Added: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/PredicateSupport.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/PredicateSupport.java?view=auto&rev=531854
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/PredicateSupport.java (added)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/PredicateSupport.java Tue Apr 24 02:54:42 2007
@@ -0,0 +1,39 @@
+/**
+ *
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.impl;
+
+import org.apache.camel.Predicate;
+import org.apache.camel.Exchange;
+
+/**
+ * A useful base class for {@link Predicate} implementations
+ *
+ * @version $Revision: 1.1 $
+ */
+public abstract class PredicateSupport<E extends Exchange> implements Predicate<E> {
+
+ public void assertMatches(String text, E exchange) {
+ if (! matches(exchange)) {
+ throw new AssertionError(assertionFailureMessage(exchange));
+ }
+ }
+
+ protected String assertionFailureMessage(E exchange) {
+ return this + " failed on " + exchange;
+ }
+}
Propchange: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/PredicateSupport.java
------------------------------------------------------------------------------
svn:eol-style = native
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java?view=diff&rev=531854&r1=531853&r2=531854
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/util/ObjectHelper.java Tue Apr 24 02:54:42 2007
@@ -133,6 +133,29 @@
}
}
+
+ /**
+ * Returns the predicate matching boolean on a {@link List} result set
+ * where if the first element is a boolean its value is used
+ * otherwise this method returns true if the collection is not empty
+ *
+ * @returns true if the first element is a boolean and its value is true or if the list is non empty
+ */
+ public static boolean matches(List list) {
+ if (!list.isEmpty()) {
+ Object value = list.get(0);
+ if (value instanceof Boolean) {
+ Boolean flag = (Boolean) value;
+ return flag.booleanValue();
+ }
+ else {
+ // lets assume non-empty results are true
+ return true;
+ }
+ }
+ return false;
+ }
+
public static boolean isNotNullOrBlank(String text) {
return text != null && text.trim().length() > 0;
}
Modified: activemq/camel/trunk/camel-josql/src/main/java/org/apache/camel/builder/sql/SqlBuilder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-josql/src/main/java/org/apache/camel/builder/sql/SqlBuilder.java?view=diff&rev=531854&r1=531853&r2=531854
==============================================================================
--- activemq/camel/trunk/camel-josql/src/main/java/org/apache/camel/builder/sql/SqlBuilder.java (original)
+++ activemq/camel/trunk/camel-josql/src/main/java/org/apache/camel/builder/sql/SqlBuilder.java Tue Apr 24 02:54:42 2007
@@ -21,6 +21,7 @@
import org.apache.camel.Message;
import org.apache.camel.Predicate;
import org.apache.camel.RuntimeExpressionException;
+import org.apache.camel.util.ObjectHelper;
import org.josql.Query;
import org.josql.QueryExecutionException;
import org.josql.QueryParseException;
@@ -51,18 +52,14 @@
public boolean matches(E exchange) {
List list = evaluateQuery(exchange);
- if (!list.isEmpty()) {
- Object value = list.get(0);
- if (value instanceof Boolean) {
- Boolean flag = (Boolean) value;
- return flag.booleanValue();
- }
- else {
- // lets assume non-empty results are true
- return true;
- }
+ return matches(exchange, list);
+ }
+
+ public void assertMatches(String text, E exchange) throws AssertionError {
+ List list = evaluateQuery(exchange);
+ if (!matches(exchange, list)) {
+ throw new AssertionError(this + " failed on " + exchange + " as found " + list);
}
- return false;
}
// Builder API
@@ -103,6 +100,10 @@
// Implementation methods
//-----------------------------------------------------------------------
+ protected boolean matches(E exchange, List list) {
+ return ObjectHelper.matches(list);
+ }
+
protected List evaluateQuery(E exchange) {
configureQuery(exchange);
Message in = exchange.getIn();
Modified: activemq/camel/trunk/camel-saxon/src/main/java/org/apache/camel/builder/saxon/XQueryBuilder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-saxon/src/main/java/org/apache/camel/builder/saxon/XQueryBuilder.java?view=diff&rev=531854&r1=531853&r2=531854
==============================================================================
--- activemq/camel/trunk/camel-saxon/src/main/java/org/apache/camel/builder/saxon/XQueryBuilder.java (original)
+++ activemq/camel/trunk/camel-saxon/src/main/java/org/apache/camel/builder/saxon/XQueryBuilder.java Tue Apr 24 02:54:42 2007
@@ -27,6 +27,7 @@
import org.apache.camel.Expression;
import org.apache.camel.Predicate;
import org.apache.camel.RuntimeExpressionException;
+import org.apache.camel.util.ObjectHelper;
import org.apache.camel.converter.jaxp.BytesSource;
import org.apache.camel.converter.jaxp.XmlConverter;
import org.apache.camel.converter.jaxp.StringSource;
@@ -61,6 +62,11 @@
private ResultFormat resultsFormat = ResultFormat.DOM;
private Properties properties = new Properties();
+ @Override
+ public String toString() {
+ return "XQuery[" + expression + "]";
+ }
+
public Object evaluate(E exchange) {
try {
switch (resultsFormat) {
@@ -123,14 +129,25 @@
public boolean matches(E exchange) {
try {
List list = evaluateAsList(exchange);
- System.out.println("Found list: " + list);
- return false;
+ return matches(exchange, list);
}
catch (Exception e) {
throw new RuntimeExpressionException(e);
}
}
+ public void assertMatches(String text, E exchange) throws AssertionError {
+ try {
+ List list = evaluateAsList(exchange);
+ if (!matches(exchange, list)) {
+ throw new AssertionError(this + " failed on " + exchange + " as evaluated: " + list);
+ }
+ }
+ catch (Exception e) {
+ throw new AssertionError(e);
+ }
+ }
+
// Builder methods
//-------------------------------------------------------------------------
public static <E extends Exchange> XQueryBuilder<E> xquery(final String queryText) {
@@ -307,5 +324,9 @@
protected void clearBuilderReferences() {
staticQueryContext = null;
configuration = null;
+ }
+
+ protected boolean matches(E exchange, List results) {
+ return ObjectHelper.matches(results);
}
}
Modified: activemq/camel/trunk/camel-script/src/main/java/org/apache/camel/builder/script/ScriptBuilder.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-script/src/main/java/org/apache/camel/builder/script/ScriptBuilder.java?view=diff&rev=531854&r1=531853&r2=531854
==============================================================================
--- activemq/camel/trunk/camel-script/src/main/java/org/apache/camel/builder/script/ScriptBuilder.java (original)
+++ activemq/camel/trunk/camel-script/src/main/java/org/apache/camel/builder/script/ScriptBuilder.java Tue Apr 24 02:54:42 2007
@@ -70,7 +70,15 @@
}
public boolean matches(E exchange) {
- return ObjectConverter.toBoolean(evaluateScript(exchange));
+ Object scriptValue = evaluateScript(exchange);
+ return matches(exchange, scriptValue);
+ }
+
+ public void assertMatches(String text, E exchange) throws AssertionError {
+ Object scriptValue = evaluateScript(exchange);
+ if (!matches(exchange, scriptValue)) {
+ throw new AssertionError(this + " failed on " + exchange + " as script returned <" + scriptValue + ">");
+ }
}
public void process(E exchange) {
@@ -380,6 +388,11 @@
}
}
}
+
+ protected boolean matches(E exchange, Object scriptValue) {
+ return ObjectConverter.toBoolean(scriptValue);
+ }
+
protected ScriptEngine createScriptEngine() {
ScriptEngineManager manager = new ScriptEngineManager();
return manager.getEngineByName(scriptEngineName);