You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2012/06/16 13:53:50 UTC

svn commit: r1350911 - in /camel/branches/camel-2.8.x: ./ camel-core/src/main/java/org/apache/camel/ camel-core/src/main/java/org/apache/camel/builder/ camel-core/src/main/java/org/apache/camel/impl/ camel-core/src/main/java/org/apache/camel/processor/...

Author: davsclaus
Date: Sat Jun 16 11:53:49 2012
New Revision: 1350911

URL: http://svn.apache.org/viewvc?rev=1350911&view=rev
Log:
CAMEL-5372: Fixed issue with error handler thread pool for redelivery should be per camel context.

Added:
    camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/issues/RedeliveryErrorHandlerAsyncDelayedTwoCamelContextIssueTest.java
      - copied unchanged from r1350910, camel/branches/camel-2.9.x/camel-core/src/test/java/org/apache/camel/issues/RedeliveryErrorHandlerAsyncDelayedTwoCamelContextIssueTest.java
Modified:
    camel/branches/camel-2.8.x/   (props changed)
    camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/CamelContext.java
    camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
    camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
    camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
    camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
    camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
    camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
    camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java
    camel/branches/camel-2.8.x/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
    camel/branches/camel-2.8.x/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java

Propchange: camel/branches/camel-2.8.x/
------------------------------------------------------------------------------
  Merged /camel/trunk:r1350909
  Merged /camel/branches/camel-2.9.x:r1350910

Propchange: camel/branches/camel-2.8.x/
------------------------------------------------------------------------------
Binary property 'svnmerge-integrated' - no diff available.

Modified: camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/CamelContext.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/CamelContext.java?rev=1350911&r1=1350910&r2=1350911&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/CamelContext.java (original)
+++ camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/CamelContext.java Sat Jun 16 11:53:49 2012
@@ -20,6 +20,7 @@ import java.io.InputStream;
 import java.util.Collection;
 import java.util.List;
 import java.util.Map;
+import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.builder.ErrorHandlerBuilder;
@@ -707,6 +708,12 @@ public interface CamelContext extends Su
     void setErrorHandlerBuilder(ErrorHandlerBuilder errorHandlerBuilder);
 
     /**
+     * Gets the default shared thread pool for error handlers which
+     * leverages this for asynchronous redelivery tasks.
+     */
+    ScheduledExecutorService getErrorHandlerExecutorService();
+
+    /**
      * Sets the data formats that can be referenced in the routes.
      *
      * @param dataFormats the data formats

Modified: camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java?rev=1350911&r1=1350910&r2=1350911&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java (original)
+++ camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java Sat Jun 16 11:53:49 2012
@@ -56,7 +56,7 @@ public class DeadLetterChannelBuilder ex
 
         DeadLetterChannel answer = new DeadLetterChannel(routeContext.getCamelContext(), processor, getLogger(), getOnRedelivery(), 
                 getRedeliveryPolicy(), getExceptionPolicyStrategy(), getFailureProcessor(), getDeadLetterUri(), isUseOriginalMessage(),
-                getRetryWhilePolicy(routeContext.getCamelContext()), getExecutorServiceRef());
+                getRetryWhilePolicy(routeContext.getCamelContext()), getExecutorService(routeContext.getCamelContext()));
         // configure error handler before we can use it
         configure(answer);
         return answer;

Modified: camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java?rev=1350911&r1=1350910&r2=1350911&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java (original)
+++ camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java Sat Jun 16 11:53:49 2012
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.builder;
 
+import java.util.concurrent.ScheduledExecutorService;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.Endpoint;
 import org.apache.camel.Expression;
@@ -24,11 +26,11 @@ import org.apache.camel.Predicate;
 import org.apache.camel.Processor;
 import org.apache.camel.processor.CamelLogger;
 import org.apache.camel.processor.DefaultErrorHandler;
-import org.apache.camel.processor.ErrorHandlerSupport;
 import org.apache.camel.processor.RedeliveryPolicy;
-import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
+import org.apache.camel.spi.ExecutorServiceStrategy;
 import org.apache.camel.spi.Language;
 import org.apache.camel.spi.RouteContext;
+import org.apache.camel.spi.ThreadPoolProfile;
 import org.slf4j.LoggerFactory;
 
 import static org.apache.camel.builder.PredicateBuilder.toPredicate;
@@ -51,13 +53,14 @@ public class DefaultErrorHandlerBuilder 
     protected boolean useOriginalMessage;
     protected boolean asyncDelayedRedelivery;
     protected String executorServiceRef;
+    protected ScheduledExecutorService executorService;
 
     public DefaultErrorHandlerBuilder() {
     }
 
     public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
         DefaultErrorHandler answer = new DefaultErrorHandler(routeContext.getCamelContext(), processor, getLogger(), getOnRedelivery(), 
-            getRedeliveryPolicy(), getExceptionPolicyStrategy(), getRetryWhilePolicy(routeContext.getCamelContext()), getExecutorServiceRef());
+            getRedeliveryPolicy(), getExceptionPolicyStrategy(), getRetryWhilePolicy(routeContext.getCamelContext()), getExecutorService(routeContext.getCamelContext()));
         // configure error handler before we can use it
         configure(answer);
         return answer;
@@ -67,7 +70,6 @@ public class DefaultErrorHandlerBuilder 
         return false;
     }
 
-
     // Builder methods
     // -------------------------------------------------------------------------
     public DefaultErrorHandlerBuilder backOffMultiplier(double backOffMultiplier) {
@@ -404,6 +406,27 @@ public class DefaultErrorHandlerBuilder 
         return new CamelLogger(LoggerFactory.getLogger(DefaultErrorHandler.class), LoggingLevel.ERROR);
     }
 
+    protected synchronized ScheduledExecutorService getExecutorService(CamelContext camelContext) {
+        if (executorService == null || executorService.isShutdown()) {
+            // camel context will shutdown the executor when it shutdown so no need to shut it down when stopping
+            if (executorServiceRef != null) {
+                executorService = camelContext.getRegistry().lookup(executorServiceRef, ScheduledExecutorService.class);
+                if (executorService == null) {
+                    ExecutorServiceStrategy manager = camelContext.getExecutorServiceStrategy();
+                    ThreadPoolProfile profile = manager.getThreadPoolProfile(executorServiceRef);
+                    executorService = manager.newScheduledThreadPool(this, executorServiceRef, profile.getPoolSize());
+                }
+                if (executorService == null) {
+                    throw new IllegalArgumentException("ExecutorServiceRef " + executorServiceRef + " not found in registry.");
+                }
+            } else {
+                // use default shared thread pool for error handlers
+                executorService = camelContext.getErrorHandlerExecutorService();
+            }
+        }
+        return executorService;
+    }
+
     @Override
     public String toString() {
         return "DefaultErrorHandlerBuilder";

Modified: camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=1350911&r1=1350910&r2=1350911&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Sat Jun 16 11:53:49 2012
@@ -31,6 +31,7 @@ import java.util.List;
 import java.util.Map;
 import java.util.Set;
 import java.util.TreeMap;
+import java.util.concurrent.ScheduledExecutorService;
 import java.util.concurrent.TimeUnit;
 import java.util.concurrent.atomic.AtomicBoolean;
 import java.util.concurrent.atomic.AtomicInteger;
@@ -109,6 +110,7 @@ import org.apache.camel.spi.RouteContext
 import org.apache.camel.spi.RouteStartupOrder;
 import org.apache.camel.spi.ServicePool;
 import org.apache.camel.spi.ShutdownStrategy;
+import org.apache.camel.spi.ThreadPoolProfile;
 import org.apache.camel.spi.TypeConverterRegistry;
 import org.apache.camel.spi.UuidGenerator;
 import org.apache.camel.util.CamelContextHelper;
@@ -170,6 +172,7 @@ public class DefaultCamelContext extends
     private Boolean useBreadcrumb = Boolean.TRUE;
     private Long delay;
     private ErrorHandlerBuilder errorHandlerBuilder;
+    private ScheduledExecutorService errorHandlerExecutorService;
     private Map<String, DataFormatDefinition> dataFormats = new HashMap<String, DataFormatDefinition>();
     private DataFormatResolver dataFormatResolver = new DefaultDataFormatResolver();
     private Map<String, String> properties = new HashMap<String, String>();
@@ -1211,6 +1214,10 @@ public class DefaultCamelContext extends
         this.errorHandlerBuilder = errorHandlerBuilder;
     }
 
+    public ScheduledExecutorService getErrorHandlerExecutorService() {
+        return errorHandlerExecutorService;
+    }
+
     public void setProducerServicePool(ServicePool<Endpoint, Producer> producerServicePool) {
         this.producerServicePool = producerServicePool;
     }
@@ -1456,6 +1463,11 @@ public class DefaultCamelContext extends
 
         startServices(components.values());
 
+        // setup default thread pool for error handler
+        if (errorHandlerExecutorService == null || errorHandlerExecutorService.isShutdown()) {
+            errorHandlerExecutorService = getExecutorServiceStrategy().newScheduledThreadPool(this, "ErrorHandlerRedeliveryTask");
+        }
+
         // start the route definitions before the routes is started
         startRouteDefinitions(routeDefinitions);
 

Modified: camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java?rev=1350911&r1=1350910&r2=1350911&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java (original)
+++ camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java Sat Jun 16 11:53:49 2012
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.processor;
 
+import java.util.concurrent.ScheduledExecutorService;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Predicate;
@@ -47,12 +49,13 @@ public class DeadLetterChannel extends R
      * @param deadLetterUri             an optional uri for logging purpose
      * @param useOriginalBodyPolicy     should the original IN body be moved to the dead letter queue or the current exchange IN body?
      * @param retryWhile                retry while
-     * @param executorServiceRef        reference to a {@link java.util.concurrent.ScheduledExecutorService} to be used for redelivery thread pool. Can be <tt>null</tt>.
+     * @param executorService           the {@link java.util.concurrent.ScheduledExecutorService} to be used for redelivery thread pool. Can be <tt>null</tt>.
      */
     public DeadLetterChannel(CamelContext camelContext, Processor output, CamelLogger logger, Processor redeliveryProcessor, RedeliveryPolicy redeliveryPolicy,
-            ExceptionPolicyStrategy exceptionPolicyStrategy, Processor deadLetter, String deadLetterUri, boolean useOriginalBodyPolicy, Predicate retryWhile, String executorServiceRef) {
+            ExceptionPolicyStrategy exceptionPolicyStrategy, Processor deadLetter, String deadLetterUri, boolean useOriginalBodyPolicy, Predicate retryWhile,
+            ScheduledExecutorService executorService) {
 
-        super(camelContext, output, logger, redeliveryProcessor, redeliveryPolicy, deadLetter, deadLetterUri, useOriginalBodyPolicy, retryWhile, executorServiceRef);
+        super(camelContext, output, logger, redeliveryProcessor, redeliveryPolicy, deadLetter, deadLetterUri, useOriginalBodyPolicy, retryWhile, executorService);
         setExceptionPolicy(exceptionPolicyStrategy);
     }
 

Modified: camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java?rev=1350911&r1=1350910&r2=1350911&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java (original)
+++ camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java Sat Jun 16 11:53:49 2012
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.processor;
 
+import java.util.concurrent.ScheduledExecutorService;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
 import org.apache.camel.Predicate;
@@ -39,12 +41,12 @@ public class DefaultErrorHandler extends
      * @param redeliveryPolicy          policy for redelivery
      * @param exceptionPolicyStrategy   strategy for onException handling
      * @param retryWhile                retry while
-     * @param executorServiceRef        reference to a {@link java.util.concurrent.ScheduledExecutorService} to be used for redelivery thread pool. Can be <tt>null</tt>.
+     * @param executorService           the {@link java.util.concurrent.ScheduledExecutorService} to be used for redelivery thread pool. Can be <tt>null</tt>.
      */
     public DefaultErrorHandler(CamelContext camelContext, Processor output, CamelLogger logger, Processor redeliveryProcessor,
-            RedeliveryPolicy redeliveryPolicy, ExceptionPolicyStrategy exceptionPolicyStrategy, Predicate retryWhile, String executorServiceRef) {
+            RedeliveryPolicy redeliveryPolicy, ExceptionPolicyStrategy exceptionPolicyStrategy, Predicate retryWhile, ScheduledExecutorService executorService) {
 
-        super(camelContext, output, logger, redeliveryProcessor, redeliveryPolicy, null, null, false, retryWhile, executorServiceRef);
+        super(camelContext, output, logger, redeliveryProcessor, redeliveryPolicy, null, null, false, retryWhile, executorService);
         setExceptionPolicy(exceptionPolicyStrategy);
     }
 

Modified: camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java?rev=1350911&r1=1350910&r2=1350911&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java (original)
+++ camel/branches/camel-2.8.x/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java Sat Jun 16 11:53:49 2012
@@ -51,8 +51,7 @@ import org.apache.camel.util.ServiceHelp
  */
 public abstract class RedeliveryErrorHandler extends ErrorHandlerSupport implements AsyncProcessor {
 
-    private static ScheduledExecutorService executorService;
-    protected final String executorServiceRef;
+    protected ScheduledExecutorService executorService;
     protected final CamelContext camelContext;
     protected final Processor deadLetter;
     protected final String deadLetterUri;
@@ -175,7 +174,7 @@ public abstract class RedeliveryErrorHan
 
     public RedeliveryErrorHandler(CamelContext camelContext, Processor output, CamelLogger logger,
             Processor redeliveryProcessor, RedeliveryPolicy redeliveryPolicy, Processor deadLetter,
-            String deadLetterUri, boolean useOriginalMessagePolicy, Predicate retryWhile, String executorServiceRef) {
+            String deadLetterUri, boolean useOriginalMessagePolicy, Predicate retryWhile, ScheduledExecutorService executorService) {
 
         ObjectHelper.notNull(camelContext, "CamelContext", this);
         ObjectHelper.notNull(redeliveryPolicy, "RedeliveryPolicy", this);
@@ -190,7 +189,7 @@ public abstract class RedeliveryErrorHan
         this.deadLetterUri = deadLetterUri;
         this.useOriginalMessagePolicy = useOriginalMessagePolicy;
         this.retryWhilePolicy = retryWhile;
-        this.executorServiceRef = executorServiceRef;
+        this.executorService = executorService;
     }
 
     public boolean supportTransacted() {
@@ -586,7 +585,7 @@ public abstract class RedeliveryErrorHan
         // clear rollback flags
         exchange.setProperty(Exchange.ROLLBACK_ONLY, null);
 
-        // TODO: We may want to store these as state on RedelieryData so we keep them in case end user messes with Exchange
+        // TODO: We may want to store these as state on RedeliveryData so we keep them in case end user messes with Exchange
         // and then put these on the exchange when doing a redelivery / fault processor
 
         // preserve these headers
@@ -1020,17 +1019,10 @@ public abstract class RedeliveryErrorHan
     @Override
     protected void doStart() throws Exception {
         ServiceHelper.startServices(output, outputAsync, deadLetter);
-        // use a shared scheduler
-        if (executorService == null || executorService.isShutdown()) {
-            // camel context will shutdown the executor when it shutdown so no need to shut it down when stopping
-            if (executorServiceRef != null) {
-                executorService = camelContext.getExecutorServiceStrategy().lookupScheduled(this, "ErrorHandlerRedeliveryTask", executorServiceRef);
-                if (executorService == null) {
-                    throw new IllegalArgumentException("ExecutorServiceRef " + executorServiceRef + " not found in registry.");
-                }
-            } else {
-                executorService = camelContext.getExecutorServiceStrategy().newScheduledThreadPool(this, "ErrorHandlerRedeliveryTask");
-            }
+
+        if (executorService == null) {
+            // use default shared executor service
+            executorService = camelContext.getErrorHandlerExecutorService();
         }
 
         // determine if redeliver is enabled or not

Modified: camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java?rev=1350911&r1=1350910&r2=1350911&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java (original)
+++ camel/branches/camel-2.8.x/camel-core/src/test/java/org/apache/camel/impl/MultipleLifecycleStrategyTest.java Sat Jun 16 11:53:49 2012
@@ -16,6 +16,9 @@
  */
 package org.apache.camel.impl;
 
+import java.util.Arrays;
+import java.util.List;
+
 import org.apache.camel.CamelContext;
 import org.apache.camel.Component;
 import org.apache.camel.TestSupport;
@@ -50,33 +53,12 @@ public class MultipleLifecycleStrategyTe
 
         context.stop();
 
-        assertEquals(12, dummy1.getEvents().size());
-        assertEquals(12, dummy2.getEvents().size());
+        List<String> expectedEvents = Arrays.asList("onContextStart", "onServiceAdd", "onServiceAdd", "onServiceAdd",
+                "onServiceAdd", "onServiceAdd", "onServiceAdd", "onServiceAdd", "onThreadPoolAdd", "onComponentAdd", "onEndpointAdd",
+                "onComponentRemove", "onContextStop");
 
-        assertEquals("onContextStart", dummy1.getEvents().get(0));
-        assertEquals("onContextStart", dummy2.getEvents().get(0));
-        assertEquals("onServiceAdd", dummy1.getEvents().get(1));
-        assertEquals("onServiceAdd", dummy2.getEvents().get(1));
-        assertEquals("onServiceAdd", dummy1.getEvents().get(2));
-        assertEquals("onServiceAdd", dummy2.getEvents().get(2));
-        assertEquals("onServiceAdd", dummy1.getEvents().get(3));
-        assertEquals("onServiceAdd", dummy2.getEvents().get(3));
-        assertEquals("onServiceAdd", dummy1.getEvents().get(4));
-        assertEquals("onServiceAdd", dummy2.getEvents().get(4));
-        assertEquals("onServiceAdd", dummy1.getEvents().get(5));
-        assertEquals("onServiceAdd", dummy2.getEvents().get(5));
-        assertEquals("onServiceAdd", dummy1.getEvents().get(6));
-        assertEquals("onServiceAdd", dummy2.getEvents().get(6));
-        assertEquals("onServiceAdd", dummy1.getEvents().get(7));
-        assertEquals("onServiceAdd", dummy2.getEvents().get(7));
-        assertEquals("onComponentAdd", dummy1.getEvents().get(8));
-        assertEquals("onComponentAdd", dummy2.getEvents().get(8));
-        assertEquals("onEndpointAdd", dummy1.getEvents().get(9));
-        assertEquals("onEndpointAdd", dummy2.getEvents().get(9));
-        assertEquals("onComponentRemove", dummy1.getEvents().get(10));
-        assertEquals("onComponentRemove", dummy2.getEvents().get(10));
-        assertEquals("onContextStop", dummy1.getEvents().get(11));
-        assertEquals("onContextStop", dummy2.getEvents().get(11));
+        assertEquals(expectedEvents, dummy1.getEvents());
+        assertEquals(expectedEvents, dummy2.getEvents());
     }
 
 }

Modified: camel/branches/camel-2.8.x/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java?rev=1350911&r1=1350910&r2=1350911&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java (original)
+++ camel/branches/camel-2.8.x/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java Sat Jun 16 11:53:49 2012
@@ -16,6 +16,8 @@
  */
 package org.apache.camel.spring.spi;
 
+import java.util.concurrent.ScheduledExecutorService;
+
 import org.apache.camel.AsyncCallback;
 import org.apache.camel.CamelContext;
 import org.apache.camel.Exchange;
@@ -53,13 +55,13 @@ public class TransactionErrorHandler ext
      * @param exceptionPolicyStrategy strategy for onException handling
      * @param transactionTemplate     the transaction template
      * @param retryWhile              retry while
-     * @param executorServiceRef      reference to a {@link java.util.concurrent.ScheduledExecutorService} to be used for redelivery thread pool. Can be <tt>null</tt>.
+     * @param executorService         a {@link java.util.concurrent.ScheduledExecutorService} to be used for redelivery thread pool. Can be <tt>null</tt>.
      */
     public TransactionErrorHandler(CamelContext camelContext, Processor output, CamelLogger logger, 
             Processor redeliveryProcessor, RedeliveryPolicy redeliveryPolicy, ExceptionPolicyStrategy exceptionPolicyStrategy,
-            TransactionTemplate transactionTemplate, Predicate retryWhile, String executorServiceRef) {
+            TransactionTemplate transactionTemplate, Predicate retryWhile, ScheduledExecutorService executorService) {
 
-        super(camelContext, output, logger, redeliveryProcessor, redeliveryPolicy, null, null, false, retryWhile, executorServiceRef);
+        super(camelContext, output, logger, redeliveryProcessor, redeliveryPolicy, null, null, false, retryWhile, executorService);
         setExceptionPolicy(exceptionPolicyStrategy);
         this.transactionTemplate = transactionTemplate;
         this.transactionKey = ObjectHelper.getIdentityHashCode(transactionTemplate);

Modified: camel/branches/camel-2.8.x/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.8.x/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java?rev=1350911&r1=1350910&r2=1350911&view=diff
==============================================================================
--- camel/branches/camel-2.8.x/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java (original)
+++ camel/branches/camel-2.8.x/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java Sat Jun 16 11:53:49 2012
@@ -108,7 +108,7 @@ public class TransactionErrorHandlerBuil
 
         TransactionErrorHandler answer = new TransactionErrorHandler(routeContext.getCamelContext(), processor,
             getLogger(), getOnRedelivery(), getRedeliveryPolicy(), getExceptionPolicyStrategy(), transactionTemplate, 
-            getRetryWhilePolicy(routeContext.getCamelContext()), getExecutorServiceRef());
+            getRetryWhilePolicy(routeContext.getCamelContext()), getExecutorService(routeContext.getCamelContext()));
         // configure error handler before we can use it
         configure(answer);
         return answer;