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() {