On Sun, May 24, 2009 at 10:18 AM, Claus Ibsen <[email protected]> wrote: > 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. I have backported the unit test and the bug was not present in Camel 1.6.x. The bug is only in Camel 2.0.
> > 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 > -- Claus Ibsen Apache Camel Committer Open Source Integration: http://fusesource.com Blog: http://davsclaus.blogspot.com/ Twitter: http://twitter.com/davsclaus
