欲しい
_ from( A )
_ .split()...
_ .choice() //Choice 1
_ .when( predicate )
_ .process()
_ .choice() // Choice 2
_ .when( x )
_ .to( X )
_ .otherwise()
_ .to( Y )
_ .end() // to terminate inner choice
_ .endchoice() // tell camel we're back in the outer-choice - gets exception
_ .otherwise() // Choice 1
_ .to( Z )
_ .end()
しかし、endChoice()でランタイム例外が発生します
java.lang.ClassCastException: org.apache.camel.model.SplitDefinition cannot be cast to org.apache.camel.model.ChoiceDefinition
それなしでコンパイル時エラーが発生します
end()が内側と外側の選択を終了しているのではないかと思います。内側の選択だけを終了させたいのです。
end()を入力しないと、2番目のelse()が内部選択の拡張として扱われます。そうではありません。
2番目の選択肢をサブルートに入れて「direct:SUB_ROUTE」を実行することで回避策を見つけましたが、可能であれば、上記で概説したより単純な構造を使用したいと思います。Choices in Choicesを実現する方法はありますか、それともこれはJava DSLの単なる制限ですか?