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