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/06/29 14:47:06 UTC
svn commit: r958951 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/processor/
camel-core/src/main/java/org/apache/camel/spi/
camel-core/src/test/java/org/apache/camel/processor/async/
components/camel-spring-security/src/main/java/org/apa...
Author: davsclaus
Date: Tue Jun 29 12:47:06 2010
New Revision: 958951
URL: http://svn.apache.org/viewvc?rev=958951&view=rev
Log:
CAMEL-2689: policy DSL supports async routing engine.
Added:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java
- copied, changed from r958909, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointTest.java
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelayProcessorSupport.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/InterceptorToAsyncProcessorBridge.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WrapProcessor.java
camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Policy.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/MyAsyncProducer.java
camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAccessPolicy.java
camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicy.java
camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/NamespaceHandler.java
camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/SpringSecurityAuthorizationPolicyParser.java
camel/trunk/components/camel-spring/src/main/java/org/apache/camel/spring/spi/TransactionErrorHandler.java
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceMixedTransactedTest.java
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceNotTransactedTest.java
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceWithOnExceptionHandledAndRollbackTest.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelayProcessorSupport.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelayProcessorSupport.java?rev=958951&r1=958950&r2=958951&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelayProcessorSupport.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/DelayProcessorSupport.java Tue Jun 29 12:47:06 2010
@@ -48,7 +48,10 @@ public abstract class DelayProcessorSupp
try {
delay(exchange);
} catch (Exception e) {
+ // exception occurred so we are done
exchange.setException(e);
+ callback.done(true);
+ return true;
}
return super.process(exchange, callback);
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/InterceptorToAsyncProcessorBridge.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/InterceptorToAsyncProcessorBridge.java?rev=958951&r1=958950&r2=958951&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/InterceptorToAsyncProcessorBridge.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/InterceptorToAsyncProcessorBridge.java Tue Jun 29 12:47:06 2010
@@ -42,7 +42,18 @@ public class InterceptorToAsyncProcessor
* @param interceptor the interceptor to bridge
*/
public InterceptorToAsyncProcessorBridge(Processor interceptor) {
+ this(interceptor, null);
+ }
+
+ /**
+ * Constructs the bridge
+ *
+ * @param interceptor the interceptor to bridge
+ * @param target the target
+ */
+ public InterceptorToAsyncProcessorBridge(Processor interceptor, AsyncProcessor target) {
this.interceptor = AsyncProcessorTypeConverter.convert(interceptor);
+ this.target = target;
}
/**
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WrapProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WrapProcessor.java?rev=958951&r1=958950&r2=958951&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WrapProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/WrapProcessor.java Tue Jun 29 12:47:06 2010
@@ -24,11 +24,9 @@ import org.apache.camel.util.ServiceHelp
*
* @version $Revision$
*/
-public class WrapProcessor extends DelegateProcessor {
+public class WrapProcessor extends DelegateAsyncProcessor {
private final Processor wrapped;
- // TODO: Should support async routing engine
-
public WrapProcessor(Processor processor, Processor wrapped) {
super(processor);
this.wrapped = wrapped;
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Policy.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Policy.java?rev=958951&r1=958950&r2=958951&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Policy.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/spi/Policy.java Tue Jun 29 12:47:06 2010
@@ -20,16 +20,21 @@ import org.apache.camel.Processor;
/**
* A strategy capable of applying interceptors to a processor
+ * <p/>
+ * Its <b>strongly</b> adviced to use an {@link org.apache.camel.AsyncProcessor} as the returned wrapped
+ * {@link Processor} which ensures the policy works well with the asynchronous routing engine.
+ * You can use the {@link org.apache.camel.processor.DelegateAsyncProcessor} to easily return an
+ * {@link org.apache.camel.AsyncProcessor} and override the
+ * {@link org.apache.camel.AsyncProcessor#process(org.apache.camel.Exchange, org.apache.camel.AsyncCallback)} to
+ * implement your interceptor logic. And just invoke the super method to <b>continue</b> routing.
*
* @version $Revision$
*/
public interface Policy {
- // TODO: Should support async routing engine
- // we may need the same bridge as we do with InterceptStrategy in DefaultChannel
-
/**
- * Wraps any applicable interceptors around the given processor
+ * Wraps any applicable interceptors around the given processor.
+ * <p
*
* @param routeContext the route context
* @param processor the processor to be intercepted
Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java (from r958909, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointTest.java&r1=958909&r2=958951&rev=958951&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/AsyncEndpointPolicyTest.java Tue Jun 29 12:47:06 2010
@@ -16,29 +16,51 @@
*/
package org.apache.camel.processor.async;
+import org.apache.camel.AsyncCallback;
+import org.apache.camel.AsyncProcessor;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.impl.JndiRegistry;
+import org.apache.camel.impl.converter.AsyncProcessorTypeConverter;
+import org.apache.camel.spi.Policy;
+import org.apache.camel.spi.RouteContext;
+import org.apache.camel.util.AsyncProcessorHelper;
/**
* @version $Revision$
*/
-public class AsyncEndpointTest extends ContextTestSupport {
+public class AsyncEndpointPolicyTest extends ContextTestSupport {
private static String beforeThreadName;
private static String afterThreadName;
- public void testAsyncEndpoint() throws Exception {
- getMockEndpoint("mock:before").expectedBodiesReceived("Hello Camel");
- getMockEndpoint("mock:after").expectedBodiesReceived("Bye Camel");
- getMockEndpoint("mock:result").expectedBodiesReceived("Bye Camel");
+ @Override
+ protected JndiRegistry createRegistry() throws Exception {
+ JndiRegistry jndi = super.createRegistry();
+ jndi.bind("foo", new MyPolicy("foo"));
+ return jndi;
+ }
- String reply = template.requestBody("direct:start", "Hello Camel", String.class);
- assertEquals("Bye Camel", reply);
+ public void testAsyncEndpoint() throws Exception {
+ getMockEndpoint("mock:foo").expectedMessageCount(1);
+ getMockEndpoint("mock:foo").expectedHeaderReceived("foo", "was wrapped");
+ getMockEndpoint("mock:bar").expectedMessageCount(1);
+ getMockEndpoint("mock:bar").expectedHeaderReceived("foo", "was wrapped");
+ getMockEndpoint("mock:result").expectedMessageCount(1);
+ getMockEndpoint("mock:result").expectedHeaderReceived("foo", "was wrapped");
+
+ getMockEndpoint("mock:response").expectedMessageCount(1);
+ getMockEndpoint("mock:response").expectedHeaderReceived("foo", "policy finished execution");
+ template.sendBody("direct:send", "Hello World");
assertMockEndpointsSatisfied();
+ MyPolicy foo = context.getRegistry().lookup("foo", MyPolicy.class);
+
+ assertEquals("Should only be invoked 1 time", 1, foo.getInvoked());
+
assertFalse("Should use different threads", beforeThreadName.equalsIgnoreCase(afterThreadName));
}
@@ -50,24 +72,83 @@ public class AsyncEndpointTest extends C
context.addComponent("async", new MyAsyncComponent());
from("direct:start")
- .to("mock:before")
- .to("log:before")
- .process(new Processor() {
- public void process(Exchange exchange) throws Exception {
- beforeThreadName = Thread.currentThread().getName();
- }
- })
+ // wraps the entire route in the same policy
+ .policy("foo")
+ .to("mock:foo")
.to("async:Bye Camel")
- .process(new Processor() {
- public void process(Exchange exchange) throws Exception {
- afterThreadName = Thread.currentThread().getName();
- }
- })
- .to("log:after")
- .to("mock:after")
+ .to("mock:bar")
.to("mock:result");
+
+ from("direct:send")
+ .to("mock:before")
+ .to("log:before")
+ .process(new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ beforeThreadName = Thread.currentThread().getName();
+ }
+ })
+ .to("direct:start")
+ .process(new Processor() {
+ public void process(Exchange exchange) throws Exception {
+ afterThreadName = Thread.currentThread().getName();
+ }
+ })
+ .to("log:after")
+ .to("mock:after")
+ .to("mock:response");
}
};
}
-}
+ public static class MyPolicy implements Policy {
+
+ private final String name;
+ private int invoked;
+
+ public MyPolicy(String name) {
+ this.name = name;
+ }
+
+ public Processor wrap(RouteContext routeContext, final Processor processor) {
+ return new AsyncProcessor() {
+ public boolean process(final Exchange exchange, final AsyncCallback callback) {
+ invoked++;
+ // let the original processor continue routing
+ exchange.getIn().setHeader(name, "was wrapped");
+ AsyncProcessor ap = AsyncProcessorTypeConverter.convert(processor);
+ boolean sync = ap.process(exchange, new AsyncCallback() {
+ public void done(boolean doneSync) {
+ // we only have to handle async completion of this policy
+ if (doneSync) {
+ return;
+ }
+
+ exchange.getIn().setHeader(name, "policy finished execution");
+ callback.done(false);
+ }
+ });
+
+ if (!sync) {
+ // continue routing async
+ return false;
+ }
+
+ // we are done synchronously, so do our after work and invoke the callback
+ exchange.getIn().setHeader(name, "policy finished execution");
+ callback.done(true);
+ return true;
+ }
+
+ public void process(Exchange exchange) throws Exception {
+ AsyncProcessorHelper.process(this, exchange);
+ }
+ };
+ }
+
+ public int getInvoked() {
+ return invoked;
+ }
+ }
+
+
+}
\ No newline at end of file
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/MyAsyncProducer.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/MyAsyncProducer.java?rev=958951&r1=958950&r2=958951&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/MyAsyncProducer.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/async/MyAsyncProducer.java Tue Jun 29 12:47:06 2010
@@ -58,6 +58,8 @@ public class MyAsyncProducer extends Def
} else {
String reply = getEndpoint().getReply();
exchange.getOut().setBody(reply);
+ // propagate headers
+ exchange.getOut().setHeaders(exchange.getIn().getHeaders());
LOG.info("Setting reply " + reply);
}
Modified: camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAccessPolicy.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAccessPolicy.java?rev=958951&r1=958950&r2=958951&view=diff
==============================================================================
--- camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAccessPolicy.java (original)
+++ camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAccessPolicy.java Tue Jun 29 12:47:06 2010
@@ -32,7 +32,6 @@ public class SpringSecurityAccessPolicy
this.configAttributeDefinition = (accessValues.length > 0)
? new ConfigAttributeDefinition(accessValues) : null;
-
}
public ConfigAttributeDefinition getConfigAttributeDefinition() {
Modified: camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicy.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicy.java?rev=958951&r1=958950&r2=958951&view=diff
==============================================================================
--- camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicy.java (original)
+++ camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/SpringSecurityAuthorizationPolicy.java Tue Jun 29 12:47:06 2010
@@ -50,14 +50,12 @@ public class SpringSecurityAuthorization
private AuthenticationAdapter authenticationAdapter;
private ApplicationEventPublisher eventPublisher;
private SpringSecurityAccessPolicy accessPolicy;
-
private boolean alwaysReauthenticate;
private boolean useThreadSecurityContext = true;
-
public Processor wrap(RouteContext routeContext, Processor processor) {
// wrap the processor with authorizeDelegateProcessor
- return new AuthorizeDelegateProcess(processor);
+ return new AuthorizeDelegateProcess(processor);
}
protected void beforeProcess(Exchange exchange) throws Exception {
@@ -128,7 +126,6 @@ public class SpringSecurityAuthorization
}
private Authentication authenticateIfRequired(Authentication authentication) {
-
if (authentication.isAuthenticated() && !alwaysReauthenticate) {
if (LOG.isDebugEnabled()) {
LOG.debug("Previously Authenticated: " + authentication);
@@ -137,11 +134,9 @@ public class SpringSecurityAuthorization
}
authentication = authenticationManager.authenticate(authentication);
-
if (LOG.isDebugEnabled()) {
LOG.debug("Successfully Authenticated: " + authentication);
}
-
return authentication;
}
@@ -178,7 +173,6 @@ public class SpringSecurityAuthorization
public void setApplicationEventPublisher(ApplicationEventPublisher applicationEventPublisher) {
this.eventPublisher = applicationEventPublisher;
-
}
public void setSpringSecurityAccessPolicy(SpringSecurityAccessPolicy policy) {
Modified: camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/NamespaceHandler.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/NamespaceHandler.java?rev=958951&r1=958950&r2=958951&view=diff
==============================================================================
--- camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/NamespaceHandler.java (original)
+++ camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/NamespaceHandler.java Tue Jun 29 12:47:06 2010
@@ -22,7 +22,6 @@ public class NamespaceHandler extends Na
public void init() {
registerBeanDefinitionParser("authorizationPolicy", new SpringSecurityAuthorizationPolicyParser());
-
}
}
Modified: camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/SpringSecurityAuthorizationPolicyParser.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/SpringSecurityAuthorizationPolicyParser.java?rev=958951&r1=958950&r2=958951&view=diff
==============================================================================
--- camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/SpringSecurityAuthorizationPolicyParser.java (original)
+++ camel/trunk/components/camel-spring-security/src/main/java/org/apache/camel/component/spring/security/config/SpringSecurityAuthorizationPolicyParser.java Tue Jun 29 12:47:06 2010
@@ -24,7 +24,6 @@ import org.apache.camel.spring.handler.B
import org.apache.camel.util.ObjectHelper;
import org.springframework.beans.factory.support.BeanDefinitionBuilder;
-
public class SpringSecurityAuthorizationPolicyParser extends BeanDefinitionParser {
public SpringSecurityAuthorizationPolicyParser() {
@@ -38,11 +37,9 @@ public class SpringSecurityAuthorization
} else {
return super.isEligibleAttribute(attributeName);
}
-
}
protected void postProcess(BeanDefinitionBuilder builder, Element element) {
-
setReferenceIfAttributeDefine(builder, element, "accessDecisionManager");
setReferenceIfAttributeDefine(builder, element, "authenticationManager");
if (ObjectHelper.isNotEmpty(element.getAttribute("authenticationAdapter"))) {
@@ -51,6 +48,7 @@ public class SpringSecurityAuthorization
if (ObjectHelper.isNotEmpty(element.getAttribute("id"))) {
builder.addPropertyValue("id", element.getAttribute("id"));
}
+
BeanDefinitionBuilder accessPolicyBuilder = BeanDefinitionBuilder.genericBeanDefinition(
SpringSecurityAccessPolicy.class.getCanonicalName());
accessPolicyBuilder.addConstructorArgValue(element.getAttribute("access"));
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=958951&r1=958950&r2=958951&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 Jun 29 12:47:06 2010
@@ -16,6 +16,7 @@
*/
package org.apache.camel.spring.spi;
+import org.apache.camel.AsyncCallback;
import org.apache.camel.CamelContext;
import org.apache.camel.Exchange;
import org.apache.camel.Predicate;
@@ -76,7 +77,10 @@ public class TransactionErrorHandler ext
+ "[" + getOutput() + "]";
}
- public void process(final Exchange exchange) throws Exception {
+ @Override
+ public void process(Exchange exchange) throws Exception {
+ // we have to run this synchronously as Spring Transaction does *not* support
+ // using multiple threads to span a transaction
if (exchange.getUnitOfWork().isTransactedBy(transactionTemplate)) {
// already transacted by this transaction template
// so lets just let the regular default error handler process it
@@ -87,12 +91,29 @@ public class TransactionErrorHandler ext
}
}
- protected void processByRegularErrorHandler(Exchange exchange) {
+ @Override
+ public boolean process(Exchange exchange, AsyncCallback callback) {
+ // invoke ths synchronous method as Spring Transaction does *not* support
+ // using multiple threads to span a transaction
try {
- super.process(exchange);
- } catch (Exception e) {
+ process(exchange);
+ } catch (Throwable e) {
exchange.setException(e);
}
+
+ // notify callback we are done synchronously
+ callback.done(true);
+ return true;
+ }
+
+ protected void processByRegularErrorHandler(Exchange exchange) throws Exception {
+ // must invoke the async method and provide an empty callback
+ // to have it process by the error handler (because we invoke super)
+ super.process(exchange, new AsyncCallback() {
+ public void done(boolean doneSync) {
+ // noop
+ }
+ });
}
protected void processInTransaction(final Exchange exchange) throws Exception {
@@ -139,7 +160,11 @@ public class TransactionErrorHandler ext
// and now let process the exchange
try {
- TransactionErrorHandler.super.process(exchange);
+ TransactionErrorHandler.super.process(exchange, new AsyncCallback() {
+ public void done(boolean doneSync) {
+ // noop
+ }
+ });
} catch (Exception e) {
exchange.setException(e);
}
Modified: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceMixedTransactedTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceMixedTransactedTest.java?rev=958951&r1=958950&r2=958951&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceMixedTransactedTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceMixedTransactedTest.java Tue Jun 29 12:47:06 2010
@@ -29,7 +29,7 @@ public class TransactionalClientDataSour
try {
template.sendBody("direct:fail", "Hello World");
} catch (RuntimeCamelException e) {
- // expeced as we fail
+ // expected as we fail
assertTrue(e.getCause() instanceof IllegalArgumentException);
assertEquals("We don't have Donkeys, only Camels", e.getCause().getMessage());
}
Modified: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceNotTransactedTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceNotTransactedTest.java?rev=958951&r1=958950&r2=958951&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceNotTransactedTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceNotTransactedTest.java Tue Jun 29 12:47:06 2010
@@ -29,7 +29,7 @@ public class TransactionalClientDataSour
try {
template.sendBody("direct:fail", "Hello World");
} catch (RuntimeCamelException e) {
- // expeced as we fail
+ // expected as we fail
assertTrue(e.getCause() instanceof IllegalArgumentException);
assertEquals("We don't have Donkeys, only Camels", e.getCause().getMessage());
}
Modified: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceWithOnExceptionHandledAndRollbackTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceWithOnExceptionHandledAndRollbackTest.java?rev=958951&r1=958950&r2=958951&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceWithOnExceptionHandledAndRollbackTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/TransactionalClientDataSourceWithOnExceptionHandledAndRollbackTest.java Tue Jun 29 12:47:06 2010
@@ -17,6 +17,7 @@
package org.apache.camel.spring.interceptor;
import org.apache.camel.CamelExecutionException;
+import org.apache.camel.RuntimeCamelException;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
import org.apache.camel.spring.SpringRouteBuilder;