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