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/09/30 09:24:56 UTC

svn commit: r1391956 - in /camel/branches/camel-2.10.x: ./ camel-core/src/main/java/org/apache/camel/builder/ camel-core/src/main/java/org/apache/camel/model/ camel-core/src/test/java/org/apache/camel/issues/ components/camel-spring/src/main/java/org/a...

Author: davsclaus
Date: Sun Sep 30 07:24:55 2012
New Revision: 1391956

URL: http://svn.apache.org/viewvc?rev=1391956&view=rev
Log:
CAMEL-5456: Fixed issue when using multiple RouteBuilder with Java DSL to ensure onException is scoped per RouteBuilder instances, to avoid side effects from one builder to propagate to the next. Also this ensures the initialization order of the RouteBuilder does not matter. Thanks to Andreas Jacobsen for providing test cases.

Added:
    camel/branches/camel-2.10.x/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionMultipleRouteBuildersReverseTest.java
      - copied unchanged from r1391954, camel/trunk/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionMultipleRouteBuildersReverseTest.java
    camel/branches/camel-2.10.x/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionMultipleRouteBuildersTest.java
      - copied unchanged from r1391954, camel/trunk/camel-core/src/test/java/org/apache/camel/issues/ContextScopedOnExceptionMultipleRouteBuildersTest.java
    camel/branches/camel-2.10.x/components/camel-spring/src/test/java/org/apache/camel/spring/contextscan/
      - copied from r1391954, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/contextscan/
    camel/branches/camel-2.10.x/components/camel-spring/src/test/resources/org/apache/camel/spring/contextscan/
      - copied from r1391954, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/contextscan/
Modified:
    camel/branches/camel-2.10.x/   (props changed)
    camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
    camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
    camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilder.java
    camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
    camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
    camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java
    camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/NoErrorHandlerBuilder.java
    camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
    camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
    camel/branches/camel-2.10.x/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java
    camel/branches/camel-2.10.x/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java

Propchange: camel/branches/camel-2.10.x/
------------------------------------------------------------------------------
  Merged /camel/trunk:r1391954

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

Modified: camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java?rev=1391956&r1=1391955&r2=1391956&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java (original)
+++ camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java Sun Sep 30 07:24:55 2012
@@ -65,6 +65,13 @@ public class DeadLetterChannelBuilder ex
         return false;
     }
 
+    @Override
+    public ErrorHandlerBuilder cloneBuilder() {
+        DeadLetterChannelBuilder answer = new DeadLetterChannelBuilder();
+        super.cloneBuilder(answer);
+        return answer;
+    }
+
     // Properties
     // -------------------------------------------------------------------------
 

Modified: camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java?rev=1391956&r1=1391955&r2=1391956&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java (original)
+++ camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java Sun Sep 30 07:24:55 2012
@@ -69,6 +69,45 @@ public class DefaultErrorHandlerBuilder 
         return false;
     }
 
+    @Override
+    public ErrorHandlerBuilder cloneBuilder() {
+        DefaultErrorHandlerBuilder answer = new DefaultErrorHandlerBuilder();
+        cloneBuilder(answer);
+        return answer;
+    }
+
+    protected void cloneBuilder(DefaultErrorHandlerBuilder other) {
+        super.cloneBuilder(other);
+
+        if (logger != null) {
+            other.setLogger(logger);
+        }
+        if (redeliveryPolicy != null) {
+            other.setRedeliveryPolicy(redeliveryPolicy.copy());
+        }
+        if (onRedelivery != null) {
+            other.setOnRedelivery(onRedelivery);
+        }
+        if (retryWhile != null) {
+            other.setRetryWhile(retryWhile);
+        }
+        if (retryWhileRef != null) {
+            other.setRetryWhileRef(retryWhileRef);
+        }
+        if (failureProcessor != null) {
+            other.setFailureProcessor(failureProcessor);
+        }
+        if (deadLetter != null) {
+            other.setDeadLetter(deadLetter);
+        }
+        if (deadLetterUri != null) {
+            other.setDeadLetterUri(deadLetterUri);
+        }
+        other.setUseOriginalMessage(useOriginalMessage);
+        other.setAsyncDelayedRedelivery(asyncDelayedRedelivery);
+        other.setExecutorServiceRef(executorServiceRef);
+    }
+
     // Builder methods
     // -------------------------------------------------------------------------
     public DefaultErrorHandlerBuilder backOffMultiplier(double backOffMultiplier) {
@@ -419,7 +458,7 @@ public class DefaultErrorHandlerBuilder 
                     throw new IllegalArgumentException("ExecutorServiceRef " + executorServiceRef + " not found in registry.");
                 }
             } else {
-                // no explicit configured thread pool, so leave it up to the error handler to deceide if it need
+                // no explicit configured thread pool, so leave it up to the error handler to decide if it need
                 // a default thread pool from CamelContext#getErrorHandlerExecutorService
                 executorService = null;
             }

Modified: camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilder.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilder.java?rev=1391956&r1=1391955&r2=1391956&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilder.java (original)
+++ camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilder.java Sun Sep 30 07:24:55 2012
@@ -34,21 +34,25 @@ public interface ErrorHandlerBuilder ext
     /**
      * Adds error handler for the given exception type
      *
-     * @param exception  the exception to handle
+     * @param routeContext  the route context
+     * @param exception     the exception to handle
      */
-    void addErrorHandlers(OnExceptionDefinition exception);
+    void addErrorHandlers(RouteContext routeContext, OnExceptionDefinition exception);
 
     /**
      * Adds the error handlers for the given list of exception types
      *
-     * @param exceptions  the list of exceptions to handle
+     * @param routeContext  the route context
+     * @param exceptions    the list of exceptions to handle
      */
-    void setErrorHandlers(List<OnExceptionDefinition> exceptions);
+    void setErrorHandlers(RouteContext routeContext, List<OnExceptionDefinition> exceptions);
 
     /**
      * Gets the error handlers
+     *
+     * @param routeContext  the route context
      */
-    List<OnExceptionDefinition> getErrorHandlers();
+    List<OnExceptionDefinition> getErrorHandlers(RouteContext routeContext);
 
     /**
      * Gets the exception policy strategy
@@ -75,4 +79,15 @@ public interface ErrorHandlerBuilder ext
      * @param handler the other error handler
      */
     void configure(RouteContext routeContext, ErrorHandler handler);
+
+    /**
+     * Clones this builder so each {@link RouteBuilder} has its private builder
+     * to use, to avoid changes from one {@link RouteBuilder} to influence the
+     * others.
+     * <p/>
+     * This is needed by the current Camel 2.x architecture.
+     *
+     * @return a clone of this {@link ErrorHandlerBuilder}
+     */
+    ErrorHandlerBuilder cloneBuilder();
 }

Modified: camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java?rev=1391956&r1=1391955&r2=1391956&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java (original)
+++ camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderRef.java Sun Sep 30 07:24:55 2012
@@ -16,7 +16,9 @@
  */
 package org.apache.camel.builder;
 
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.camel.ErrorHandlerFactory;
 import org.apache.camel.Processor;
@@ -33,7 +35,7 @@ import org.apache.camel.util.ObjectHelpe
 public class ErrorHandlerBuilderRef extends ErrorHandlerBuilderSupport {
     public static final String DEFAULT_ERROR_HANDLER_BUILDER = "CamelDefaultErrorHandlerBuilder";
     private final String ref;
-    private ErrorHandlerBuilder handler;
+    private final Map<RouteContext, ErrorHandlerBuilder> handlers = new HashMap<RouteContext, ErrorHandlerBuilder>();
     private boolean supportTransacted;
 
     public ErrorHandlerBuilderRef(String ref) {
@@ -41,16 +43,19 @@ public class ErrorHandlerBuilderRef exte
     }
 
     @Override
-    public void addErrorHandlers(OnExceptionDefinition exception) {
+    public void addErrorHandlers(RouteContext routeContext, OnExceptionDefinition exception) {
+        ErrorHandlerBuilder handler = handlers.get(routeContext);
         if (handler != null) {
-            handler.addErrorHandlers(exception);
+            handler.addErrorHandlers(routeContext, exception);
         }
-        super.addErrorHandlers(exception);
+        super.addErrorHandlers(routeContext, exception);
     }
 
     public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
+        ErrorHandlerBuilder handler = handlers.get(routeContext);
         if (handler == null) {
             handler = createErrorHandler(routeContext);
+            handlers.put(routeContext, handler);
         }
         return handler.createErrorHandler(routeContext, processor);
     }
@@ -59,6 +64,21 @@ public class ErrorHandlerBuilderRef exte
         return supportTransacted;
     }
 
+    @Override
+    public ErrorHandlerBuilder cloneBuilder() {
+        ErrorHandlerBuilderRef answer = new ErrorHandlerBuilderRef(ref);
+        cloneBuilder(answer);
+        return answer;
+    }
+
+    protected void cloneBuilder(ErrorHandlerBuilderRef other) {
+        super.cloneBuilder(other);
+
+        // no need to copy the handlers
+
+        other.supportTransacted = supportTransacted;
+    }
+
     /**
      * Lookup the error handler by the given ref
      *
@@ -98,7 +118,7 @@ public class ErrorHandlerBuilderRef exte
                 }
                 // inherit the error handlers from the other as they are to be shared
                 // this is needed by camel-spring when none error handler has been explicit configured
-                ((ErrorHandlerBuilder)answer).setErrorHandlers(other.getErrorHandlers());
+                ((ErrorHandlerBuilder)answer).setErrorHandlers(routeContext, other.getErrorHandlers(routeContext));
             }
         } else {
             // use specific configured error handler
@@ -142,20 +162,18 @@ public class ErrorHandlerBuilderRef exte
         return ref;
     }
 
-    public ErrorHandlerFactory getHandler() {
-        return handler;
-    }
-
     private ErrorHandlerBuilder createErrorHandler(RouteContext routeContext) {
-        handler = (ErrorHandlerBuilder)lookupErrorHandlerBuilder(routeContext, getRef());
+        ErrorHandlerBuilder handler = (ErrorHandlerBuilder)lookupErrorHandlerBuilder(routeContext, getRef());
         ObjectHelper.notNull(handler, "error handler '" + ref + "'");
 
         // configure if the handler support transacted
         supportTransacted = handler.supportTransacted();
 
-        List<OnExceptionDefinition> list = getErrorHandlers();
-        for (OnExceptionDefinition exceptionType : list) {
-            handler.addErrorHandlers(exceptionType);
+        List<OnExceptionDefinition> list = getErrorHandlers(routeContext);
+        if (list != null) {
+            for (OnExceptionDefinition exceptionType : list) {
+                handler.addErrorHandlers(routeContext, exceptionType);
+            }
         }
         return handler;
     }

Modified: camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java?rev=1391956&r1=1391955&r2=1391956&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java (original)
+++ camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/ErrorHandlerBuilderSupport.java Sun Sep 30 07:24:55 2012
@@ -17,7 +17,9 @@
 package org.apache.camel.builder;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
 
 import org.apache.camel.model.OnExceptionDefinition;
 import org.apache.camel.processor.ErrorHandler;
@@ -32,33 +34,48 @@ import org.apache.camel.util.ObjectHelpe
  * @version 
  */
 public abstract class ErrorHandlerBuilderSupport implements ErrorHandlerBuilder {
-    private List<OnExceptionDefinition> exceptions = new ArrayList<OnExceptionDefinition>();
+    private Map<RouteContext, List<OnExceptionDefinition>> onExceptions = new HashMap<RouteContext, List<OnExceptionDefinition>>();
     private ExceptionPolicyStrategy exceptionPolicyStrategy;
 
-    public void addErrorHandlers(OnExceptionDefinition exception) {
+    public void addErrorHandlers(RouteContext routeContext, OnExceptionDefinition exception) {
         // only add if we not already have it
-        if (!exceptions.contains(exception)) {
-            exceptions.add(exception);
+        List<OnExceptionDefinition> list = onExceptions.get(routeContext);
+        if (list == null) {
+            list = new ArrayList<OnExceptionDefinition>();
+            onExceptions.put(routeContext, list);
         }
+        if (!list.contains(exception)) {
+            list.add(exception);
+        }
+    }
+
+    protected void cloneBuilder(ErrorHandlerBuilderSupport other) {
+        if (!onExceptions.isEmpty()) {
+            Map<RouteContext, List<OnExceptionDefinition>> copy = new HashMap<RouteContext, List<OnExceptionDefinition>>(onExceptions);
+            other.onExceptions = copy;
+        }
+        other.exceptionPolicyStrategy = exceptionPolicyStrategy;
     }
 
     public void configure(RouteContext routeContext, ErrorHandler handler) {
         if (handler instanceof ErrorHandlerSupport) {
             ErrorHandlerSupport handlerSupport = (ErrorHandlerSupport) handler;
 
-            for (OnExceptionDefinition exception : exceptions) {
-                handlerSupport.addExceptionPolicy(routeContext, exception);
+            List<OnExceptionDefinition> list = onExceptions.get(routeContext);
+            if (list != null) {
+                for (OnExceptionDefinition exception : list) {
+                    handlerSupport.addExceptionPolicy(routeContext, exception);
+                }
             }
         }
     }
 
-    public List<OnExceptionDefinition> getErrorHandlers() {
-        return exceptions;
+    public List<OnExceptionDefinition> getErrorHandlers(RouteContext routeContext) {
+        return onExceptions.get(routeContext);
     }
 
-    public void setErrorHandlers(List<OnExceptionDefinition> exceptions) {
-        this.exceptions.clear();
-        this.exceptions.addAll(exceptions);
+    public void setErrorHandlers(RouteContext routeContext, List<OnExceptionDefinition> exceptions) {
+        this.onExceptions.put(routeContext, exceptions);
     }
 
     /**

Modified: camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java?rev=1391956&r1=1391955&r2=1391956&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java (original)
+++ camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/LoggingErrorHandlerBuilder.java Sun Sep 30 07:24:55 2012
@@ -50,6 +50,20 @@ public class LoggingErrorHandlerBuilder 
         return false;
     }
 
+    @Override
+    public ErrorHandlerBuilder cloneBuilder() {
+        LoggingErrorHandlerBuilder answer = new LoggingErrorHandlerBuilder();
+        cloneBuilder(answer);
+        return answer;
+    }
+
+    protected void cloneBuilder(LoggingErrorHandlerBuilder other) {
+        super.cloneBuilder(other);
+
+        other.level = level;
+        other.log = log;
+    }
+
     public Processor createErrorHandler(final RouteContext routeContext, final Processor processor) {
         CamelLogger logger = new CamelLogger(log, level);
 

Modified: camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/NoErrorHandlerBuilder.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/NoErrorHandlerBuilder.java?rev=1391956&r1=1391955&r2=1391956&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/NoErrorHandlerBuilder.java (original)
+++ camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/builder/NoErrorHandlerBuilder.java Sun Sep 30 07:24:55 2012
@@ -37,4 +37,11 @@ public class NoErrorHandlerBuilder exten
     public boolean supportTransacted() {
         return false;
     }
+
+    @Override
+    public ErrorHandlerBuilder cloneBuilder() {
+        NoErrorHandlerBuilder answer = new NoErrorHandlerBuilder();
+        cloneBuilder(answer);
+        return answer;
+    }
 }

Modified: camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java?rev=1391956&r1=1391955&r2=1391956&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java (original)
+++ camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/model/OnExceptionDefinition.java Sun Sep 30 07:24:55 2012
@@ -190,7 +190,7 @@ public class OnExceptionDefinition exten
         // lookup the error handler builder
         ErrorHandlerBuilder builder = (ErrorHandlerBuilder)routeContext.getRoute().getErrorHandlerBuilder();
         // and add this as error handlers
-        builder.addErrorHandlers(this);
+        builder.addErrorHandlers(routeContext, this);
     }
 
     @Override

Modified: camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java?rev=1391956&r1=1391955&r2=1391956&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java (original)
+++ camel/branches/camel-2.10.x/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java Sun Sep 30 07:24:55 2012
@@ -20,6 +20,7 @@ import java.util.ArrayList;
 import java.util.List;
 
 import org.apache.camel.CamelContext;
+import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.util.CamelContextHelper;
 import org.apache.camel.util.EndpointHelper;
 import org.apache.camel.util.ObjectHelper;
@@ -161,7 +162,13 @@ public final class RouteDefinitionHelper
 
         if (context != null) {
             // let the route inherit the error handler builder from camel context if none already set
-            route.setErrorHandlerBuilderIfNull(context.getErrorHandlerBuilder());
+
+            // must clone to avoid side effects while building routes using multiple RouteBuilders
+            ErrorHandlerBuilder builder = context.getErrorHandlerBuilder();
+            if (builder != null) {
+                builder = builder.cloneBuilder();
+                route.setErrorHandlerBuilderIfNull(builder);
+            }
         }
 
         // init parent and error handler builder on the route

Modified: camel/branches/camel-2.10.x/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java?rev=1391956&r1=1391955&r2=1391956&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java (original)
+++ camel/branches/camel-2.10.x/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java Sun Sep 30 07:24:55 2012
@@ -103,7 +103,7 @@ public class SpringTransactionPolicy imp
             txBuilder.setSpringTransactionPolicy(this);
             if (builder != null) {
                 // use error handlers from the configured builder
-                txBuilder.setErrorHandlers(builder.getErrorHandlers());
+                txBuilder.setErrorHandlers(routeContext, builder.getErrorHandlers(routeContext));
             }
             answer = createTransactionErrorHandler(routeContext, processor, txBuilder);
             answer.setExceptionPolicy(txBuilder.getExceptionPolicyStrategy());

Modified: camel/branches/camel-2.10.x/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java
URL: http://svn.apache.org/viewvc/camel/branches/camel-2.10.x/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java?rev=1391956&r1=1391955&r2=1391956&view=diff
==============================================================================
--- camel/branches/camel-2.10.x/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java (original)
+++ camel/branches/camel-2.10.x/components/camel-spring/src/test/java/org/apache/camel/spring/config/DummyErrorHandlerBuilder.java Sun Sep 30 07:24:55 2012
@@ -18,6 +18,7 @@ package org.apache.camel.spring.config;
 
 import org.apache.camel.Exchange;
 import org.apache.camel.Processor;
+import org.apache.camel.builder.ErrorHandlerBuilder;
 import org.apache.camel.builder.ErrorHandlerBuilderSupport;
 import org.apache.camel.processor.DelegateProcessor;
 import org.apache.camel.spi.RouteContext;
@@ -45,6 +46,14 @@ public class DummyErrorHandlerBuilder ex
         return false;
     }
 
+    @Override
+    public ErrorHandlerBuilder cloneBuilder() {
+        DummyErrorHandlerBuilder answer = new DummyErrorHandlerBuilder();
+        super.cloneBuilder(answer);
+        answer.beanName = beanName;
+        return answer;
+    }
+
     public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
         return new DelegateProcessor(processor) {
             @Override