Author: davsclaus
Date: Sun Aug 17 08:11:16 2008
New Revision: 686616

URL: http://svn.apache.org/viewvc?rev=686616&view=rev
Log:
CAMEL-830: Added option splitRows to camel-flatpack

Added:
    
activemq/camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/NoSplitRowsTest.java
      - copied, changed from r686614, 
activemq/camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/HeaderAndTrailerTest.java
    
activemq/camel/trunk/components/camel-flatpack/src/test/resources/org/apache/camel/component/flatpack/NoSplitRowsTest-context.xml
      - copied, changed from r686614, 
activemq/camel/trunk/components/camel-flatpack/src/test/resources/org/apache/camel/component/flatpack/HeaderAndTrailerTest-context.xml
Modified:
    
activemq/camel/trunk/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FixedLengthEndpoint.java
    
activemq/camel/trunk/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackConverter.java
    
activemq/camel/trunk/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackProducer.java
    
activemq/camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/FixedLengthTest.java

Modified: 
activemq/camel/trunk/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FixedLengthEndpoint.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FixedLengthEndpoint.java?rev=686616&r1=686615&r2=686616&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FixedLengthEndpoint.java
 (original)
+++ 
activemq/camel/trunk/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FixedLengthEndpoint.java
 Sun Aug 17 08:11:16 2008
@@ -48,6 +48,7 @@
     private final Resource resource;
     private LoadBalancer loadBalancer = new RoundRobinLoadBalancer();
     private ParserFactory parserFactory = DefaultParserFactory.getInstance();
+    private boolean splitRows = true;
 
     public FixedLengthEndpoint(String uri, Resource resource) {
         super(uri);
@@ -113,4 +114,11 @@
         this.loadBalancer = loadBalancer;
     }
 
+    public boolean isSplitRows() {
+        return splitRows;
+    }
+
+    public void setSplitRows(boolean splitRows) {
+        this.splitRows = splitRows;
+    }
 }

Modified: 
activemq/camel/trunk/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackConverter.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackConverter.java?rev=686616&r1=686615&r2=686616&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackConverter.java
 (original)
+++ 
activemq/camel/trunk/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackConverter.java
 Sun Aug 17 08:11:16 2008
@@ -18,6 +18,8 @@
 
 import java.util.HashMap;
 import java.util.Map;
+import java.util.List;
+import java.util.ArrayList;
 
 import net.sf.flatpack.DataSet;
 import org.apache.camel.Converter;
@@ -39,6 +41,20 @@
         return map;
     }
 
+    @Converter
+    public static List toList(DataSet dataSet) {
+        List<Map<String, Object>> answer = new ArrayList<Map<String, 
Object>>();
+        dataSet.goTop();
+
+        while (dataSet.next()) {
+            Map<String, Object> map = new HashMap<String, Object>();
+            putValues(map, dataSet);
+            answer.add(map);
+        }
+
+        return answer;
+    }
+
     /**
      * Puts the values of the dataset into the map
      */

Modified: 
activemq/camel/trunk/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackProducer.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackProducer.java?rev=686616&r1=686615&r2=686616&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackProducer.java
 (original)
+++ 
activemq/camel/trunk/components/camel-flatpack/src/main/java/org/apache/camel/component/flatpack/FlatpackProducer.java
 Sun Aug 17 08:11:16 2008
@@ -35,9 +35,14 @@
     public void process(Exchange exchange) throws Exception {
         Parser parser = endpoint.createParser(exchange);
         DataSet dataSet = parser.parse();
-        int counter = 0;
-        while (dataSet.next()) {
-            endpoint.processDataSet(dataSet, counter++);
+
+        if (endpoint.isSplitRows()) {
+            int counter = 0;
+            while (dataSet.next()) {
+                endpoint.processDataSet(dataSet, counter++);
+            }
+        } else {
+            endpoint.processDataSet(dataSet, dataSet.getRowCount());
         }
     }
 }

Modified: 
activemq/camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/FixedLengthTest.java
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/FixedLengthTest.java?rev=686616&r1=686615&r2=686616&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/FixedLengthTest.java
 (original)
+++ 
activemq/camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/FixedLengthTest.java
 Sun Aug 17 08:11:16 2008
@@ -49,6 +49,7 @@
         List<Exchange> list = results.getReceivedExchanges();
         for (Exchange exchange : list) {
             Message in = exchange.getIn();
+            assertEquals("counter", in.getHeader("camelFlatpackCounter"), 
counter);
             Map body = in.getBody(Map.class);
             assertNotNull("Should have found body as a Map but was: " + 
ObjectHelper.className(in.getBody()), body);
             assertEquals("FIRSTNAME", expectedFirstName[counter], 
body.get("FIRSTNAME"));

Copied: 
activemq/camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/NoSplitRowsTest.java
 (from r686614, 
activemq/camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/HeaderAndTrailerTest.java)
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/NoSplitRowsTest.java?p2=activemq/camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/NoSplitRowsTest.java&p1=activemq/camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/HeaderAndTrailerTest.java&r1=686614&r2=686616&rev=686616&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/HeaderAndTrailerTest.java
 (original)
+++ 
activemq/camel/trunk/components/camel-flatpack/src/test/java/org/apache/camel/component/flatpack/NoSplitRowsTest.java
 Sun Aug 17 08:11:16 2008
@@ -20,21 +20,21 @@
 import java.util.Map;
 
 import org.apache.camel.EndpointInject;
-import org.apache.camel.Exchange;
-import org.apache.camel.Message;
 import org.apache.camel.component.mock.MockEndpoint;
-import org.apache.camel.util.ObjectHelper;
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
 import org.springframework.test.context.ContextConfiguration;
 import 
org.springframework.test.context.junit38.AbstractJUnit38SpringContextTests;
 
 /**
+ * Unit test to verify that splitRows=false option.
+ *
  * @version $Revision$
  */
 @ContextConfiguration
-public class HeaderAndTrailerTest extends AbstractJUnit38SpringContextTests {
-    private static final transient Log LOG = 
LogFactory.getLog(HeaderAndTrailerTest.class);
+public class NoSplitRowsTest extends AbstractJUnit38SpringContextTests {
+    
+    private static final transient Log LOG = 
LogFactory.getLog(NoSplitRowsTest.class);
 
     @EndpointInject(uri = "mock:results")
     protected MockEndpoint results;
@@ -42,29 +42,29 @@
     protected String[] expectedFirstName = {"JOHN", "JIMMY", "JANE", "FRED"};
 
     public void testHeaderAndTrailer() throws Exception {
-        results.expectedMessageCount(6);
+        results.expectedMessageCount(1);
+        results.message(0).body().isInstanceOf(List.class);
+        results.message(0).header("camelFlatpackCounter").isEqualTo(6);
+
         results.assertIsSatisfied();
 
-        int counter = 0;
-        List<Exchange> list = results.getReceivedExchanges();
+        List<Map> data = (List) 
results.getExchanges().get(0).getIn().getBody();
 
         // assert header
-        Map header = list.get(0).getIn().getBody(Map.class);
+        Map header = data.get(0);
         assertEquals("HBT", header.get("INDICATOR"));
         assertEquals("20080817", header.get("DATE"));
 
         // assert body
-        for (Exchange exchange : list.subList(1, 5)) {
-            Message in = exchange.getIn();
-            Map body = in.getBody(Map.class);
-            assertNotNull("Should have found body as a Map but was: " + 
ObjectHelper.className(in.getBody()), body);
-            assertEquals("FIRSTNAME", expectedFirstName[counter], 
body.get("FIRSTNAME"));
-            LOG.info("Result: " + counter + " = " + body);
+        int counter = 0;
+        for (Map row : data.subList(1, 5)) {
+            assertEquals("FIRSTNAME", expectedFirstName[counter], 
row.get("FIRSTNAME"));
+            LOG.info("Result: " + counter + " = " + row);
             counter++;
         }
 
         // assert trailer
-        Map trailer = list.get(5).getIn().getBody(Map.class);
+        Map trailer = data.get(5);
         assertEquals("FBT", trailer.get("INDICATOR"));
         assertEquals("SUCCESS", trailer.get("STATUS"));
     }

Copied: 
activemq/camel/trunk/components/camel-flatpack/src/test/resources/org/apache/camel/component/flatpack/NoSplitRowsTest-context.xml
 (from r686614, 
activemq/camel/trunk/components/camel-flatpack/src/test/resources/org/apache/camel/component/flatpack/HeaderAndTrailerTest-context.xml)
URL: 
http://svn.apache.org/viewvc/activemq/camel/trunk/components/camel-flatpack/src/test/resources/org/apache/camel/component/flatpack/NoSplitRowsTest-context.xml?p2=activemq/camel/trunk/components/camel-flatpack/src/test/resources/org/apache/camel/component/flatpack/NoSplitRowsTest-context.xml&p1=activemq/camel/trunk/components/camel-flatpack/src/test/resources/org/apache/camel/component/flatpack/HeaderAndTrailerTest-context.xml&r1=686614&r2=686616&rev=686616&view=diff
==============================================================================
--- 
activemq/camel/trunk/components/camel-flatpack/src/test/resources/org/apache/camel/component/flatpack/HeaderAndTrailerTest-context.xml
 (original)
+++ 
activemq/camel/trunk/components/camel-flatpack/src/test/resources/org/apache/camel/component/flatpack/NoSplitRowsTest-context.xml
 Sun Aug 17 08:11:16 2008
@@ -26,12 +26,12 @@
   <camelContext xmlns="http://activemq.apache.org/camel/schema/spring";>
     <route>
       <from uri="file://src/test/data/headerandtrailer?noop=true"/>
-      <to uri="flatpack:fixed:PEOPLE-HeaderAndTrailer.pzmap.xml"/>
+      <to 
uri="flatpack:fixed:PEOPLE-HeaderAndTrailer.pzmap.xml?splitRows=false"/>
     </route>
 
     <route>
-      <from uri="flatpack:fixed:PEOPLE-HeaderAndTrailer.pzmap.xml"/>
-      <convertBodyTo type="java.util.Map"/>
+      <from 
uri="flatpack:fixed:PEOPLE-HeaderAndTrailer.pzmap.xml?splitRows=false"/>
+      <convertBodyTo type="java.util.List"/>
       <to uri="mock:results"/>
     </route>
   </camelContext>


Reply via email to