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 2010/10/19 09:02:58 UTC
svn commit: r1024138 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/builder/
camel-core/src/main/java/org/apache/camel/processor/
camel-core/src/test/java/org/apache/camel/processor/onexception/
components/camel-blueprint/src/main/java/or...
Author: davsclaus
Date: Tue Oct 19 07:02:58 2010
New Revision: 1024138
URL: http://svn.apache.org/viewvc?rev=1024138&view=rev
Log:
CAMEL-3242: Added retryWhile to error handler.
Added:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerRetryWhileTest.java
- copied, changed from r1023225, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRetryUntilTest.java
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringDefaultErrorHandlerRetryWhileTest.java (contents, props changed)
- copied, changed from r1024106, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringShutdownCompleteAllTasksTest.java
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/DefaultErrorHandlerRetryWhileTest.xml
- copied, changed from r1024106, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringCustomPredicateTest.xml
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ErrorHandlerDefinition.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefinition.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java?rev=1024138&r1=1024137&r2=1024138&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DeadLetterChannelBuilder.java Tue Oct 19 07:02:58 2010
@@ -56,7 +56,7 @@ public class DeadLetterChannelBuilder ex
DeadLetterChannel answer = new DeadLetterChannel(routeContext.getCamelContext(), processor, getLogger(),
getOnRedelivery(), getRedeliveryPolicy(), getHandledPolicy(), getExceptionPolicyStrategy(),
- getFailureProcessor(), getDeadLetterUri(), isUseOriginalMessage());
+ getFailureProcessor(), getDeadLetterUri(), isUseOriginalMessage(), getRetryWhilePolicy(routeContext.getCamelContext()));
// configure error handler before we can use it
configure(answer);
return answer;
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java?rev=1024138&r1=1024137&r2=1024138&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/builder/DefaultErrorHandlerBuilder.java Tue Oct 19 07:02:58 2010
@@ -16,17 +16,21 @@
*/
package org.apache.camel.builder;
+import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.Expression;
import org.apache.camel.LoggingLevel;
import org.apache.camel.Predicate;
import org.apache.camel.Processor;
+import org.apache.camel.language.bean.BeanExpression;
import org.apache.camel.processor.DefaultErrorHandler;
import org.apache.camel.processor.ErrorHandlerSupport;
import org.apache.camel.processor.Logger;
import org.apache.camel.processor.RedeliveryPolicy;
import org.apache.camel.processor.exceptionpolicy.ExceptionPolicyStrategy;
+import org.apache.camel.spi.Language;
import org.apache.camel.spi.RouteContext;
+import org.apache.camel.util.CamelContextHelper;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import static org.apache.camel.builder.PredicateBuilder.toPredicate;
@@ -43,6 +47,8 @@ public class DefaultErrorHandlerBuilder
protected RedeliveryPolicy redeliveryPolicy;
protected Processor onRedelivery;
protected Predicate handledPolicy;
+ protected Predicate retryWhile;
+ protected String retryWhileRef;
protected Processor failureProcessor;
protected Endpoint deadLetter;
protected String deadLetterUri;
@@ -54,7 +60,8 @@ public class DefaultErrorHandlerBuilder
public Processor createErrorHandler(RouteContext routeContext, Processor processor) throws Exception {
DefaultErrorHandler answer = new DefaultErrorHandler(routeContext.getCamelContext(), processor, getLogger(),
- getOnRedelivery(), getRedeliveryPolicy(), getHandledPolicy(), getExceptionPolicyStrategy());
+ getOnRedelivery(), getRedeliveryPolicy(), getHandledPolicy(), getExceptionPolicyStrategy(),
+ getRetryWhilePolicy(routeContext.getCamelContext()));
// configure error handler before we can use it
configure(answer);
return answer;
@@ -259,10 +266,11 @@ public class DefaultErrorHandlerBuilder
}
/**
- * Sets a processor that should be processed <b>before</b> a redelivey attempt.
+ * Sets a processor that should be processed <b>before</b> a redelivery attempt.
* <p/>
* Can be used to change the {@link org.apache.camel.Exchange} <b>before</b> its being redelivered.
*
+ * @param processor the processor
* @return the builder
*/
public DefaultErrorHandlerBuilder onRedelivery(Processor processor) {
@@ -271,6 +279,19 @@ public class DefaultErrorHandlerBuilder
}
/**
+ * Sets the retry while expression.
+ * <p/>
+ * Will continue retrying until expression evaluates to <tt>false</tt>.
+ *
+ * @param retryWhile expression that determines when to stop retrying
+ * @return the builder
+ */
+ public DefaultErrorHandlerBuilder retryWhile(Expression retryWhile) {
+ setRetryWhile(toPredicate(retryWhile));
+ return this;
+ }
+
+ /**
* Will use the original input {@link org.apache.camel.Message} when an {@link org.apache.camel.Exchange}
* is moved to the dead letter queue.
* <p/>
@@ -350,6 +371,34 @@ public class DefaultErrorHandlerBuilder
this.onRedelivery = onRedelivery;
}
+ public Predicate getRetryWhilePolicy(CamelContext context) {
+ Predicate answer = getRetryWhile();
+
+ if (getRetryWhileRef() != null) {
+ // its a bean expression
+ Language bean = context.resolveLanguage("bean");
+ answer = bean.createPredicate(getRetryWhileRef());
+ }
+
+ return answer;
+ }
+
+ public Predicate getRetryWhile() {
+ return retryWhile;
+ }
+
+ public void setRetryWhile(Predicate retryWhile) {
+ this.retryWhile = retryWhile;
+ }
+
+ public String getRetryWhileRef() {
+ return retryWhileRef;
+ }
+
+ public void setRetryWhileRef(String retryWhileRef) {
+ this.retryWhileRef = retryWhileRef;
+ }
+
@Deprecated
public Predicate getHandledPolicy() {
if (handledPolicy == null) {
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java?rev=1024138&r1=1024137&r2=1024138&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DeadLetterChannel.java Tue Oct 19 07:02:58 2010
@@ -45,11 +45,12 @@ public class DeadLetterChannel extends R
* @param deadLetter the failure processor to send failed exchanges to
* @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
*/
public DeadLetterChannel(CamelContext camelContext, Processor output, Logger logger, Processor redeliveryProcessor, RedeliveryPolicy redeliveryPolicy,
- Predicate handledPolicy, ExceptionPolicyStrategy exceptionPolicyStrategy,
- Processor deadLetter, String deadLetterUri, boolean useOriginalBodyPolicy) {
- super(camelContext, output, logger, redeliveryProcessor, redeliveryPolicy, handledPolicy, deadLetter, deadLetterUri, useOriginalBodyPolicy);
+ Predicate handledPolicy, ExceptionPolicyStrategy exceptionPolicyStrategy, Processor deadLetter,
+ String deadLetterUri, boolean useOriginalBodyPolicy, Predicate retryWhile) {
+ super(camelContext, output, logger, redeliveryProcessor, redeliveryPolicy, handledPolicy, deadLetter, deadLetterUri, useOriginalBodyPolicy, retryWhile);
setExceptionPolicy(exceptionPolicyStrategy);
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java?rev=1024138&r1=1024137&r2=1024138&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DefaultErrorHandler.java Tue Oct 19 07:02:58 2010
@@ -39,10 +39,12 @@ public class DefaultErrorHandler extends
* @param redeliveryPolicy policy for redelivery
* @param handledPolicy policy for handling failed exception that are moved to the dead letter queue
* @param exceptionPolicyStrategy strategy for onException handling
+ * @param retryWhile retry while
*/
public DefaultErrorHandler(CamelContext camelContext, Processor output, Logger logger, Processor redeliveryProcessor,
- RedeliveryPolicy redeliveryPolicy, Predicate handledPolicy, ExceptionPolicyStrategy exceptionPolicyStrategy) {
- super(camelContext, output, logger, redeliveryProcessor, redeliveryPolicy, handledPolicy, null, null, false);
+ RedeliveryPolicy redeliveryPolicy, Predicate handledPolicy,
+ ExceptionPolicyStrategy exceptionPolicyStrategy, Predicate retryWhile) {
+ super(camelContext, output, logger, redeliveryProcessor, redeliveryPolicy, handledPolicy, null, null, false, retryWhile);
setExceptionPolicy(exceptionPolicyStrategy);
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java?rev=1024138&r1=1024137&r2=1024138&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/LoggingErrorHandler.java Tue Oct 19 07:02:58 2010
@@ -36,7 +36,7 @@ public class LoggingErrorHandler extends
* @param exceptionPolicyStrategy strategy for onException handling
*/
public LoggingErrorHandler(CamelContext camelContext, Processor output, Logger logger, ExceptionPolicyStrategy exceptionPolicyStrategy) {
- super(camelContext, output, logger, null, new RedeliveryPolicy(), null, exceptionPolicyStrategy);
+ super(camelContext, output, logger, null, new RedeliveryPolicy(), null, exceptionPolicyStrategy, null);
}
@Override
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java?rev=1024138&r1=1024137&r2=1024138&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/RedeliveryErrorHandler.java Tue Oct 19 07:02:58 2010
@@ -58,6 +58,7 @@ public abstract class RedeliveryErrorHan
protected final Processor redeliveryProcessor;
protected final RedeliveryPolicy redeliveryPolicy;
protected final Predicate handledPolicy;
+ protected final Predicate retryWhilePolicy;
protected final Logger logger;
protected final boolean useOriginalMessagePolicy;
@@ -68,7 +69,7 @@ public abstract class RedeliveryErrorHan
boolean sync = true;
int redeliveryCounter;
long redeliveryDelay;
- Predicate retryWhilePredicate;
+ Predicate retryWhilePredicate = retryWhilePolicy;
boolean redeliverFromSync;
// default behavior which can be overloaded on a per exception basis
@@ -174,7 +175,7 @@ public abstract class RedeliveryErrorHan
public RedeliveryErrorHandler(CamelContext camelContext, Processor output, Logger logger, Processor redeliveryProcessor,
RedeliveryPolicy redeliveryPolicy, Predicate handledPolicy, Processor deadLetter,
- String deadLetterUri, boolean useOriginalMessagePolicy) {
+ String deadLetterUri, boolean useOriginalMessagePolicy, Predicate retryWhile) {
ObjectHelper.notNull(camelContext, "CamelContext", this);
ObjectHelper.notNull(redeliveryPolicy, "RedeliveryPolicy", this);
@@ -188,6 +189,7 @@ public abstract class RedeliveryErrorHan
this.deadLetterUri = deadLetterUri;
this.handledPolicy = handledPolicy;
this.useOriginalMessagePolicy = useOriginalMessagePolicy;
+ this.retryWhilePolicy = retryWhile;
}
public boolean supportTransacted() {
Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerRetryWhileTest.java (from r1023225, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRetryUntilTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerRetryWhileTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerRetryWhileTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRetryUntilTest.java&r1=1023225&r2=1024138&rev=1024138&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/OnExceptionRetryUntilTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/onexception/DefaultErrorHandlerRetryWhileTest.java Tue Oct 19 07:02:58 2010
@@ -16,11 +16,8 @@
*/
package org.apache.camel.processor.onexception;
-import org.apache.camel.Body;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
-import org.apache.camel.ExchangeException;
-import org.apache.camel.Header;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.impl.JndiRegistry;
@@ -28,7 +25,7 @@ import org.apache.camel.impl.JndiRegistr
/**
* Unit test for the retry until predicate
*/
-public class OnExceptionRetryUntilTest extends ContextTestSupport {
+public class DefaultErrorHandlerRetryWhileTest extends ContextTestSupport {
private static int invoked;
@@ -40,51 +37,40 @@ public class OnExceptionRetryUntilTest e
}
public void testRetryUntil() throws Exception {
- context.addRoutes(new RouteBuilder() {
+ Object out = template.requestBody("direct:start", "Hello World");
+ assertEquals("Bye World", out);
+ assertEquals(3, invoked);
+ }
+
+ @Override
+ protected RouteBuilder createRouteBuilder() throws Exception {
+ return new RouteBuilder() {
@Override
public void configure() throws Exception {
- // as its based on a unit test we do not have any delays between and do not log the stack trace
- errorHandler(deadLetterChannel("mock:error").maximumRedeliveries(1).redeliveryDelay(0).logStackTrace(false));
+ errorHandler(defaultErrorHandler().retryWhile(bean("myRetryHandler")));
- // START SNIPPET: e1
- // we want to use a predicate for retries so we can determine in our bean
- // when retry should stop, notice it will overrule the global error handler
- // where we defined at most 1 redelivery attempt. Here we will continue until
- // the predicate returns false
- onException(MyFunctionalException.class)
- .retryWhile(bean("myRetryHandler"))
- .handled(true)
- .transform().constant("Sorry");
- // END SNIPPET: e1
-
- from("direct:start").process(new Processor() {
- public void process(Exchange exchange) throws Exception {
- throw new MyFunctionalException("Sorry you cannot do this");
- }
- });
+ from("direct:start").process(new MyProcessor());
}
- });
-
- Object out = template.requestBody("direct:start", "Hello World");
- assertEquals("Sorry", out);
- assertEquals(3, invoked);
+ };
}
- // START SNIPPET: e2
- public class MyRetryBean {
+ public static class MyProcessor implements Processor {
- // using bean binding we can bind the information from the exchange to the types we have in our method signature
- public boolean retry(@Header(Exchange.REDELIVERY_COUNTER) Integer counter, @Body String body, @ExchangeException Exception causedBy) {
- // NOTE: counter is the redelivery attempt, will start from 1
- invoked++;
+ public void process(Exchange exchange) throws Exception {
+ if (invoked < 3) {
+ throw new MyFunctionalException("Sorry you cannot do this");
+ }
+ exchange.getIn().setBody("Bye World");
+ }
+ }
- assertEquals("Hello World", body);
- assertTrue(causedBy instanceof MyFunctionalException);
+ public static class MyRetryBean {
- // we can of course do what ever we want to determine the result but this is a unit test so we end after 3 attempts
- return counter < 3;
+ public boolean retry() {
+ // force retry forever
+ invoked++;
+ return true;
}
}
- // END SNIPPET: e2
}
\ No newline at end of file
Modified: camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ErrorHandlerDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ErrorHandlerDefinition.java?rev=1024138&r1=1024137&r2=1024138&view=diff
==============================================================================
--- camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ErrorHandlerDefinition.java (original)
+++ camel/trunk/components/camel-blueprint/src/main/java/org/apache/camel/blueprint/ErrorHandlerDefinition.java Tue Oct 19 07:02:58 2010
@@ -49,6 +49,8 @@ public class ErrorHandlerDefinition exte
private String transactionManagerRef;
@XmlAttribute
private String onRedeliveryRef;
+ @XmlAttribute
+ private String retryWhileRef;
@XmlElement
private RedeliveryPolicyDefinition redeliveryPolicy;
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefinition.java?rev=1024138&r1=1024137&r2=1024138&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefinition.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/ErrorHandlerDefinition.java Tue Oct 19 07:02:58 2010
@@ -49,6 +49,8 @@ public class ErrorHandlerDefinition exte
private String transactionManagerRef;
@XmlAttribute
private String onRedeliveryRef;
+ @XmlAttribute
+ private String retryWhileRef;
@XmlElement
private RedeliveryPolicyDefinition redeliveryPolicy;
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.java?rev=1024138&r1=1024137&r2=1024138&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/handler/ErrorHandlerDefinitionParser.java Tue Oct 19 07:02:58 2010
@@ -56,8 +56,10 @@ public class ErrorHandlerDefinitionParse
return false;
}
return !attributeName.equals("xmlns") && !attributeName.startsWith("xmlns:")
- && !attributeName.equals("type") && !attributeName.equals("onRedeliveryRef")
- && !attributeName.equals("transactionTemplateRef")
+ && !attributeName.equals("type")
+ && !attributeName.equals("onRedeliveryRef")
+ && !attributeName.equals("onRetryWhileRef")
+ && !attributeName.equals("transactionTemplateRef")
&& !attributeName.equals("transactionManagerRef");
}
@@ -89,7 +91,6 @@ public class ErrorHandlerDefinitionParse
}
}
}
- // deal with onRedeliveryRef
parserRefAttribute(element, "onRedeliveryRef", "onRedelivery", builder);
}
if (type.equals(ErrorHandlerType.TransactionErrorHandler)) {
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java?rev=1024138&r1=1024137&r2=1024138&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java Tue Oct 19 07:02:58 2010
@@ -52,11 +52,12 @@ public class TransactionErrorHandler ext
* @param handledPolicy policy for handling failed exception that are moved to the dead letter queue
* @param exceptionPolicyStrategy strategy for onException handling
* @param transactionTemplate the transaction template
+ * @param retryWhile retry while
*/
public TransactionErrorHandler(CamelContext camelContext, Processor output, Logger logger, Processor redeliveryProcessor,
- RedeliveryPolicy redeliveryPolicy, Predicate handledPolicy,
- ExceptionPolicyStrategy exceptionPolicyStrategy, TransactionTemplate transactionTemplate) {
- super(camelContext, output, logger, redeliveryProcessor, redeliveryPolicy, handledPolicy, null, null, false);
+ RedeliveryPolicy redeliveryPolicy, Predicate handledPolicy, ExceptionPolicyStrategy exceptionPolicyStrategy,
+ TransactionTemplate transactionTemplate, Predicate retryWhile) {
+ super(camelContext, output, logger, redeliveryProcessor, redeliveryPolicy, handledPolicy, null, null, false, retryWhile);
setExceptionPolicy(exceptionPolicyStrategy);
this.transactionTemplate = transactionTemplate;
}
Modified: camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java?rev=1024138&r1=1024137&r2=1024138&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java (original)
+++ camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java Tue Oct 19 07:02:58 2010
@@ -112,7 +112,7 @@ public class TransactionErrorHandlerBuil
TransactionErrorHandler answer = new TransactionErrorHandler(routeContext.getCamelContext(), processor,
getLogger(), getOnRedelivery(), getRedeliveryPolicy(), getHandledPolicy(),
- getExceptionPolicyStrategy(), transactionTemplate);
+ getExceptionPolicyStrategy(), transactionTemplate, getRetryWhilePolicy(routeContext.getCamelContext()));
// configure error handler before we can use it
configure(answer);
return answer;
Copied: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringDefaultErrorHandlerRetryWhileTest.java (from r1024106, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringShutdownCompleteAllTasksTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringDefaultErrorHandlerRetryWhileTest.java?p2=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringDefaultErrorHandlerRetryWhileTest.java&p1=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringShutdownCompleteAllTasksTest.java&r1=1024106&r2=1024138&rev=1024138&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringShutdownCompleteAllTasksTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringDefaultErrorHandlerRetryWhileTest.java Tue Oct 19 07:02:58 2010
@@ -17,16 +17,16 @@
package org.apache.camel.spring.processor;
import org.apache.camel.CamelContext;
-import org.apache.camel.processor.ShutdownCompleteAllTasksTest;
+import org.apache.camel.processor.onexception.DefaultErrorHandlerRetryWhileTest;
import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
/**
* @version $Revision$
*/
-public class SpringShutdownCompleteAllTasksTest extends ShutdownCompleteAllTasksTest {
+public class SpringDefaultErrorHandlerRetryWhileTest extends DefaultErrorHandlerRetryWhileTest {
protected CamelContext createCamelContext() throws Exception {
- return createSpringCamelContext(this, "org/apache/camel/spring/processor/ShutdownCompleteAllTasksTest.xml");
+ return createSpringCamelContext(this, "org/apache/camel/spring/processor/DefaultErrorHandlerRetryWhileTest.xml");
}
}
\ No newline at end of file
Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringDefaultErrorHandlerRetryWhileTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/processor/SpringDefaultErrorHandlerRetryWhileTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Copied: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/DefaultErrorHandlerRetryWhileTest.xml (from r1024106, camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringCustomPredicateTest.xml)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/DefaultErrorHandlerRetryWhileTest.xml?p2=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/DefaultErrorHandlerRetryWhileTest.xml&p1=camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringCustomPredicateTest.xml&r1=1024106&r2=1024138&rev=1024138&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/SpringCustomPredicateTest.xml (original)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/processor/DefaultErrorHandlerRetryWhileTest.xml Tue Oct 19 07:02:58 2010
@@ -22,16 +22,19 @@
http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
">
- <bean id="myPredicate" class="org.apache.camel.spring.processor.SpringCustomPredicateTest$MyPredicate"/>
+ <bean id="myProcessor" class="org.apache.camel.processor.onexception.DefaultErrorHandlerRetryWhileTest$MyProcessor"/>
+
+ <bean id="myRetryBean" class="org.apache.camel.processor.onexception.DefaultErrorHandlerRetryWhileTest$MyRetryBean"/>
+
+ <!-- use the error handler -->
+ <camelContext errorHandlerRef="eh" xmlns="http://camel.apache.org/schema/spring">
+
+ <!-- use retry while on error handler -->
+ <errorHandler id="eh" retryWhileRef="myRetryBean"/>
- <camelContext xmlns="http://camel.apache.org/schema/spring">
<route>
<from uri="direct:start"/>
- <filter>
- <method ref="myPredicate"/>
- <to uri="mock:foo"/>
- </filter>
- <to uri="mock:result"/>
+ <process ref="myProcessor"/>
</route>
</camelContext>