You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2011/04/30 12:44:11 UTC

svn commit: r1098096 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/builder/ main/java/org/apache/camel/component/mock/ test/java/org/apache/camel/component/mock/

Author: davsclaus
Date: Sat Apr 30 10:44:10 2011
New Revision: 1098096

URL: http://svn.apache.org/viewvc?rev=1098096&view=rev
Log:
Added expectedExchangePattern to mock, to make it easier to check for expected MEPs when unit testing.

Modified:
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
    camel/trunk/camel-core/src/main/java/org/apache/camel/component/mock/MockEndpoint.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/builder/ExpressionBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java?rev=1098096&r1=1098095&r2=1098096&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionBuilder.java Sat Apr 30 10:44:10 2011
@@ -256,6 +256,25 @@ public final class ExpressionBuilder {
     }
 
     /**
+     * Returns an expression for the exchange pattern
+     *
+     * @see org.apache.camel.Exchange#getPattern()
+     * @return an expression object which will return the exchange pattern
+     */
+    public static Expression exchangePatternExpression() {
+        return new ExpressionAdapter() {
+            public Object evaluate(Exchange exchange) {
+                return exchange.getPattern();
+            }
+
+            @Override
+            public String toString() {
+                return "exchangePattern";
+            }
+        };
+    }   
+    
+    /**
      * Returns an expression for an exception set on the exchange
      *
      * @see Exchange#getException()
@@ -276,8 +295,8 @@ public final class ExpressionBuilder {
                 return "exchangeException";
             }
         };
-    }   
-    
+    }
+
     /**
      * Returns an expression for an exception set on the exchange
      * <p/>

Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java?rev=1098096&r1=1098095&r2=1098096&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/ExpressionClauseSupport.java Sat Apr 30 10:44:10 2011
@@ -19,6 +19,7 @@ package org.apache.camel.builder;
 import java.util.Map;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
 import org.apache.camel.builder.xml.Namespaces;
 import org.apache.camel.model.language.ExpressionDefinition;
@@ -143,6 +144,13 @@ public class ExpressionClauseSupport<T> 
     }
 
     /**
+     * An expression of the exchange pattern
+     */
+    public T exchangePattern() {
+        return expression(ExpressionBuilder.exchangePatternExpression());
+    }
+
+    /**
      * An expression of an exchange property of the given name
      */
     public T property(String name) {

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=1098096&r1=1098095&r2=1098096&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 Sat Apr 30 10:44:10 2011
@@ -36,6 +36,7 @@ import org.apache.camel.Component;
 import org.apache.camel.Consumer;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.Expression;
 import org.apache.camel.Handler;
 import org.apache.camel.Message;
@@ -666,6 +667,17 @@ public class MockEndpoint extends Defaul
     }
 
     /**
+     * Adds an expectation that messages received should have the given exchange pattern
+     */
+    public void expectedExchangePattern(final ExchangePattern exchangePattern) {
+        expectedMessagesMatches(new Predicate() {
+            public boolean matches(Exchange exchange) {
+                return exchange.getPattern().equals(exchangePattern);
+            }
+        });
+    }
+
+    /**
      * Adds an expectation that messages received should have ascending values
      * of the given expression such as a user generated counter value
      */

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=1098096&r1=1098095&r2=1098096&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 Sat Apr 30 10:44:10 2011
@@ -22,6 +22,7 @@ import java.util.concurrent.atomic.Atomi
 
 import org.apache.camel.ContextTestSupport;
 import org.apache.camel.Exchange;
+import org.apache.camel.ExchangePattern;
 import org.apache.camel.Processor;
 import org.apache.camel.builder.RouteBuilder;
 import org.apache.camel.builder.xml.XPathBuilder;
@@ -537,6 +538,37 @@ public class MockEndpointTest extends Co
         }
     }
 
+    public void testExchangePattern() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMessageCount(2);
+        mock.message(0).exchangePattern().isEqualTo(ExchangePattern.InOnly);
+        mock.message(1).exchangePattern().isEqualTo(ExchangePattern.InOut);
+
+        template.sendBody("direct:a", "Hello World");
+        template.requestBody("direct:a", "Bye World");
+
+        assertMockEndpointsSatisfied();
+    }
+
+    public void testExpectedExchangePattern() throws Exception {
+        MockEndpoint mock = getMockEndpoint("mock:result");
+        mock.expectedMessageCount(1);
+        mock.expectedExchangePattern(ExchangePattern.InOnly);
+
+        template.sendBody("direct:a", "Hello World");
+
+        assertMockEndpointsSatisfied();
+
+        // reset and try with InOut this time
+        resetMocks();
+        mock.expectedMessageCount(1);
+        mock.expectedExchangePattern(ExchangePattern.InOut);
+
+        template.requestBody("direct:a", "Bye World");
+
+        assertMockEndpointsSatisfied();
+    }
+
     protected void sendMessages(int... counters) {
         for (int counter : counters) {
             template.sendBodyAndHeader("direct:a", createTestMessage(counter), "counter", counter);