Hello. I'm trying to store redelivery policies in separate spring context.
Here context files that I'm using to test my approach: main-context.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel="http://camel.apache.org/schema/spring" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> <camel:camelContext id="camelContext" trace="true"> <camel:route id="main" errorHandlerRef="defaultErrorHandler"> <camel:from ref="input" /> <camel:onException redeliveryPolicyRef="redeliveryPolicy" onRedeliveryRef="onRedeliveryBean"> <camel:exception>java.lang.Exception</camel:exception> <camel:handled><camel:constant>true</camel:constant></camel:handled> </camel:onException> <camel:bean ref="exceptionThrowingBean" /> <camel:to ref="output" /> </camel:route> </camel:camelContext> </beans> test-policies-context.xml: <?xml version="1.0" encoding="UTF-8"?> <beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:camel="http://camel.apache.org/schema/spring" xsi:schemaLocation=" http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd"> <camel:endpoint id="input" uri="direct:input" /> <camel:endpoint id="output" uri="mock:output" /> <camel:redeliveryPolicyProfile id="redeliveryPolicy" maximumRedeliveries="5" disableRedelivery="false" /> <camel:errorHandler id="defaultErrorHandler" type="DeadLetterChannel" deadLetterUri="mock:deadLetterChannel" /> <bean id="onRedeliveryBean" class="RedeliveryPoliciesTest.OnRedeliveryBean" /> <bean id="exceptionThrowingBean" class="RedeliveryPoliciesTest.ExceptionThrowingBean" /> </beans> Test class: public class RedeliveryPoliciesTest extends CamelSpringTestSupport { public static class ExceptionThrowingBean implements Processor { public void process(Exchange exchange) throws Exception { throw new Exception("RedeliveryPoliciesTest"); } } public static class OnRedeliveryBean implements Processor { private Counter counter; public void setCounter(Counter counter) { this.counter = counter; } public void process(Exchange exchange) throws Exception { counter.inc(); } } public static interface Counter { void inc(); } protected AbstractApplicationContext createApplicationContext() { return new ClassPathXmlApplicationContext("main-context.xml", "test-policies-context.xml"); } @Test public void testEnsureTharRedeliveryPolicyIsWorking() { Counter counter = Mockito.mock(Counter.class); getMandatoryBean(OnRedeliveryBean.class, "onRedeliveryBean").setCounter(counter); template.sendBody("direct:input", new Object()); Mockito.verify(counter, Mockito.times(5)).inc(); } } If I run this test it fail with: java.lang.IllegalArgumentException: Defensive copy of Exchange is null must be specified on: If I uncomment it starts to work. Is it correct behaviour? I'm using camel 2.8.0. -- View this message in context: http://camel.465427.n5.nabble.com/redeliveryPolicyProfile-and-onException-redeliveryPolicyRef-tp4738408p4738408.html Sent from the Camel - Users mailing list archive at Nabble.com.