On Mon, Nov 29, 2010 at 10:26 AM, Marco Bettiol <jamiro...@gmail.com> wrote: > I'm using 2.5.0. > Ok I will try with your solution and let you know. :) > P.S. > Just for knowledge... Is my code right? >
No the filter should not be in the split. Camel will always invoke the AggregationStrategy for each splitted message. So you should implement the logic here if you want to skip certain messages. And you should in essence use .end() in the route to denote when the filter / splitter ends. from split filter end end to But you logic could simply be from split end to > 2010/11/29 Claus Ibsen <claus.ib...@gmail.com> > >> Hi >> >> What version of Camel are you using? >> >> And you can also do your filter logic in the aggregator. Just return >> oldExchange if the newExchange should be skipped. >> >> >> On Sun, Nov 28, 2010 at 9:39 PM, Marco Bettiol <jamiro...@gmail.com> >> wrote: >> > Hi guys, >> > >> > I'm new to apache Camel. It sound really great. >> > >> > I was trying to build my first application. I got a file with entries of >> > different type and I want to generate a new file with only a subset of >> the >> > lines (in the final version I will have to build up a POJO and send it >> using >> > web-service). >> > >> > >> > The problem is that when I try to aggregate the lines the output file >> > contains only the last not filtered row >> > >> > >> > Thank you for your support :) >> > >> > Marco >> > >> > >> > >> > Here is the code >> > >> > ------------------------------- >> > >> > public class Test { >> > >> > private DefaultCamelContext camel; >> > >> > public static void main(String[] args) throws Exception{ >> > >> > new Test(); >> > >> > } >> > >> > public Test() throws Exception{ >> > >> > camel = new DefaultCamelContext(); >> > >> > camel.addRoutes(new RouteBuilder() { >> > >> > public void configure() { from( >> > "file:/Users/marcobettiol/IES/data?noop=true") >> > >> > .split(body().tokenize("\n"), new >> > TVCEOrderAggregateStrategy()).filter(newPredicate() { >> > >> > �...@override >> > >> > public boolean matches(Exchange exchange) { >> > >> > String content =exchange.getIn().getBody(String.class); >> > >> > if(content.startsWith("vnboltes") || content.startsWith("vnbolcas")) >> > >> > return true; >> > >> > return true; >> > >> > //keep everything for test >> > >> > } >> > >> > }) >> > >> > .to("file:/Users/marcobettiol/IES/copy?autoCreate=true"); >> > >> > } >> > >> > }); >> > >> > camel.start(); >> > >> > Thread.sleep(5000); >> > >> > camel.stop(); >> > >> > } >> > >> > >> > } >> > >> > -------------------------- >> > >> > public class TVCEOrderAggregateStrategy implements AggregationStrategy{ >> > >> > public Exchange aggregate(Exchange oldExchange, Exchange newExchange) >> { >> > >> > if (oldExchange == null) { >> > >> > return newExchange; >> > >> > } >> > >> > String oldBody = oldExchange.getIn().getBody(String.class); >> > >> > String newBody = newExchange.getIn().getBody(String.class); >> > >> > String concatBody = oldBody.concat(newBody); >> > >> > oldExchange.getIn().setBody(concatBody); >> > >> > return oldExchange; >> > >> > >> > } >> > >> > >> > } >> > >> >> >> >> -- >> Claus Ibsen >> ----------------- >> FuseSource >> Email: cib...@fusesource.com >> Web: http://fusesource.com >> Twitter: davsclaus >> Blog: http://davsclaus.blogspot.com/ >> Author of Camel in Action: http://www.manning.com/ibsen/ >> > -- Claus Ibsen ----------------- FuseSource Email: cib...@fusesource.com Web: http://fusesource.com Twitter: davsclaus Blog: http://davsclaus.blogspot.com/ Author of Camel in Action: http://www.manning.com/ibsen/