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>