You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ja...@apache.org on 2009/07/23 16:38:53 UTC

svn commit: r797087 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/component/mock/ main/java/org/apache/camel/processor/ main/java/org/apache/camel/processor/aggregate/ test/java/org/apache/camel/component/mock/

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



Re: svn commit: r797087 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/component/mock/ main/java/org/apache/camel/processor/ main/java/org/apache/camel/processor/aggregate/ test/java/org/apache/camel/component/mock/

Posted by Jon Anstey <ja...@gmail.com>.
On Thu, Jul 23, 2009 at 12:59 PM, Claus Ibsen <cl...@gmail.com> wrote:

> On Thu, Jul 23, 2009 at 5:10 PM, Jon Anstey<ja...@gmail.com> wrote:
> > Claus, shouldn't you be on vacation? ;)
> Yeah but I gotta watch the commit log and see if my apprentices doing
> a good job. You passed the test.
> I
>

lol thanks!


>
>
> >
> > The method is used in the expression/predicate evaluation.
> Yeah I guess todays beer had an impact after all :)


:)


>
>
>
> >
> > On Thu, Jul 23, 2009 at 12:22 PM, Claus Ibsen <cl...@gmail.com>
> wrote:
> >
> >> Hi
> >>
> >> Looks like this method
> >> - mostRecentExchange
> >>
> >> was added in patch but not used in code, e.g. can/should be deleted.
> >>
> >>
> >> On Thu, Jul 23, 2009 at 4:38 PM, <ja...@apache.org> wrote:
> >> > 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");
> >> >
> >> >
> >> >
> >>
> >>
> >>
> >> --
> >> Claus Ibsen
> >> Apache Camel Committer
> >>
> >> Open Source Integration: http://fusesource.com
> >> Blog: http://davsclaus.blogspot.com/
> >> Twitter: http://twitter.com/davsclaus
> >>
> >
> >
> >
> > --
> > Cheers,
> > Jon
> >
> > http://janstey.blogspot.com/
> >
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>



-- 
Cheers,
Jon

http://janstey.blogspot.com/

Re: svn commit: r797087 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/component/mock/ main/java/org/apache/camel/processor/ main/java/org/apache/camel/processor/aggregate/ test/java/org/apache/camel/component/mock/

Posted by Claus Ibsen <cl...@gmail.com>.
On Thu, Jul 23, 2009 at 5:10 PM, Jon Anstey<ja...@gmail.com> wrote:
> Claus, shouldn't you be on vacation? ;)
Yeah but I gotta watch the commit log and see if my apprentices doing
a good job. You passed the test.
I

>
> The method is used in the expression/predicate evaluation.
Yeah I guess todays beer had an impact after all :)


>
> On Thu, Jul 23, 2009 at 12:22 PM, Claus Ibsen <cl...@gmail.com> wrote:
>
>> Hi
>>
>> Looks like this method
>> - mostRecentExchange
>>
>> was added in patch but not used in code, e.g. can/should be deleted.
>>
>>
>> On Thu, Jul 23, 2009 at 4:38 PM, <ja...@apache.org> wrote:
>> > 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");
>> >
>> >
>> >
>>
>>
>>
>> --
>> Claus Ibsen
>> Apache Camel Committer
>>
>> Open Source Integration: http://fusesource.com
>> Blog: http://davsclaus.blogspot.com/
>> Twitter: http://twitter.com/davsclaus
>>
>
>
>
> --
> Cheers,
> Jon
>
> http://janstey.blogspot.com/
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus

Re: svn commit: r797087 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/component/mock/ main/java/org/apache/camel/processor/ main/java/org/apache/camel/processor/aggregate/ test/java/org/apache/camel/component/mock/

Posted by Jon Anstey <ja...@gmail.com>.
Claus, shouldn't you be on vacation? ;)

The method is used in the expression/predicate evaluation.

On Thu, Jul 23, 2009 at 12:22 PM, Claus Ibsen <cl...@gmail.com> wrote:

> Hi
>
> Looks like this method
> - mostRecentExchange
>
> was added in patch but not used in code, e.g. can/should be deleted.
>
>
> On Thu, Jul 23, 2009 at 4:38 PM, <ja...@apache.org> wrote:
> > 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");
> >
> >
> >
>
>
>
> --
> Claus Ibsen
> Apache Camel Committer
>
> Open Source Integration: http://fusesource.com
> Blog: http://davsclaus.blogspot.com/
> Twitter: http://twitter.com/davsclaus
>



-- 
Cheers,
Jon

http://janstey.blogspot.com/

Re: svn commit: r797087 - in /camel/trunk/camel-core/src: main/java/org/apache/camel/component/mock/ main/java/org/apache/camel/processor/ main/java/org/apache/camel/processor/aggregate/ test/java/org/apache/camel/component/mock/

Posted by Claus Ibsen <cl...@gmail.com>.
Hi

Looks like this method
- mostRecentExchange

was added in patch but not used in code, e.g. can/should be deleted.


On Thu, Jul 23, 2009 at 4:38 PM, <ja...@apache.org> wrote:
> 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");
>
>
>



-- 
Claus Ibsen
Apache Camel Committer

Open Source Integration: http://fusesource.com
Blog: http://davsclaus.blogspot.com/
Twitter: http://twitter.com/davsclaus