Hi:
Here is a simple route, I think it's result should be 6, but the result is
2;
from("direct:start2").multicast(new SumAggregateBean())
.pipeline().transform(BeanLanguage.bean(IncreaseOne.class)).bean(new
IncreaseTwo()).end()
.pipeline().transform(BeanLanguage.bean(IncreaseOne.class)).bean(new
IncreaseTwo()).end()
.end()
.to("mock:result2");
In this route, IncreaseOne just add the input by one, IncreaseTwo: just add
the input by two; The SumAggregateBean just add sum the input integer.
If I send number 0 to the route, I think each pipe line 's result should be
0+1+2=3, and final result of route should be 3+3=6; but the result is 2;
Why? Is it a bug?
Following is the source code of IncreaseOne, IncreaseTwo, and
SumAggregateBeans;
public static class IncreaseOne{
public int increase(int v)
{
return v+1;
}
}
public static class IncreaseTwo{
public int increase(int v) {
return v+2;
}
}
public static class SumAggregateBean implements AggregationStrategy{
public Exchange aggregate(Exchange oldExchange, Exchange newExchange) {
if(oldExchange == null)
return newExchange;
int v = parseInt(newExchange.getIn().getBody()) +
parseInt(oldExchange.getIn().getBody());
newExchange.getIn().setBody(v);
return newExchange;
}
}