Author: romkal
Date: Thu Aug 6 09:49:01 2009
New Revision: 801583
URL: http://svn.apache.org/viewvc?rev=801583&view=rev
Log:
CAMEL-1882: Another test added that verifies exception thrown from correlation
expression
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/BatchProcessor.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregatorExceptionInPredicateTest.java
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=801583&r1=801582&r2=801583&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 Aug 6 09:49:01 2009
@@ -318,6 +318,8 @@
if (e != null) {
try {
collection.add(e);
+ } catch (Exception t) {
+ e.setException(t);
} catch (Throwable t) {
getExceptionHandler().handleException(t);
}
Modified:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregatorExceptionInPredicateTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregatorExceptionInPredicateTest.java?rev=801583&r1=801582&r2=801583&view=diff
==============================================================================
---
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregatorExceptionInPredicateTest.java
(original)
+++
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/aggregator/AggregatorExceptionInPredicateTest.java
Thu Aug 6 09:49:01 2009
@@ -18,6 +18,8 @@
import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
+import org.apache.camel.Expression;
+import org.apache.camel.builder.ExpressionBuilder;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.processor.aggregate.AggregationStrategy;
@@ -29,6 +31,14 @@
public class AggregatorExceptionInPredicateTest extends ContextTestSupport {
public void testExceptionInAggregationStrategy() throws Exception {
+ testExceptionInFlow("direct:start");
+ }
+
+ public void testExceptionInPredicate() throws Exception {
+ testExceptionInFlow("direct:predicate");
+ }
+
+ private void testExceptionInFlow(String startUri) throws Exception {
// failed first aggregation
// TODO Following assertion should be true while it is not. Instead
@@ -40,8 +50,8 @@
// second aggregated
getMockEndpoint("mock:result").expectedBodiesReceived("Hello World");
- template.sendBodyAndHeader("direct:start", "Damn", "id", 1);
- template.sendBodyAndHeader("direct:start", "Hello World", "id", 1);
+ template.sendBodyAndHeader(startUri, "Damn", "id", 1);
+ template.sendBodyAndHeader(startUri, "Hello World", "id", 1);
assertMockEndpointsSatisfied();
}
@@ -68,6 +78,18 @@
})
.to("mock:result");
+ from("direct:predicate")
+ .aggregate(new Expression() {
+
+ public <T> T evaluate(Exchange exchange, Class<T>
type) {
+ if (exchange.getIn().getBody().equals("Damn")) {
+ throw new IllegalArgumentException();
+ }
+ return
ExpressionBuilder.headerExpression("id").evaluate(exchange, type);
+ }
+ })
+ .batchTimeout(500)
+ .to("mock:result");
}
};
}