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 2009/06/22 16:34:14 UTC
svn commit: r787246 - in /camel/trunk:
camel-core/src/main/java/org/apache/camel/
camel-core/src/main/java/org/apache/camel/impl/
camel-core/src/main/java/org/apache/camel/model/
camel-core/src/main/java/org/apache/camel/processor/ camel-core/src/main/...
Author: davsclaus
Date: Mon Jun 22 14:34:13 2009
New Revision: 787246
URL: http://svn.apache.org/viewvc?rev=787246&view=rev
Log:
CAMEL-1720: StreamCache is now default disabled. Fixed a bug with interceptor and on completion. Added methods to configure stream cache in java and spring dsl.
Added:
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/OnCompletionAndInterceptGlobalSSEnabledTest.java
- copied, changed from r787184, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/OnCompletionAndInterceptGlobalTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterSSEnabledOnCamelContextTest.java
- copied, changed from r787184, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterNoErrorHandlerTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/NoStreamCachingTest.java (with props)
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/MixedStreamCachingInterceptorTest.java (with props)
camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/NoStreamCachingInterceptorTest.java
- copied, changed from r787184, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/StreamCachingInterceptorTest.java
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/mixedStreamCachingInterceptorTest.xml (with props)
camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/noStreamCachingInterceptorTest.xml (with props)
Modified:
camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCaching.java
camel/trunk/camel-core/src/test/java/org/apache/camel/issues/AmahDeadLetterTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/issues/CacheInputStreamInDeadLetterIssue520Test.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/MulticastStreamCachingTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/OnCompletionAndInterceptGlobalTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterNoErrorHandlerTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterTest.java
camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/StreamCachingInterceptorTest.java
camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java
camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsXMLRouteTest.java
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/CamelContext.java Mon Jun 22 14:34:13 2009
@@ -463,4 +463,10 @@
*/
ServicePool<Endpoint, Producer> getProducerServicePool();
+ /**
+ * Sets whether stream caching is enable or not (default is disabled).
+ *
+ * @param cache whether stream cachin is enabled or not
+ */
+ void setStreamCaching(Boolean cache);
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/impl/DefaultCamelContext.java Mon Jun 22 14:34:13 2009
@@ -108,7 +108,7 @@
private final List<RouteDefinition> routeDefinitions = new ArrayList<RouteDefinition>();
private List<InterceptStrategy> interceptStrategies = new ArrayList<InterceptStrategy>();
private Boolean trace;
- private Boolean streamCache = Boolean.TRUE;
+ private Boolean streamCache = Boolean.FALSE;
private Boolean handleFault = Boolean.FALSE;
private Long delay;
private ErrorHandlerBuilder errorHandlerBuilder;
@@ -760,8 +760,8 @@
return streamCache;
}
- public void setStreamCaching(Boolean trace) {
- this.streamCache = trace;
+ public void setStreamCaching(Boolean cache) {
+ this.streamCache = cache;
}
/**
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/InterceptDefinition.java Mon Jun 22 14:34:13 2009
@@ -69,11 +69,13 @@
// add the output as a intercept strategy to the route context so its invoked on each processing step
routeContext.getInterceptStrategies().add(new InterceptStrategy() {
public Processor wrapProcessorInInterceptors(ProcessorDefinition processorDefinition, Processor target, Processor nextTarget) throws Exception {
- if (nextTarget != null) {
+ // prefer next target over taget as next target is the real target
+ Processor processor = nextTarget != null ? nextTarget : target;
+ if (processor != null) {
// wrap in a pipeline so we continue routing to the next
List<Processor> list = new ArrayList<Processor>(2);
list.add(output);
- list.add(nextTarget);
+ list.add(processor);
return new Pipeline(list);
} else {
return output;
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/ProcessorDefinition.java Mon Jun 22 14:34:13 2009
@@ -172,7 +172,8 @@
return channel;
} else {
// regular definition so add the error handler
- Processor errorHandler = getErrorHandlerBuilder().createErrorHandler(routeContext, channel.getOutput());
+ Processor output = channel.getOutput();
+ Processor errorHandler = getErrorHandlerBuilder().createErrorHandler(routeContext, output);
channel.setErrorHandler(errorHandler);
return channel;
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/model/RouteDefinition.java Mon Jun 22 14:34:13 2009
@@ -19,7 +19,6 @@
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
-
import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlAttribute;
@@ -36,7 +35,7 @@
import org.apache.camel.ServiceStatus;
import org.apache.camel.builder.ErrorHandlerBuilder;
import org.apache.camel.impl.DefaultRouteContext;
-import org.apache.camel.processor.interceptor.StreamCachingInterceptor;
+import org.apache.camel.processor.interceptor.StreamCaching;
import org.apache.camel.spi.RouteContext;
import org.apache.camel.util.CamelContextHelper;
@@ -51,8 +50,9 @@
public class RouteDefinition extends ProcessorDefinition<ProcessorDefinition> implements CamelContextAware {
private List<FromDefinition> inputs = new ArrayList<FromDefinition>();
private List<ProcessorDefinition> outputs = new ArrayList<ProcessorDefinition>();
- private String group;
private CamelContext camelContext;
+ private String group;
+ private Boolean streamCache;
public RouteDefinition() {
}
@@ -194,6 +194,29 @@
return this;
}
+ /**
+ * Disable stream caching for this Route.
+ */
+ public RouteDefinition noStreamCaching() {
+ setStreamCache(Boolean.FALSE);
+ StreamCaching.noStreamCaching(getInterceptStrategies());
+ return this;
+ }
+
+ /**
+ * Enable stream caching for this Route.
+ */
+ public RouteDefinition streamCaching() {
+ setStreamCache(Boolean.TRUE);
+ StreamCaching cache = StreamCaching.getStreamCaching(getCamelContext());
+ if (cache == null) {
+ cache = new StreamCaching();
+ }
+
+ getInterceptStrategies().add(cache);
+ return this;
+ }
+
// Properties
// -----------------------------------------------------------------------
@@ -214,7 +237,6 @@
public void setOutputs(List<ProcessorDefinition> outputs) {
this.outputs = outputs;
- // TODO I don't think this is called when using JAXB!
if (outputs != null) {
for (ProcessorDefinition output : outputs) {
configureChild(output);
@@ -246,11 +268,23 @@
this.group = group;
}
+ public Boolean isStreamCache() {
+ return streamCache;
+ }
+
+ @XmlAttribute
+ public void setStreamCache(Boolean streamCache) {
+ this.streamCache = streamCache;
+ }
+
// Implementation methods
// -------------------------------------------------------------------------
protected RouteContext addRoutes(Collection<Route> routes, FromDefinition fromType) throws Exception {
RouteContext routeContext = new DefaultRouteContext(this, fromType, routes);
- routeContext.getEndpoint(); // force endpoint resolution
+ // should inherit the intercept strategies we have defined
+ routeContext.setInterceptStrategies(this.getInterceptStrategies());
+ // force endpoint resolution
+ routeContext.getEndpoint();
if (camelContext != null) {
camelContext.getLifecycleStrategy().onRouteContextCreate(routeContext);
}
@@ -264,9 +298,4 @@
return routeContext;
}
- @Override
- protected void configureChild(ProcessorDefinition output) {
- super.configureChild(output);
- }
-
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/OnCompletionProcessor.java Mon Jun 22 14:34:13 2009
@@ -167,6 +167,6 @@
@Override
public String toString() {
- return "OnCompletionProcessor";
+ return "OnCompletionProcessor[" + processor + "]";
}
}
Modified: camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCaching.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCaching.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCaching.java (original)
+++ camel/trunk/camel-core/src/main/java/org/apache/camel/processor/interceptor/StreamCaching.java Mon Jun 22 14:34:13 2009
@@ -50,6 +50,19 @@
return null;
}
+ /**
+ * Remove the {@link StreamCachingInterceptor} from the given list of interceptors
+ *
+ * @param interceptors the list of interceptors
+ */
+ public static void noStreamCaching(List<InterceptStrategy> interceptors) {
+ for (InterceptStrategy strategy : interceptors) {
+ if (strategy instanceof StreamCachingInterceptor) {
+ interceptors.remove(strategy);
+ }
+ }
+ }
+
@Override
public String toString() {
return "StreamCaching";
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/issues/AmahDeadLetterTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/issues/AmahDeadLetterTest.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/issues/AmahDeadLetterTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/issues/AmahDeadLetterTest.java Mon Jun 22 14:34:13 2009
@@ -26,6 +26,7 @@
* @version $Revision$
*/
public class AmahDeadLetterTest extends ContextTestSupport {
+
public void testException() throws Exception {
MockEndpoint mock = getMockEndpoint("mock:err");
mock.expectedMessageCount(1);
@@ -39,7 +40,8 @@
return new RouteBuilder() {
@Override
public void configure() throws Exception {
- errorHandler(deadLetterChannel("mock:err"));
+ errorHandler(deadLetterChannel("mock:err").redeliverDelay(0));
+
from("seda:a").process(new Processor() {
public void process(Exchange exchange) throws Exception {
throw new Exception("Test exception");
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/issues/CacheInputStreamInDeadLetterIssue520Test.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/issues/CacheInputStreamInDeadLetterIssue520Test.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/issues/CacheInputStreamInDeadLetterIssue520Test.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/issues/CacheInputStreamInDeadLetterIssue520Test.java Mon Jun 22 14:34:13 2009
@@ -68,6 +68,9 @@
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
public void configure() throws Exception {
+ // enable stream caching
+ context.setStreamCaching(true);
+
// 0 delay for faster unit test
errorHandler(deadLetterChannel("direct:errorHandler").maximumRedeliveries(3).redeliverDelay(0));
from("direct:start").process(new Processor() {
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/MulticastStreamCachingTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/MulticastStreamCachingTest.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/MulticastStreamCachingTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/MulticastStreamCachingTest.java Mon Jun 22 14:34:13 2009
@@ -75,6 +75,9 @@
return new RouteBuilder() {
public void configure() {
+ // enable stream caching
+ context.setStreamCaching(true);
+
errorHandler(deadLetterChannel("mock:error").redeliverDelay(0).maximumRedeliveries(3));
//stream caching should fix re-readability issues when multicasting messags
Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/OnCompletionAndInterceptGlobalSSEnabledTest.java (from r787184, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/OnCompletionAndInterceptGlobalTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/OnCompletionAndInterceptGlobalSSEnabledTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/OnCompletionAndInterceptGlobalSSEnabledTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/OnCompletionAndInterceptGlobalTest.java&r1=787184&r2=787246&rev=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/OnCompletionAndInterceptGlobalTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/OnCompletionAndInterceptGlobalSSEnabledTest.java Mon Jun 22 14:34:13 2009
@@ -16,54 +16,21 @@
*/
package org.apache.camel.processor;
-import org.apache.camel.CamelExecutionException;
-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.component.mock.MockEndpoint;
/**
* @version $Revision$
*/
-public class OnCompletionAndInterceptGlobalTest extends ContextTestSupport {
-
- public void testSynchronizeComplete() throws Exception {
- getMockEndpoint("mock:intercept").expectedMessageCount(5);
- getMockEndpoint("mock:sync").expectedBodiesReceived("Bye World");
- getMockEndpoint("mock:sync").expectedPropertyReceived(Exchange.ON_COMPLETION, true);
-
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedBodiesReceived("Bye World");
-
- template.sendBody("direct:start", "Hello World");
-
- assertMockEndpointsSatisfied();
- }
-
- public void testSynchronizeFailure() throws Exception {
- getMockEndpoint("mock:intercept").expectedMessageCount(4);
- getMockEndpoint("mock:sync").expectedMessageCount(1);
- getMockEndpoint("mock:sync").expectedPropertyReceived(Exchange.ON_COMPLETION, true);
-
- MockEndpoint mock = getMockEndpoint("mock:result");
- mock.expectedMessageCount(0);
-
- try {
- template.sendBody("direct:start", "Kabom");
- fail("Should throw exception");
- } catch (CamelExecutionException e) {
- assertEquals("Kabom", e.getCause().getMessage());
- }
-
- assertMockEndpointsSatisfied();
- }
+public class OnCompletionAndInterceptGlobalSSEnabledTest extends OnCompletionAndInterceptGlobalTest {
@Override
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
@Override
public void configure() throws Exception {
+ // enabled stream cache
+ context.setStreamCaching(true);
+
intercept().to("mock:intercept");
// define a global on completion that is invoked when the exchage is complete
@@ -78,16 +45,4 @@
};
}
- public static class MyProcessor implements Processor {
-
- public MyProcessor() {
- }
-
- public void process(Exchange exchange) throws Exception {
- if ("Kabom".equals(exchange.getIn().getBody())) {
- throw new IllegalArgumentException("Kabom");
- }
- exchange.getIn().setBody("Bye World");
- }
- }
}
\ No newline at end of file
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/OnCompletionAndInterceptGlobalTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/OnCompletionAndInterceptGlobalTest.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/OnCompletionAndInterceptGlobalTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/OnCompletionAndInterceptGlobalTest.java Mon Jun 22 14:34:13 2009
@@ -29,7 +29,7 @@
public class OnCompletionAndInterceptGlobalTest extends ContextTestSupport {
public void testSynchronizeComplete() throws Exception {
- getMockEndpoint("mock:intercept").expectedMessageCount(5);
+ getMockEndpoint("mock:intercept").expectedMessageCount(4);
getMockEndpoint("mock:sync").expectedBodiesReceived("Bye World");
getMockEndpoint("mock:sync").expectedPropertyReceived(Exchange.ON_COMPLETION, true);
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java Mon Jun 22 14:34:13 2009
@@ -77,7 +77,7 @@
DefaultChannel channel = assertIsInstanceOf(DefaultChannel.class, unwrapChannel(consumerRoute.getProcessor()));
assertIsInstanceOf(DefaultErrorHandler.class, channel.getErrorHandler());
- assertTrue("Should have stream caching", channel.hasInterceptorStrategy(StreamCaching.class));
+ assertFalse("Should not have stream caching", channel.hasInterceptorStrategy(StreamCaching.class));
assertIsInstanceOf(Resequencer.class, channel.getNextProcessor());
}
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterNoErrorHandlerTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterNoErrorHandlerTest.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterNoErrorHandlerTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterNoErrorHandlerTest.java Mon Jun 22 14:34:13 2009
@@ -30,12 +30,15 @@
public void configure() {
errorHandler(noErrorHandler());
// should work with no error handler as the stream cache
- // should be enabled and make sure the predicates can be evaluated
+ // is enabled and make sure the predicates can be evaluated
// multiple times
- from("direct:start").choice()
- .when().xpath("/message/text() = 'xx'").to("mock:x")
- .when().xpath("/message/text() = 'yy'").to("mock:y");
+ from("direct:start")
+ .streamCaching()
+ .choice()
+ .when().xpath("/message/text() = 'xx'").to("mock:x")
+ .when().xpath("/message/text() = 'yy'").to("mock:y")
+ .end();
}
};
}
Copied: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterSSEnabledOnCamelContextTest.java (from r787184, camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterNoErrorHandlerTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterSSEnabledOnCamelContextTest.java?p2=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterSSEnabledOnCamelContextTest.java&p1=camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterNoErrorHandlerTest.java&r1=787184&r2=787246&rev=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterNoErrorHandlerTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterSSEnabledOnCamelContextTest.java Mon Jun 22 14:34:13 2009
@@ -23,21 +23,21 @@
*
* @version $Revision$
*/
-public class StreamSourceContentBasedRouterNoErrorHandlerTest extends StreamSourceContentBasedRouterTest {
+public class StreamSourceContentBasedRouterSSEnabledOnCamelContextTest extends StreamSourceContentBasedRouterTest {
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
- errorHandler(noErrorHandler());
- // should work with no error handler as the stream cache
- // should be enabled and make sure the predicates can be evaluated
- // multiple times
+ // enable stream cache globally on camel context
+ context.setStreamCaching(true);
- from("direct:start").choice()
- .when().xpath("/message/text() = 'xx'").to("mock:x")
- .when().xpath("/message/text() = 'yy'").to("mock:y");
+ from("direct:start")
+ .choice()
+ .when().xpath("/message/text() = 'xx'").to("mock:x")
+ .when().xpath("/message/text() = 'yy'").to("mock:y")
+ .end();
}
};
}
-}
+}
\ No newline at end of file
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterTest.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamSourceContentBasedRouterTest.java Mon Jun 22 14:34:13 2009
@@ -66,10 +66,10 @@
return new RouteBuilder() {
public void configure() {
// should work with default error handler as the stream cache
- // should be enabled and make sure the predicates can be evaluated
+ // is enabled and make sure the predicates can be evaluated
// multiple times
- from("direct:start").choice()
+ from("direct:start").streamCaching().choice()
.when().xpath("/message/text() = 'xx'").to("mock:x")
.when().xpath("/message/text() = 'yy'").to("mock:y");
}
Added: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/NoStreamCachingTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/NoStreamCachingTest.java?rev=787246&view=auto
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/NoStreamCachingTest.java (added)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/NoStreamCachingTest.java Mon Jun 22 14:34:13 2009
@@ -0,0 +1,115 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.processor.interceptor;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.StreamCache;
+import org.apache.camel.builder.RouteBuilder;
+import org.apache.camel.component.mock.MockEndpoint;
+
+/**
+ * @version $Revision$
+ */
+public class NoStreamCachingTest extends ContextTestSupport {
+
+ private static final String MESSAGE = "<hello>world!</hello>";
+ private MockEndpoint a;
+ private MockEndpoint b;
+
+ @Override
+ public boolean isUseRouteBuilder() {
+ return false;
+ }
+
+ @Override
+ protected void setUp() throws Exception {
+ super.setUp();
+ a = getMockEndpoint("mock:a");
+ b = getMockEndpoint("mock:b");
+ }
+
+ public void testNoStreamCache() throws Exception {
+ context.addRoutes(new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:a").noStreamCaching().to("mock:a");
+ }
+ });
+ context.start();
+
+ a.expectedMessageCount(1);
+
+ InputStream message = new ByteArrayInputStream(MESSAGE.getBytes());
+ template.sendBody("direct:a", message);
+
+ assertMockEndpointsSatisfied();
+ assertTrue(a.assertExchangeReceived(0).getIn().getBody() instanceof ByteArrayInputStream);
+ assertEquals(a.assertExchangeReceived(0).getIn().getBody(String.class), MESSAGE);
+ }
+
+ public void testNoStreamCacheIsDefault() throws Exception {
+ context.addRoutes(new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:a").to("mock:a");
+ }
+ });
+ context.start();
+
+ a.expectedMessageCount(1);
+
+ InputStream message = new ByteArrayInputStream(MESSAGE.getBytes());
+ template.sendBody("direct:a", message);
+
+ assertMockEndpointsSatisfied();
+ assertTrue(a.assertExchangeReceived(0).getIn().getBody() instanceof ByteArrayInputStream);
+ assertEquals(a.assertExchangeReceived(0).getIn().getBody(String.class), MESSAGE);
+ }
+
+ public void testMixed() throws Exception {
+ context.addRoutes(new RouteBuilder() {
+ @Override
+ public void configure() throws Exception {
+ from("direct:a").to("mock:a");
+
+ from("direct:b").streamCaching().to("mock:b");
+ }
+ });
+ context.start();
+
+ a.expectedMessageCount(1);
+ b.expectedMessageCount(1);
+
+ InputStream message = new ByteArrayInputStream(MESSAGE.getBytes());
+ template.sendBody("direct:a", message);
+
+ InputStream message2 = new ByteArrayInputStream(MESSAGE.getBytes());
+ template.sendBody("direct:b", message2);
+
+ assertMockEndpointsSatisfied();
+
+ assertTrue(a.assertExchangeReceived(0).getIn().getBody() instanceof ByteArrayInputStream);
+ assertEquals(a.assertExchangeReceived(0).getIn().getBody(String.class), MESSAGE);
+
+ assertTrue(b.assertExchangeReceived(0).getIn().getBody() instanceof StreamCache);
+ assertEquals(b.assertExchangeReceived(0).getIn().getBody(String.class), MESSAGE);
+ }
+
+}
Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/NoStreamCachingTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/NoStreamCachingTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Modified: camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/StreamCachingInterceptorTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/StreamCachingInterceptorTest.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/StreamCachingInterceptorTest.java (original)
+++ camel/trunk/camel-core/src/test/java/org/apache/camel/processor/interceptor/StreamCachingInterceptorTest.java Mon Jun 22 14:34:13 2009
@@ -112,11 +112,12 @@
public void configure() {
//Stream caching for a single route...
//START SNIPPET: route
- from("direct:a").to("mock:a");
+ from("direct:a").streamCaching().to("mock:a");
//END SNIPPET: route
//... or for all the following routes in this builder
//START SNIPPET: routebuilder
+ context.setStreamCaching(true);
from("direct:b").to("mock:b");
//END SNIPPET: routebuilder
}
Modified: camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java (original)
+++ camel/trunk/components/camel-jetty/src/test/java/org/apache/camel/component/jetty/HttpRouteTest.java Mon Jun 22 14:34:13 2009
@@ -65,7 +65,6 @@
@Test
public void testHelloEndpoint() throws Exception {
-
ByteArrayOutputStream os = new ByteArrayOutputStream();
InputStream is = new URL("http://localhost:9080/hello").openStream();
int c;
@@ -75,14 +74,12 @@
String data = new String(os.toByteArray());
assertEquals("<b>Hello World</b>", data);
-
}
@Test
public void testEchoEndpoint() throws Exception {
String out = template.requestBody("http://localhost:9080/echo", "HelloWorld", String.class);
assertEquals("Get a wrong output " , "HelloWorld", out);
-
}
protected void invokeHttpEndpoint() throws IOException {
@@ -93,6 +90,9 @@
protected RouteBuilder createRouteBuilder() throws Exception {
return new RouteBuilder() {
public void configure() {
+ // enable strem cache
+ context.setStreamCaching(true);
+
from("jetty:http://localhost:9080/test").to("mock:a");
Processor proc = new Processor() {
Modified: camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsXMLRouteTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsXMLRouteTest.java?rev=787246&r1=787245&r2=787246&view=diff
==============================================================================
--- camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsXMLRouteTest.java (original)
+++ camel/trunk/components/camel-jms/src/test/java/org/apache/camel/component/jms/JmsXMLRouteTest.java Mon Jun 22 14:34:13 2009
@@ -23,7 +23,6 @@
import org.apache.activemq.ActiveMQConnectionFactory;
import org.apache.camel.CamelContext;
-import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
import org.apache.camel.builder.RouteBuilder;
@@ -195,6 +194,9 @@
return new RouteBuilder() {
@Override
public void configure() throws Exception {
+ // enable stream caching
+ context.setStreamCaching(true);
+
errorHandler(deadLetterChannel("mock:error").redeliverDelay(0));
// no need to convert to String as JMS producer can handle XML streams now
Added: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/MixedStreamCachingInterceptorTest.java
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/MixedStreamCachingInterceptorTest.java?rev=787246&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/MixedStreamCachingInterceptorTest.java (added)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/MixedStreamCachingInterceptorTest.java Mon Jun 22 14:34:13 2009
@@ -0,0 +1,68 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.camel.spring.interceptor;
+
+import java.io.StringReader;
+import javax.xml.transform.stream.StreamSource;
+
+import org.apache.camel.CamelContext;
+import org.apache.camel.ContextTestSupport;
+import org.apache.camel.Exchange;
+import org.apache.camel.StreamCache;
+import org.apache.camel.component.mock.MockEndpoint;
+import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
+
+/**
+ * @version $Revision$
+ */
+public class MixedStreamCachingInterceptorTest extends ContextTestSupport {
+
+ public void testStreamCaching() throws Exception {
+ MockEndpoint a = getMockEndpoint("mock:a");
+ a.expectedMessageCount(1);
+
+ StreamSource message = new StreamSource(new StringReader("<hello>world!</hello>"));
+ template.sendBody("direct:a", message);
+
+ assertMockEndpointsSatisfied();
+
+ Exchange exchange = a.getExchanges().get(0);
+ StreamCache cache = assertIsInstanceOf(StreamCache.class, exchange.getIn().getBody());
+ assertNotNull(cache);
+
+ assertNotSame(message, cache);
+ }
+
+ public void testNoStreamCaching() throws Exception {
+ MockEndpoint b = getMockEndpoint("mock:b");
+ b.expectedMessageCount(1);
+
+ StreamSource message = new StreamSource(new StringReader("<hello>world!</hello>"));
+ template.sendBody("direct:b", message);
+
+ assertMockEndpointsSatisfied();
+
+ Exchange exchange = b.getExchanges().get(0);
+ StreamSource stream = assertIsInstanceOf(StreamSource.class, exchange.getIn().getBody());
+ assertNotNull(stream);
+ }
+
+ protected CamelContext createCamelContext() throws Exception {
+ return createSpringCamelContext(this, "org/apache/camel/spring/interceptor/mixedStreamCachingInterceptorTest.xml");
+ }
+
+}
Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/MixedStreamCachingInterceptorTest.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/MixedStreamCachingInterceptorTest.java
------------------------------------------------------------------------------
svn:keywords = Rev Date
Copied: camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/NoStreamCachingInterceptorTest.java (from r787184, camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/StreamCachingInterceptorTest.java)
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/NoStreamCachingInterceptorTest.java?p2=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/NoStreamCachingInterceptorTest.java&p1=camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/StreamCachingInterceptorTest.java&r1=787184&r2=787246&rev=787246&view=diff
==============================================================================
--- camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/StreamCachingInterceptorTest.java (original)
+++ camel/trunk/components/camel-spring/src/test/java/org/apache/camel/spring/interceptor/NoStreamCachingInterceptorTest.java Mon Jun 22 14:34:13 2009
@@ -22,17 +22,15 @@
import org.apache.camel.CamelContext;
import org.apache.camel.ContextTestSupport;
import org.apache.camel.Exchange;
-import org.apache.camel.StreamCache;
import org.apache.camel.component.mock.MockEndpoint;
-
import static org.apache.camel.spring.processor.SpringTestHelper.createSpringCamelContext;
/**
* Test case for enabling stream caching through XML
*/
-public class StreamCachingInterceptorTest extends ContextTestSupport {
+public class NoStreamCachingInterceptorTest extends ContextTestSupport {
- public void testStreamCachingInterceptorEnabled() throws Exception {
+ public void testNoStreamCachingInterceptorEnabled() throws Exception {
MockEndpoint a = getMockEndpoint("mock:a");
a.expectedMessageCount(1);
@@ -41,12 +39,12 @@
assertMockEndpointsSatisfied();
Exchange exchange = a.getExchanges().get(0);
- StreamCache streamCache = assertIsInstanceOf(StreamCache.class, exchange.getIn().getBody());
- assertNotNull(streamCache);
+ StreamSource stream = assertIsInstanceOf(StreamSource.class, exchange.getIn().getBody());
+ assertNotNull(stream);
}
protected CamelContext createCamelContext() throws Exception {
- return createSpringCamelContext(this, "org/apache/camel/spring/interceptor/streamCachingOnRoute.xml");
+ return createSpringCamelContext(this, "org/apache/camel/spring/interceptor/noStreamCachingInterceptorTest.xml");
}
-}
+}
\ No newline at end of file
Added: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/mixedStreamCachingInterceptorTest.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/mixedStreamCachingInterceptorTest.xml?rev=787246&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/mixedStreamCachingInterceptorTest.xml (added)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/mixedStreamCachingInterceptorTest.xml Mon Jun 22 14:34:13 2009
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ ">
+
+ <!-- START SNIPPET: e1 -->
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+ <!-- this route has stream cache enabled -->
+ <route streamCache="true">
+ <from uri="direct:a"/>
+ <to uri="mock:a"/>
+ </route>
+
+ <!-- and this has not -->
+ <route streamCache="false">
+ <from uri="direct:b"/>
+ <to uri="mock:b"/>
+ </route>
+ </camelContext>
+ <!-- END SNIPPET: e1 -->
+
+</beans>
Propchange: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/mixedStreamCachingInterceptorTest.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/mixedStreamCachingInterceptorTest.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/mixedStreamCachingInterceptorTest.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Added: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/noStreamCachingInterceptorTest.xml
URL: http://svn.apache.org/viewvc/camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/noStreamCachingInterceptorTest.xml?rev=787246&view=auto
==============================================================================
--- camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/noStreamCachingInterceptorTest.xml (added)
+++ camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/noStreamCachingInterceptorTest.xml Mon Jun 22 14:34:13 2009
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<beans xmlns="http://www.springframework.org/schema/beans"
+ xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="
+ http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-2.5.xsd
+ http://camel.apache.org/schema/spring http://camel.apache.org/schema/spring/camel-spring.xsd
+ ">
+
+ <!-- START SNIPPET: e1 -->
+ <!-- stream cache is disabled by default -->
+ <camelContext xmlns="http://camel.apache.org/schema/spring">
+ <route>
+ <from uri="direct:a"/>
+ <to uri="mock:a"/>
+ </route>
+ </camelContext>
+ <!-- END SNIPPET: e1 -->
+
+</beans>
Propchange: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/noStreamCachingInterceptorTest.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/noStreamCachingInterceptorTest.xml
------------------------------------------------------------------------------
svn:keywords = Rev Date
Propchange: camel/trunk/components/camel-spring/src/test/resources/org/apache/camel/spring/interceptor/noStreamCachingInterceptorTest.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml