You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ni...@apache.org on 2008/12/17 16:07:57 UTC
svn commit: r727409 - in /activemq/camel/branches/camel-1.x: ./
camel-core/src/main/java/org/apache/camel/processor/
camel-core/src/main/java/org/apache/camel/processor/aggregate/
camel-core/src/test/java/org/apache/camel/processor/
Author: ningjiang
Date: Wed Dec 17 07:07:56 2008
New Revision: 727409
URL: http://svn.apache.org/viewvc?rev=727409&view=rev
Log:
Merged revisions 727377 via svnmerge from
https://svn.apache.org/repos/asf/activemq/camel/trunk
........
r727377 | ningjiang | 2008-12-17 21:31:26 +0800 (Wed, 17 Dec 2008) | 1 line
CAMEL-159 added testcase for propagating exception in Splitter
........
Modified:
activemq/camel/branches/camel-1.x/ (props changed)
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/UseLatestAggregationStrategy.java
activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java
Propchange: activemq/camel/branches/camel-1.x/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Wed Dec 17 07:07:56 2008
@@ -1 +1 @@
-/activemq/camel/trunk:709850,711200,711206,711219-711220,711523,711531,711756,711784,711859,711874,711962,711971,712064,712119,712148,712662,712692,712925,713013,713107,713136,713273,713290,713292,713295,713314,713475,713625,713932,713944,714032,717965,717989,718242,718273,718312-718515,719163-719184,719334,719339,719524,719662,719848,719851,719855,719864,719978-719979,720207,720435-720437,720806,721272,721331,721333-721334,721360,721669,721764,721813,721985,722005,722070,722110,722415,722438,722726,722845,722878,723264,723314,723325-723327,723409,723835,723966,724122,724619,724681,725040,725309-725320,725340,725351,725569-725572,725612,725652-725660,726640-726645,726932,727113,727375
+/activemq/camel/trunk:709850,711200,711206,711219-711220,711523,711531,711756,711784,711859,711874,711962,711971,712064,712119,712148,712662,712692,712925,713013,713107,713136,713273,713290,713292,713295,713314,713475,713625,713932,713944,714032,717965,717989,718242,718273,718312-718515,719163-719184,719334,719339,719524,719662,719848,719851,719855,719864,719978-719979,720207,720435-720437,720806,721272,721331,721333-721334,721360,721669,721764,721813,721985,722005,722070,722110,722415,722438,722726,722845,722878,723264,723314,723325-723327,723409,723835,723966,724122,724619,724681,725040,725309-725320,725340,725351,725569-725572,725612,725652-725660,726640-726645,726932,727113,727375,727377
Propchange: activemq/camel/branches/camel-1.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
URL: http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java?rev=727409&r1=727408&r2=727409&view=diff
==============================================================================
--- activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java (original)
+++ activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java Wed Dec 17 07:07:56 2008
@@ -186,8 +186,11 @@
Processor producer = pair.getProcessor();
Exchange subExchange = pair.getExchange();
updateNewExchange(subExchange, i, pairs);
-
- producer.process(subExchange);
+ try {
+ producer.process(subExchange);
+ } catch (Exception exception) {
+ subExchange.setException(exception);
+ }
doAggregate(result, subExchange);
i++;
}
Modified: activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/UseLatestAggregationStrategy.java
URL: http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/UseLatestAggregationStrategy.java?rev=727409&r1=727408&r2=727409&view=diff
==============================================================================
--- activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/UseLatestAggregationStrategy.java (original)
+++ activemq/camel/branches/camel-1.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/UseLatestAggregationStrategy.java Wed Dec 17 07:07:56 2008
@@ -28,6 +28,13 @@
public class UseLatestAggregationStrategy implements AggregationStrategy {
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
+ newExchange.setException(checkException(oldExchange, newExchange));
return newExchange;
}
+
+ protected Throwable checkException(Exchange oldExchange, Exchange newExchange) {
+ return newExchange.getException() != null
+ ? newExchange.getException()
+ : oldExchange.getException();
+ }
}
Modified: activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java?rev=727409&r1=727408&r2=727409&view=diff
==============================================================================
--- activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java (original)
+++ activemq/camel/branches/camel-1.x/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java Wed Dec 17 07:07:56 2008
@@ -20,6 +20,7 @@
import java.util.Set;
import java.util.TreeSet;
+import org.apache.camel.CamelException;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
@@ -179,14 +180,50 @@
}
}
+
+ public void testSplitterWithException() throws Exception {
+ MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
+ resultEndpoint.expectedMessageCount(4);
+ resultEndpoint.expectedHeaderReceived("foo", "bar");
+
+ MockEndpoint failedEndpoint = getMockEndpoint("mock:failed");
+ failedEndpoint.expectedMessageCount(1);
+ failedEndpoint.expectedHeaderReceived("foo", "bar");
+
+ Exchange result = template.send("direct:exception", new Processor() {
+ public void process(Exchange exchange) {
+ Message in = exchange.getIn();
+ in.setBody("James,Guillaume,Hiram,Rob,Exception");
+ in.setHeader("foo", "bar");
+ }
+ });
+
+ assertTrue("The result exchange should have a camel exception", result.getException() instanceof CamelException);
+
+ assertMockEndpointsSatisfied();
+ }
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
+ errorHandler(deadLetterChannel("mock:failed").maximumRedeliveries(0));
from("direct:seqential").splitter(body().tokenize(","), new UseLatestAggregationStrategy()).to("mock:result");
from("direct:parallel").splitter(body().tokenize(","), new MyAggregationStrategy(), true).to("mock:result");
from("direct:streaming").splitter(body().tokenize(",")).streaming().to("mock:result");
from("direct:parallel-streaming").splitter(body().tokenize(","), new MyAggregationStrategy(), true).streaming().to("mock:result");
+ from("direct:exception")
+ .splitter(body().tokenize(","))
+ .aggregationStrategy(new MyAggregationStrategy())
+ .parallelProcessing(true).streaming()
+ .process(new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ String string = exchange.getIn().getBody(String.class);
+ if ("Exception".equals(string)) {
+ throw new CamelException("Just want to throw exception here");
+ }
+
+ }
+ }).to("mock:result");
}
};
}