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