You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by js...@apache.org on 2007/11/05 16:05:19 UTC
svn commit: r592030 - in /activemq/camel/trunk/camel-core/src:
main/java/org/apache/camel/processor/Splitter.java
test/java/org/apache/camel/processor/SplitterTest.java
Author: jstrachan
Date: Mon Nov 5 07:05:16 2007
New Revision: 592030
URL: http://svn.apache.org/viewvc?rev=592030&view=rev
Log:
added a test case and fix for http://issues.apache.org/activemq/browse/CAMEL-206
Modified:
activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Splitter.java
activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java
Modified: activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Splitter.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Splitter.java?rev=592030&r1=592029&r2=592030&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Splitter.java (original)
+++ activemq/camel/trunk/camel-core/src/main/java/org/apache/camel/processor/Splitter.java Mon Nov 5 07:05:16 2007
@@ -21,11 +21,12 @@
import org.apache.camel.Exchange;
import org.apache.camel.Expression;
import org.apache.camel.Processor;
+import org.apache.camel.Message;
import org.apache.camel.converter.ObjectConverter;
import org.apache.camel.impl.ServiceSupport;
-import org.apache.camel.util.ServiceHelper;
-
+import org.apache.camel.util.CollectionHelper;
import static org.apache.camel.util.ObjectHelper.notNull;
+import org.apache.camel.util.ServiceHelper;
/**
* Implements a dynamic <a
@@ -36,6 +37,9 @@
* @version $Revision$
*/
public class Splitter extends ServiceSupport implements Processor {
+ public static final String SPLIT_SIZE = "org.apache.camel.splitSize";
+ public static final String SPLIT_COUNTER = "org.apache.camel.splitCounter";
+
private final Processor processor;
private final Expression expression;
@@ -53,11 +57,18 @@
public void process(Exchange exchange) throws Exception {
Object value = expression.evaluate(exchange);
+ Integer size = CollectionHelper.size(value);
Iterator iter = ObjectConverter.iterator(value);
+ int counter = 0;
while (iter.hasNext()) {
Object part = iter.next();
Exchange newExchange = exchange.copy();
- newExchange.getIn().setBody(part);
+ Message in = newExchange.getIn();
+ in.setBody(part);
+ if (size != null) {
+ in.setHeader(SPLIT_SIZE, size);
+ }
+ in.setHeader(SPLIT_COUNTER, counter++);
processor.process(newExchange);
}
}
Modified: activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java
URL: http://svn.apache.org/viewvc/activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java?rev=592030&r1=592029&r2=592030&view=diff
==============================================================================
--- activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java (original)
+++ activemq/camel/trunk/camel-core/src/test/java/org/apache/camel/processor/SplitterTest.java Mon Nov 5 07:05:16 2007
@@ -16,8 +16,9 @@
*/
package org.apache.camel.processor;
+import java.util.List;
+
import org.apache.camel.ContextTestSupport;
-import org.apache.camel.Endpoint;
import org.apache.camel.Exchange;
import org.apache.camel.Message;
import org.apache.camel.Processor;
@@ -28,10 +29,9 @@
* @version $Revision: 1.1 $
*/
public class SplitterTest extends ContextTestSupport {
- protected Endpoint<Exchange> startEndpoint;
- protected MockEndpoint resultEndpoint;
public void testSendingAMessageUsingMulticastReceivesItsOwnExchange() throws Exception {
+ MockEndpoint resultEndpoint = getMockEndpoint("mock:result");
resultEndpoint.expectedBodiesReceived("James", "Guillaume", "Hiram", "Rob");
template.send("direct:a", new Processor() {
@@ -42,14 +42,15 @@
}
});
- resultEndpoint.assertIsSatisfied();
- }
-
- @Override
- protected void setUp() throws Exception {
- super.setUp();
+ assertMockEndpointsSatisifed();
- resultEndpoint = getMockEndpoint("mock:result");
+ List<Exchange> list = resultEndpoint.getReceivedExchanges();
+ for (int i = 0; i < 4; i++) {
+ Exchange exchange = list.get(i);
+ Message in = exchange.getIn();
+ assertMessageHeader(in, Splitter.SPLIT_COUNTER, i);
+ assertMessageHeader(in, Splitter.SPLIT_SIZE, 4);
+ }
}
protected RouteBuilder createRouteBuilder() {