Author: davsclaus
Date: Mon Mar 23 10:36:03 2009
New Revision: 757367
URL: http://svn.apache.org/viewvc?rev=757367&view=rev
Log:
A bit easier to setup Camel TransactionErrorHandler in Spring DSL. Fixed CS.
Added:
camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionalClientWithRollbackTest.java
- copied, changed from r757317,
camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionalClientTest.java
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionalClientWithRollbackTest.xml
- copied, changed from r757317,
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionalClientTest.xml
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/JmsResequencerTest-context.xml
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/TransactionErrorHandlerRedeliveryDelayTest-context.xml
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionalClientTest.xml
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/TransactionErrorHandlerBuilderAsSpringBeanTest.xml
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringRouteBuilder.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandlerBuilder.java
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientWithRollbackTest.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java?rev=757367&r1=757366&r2=757367&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/LoggingExceptionHandler.java
Mon Mar 23 10:36:03 2009
@@ -40,11 +40,23 @@
}
public void handleException(Throwable exception) {
- if (exception instanceof RollbackExchangeException) {
+ if (isCausedByRollbackExchangeException(exception)) {
// do not log stacktrace for intended rollbacks
logger.log(exception.getMessage());
} else {
logger.log(exception.getMessage(), exception);
}
}
+
+ protected boolean isCausedByRollbackExchangeException(Throwable exception)
{
+ if (exception instanceof RollbackExchangeException) {
+ return true;
+ } else if (exception.getCause() != null) {
+ // recursive children
+ return isCausedByRollbackExchangeException(exception.getCause());
+ }
+
+ return false;
+ }
+
}
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java
URL:
http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java?rev=757367&r1=757366&r2=757367&view=diff
==============================================================================
---
camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java
(original)
+++
camel/trunk/camel-core/src/main/java/org/apache/camel/model/RollbackDefinition.java
Mon Mar 23 10:36:03 2009
@@ -18,16 +18,12 @@
import java.util.Collections;
import java.util.List;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
import javax.xml.bind.annotation.XmlRootElement;
-import javax.xml.bind.annotation.XmlTransient;
-import org.apache.camel.CamelException;
import org.apache.camel.Processor;
-import org.apache.camel.processor.ThrowFaultProcessor;
import org.apache.camel.processor.RollbackProcessor;
import org.apache.camel.spi.RouteContext;
Modified:
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java?rev=757367&r1=757366&r2=757367&view=diff
==============================================================================
---
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
(original)
+++
camel/trunk/components/camel-jms/src/main/java/org/apache/camel/component/jms/EndpointMessageListener.java
Mon Mar 23 10:36:03 2009
@@ -25,6 +25,8 @@
import org.apache.camel.ExchangePattern;
import org.apache.camel.Processor;
import org.apache.camel.RuntimeCamelException;
+import org.apache.camel.impl.LoggingExceptionHandler;
+import org.apache.camel.spi.ExceptionHandler;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.jms.core.JmsOperations;
@@ -42,6 +44,7 @@
*/
public class EndpointMessageListener implements MessageListener {
private static final transient Log LOG =
LogFactory.getLog(EndpointMessageListener.class);
+ private ExceptionHandler exceptionHandler;
private JmsEndpoint endpoint;
private Processor processor;
private JmsBinding binding;
@@ -96,7 +99,7 @@
rce = wrapRuntimeCamelException(e);
}
if (rce != null) {
- LOG.warn(endpoint + " consumer caught an exception while
processing JMS message: " + message, rce);
+ getExceptionHandler().handleException(rce);
throw rce;
}
}
@@ -133,6 +136,17 @@
this.binding = binding;
}
+ public ExceptionHandler getExceptionHandler() {
+ if (exceptionHandler == null) {
+ exceptionHandler = new LoggingExceptionHandler(getClass());
+ }
+ return exceptionHandler;
+ }
+
+ public void setExceptionHandler(ExceptionHandler exceptionHandler) {
+ this.exceptionHandler = exceptionHandler;
+ }
+
public boolean isEagerLoadingOfProperties() {
return eagerLoadingOfProperties;
}
@@ -217,4 +231,14 @@
}
return destination;
}
+
+ /**
+ * Handles the given exception using the {...@link #getExceptionHandler()}
+ *
+ * @param t the exception to handle
+ */
+ protected void handleException(Throwable t) {
+ getExceptionHandler().handleException(t);
+ }
+
}
Copied:
camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionalClientWithRollbackTest.java
(from r757317,
camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionalClientTest.java)
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionalClientWithRollbackTest.java?p2=camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionalClientWithRollbackTest.java&p1=camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionalClientTest.java&r1=757317&r2=757367&rev=757367&view=diff
==============================================================================
---
camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionalClientTest.java
(original)
+++
camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/tx/JMSTransactionalClientWithRollbackTest.java
Mon Mar 23 10:36:03 2009
@@ -25,11 +25,11 @@
/**
* Simple unit test for transaction client EIP pattern and JMS.
*/
-public class JMSTransactionalClientTest extends SpringTestSupport {
+public class JMSTransactionalClientWithRollbackTest extends SpringTestSupport {
protected ClassPathXmlApplicationContext createApplicationContext() {
return new ClassPathXmlApplicationContext(
-
"/org/apache/camel/component/jms/tx/JMSTransactionalClientTest.xml");
+
"/org/apache/camel/component/jms/tx/JMSTransactionalClientWithRollbackTest.xml");
}
protected int getExpectedRouteCount() {
@@ -37,7 +37,6 @@
}
public void testTransactionSuccess() throws Exception {
- // START SNIPPET: e1
MockEndpoint mock = getMockEndpoint("mock:result");
mock.expectedMessageCount(1);
mock.expectedBodiesReceived("Bye World");
@@ -47,21 +46,15 @@
template.sendBody("activemq:queue:okay", "Hello World");
mock.assertIsSatisfied();
- // END SNIPPET: e1
}
- // START SNIPPET: e2
public static class MyProcessor implements Processor {
private int count;
public void process(Exchange exchange) throws Exception {
- if (++count <= 2) {
- throw new IllegalArgumentException("Forced Exception number "
+ count + ", please retry");
- }
exchange.getIn().setBody("Bye World");
- exchange.getIn().setHeader("count", count);
+ exchange.getIn().setHeader("count", ++count);
}
}
- // END SNIPPET: e2
-}
+}
\ No newline at end of file
Modified:
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/JmsResequencerTest-context.xml
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/JmsResequencerTest-context.xml?rev=757367&r1=757366&r2=757367&view=diff
==============================================================================
---
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/JmsResequencerTest-context.xml
(original)
+++
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/JmsResequencerTest-context.xml
Mon Mar 23 10:36:03 2009
@@ -23,6 +23,7 @@
<camelContext id="camel" xmlns="http://camel.apache.org/schema/spring">
<jmxAgent id="agent" disabled="true" />
+ <routeBuilder ref="routeBuilder"/>
</camelContext>
<bean id="routeBuilder"
Modified:
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/TransactionErrorHandlerRedeliveryDelayTest-context.xml
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/TransactionErrorHandlerRedeliveryDelayTest-context.xml?rev=757367&r1=757366&r2=757367&view=diff
==============================================================================
---
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/TransactionErrorHandlerRedeliveryDelayTest-context.xml
(original)
+++
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/issues/TransactionErrorHandlerRedeliveryDelayTest-context.xml
Mon Mar 23 10:36:03 2009
@@ -42,7 +42,7 @@
</bean>
<bean id="required"
class="org.apache.camel.spring.spi.SpringTransactionPolicy">
- <property name="template" ref="PROPAGATION_REQUIRED"/>
+ <property name="transactionTemplate" ref="PROPAGATION_REQUIRED"/>
</bean>
<bean id="PROPAGATION_REQUIRED"
class="org.springframework.transaction.support.TransactionTemplate">
@@ -61,7 +61,6 @@
<property name="connectionFactory" ref="jmsConnectionFactory"/>
<property name="transactionManager" ref="jmsTransactionManager"/>
<property name="transacted" value="true"/>
- <property name="transactedInOut" value="true"/>
<property name="concurrentConsumers" value="1"/>
</bean>
Modified:
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionalClientTest.xml
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionalClientTest.xml?rev=757367&r1=757366&r2=757367&view=diff
==============================================================================
---
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionalClientTest.xml
(original)
+++
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionalClientTest.xml
Mon Mar 23 10:36:03 2009
@@ -26,7 +26,7 @@
<!-- here we define our camel context -->
<camel:camelContext id="myroutes">
<!-- and now our route using the XML syntax -->
- <camel:route>
+ <camel:route errorHandlerRef="errorHandler">
<!-- 1: from the jms queue -->
<camel:from uri="activemq:queue:okay"/>
<!-- 2: setup the transactional boundaries to require a
transaction -->
@@ -43,6 +43,11 @@
<!-- END SNIPPET: e1 -->
<!-- START SNIPPET: e2 -->
+ <!-- the transactional error handler -->
+ <bean id="errorHandler"
class="org.apache.camel.spring.spi.TransactionErrorHandlerBuilder">
+ <property name="springTransactionPolicy" ref="PROPAGATION_REQUIRED"/>
+ </bean>
+
<bean id="jmsConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL"
value="vm://localhost?broker.persistent=false&broker.useJmx=false"/>
</bean>
@@ -55,11 +60,10 @@
<property name="connectionFactory" ref="jmsConnectionFactory"/>
<property name="transactionManager" ref="jmsTransactionManager"/>
<property name="transacted" value="true"/>
- <property name="transactedInOut" value="true"/>
<property name="concurrentConsumers" value="1"/>
</bean>
- <bean id="activemq" class="org.apache.camel.component.jms.JmsComponent">
+ <bean id="activemq"
class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="configuration" ref="jmsConfig"/>
</bean>
Copied:
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionalClientWithRollbackTest.xml
(from r757317,
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionalClientTest.xml)
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionalClientWithRollbackTest.xml?p2=camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionalClientWithRollbackTest.xml&p1=camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionalClientTest.xml&r1=757317&r2=757367&rev=757367&view=diff
==============================================================================
---
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionalClientTest.xml
(original)
+++
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/JMSTransactionalClientWithRollbackTest.xml
Mon Mar 23 10:36:03 2009
@@ -24,45 +24,61 @@
<!-- START SNIPPET: e1 -->
<!-- here we define our camel context -->
- <camel:camelContext id="myroutes">
+ <camelContext id="myroutes" xmlns="http://camel.apache.org/schema/spring">
<!-- and now our route using the XML syntax -->
- <camel:route>
+ <route errorHandlerRef="errorHandler">
<!-- 1: from the jms queue -->
- <camel:from uri="activemq:queue:okay"/>
+ <from uri="activemq:queue:okay"/>
<!-- 2: setup the transactional boundaries to require a
transaction -->
- <camel:policy ref="PROPAGATION_REQUIRED"/>
+ <policy ref="PROPAGATION_REQUIRED"/>
<!-- 3: call our business logic that is myProcessor -->
- <camel:process ref="myProcessor"/>
- <!-- 4: if success then send it to the mock -->
- <camel:to uri="mock:result"/>
- </camel:route>
- </camel:camelContext>
+ <process ref="myProcessor"/>
+ <!-- 4: choice -->
+ <choice>
+ <when>
+ <simple>${in.header.count} < 3</simple>
+ <rollback message="Please rollback"/>
+ </when>
+ </choice>
+ <!-- 5: if success then send it to the mock -->
+ <to uri="mock:result"/>
+ </route>
+ </camelContext>
<!-- this bean is our business logic -->
- <bean id="myProcessor"
class="org.apache.camel.component.jms.tx.JMSTransactionalClientTest$MyProcessor"/>
+ <bean id="myProcessor"
class="org.apache.camel.component.jms.tx.JMSTransactionalClientWithRollbackTest$MyProcessor"/>
<!-- END SNIPPET: e1 -->
<!-- START SNIPPET: e2 -->
+ <!-- the transactional error handler -->
+ <bean id="errorHandler"
class="org.apache.camel.spring.spi.TransactionErrorHandlerBuilder">
+ <property name="springTransactionPolicy" ref="PROPAGATION_REQUIRED"/>
+ </bean>
+
+ <!-- jms connection factory -->
<bean id="jmsConnectionFactory"
class="org.apache.activemq.ActiveMQConnectionFactory">
<property name="brokerURL"
value="vm://localhost?broker.persistent=false&broker.useJmx=false"/>
</bean>
+ <!-- jms transaction manager -->
<bean id="jmsTransactionManager"
class="org.springframework.jms.connection.JmsTransactionManager">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
</bean>
+ <!-- jms component configuration -->
<bean id="jmsConfig"
class="org.apache.camel.component.jms.JmsConfiguration">
<property name="connectionFactory" ref="jmsConnectionFactory"/>
<property name="transactionManager" ref="jmsTransactionManager"/>
<property name="transacted" value="true"/>
- <property name="transactedInOut" value="true"/>
<property name="concurrentConsumers" value="1"/>
</bean>
- <bean id="activemq" class="org.apache.camel.component.jms.JmsComponent">
+ <!-- activemq component -->
+ <bean id="activemq"
class="org.apache.activemq.camel.component.ActiveMQComponent">
<property name="configuration" ref="jmsConfig"/>
</bean>
+ <!-- spring required policy -->
<bean id="PROPAGATION_REQUIRED"
class="org.apache.camel.spring.spi.SpringTransactionPolicy">
<constructor-arg>
<bean
class="org.springframework.transaction.support.TransactionTemplate">
Modified:
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/TransactionErrorHandlerBuilderAsSpringBeanTest.xml
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/TransactionErrorHandlerBuilderAsSpringBeanTest.xml?rev=757367&r1=757366&r2=757367&view=diff
==============================================================================
---
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/TransactionErrorHandlerBuilderAsSpringBeanTest.xml
(original)
+++
camel/trunk/components/camel-jms/src/test/resources/org/apache/camel/component/jms/tx/TransactionErrorHandlerBuilderAsSpringBeanTest.xml
Mon Mar 23 10:36:03 2009
@@ -55,7 +55,7 @@
<!-- START SNIPPET: e2 -->
<!-- camel policy we refer to in our route -->
<bean id="required"
class="org.apache.camel.spring.spi.SpringTransactionPolicy">
- <property name="template" ref="PROPAGATION_REQUIRED"/>
+ <property name="transactionTemplate" ref="PROPAGATION_REQUIRED"/>
</bean>
<!-- the standard spring transaction template for required -->
@@ -92,7 +92,6 @@
<property name="connectionFactory" ref="jmsConnectionFactory"/>
<property name="transactionManager" ref="jmsTransactionManager"/>
<property name="transacted" value="true"/>
- <property name="transactedInOut" value="true"/>
<property name="concurrentConsumers" value="1"/>
</bean>
Modified:
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringRouteBuilder.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringRouteBuilder.java?rev=757367&r1=757366&r2=757367&view=diff
==============================================================================
---
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringRouteBuilder.java
(original)
+++
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/SpringRouteBuilder.java
Mon Mar 23 10:36:03 2009
@@ -17,7 +17,6 @@
package org.apache.camel.spring;
import org.apache.camel.CamelContext;
-import org.apache.camel.CamelContextAware;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.spring.spi.SpringTransactionPolicy;
import org.apache.camel.spring.spi.TransactionErrorHandlerBuilder;
@@ -111,7 +110,7 @@
*/
public TransactionErrorHandlerBuilder
transactionErrorHandler(SpringTransactionPolicy policy) {
TransactionErrorHandlerBuilder answer = new
TransactionErrorHandlerBuilder();
- answer.setTransactionTemplate(policy.getTemplate());
+ answer.setTransactionTemplate(policy.getTransactionTemplate());
return answer;
}
Modified:
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java?rev=757367&r1=757366&r2=757367&view=diff
==============================================================================
---
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java
(original)
+++
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/SpringTransactionPolicy.java
Mon Mar 23 10:36:03 2009
@@ -45,7 +45,7 @@
}
public Processor wrap(Processor processor) {
- final TransactionTemplate transactionTemplate = getTemplate();
+ final TransactionTemplate transactionTemplate =
getTransactionTemplate();
if (transactionTemplate == null) {
LOG.warn("No TransactionTemplate available so transactions will
not be enabled!");
return processor;
@@ -56,7 +56,7 @@
return answer;
}
- public TransactionTemplate getTemplate() {
+ public TransactionTemplate getTransactionTemplate() {
if (template == null) {
template = new TransactionTemplate(transactionManager);
if (propagationBehaviorName != null) {
@@ -66,7 +66,7 @@
return template;
}
- public void setTemplate(TransactionTemplate template) {
+ public void setTransactionTemplate(TransactionTemplate template) {
this.template = template;
}
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=757367&r1=757366&r2=757367&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
Mon Mar 23 10:36:03 2009
@@ -17,10 +17,8 @@
package org.apache.camel.spring.spi;
import org.apache.camel.Processor;
-import org.apache.camel.builder.ErrorHandlerBuilder;
import org.apache.camel.builder.ErrorHandlerBuilderSupport;
import org.apache.camel.processor.DelayPolicy;
-import org.apache.camel.processor.RedeliveryPolicy;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.util.ObjectHelper;
import org.springframework.beans.factory.InitializingBean;
@@ -34,7 +32,7 @@
*
* @version $Revision$
*/
-public class TransactionErrorHandlerBuilder extends ErrorHandlerBuilderSupport
implements Cloneable, InitializingBean {
+public class TransactionErrorHandlerBuilder extends ErrorHandlerBuilderSupport
implements InitializingBean {
private TransactionTemplate transactionTemplate;
private DelayPolicy delayPolicy;
@@ -50,6 +48,10 @@
this.transactionTemplate = transactionTemplate;
}
+ public void setSpringTransactionPolicy(SpringTransactionPolicy policy) {
+ this.transactionTemplate = policy.getTransactionTemplate();
+ }
+
public DelayPolicy getDelayPolicy() {
return delayPolicy;
}
@@ -58,14 +60,6 @@
this.delayPolicy = delayPolicy;
}
- public ErrorHandlerBuilder copy() {
- try {
- return (ErrorHandlerBuilder) clone();
- } catch (CloneNotSupportedException e) {
- throw new Error("Clone should be supported: " + e, e);
- }
- }
-
public Processor createErrorHandler(RouteContext routeContext, Processor
processor) throws Exception {
return new TransactionInterceptor(processor, transactionTemplate,
delayPolicy);
}
Modified:
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientWithRollbackTest.java
URL:
http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientWithRollbackTest.java?rev=757367&r1=757366&r2=757367&view=diff
==============================================================================
---
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientWithRollbackTest.java
(original)
+++
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientWithRollbackTest.java
Mon Mar 23 10:36:03 2009
@@ -18,15 +18,15 @@
import javax.sql.DataSource;
-import org.apache.camel.spring.SpringTestSupport;
-import org.apache.camel.spring.SpringRouteBuilder;
-import org.apache.camel.spring.spi.SpringTransactionPolicy;
-import org.apache.camel.RuntimeCamelException;
import org.apache.camel.RollbackExchangeException;
+import org.apache.camel.RuntimeCamelException;
import org.apache.camel.builder.RouteBuilder;
-import org.springframework.jdbc.core.JdbcTemplate;
+import org.apache.camel.spring.SpringRouteBuilder;
+import org.apache.camel.spring.SpringTestSupport;
+import org.apache.camel.spring.spi.SpringTransactionPolicy;
import org.springframework.context.support.AbstractXmlApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
+import org.springframework.jdbc.core.JdbcTemplate;
/**
* Transactional client test with rollback in the DSL.
@@ -53,7 +53,7 @@
final DataSource ds = getMandatoryBean(DataSource.class, "dataSource");
jdbc = new JdbcTemplate(ds);
jdbc.execute("create table books (title varchar(50))");
- jdbc.update("insert into books (title) values (?)", new Object[]
{"Camel in Action"});
+ jdbc.update("insert into books (title) values (?)", new
Object[]{"Camel in Action"});
}
@Override
@@ -82,31 +82,31 @@
}
protected RouteBuilder createRouteBuilder() throws Exception {
- // Notice that we use the SpringRouteBuilder that has a few more
features than
- // the standard RouteBuilder
- return new SpringRouteBuilder() {
- public void configure() throws Exception {
- // setup the transaction policy
- SpringTransactionPolicy required = context.getRegistry()
- .lookup("PROPAGATION_REQUIRED",
SpringTransactionPolicy.class);
-
- // use transaction error handler
- errorHandler(transactionErrorHandler(required));
-
- // must setup policy for each route
- // TODO: CAMEL-1475 should fix this
- from("direct:okay").policy(required)
- .setBody(constant("Tiger in
Action")).beanRef("bookService")
- .setBody(constant("Elephant in
Action")).beanRef("bookService");
-
- // must setup policy for each route
- // TODO: CAMEL-1475 should fix this
- from("direct:fail").policy(required)
- .setBody(constant("Tiger in
Action")).beanRef("bookService")
- // force a rollback
- .rollback();
- }
- };
- }
+ // Notice that we use the SpringRouteBuilder that has a few more
features than
+ // the standard RouteBuilder
+ return new SpringRouteBuilder() {
+ public void configure() throws Exception {
+ // setup the transaction policy
+ SpringTransactionPolicy required = context.getRegistry()
+ .lookup("PROPAGATION_REQUIRED",
SpringTransactionPolicy.class);
+
+ // use transaction error handler
+ errorHandler(transactionErrorHandler(required));
+
+ // must setup policy for each route
+ // TODO: CAMEL-1475 should fix this
+ from("direct:okay").policy(required)
+ .setBody(constant("Tiger in
Action")).beanRef("bookService")
+ .setBody(constant("Elephant in
Action")).beanRef("bookService");
+
+ // must setup policy for each route
+ // TODO: CAMEL-1475 should fix this
+ from("direct:fail").policy(required)
+ .setBody(constant("Tiger in
Action")).beanRef("bookService")
+ // force a rollback
+ .rollback();
+ }
+ };
+ }
}