[ https://issues.apache.org/jira/browse/CAMEL-3677?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12995780#comment-12995780 ]
Claus Ibsen commented on CAMEL-3677: ------------------------------------ Can you try with Camel 2.6.0 - We have fixed issus with splitter in that release. > When splitting inside another split, the custom aggregationStrategy is not > used. > -------------------------------------------------------------------------------- > > Key: CAMEL-3677 > URL: https://issues.apache.org/jira/browse/CAMEL-3677 > Project: Camel > Issue Type: Bug > Components: camel-core > Affects Versions: 2.5.0 > Environment: Mac OS X 10.6.6, Eclipse Helios > Reporter: Oliver Jelinski > Priority: Minor > > When splitting inside another split, the custom aggregationStrategy is not > used. For example in the route: > {code:xml} > <route id="DoubleSplitRoute"> > <from uri="direct:in" /> > <setBody> > <constant> > <a> > <b> > <c>Hello</c> > <c>World</c> > </b> > <b> > <c>Hello</c> > <c>again</c> > </b> > </a> > </constant> > </setBody> > <split> > <xpath>a/b</xpath> > <split strategyRef="concatWithSpaceStrategy"> > <xpath>b/c/text()</xpath> > > <setBody><simple>${bodyAs(java.lang.String)}</simple></setBody> > <log message="Got a part: ${body}"/> > </split> > <log message="Got a result: ${body}"/> > </split> > </route> > {code} > (where the {{concatWithSpaceStrategy}} does nothing more than to concat the > bodies with a space inbetween.) > The expected results would be: > {code} > Got a result: Hello World > {code} > and > {code} > Got a result: Hello again > {code} > But that is not what happens. The actual results are two times the same: > {code} > Got a result: > <a> > <b> > <c>Hello</c> > <c>World</c> > </b> > <b> > <c>Hello</c> > <c>again</c> > </b> > </a> > {code} > The reason is, that the strategy is not used. In the class > {{org.apache.camel.processor.MulticastProcessor}}, in the method {{protected > AggregationStrategy getAggregationStrategy(Exchange exchange)}}, the first > step is to find an aggregationStrategy in the Exchange. This is set to > {{UseOriginalAggregationStrategy}}, and because it is not null, this > aggregation strategy will be used, not the one declared for the splitter. > --- > A workaround would be to remove the AggregationStrategy of the Exchange, > before it is aggregated, by using a processor with the following process > method: > {code:java} > public void process(Exchange exchange) throws Exception { > if (exchange != null) { > exchange.removeProperty(Exchange.AGGREGATION_STRATEGY); > } > } > {code} > After integrating this in my route, I got the desired results. -- This message is automatically generated by JIRA. - For more information on JIRA, see: http://www.atlassian.com/software/jira