tang honggang created CAMEL-16825:
-------------------------------------
Summary: can not use endChoice() in nest choice DSL
Key: CAMEL-16825
URL: https://issues.apache.org/jira/browse/CAMEL-16825
Project: Camel
Issue Type: Wish
Components: camel-core-engine
Affects Versions: 3.11.0, 3.6.0
Reporter: tang honggang
Fix For: Future
I want to use nest choice DSL to finish some job, but it doesn't work well in
my test case. When I use endChoice() in the inner choice clause, it return
back to the outer choice definition actually.
And this is the test case:
ProcessorDefinition<?> end = from("timer:foo?period=5000&synchronous=true")
.transform(simple("${random(1000)}"))
.choice()
.when(simple("${body} > 500"))
.log("High number ${body}")
.choice()
.when(simple("${body} > 750"))
.log("High number >750 ${body}")
.endChoice()
.otherwise()
.log("High number <750 ${body}")
.endChoice()
.endChoice()
.otherwise()
.log("Low number ${body}")
.endChoice();
Though in this case, I can fix the problem by not use endChoice(), I see the
code of endChoice(). I found that change the sequence of the two judgement
below can fix my problem, but I am not sure the influence. So I hope you can
give me an answer, thx!
// are we nested choice?
ProcessorDefinition<?> def = this;
if (def.getParent() instanceof WhenDefinition) {
return (ChoiceDefinition) def.getParent().getParent();
}
// are we already a choice?
if (def instanceof ChoiceDefinition) {
return (ChoiceDefinition) def;
}
--
This message was sent by Atlassian Jira
(v8.3.4#803005)