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


Reply via email to