[
https://issues.apache.org/jira/browse/CAMEL-3677?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12995790#comment-12995790
]
Oliver Jelinski commented on CAMEL-3677:
----------------------------------------
Yes, sorry, I didn't use 2.6 yet, because I had different issues, and I didn't
find the bug reported, so I didn't think it would have been fixed yet. But:
yes! You fixed it in 2.6. My routes are working correct without my workaround.
> 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
> Fix For: 2.6.0
>
>
> 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