Author: davsclaus
Date: Mon Jun 23 21:45:15 2008
New Revision: 671020
URL: http://svn.apache.org/viewvc?rev=671020&view=rev
Log:
CAMEL-620: Applied patch with thanks to William Tam
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequencerType.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamResequencerTest.java
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequencerType.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequencerType.java?rev=671020&r1=671019&r2=671020&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequencerType.java
(original)
+++
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/model/ResequencerType.java
Mon Jun 23 21:45:15 2008
@@ -160,13 +160,10 @@
@Override
public Processor createProcessor(RouteContext routeContext) throws
Exception {
- // TODO:
- // streamConfig is null and is causing NPE downstream
- // return createStreamResequencer(routeContext, streamConfig);
-
if (batchConfig != null) {
return createBatchResequencer(routeContext, batchConfig);
} else {
+ // streamConfig should be non-null if batchConfig is null
return createStreamResequencer(routeContext, streamConfig);
}
}
Modified:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java?rev=671020&r1=671019&r2=671020&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java
(original)
+++
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/ResequencerTest.java
Mon Jun 23 21:45:15 2008
@@ -21,8 +21,13 @@
import org.apache.camel.ContextTestSupport;
import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
+import org.apache.camel.Processor;
+import org.apache.camel.Route;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.impl.EventDrivenConsumerRoute;
+import org.apache.camel.management.InstrumentationProcessor;
+import org.apache.camel.management.JmxSystemPropertyKeys;
/**
* @version $Revision$
@@ -33,23 +38,22 @@
public void testSendMessagesInWrongOrderButReceiveThemInCorrectOrder()
throws Exception {
resultEndpoint.expectedBodiesReceived("Guillaume", "Hiram", "James",
"Rob");
-
sendBodies("direct:start", "Rob", "Hiram", "Guillaume", "James");
-
resultEndpoint.assertIsSatisfied();
- List<Exchange> list = resultEndpoint.getReceivedExchanges();
- for (Exchange exchange : list) {
- log.debug("Received: " + exchange);
- }
}
@Override
protected void setUp() throws Exception {
super.setUp();
-
resultEndpoint = getMockEndpoint("mock:result");
}
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ System.clearProperty(JmxSystemPropertyKeys.DISABLED);
+ }
+
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
@@ -59,4 +63,37 @@
}
};
}
-}
\ No newline at end of file
+
+ public void testBatchResequencerTypeWithJmx() throws Exception {
+ System.setProperty(JmxSystemPropertyKeys.DISABLED, "true");
+
+ List<Route> list = getRouteList(createRouteBuilder());
+ assertEquals("Number of routes created: " + list, 1, list.size());
+
+ Route route = list.get(0);
+ assertTrue(route.toString().startsWith("BatchResequencerRoute"));
+ }
+
+ public void testBatchResequencerTypeWithoutJmx() throws Exception {
+ List<Route> list = getRouteList(createRouteBuilder());
+ assertEquals("Number of routes created: " + list, 1, list.size());
+
+ Route route = list.get(0);
+ EventDrivenConsumerRoute consumerRoute =
+ assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+
+ Processor processor = unwrap(consumerRoute.getProcessor());
+
+ DeadLetterChannel deadLetterChannel =
+ assertIsInstanceOf(DeadLetterChannel.class, processor);
+
+ Processor outputProcessor = deadLetterChannel.getOutput();
+ InstrumentationProcessor interceptor =
+ assertIsInstanceOf(InstrumentationProcessor.class,
outputProcessor);
+
+ outputProcessor = interceptor.getProcessor();
+
+ assertIsInstanceOf(Resequencer.class, outputProcessor);
+ }
+
+}
Modified:
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamResequencerTest.java
URL:
http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamResequencerTest.java?rev=671020&r1=671019&r2=671020&view=diff
==============================================================================
---
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamResequencerTest.java
(original)
+++
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/StreamResequencerTest.java
Mon Jun 23 21:45:15 2008
@@ -22,15 +22,19 @@
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
+import org.apache.camel.Route;
import org.apache.camel.builder.RouteBuilder;
import org.apache.camel.component.mock.MockEndpoint;
+import org.apache.camel.impl.EventDrivenConsumerRoute;
+import org.apache.camel.management.InstrumentationProcessor;
+import org.apache.camel.management.JmxSystemPropertyKeys;
public class StreamResequencerTest extends ContextTestSupport {
protected MockEndpoint resultEndpoint;
- public void sendBodyAndHeader(String endpointUri, final Object body,
- final String headerName, final Object headerValue) {
+ protected void sendBodyAndHeader(String endpointUri, final Object body,
+ final String headerName, final Object
headerValue) {
template.send(endpointUri, new Processor() {
public void process(Exchange exchange) {
Message in = exchange.getIn();
@@ -38,9 +42,9 @@
in.setHeader(headerName, headerValue);
in.setHeader("testCase", getName());
}
- });
+ });
}
-
+
public void testSendMessagesInWrongOrderButReceiveThemInCorrectOrder()
throws Exception {
resultEndpoint.expectedBodiesReceived("msg1", "msg2", "msg3", "msg4");
sendBodyAndHeader("direct:start", "msg4", "seqnum", 4L);
@@ -48,10 +52,6 @@
sendBodyAndHeader("direct:start", "msg3", "seqnum", 3L);
sendBodyAndHeader("direct:start", "msg2", "seqnum", 2L);
resultEndpoint.assertIsSatisfied();
- List<Exchange> list = resultEndpoint.getReceivedExchanges();
- for (Exchange exchange : list) {
- log.debug("Received: " + exchange);
- }
}
@Override
@@ -60,6 +60,12 @@
resultEndpoint = getMockEndpoint("mock:result");
}
+ @Override
+ protected void tearDown() throws Exception {
+ super.tearDown();
+ System.clearProperty(JmxSystemPropertyKeys.DISABLED);
+ }
+
protected RouteBuilder createRouteBuilder() {
return new RouteBuilder() {
public void configure() {
@@ -69,4 +75,36 @@
}
};
}
+
+ public void testStreamResequencerTypeWithJmx() throws Exception {
+ doTestStreamResequencerType();
+ }
+
+ public void testStreamResequencerTypeWithoutJmx() throws Exception {
+ System.setProperty(JmxSystemPropertyKeys.DISABLED, "true");
+ doTestStreamResequencerType();
+ }
+
+ protected void doTestStreamResequencerType() throws Exception {
+ List<Route> list = getRouteList(createRouteBuilder());
+ assertEquals("Number of routes created: " + list, 1, list.size());
+
+ Route route = list.get(0);
+ EventDrivenConsumerRoute consumerRoute =
+ assertIsInstanceOf(EventDrivenConsumerRoute.class, route);
+
+ Processor processor = unwrap(consumerRoute.getProcessor());
+
+ DeadLetterChannel deadLetterChannel =
assertIsInstanceOf(DeadLetterChannel.class, processor);
+ Processor outputProcessor = deadLetterChannel.getOutput();
+ if (!Boolean.getBoolean(JmxSystemPropertyKeys.DISABLED)) {
+ InstrumentationProcessor interceptor =
+ assertIsInstanceOf(InstrumentationProcessor.class,
outputProcessor);
+ outputProcessor = interceptor.getProcessor();
+ }
+
+ assertIsInstanceOf(StreamResequencer.class, outputProcessor);
+ }
+
}
+