Hi I found a bug in Camel 2.0 where we did not properly detect the java.io.File as payload type to leverage this with the Scanner. I have created a ticket and will commit fix later: https://issues.apache.org/activemq/browse/CAMEL-1642
With this fix you can use body() or body(File.class) and either one will support the streaming mode and thus the scanner will work directly on the java.io.File so the file content will not be loaded into memory. I will backport the unit test to Camel 1.6.x to see if the problem is also there. BTW: Have you noticed that we have a tracer that can be used to log how messages is routed in Camel. http://camel.apache.org/tracer.html It can be easier to use than doing system out in processors On Sun, May 24, 2009 at 8:50 AM, Claus Ibsen <[email protected]> wrote: > On Sun, May 24, 2009 at 1:14 AM, Rodrigo Valerio <[email protected]> wrote: >> >> Hello people. >> Please help me, i try to use choice after a split, tokenize and stream a >> file. >> But the code never goes to .choice, when i use body(File.class) to >> split/tokenize. >> If i use body(String.class) goes, but put all file in memory. > Basically you dont have to pass in the body type, so it should be: > > split(body().tokenize("\n")).streaming() > > I created an unit test based on your route: > https://svn.apache.org/repos/asf/camel/trunk/camel-core/src/test/java/org/apache/camel/issues/FileSplitStreamingWithChoiceTest.java > > BTW: Which version of Camel are you using. That information is crucial > for us to know to be able to better help you. > > >> >> public class RoteadorVisa extends RouteBuilder { >> �...@override >> public void configure() throws Exception { >> >> from("file:///tmp/files/?recursive=true&autoCreate=true&noop=true") >> //This runs ok. If i put body(String.class) instead of >> body(File.class) >> .split(body(File.class).tokenize("\n")).streaming() >> .process(new Processor(){ >> public void process(Exchange exchange) throws >> Exception { >> >> System.out.println(exchange.getIn().getBody()); >> } >> }) >> //NEVER GOES HERE >> .choice() >> .when( body(String.class).isNotNull() ) >> .process(new Processor(){ >> public void process(Exchange exchange) throws >> Exception { >> >> System.out.println(exchange.getIn().getBody()); >> } >> }) >> .otherwise() >> .process(new Processor(){ >> public void process(Exchange exchange) throws >> Exception { >> >> System.out.println(exchange.getIn().getBody()); >> } >> }) >> .end(); >> } >> } >> -- >> View this message in context: >> http://www.nabble.com/split-%2B-stream-%2B-choice%2C-what-wrong--tp23689175p23689175.html >> Sent from the Camel - Users mailing list archive at Nabble.com. >> > > > > -- > Claus Ibsen > Apache Camel Committer > > Open Source Integration: http://fusesource.com > Blog: http://davsclaus.blogspot.com/ > Twitter: http://twitter.com/davsclaus > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus
