You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ha...@apache.org on 2012/04/11 22:03:10 UTC
svn commit: r1324968 - in /camel/branches/camel-2.9.x: ./
camel-core/src/main/java/org/apache/camel/processor/
camel-core/src/main/java/org/apache/camel/processor/aggregate/
Author: hadrian
Date: Wed Apr 11 20:03:09 2012
New Revision: 1324968
URL: http://svn.apache.org/viewvc?rev=1324968&view=rev
Log:
Merged revisions 1310710 via svnmerge from
https://svn.apache.org/repos/asf/camel/trunk
........
r1310710 | davsclaus | 2012-04-07 04:55:48 -0400 (Sat, 07 Apr 2012) | 1 line
Improved catching errors from aggregation strategy.
........
Modified:
camel/branches/camel-2.9.x/ (props changed)
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java
camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/TimeoutAwareAggregationStrategy.java
Propchange: camel/branches/camel-2.9.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.
Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/Enricher.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/Enricher.java?rev=1324968&r1=1324967&r2=1324968&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/Enricher.java (original)
+++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/Enricher.java Wed Apr 11 20:03:09 2012
@@ -18,6 +18,7 @@ package org.apache.camel.processor;
import org.apache.camel.AsyncCallback;
import org.apache.camel.AsyncProcessor;
+import org.apache.camel.CamelExchangeException;
import org.apache.camel.Exchange;
import org.apache.camel.ExchangePattern;
import org.apache.camel.Producer;
@@ -160,7 +161,15 @@ public class Enricher extends ServiceSup
// prepare the exchanges for aggregation
ExchangeHelper.prepareAggregation(exchange, resourceExchange);
- Exchange aggregatedExchange = aggregationStrategy.aggregate(exchange, resourceExchange);
+ // must catch any exception from aggregation
+ Exchange aggregatedExchange;
+ try {
+ aggregatedExchange = aggregationStrategy.aggregate(exchange, resourceExchange);
+ } catch (Throwable e) {
+ exchange.setException(new CamelExchangeException("Error occurred during aggregation", exchange, e));
+ callback.done(true);
+ return true;
+ }
if (aggregatedExchange != null) {
// copy aggregation result onto original exchange (preserving pattern)
copyResultsPreservePattern(exchange, aggregatedExchange);
Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java?rev=1324968&r1=1324967&r2=1324968&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java (original)
+++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/MulticastProcessor.java Wed Apr 11 20:03:09 2012
@@ -648,6 +648,7 @@ public class MulticastProcessor extends
return;
}
+ // must catch any exceptions from aggregation
try {
doAggregate(getAggregationStrategy(subExchange), result, subExchange);
} catch (Throwable e) {
Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java?rev=1324968&r1=1324967&r2=1324968&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java (original)
+++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/PollEnricher.java Wed Apr 11 20:03:09 2012
@@ -16,6 +16,7 @@
*/
package org.apache.camel.processor;
+import org.apache.camel.CamelExchangeException;
import org.apache.camel.Exchange;
import org.apache.camel.PollingConsumer;
import org.apache.camel.Processor;
@@ -140,7 +141,13 @@ public class PollEnricher extends Servic
// prepare the exchanges for aggregation
ExchangeHelper.prepareAggregation(exchange, resourceExchange);
- Exchange aggregatedExchange = aggregationStrategy.aggregate(exchange, resourceExchange);
+ // must catch any exception from aggregation
+ Exchange aggregatedExchange;
+ try {
+ aggregatedExchange = aggregationStrategy.aggregate(exchange, resourceExchange);
+ } catch (Throwable e) {
+ throw new CamelExchangeException("Error occurred during aggregation", exchange, e);
+ }
if (aggregatedExchange != null) {
// copy aggregation result onto original exchange (preserving pattern)
copyResultsPreservePattern(exchange, aggregatedExchange);
Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java?rev=1324968&r1=1324967&r2=1324968&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java (original)
+++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/AggregateProcessor.java Wed Apr 11 20:03:09 2012
@@ -236,7 +236,12 @@ public class AggregateProcessor extends
// prepare the exchanges for aggregation and aggregate it
ExchangeHelper.prepareAggregation(oldExchange, newExchange);
- answer = onAggregation(oldExchange, exchange);
+ // must catch any exception from aggregation
+ try {
+ answer = onAggregation(oldExchange, exchange);
+ } catch (Throwable e) {
+ throw new CamelExchangeException("Error occurred during aggregation", exchange, e);
+ }
if (answer == null) {
throw new CamelExchangeException("AggregationStrategy " + aggregationStrategy + " returned null which is not allowed", exchange);
}
Modified: camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/TimeoutAwareAggregationStrategy.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/TimeoutAwareAggregationStrategy.java?rev=1324968&r1=1324967&r2=1324968&view=diff
==============================================================================
--- camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/TimeoutAwareAggregationStrategy.java (original)
+++ camel/branches/camel-2.9.x/camel-core/src/main/java/org/apache/camel/processor/aggregate/TimeoutAwareAggregationStrategy.java Wed Apr 11 20:03:09 2012
@@ -28,7 +28,9 @@ public interface TimeoutAwareAggregation
// TODO: In Camel 3.0 we should move this to org.apache.camel package
/**
- * A timeout occurred
+ * A timeout occurred.
+ * <p/>
+ * <b>Important: </b> This method must <b>not</b> throw any exceptions.
*
* @param oldExchange the current aggregated exchange, or the original {@link Exchange} if no aggregation
* has been done before the timeout occurred