See this EIP http://camel.apache.org/composed-message-processor.html
with the _splitter only_ section, where you can put the aggregation strategy on the splitter and do this fork/join pattern. On Fri, Mar 10, 2017 at 3:32 AM, chanti <chantithes...@gmail.com> wrote: > > Hi All, how to aggregate multiple unmarshalled objects , please check my > code. > > DataFormat bindyForInsert = new BindyCsvDataFormat(User0001.class); > DataFormat bindyForDelete = new BindyCsvDataFormat(User0002.class); > DataFormat bindyForUpdate = new BindyCsvDataFormat(User0003.class); > > > from("file:{{filepath}}?noop=true") > split(body().tokenize("\n")) > .streaming() > > .when().body().startsWith("0001")).to("file:{{file_path}}?fileName={{insertfilename}}.ascii").unmarshal(bindyForInsert) > > .when().body().startsWith("0002")).to("file:{{file_path}}?fileName={{defilename}}.ascii").unmarshal(bindyForDelete > ) > > .when().body().startsWith("0002")).to("file:{{file_path}}?fileName={{upfilename}}.ascii").unmarshal(bindyForUpdate) > .aggregate(constant(true), getFileAggregationStrategy()).end(); > > > > The below aggregation logic only gives the last unmarshall object > response(bindyForUpdate), I need all unmarshalled Objects in Exchange. > > > public Exchange aggregate(Exchange oldEx, Exchange newEx) { > Message newIn = newEx.getIn(); > Object newBody = (Object)newEx.getIn().getBody(); > List list = null; > if (oldEx == null) { > list = new ArrayList(); > list.add(newBody); > newIn.setBody(list); > return newEx; > } else { > Message in = oldEx.getIn(); > list = in.getBody(ArrayList.class); > list.add(newBody); > return oldEx; > } > } > > > > -- > View this message in context: > http://camel.465427.n5.nabble.com/how-to-aggregate-multiple-unmarshalled-objects-tp5795209.html > Sent from the Camel - Users mailing list archive at Nabble.com. -- Claus Ibsen ----------------- http://davsclaus.com @davsclaus Camel in Action 2: https://www.manning.com/ibsen2