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;
}
}