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)

Reply via email to