Author: janstey
Date: Thu Jul 23 14:38:52 2009
New Revision: 797087
URL: http://svn.apache.org/viewvc?rev=797087&view=rev
Log:
CAMEL-1848 - add support to expect expressions/predicates on mock endpoint
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/BatchProcessor.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/aggregate/DefaultAggregationCollection.java
camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java?rev=797087&r1=797086&r2=797087&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.java
Thu Jul 23 14:38:52 2009
@@ -38,6 +38,7 @@
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
import org.apache.camel.Message;
+import org.apache.camel.Predicate;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
import org.apache.camel.builder.ExpressionClause;
@@ -319,12 +320,27 @@
public void run() {
assertTrue("No header with name " + headerName + " found.",
actualHeader != null);
- Object actualValue =
getCamelContext().getTypeConverter().convertTo(actualHeader.getClass(),
headerValue);
- assertEquals("Header of message", actualValue, actualHeader);
+ Object actualValue;
+ if (actualHeader instanceof Expression) {
+ actualValue =
((Expression)actualHeader).evaluate(mostRecentExchange(),
headerValue.getClass());
+ } else if (actualHeader instanceof Predicate) {
+ actualValue =
((Predicate)actualHeader).matches(mostRecentExchange());
+ } else {
+ actualValue =
getCamelContext().getTypeConverter().convertTo(headerValue.getClass(),
actualHeader);
+ assertTrue("There is no type conversion possible from " +
actualHeader.getClass().getName()
+ + " to " + headerValue.getClass().getName(),
actualValue != null);
+ }
+ assertEquals("Header of message", headerValue, actualValue);
}
+
+
});
}
+ private Exchange mostRecentExchange() {
+ return receivedExchanges.get(receivedExchanges.size() - 1);
+ }
+
/**
* Adds an expectation that the given property name & value are received
by this endpoint
*/
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/BatchProcessor.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/BatchProcessor.java?rev=797087&r1=797086&r2=797087&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/BatchProcessor.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/BatchProcessor.java
Thu Jul 23 14:38:52 2009
@@ -102,7 +102,7 @@
*/
public void setBatchSize(int batchSize) {
// setting batch size to 0 or negative is like disabling it, so we set
it as the max value
- // as the code logic is dependt on a batch size having 1..n value
+ // as the code logic is dependent on a batch size having 1..n value
if (batchSize <= 0) {
LOG.debug("Disabling batch size, will only be triggered by
timeout");
this.batchSize = Integer.MAX_VALUE;
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/aggregate/DefaultAggregationCollection.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/aggregate/DefaultAggregationCollection.java?rev=797087&r1=797086&r2=797087&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/aggregate/DefaultAggregationCollection.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/aggregate/DefaultAggregationCollection.java
Thu Jul 23 14:38:52 2009
@@ -72,7 +72,7 @@
LOG.trace("Evaluated expression: " + correlationExpression + " as
correlation key: " + correlationKey);
}
- // TODO: correlationKey evalutated to null should be skipped by default
+ // TODO: correlationKey evaluated to null should be skipped by default
Exchange oldExchange = aggregated.get(correlationKey);
Exchange newExchange = exchange;
Modified:
camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java?rev=797087&r1=797086&r2=797087&view=diff
==============================================================================
---
camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java
(original)
+++
camel/trunk/camel-core/src/test/java/org/apache/camel/component/mock/MockEndpointTest.java
Thu Jul 23 14:38:52 2009
@@ -21,7 +21,9 @@
import org.apache.camel.ContextTestSupport;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.builder.xml.XPathBuilder;
import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.model.language.XPathExpression;
/**
* @version $Revision$
@@ -176,6 +178,15 @@
resultEndpoint.assertIsNotSatisfied();
}
+ public void testExpressionExpectationOfHeader() throws
InterruptedException {
+ MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
+ resultEndpoint.reset();
+
+ resultEndpoint.expectedHeaderReceived("number", 123);
+ template.sendBodyAndHeader("direct:a", "<foo><id>123</id></foo>",
"number", XPathBuilder.xpath("/foo/id", Integer.class));
+ resultEndpoint.assertIsSatisfied();
+ }
+
public void testAscending() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectsAscending().body();
@@ -185,7 +196,7 @@
assertMockEndpointsSatisfied();
}
- public void testAscendingFaied() throws Exception {
+ public void testAscendingFailed() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectsAscending().body();
mock.expectsAscending().header("counter");