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

Reply via email to