Thanks Claus. After adding end before endchoice my route is working now. .to("stream:out") .end() .endChoice()
My understanding about end & endchoice is that, end() will close the choice() clause, endchoice() will close the when() clause. Then why do we need another end() before endChoice in 2 split? Correct me if my understanding is wrong. On Fri, 26 Jul 2019 at 14:23, Claus Ibsen <claus.ib...@gmail.com> wrote: > You have 2 splits, so you need and end before the end choice > > On Fri, Jul 26, 2019 at 10:51 AM sujin sr <suji...@gmail.com> wrote: > > > > I am getting ClassCastException while trying to execute camel route > > > > from("timer://messageSplitterTest?repeatCount=1") > > .process(exchange -> { > > Message message = exchange.getMessage(); > > List<Message> ongoingMessages = new ArrayList<>(); > > for (int i = 0; i < 10; i++) { > > Message listMessage = message.copy(); > > listMessage.setHeader("count", String.valueOf(i)); > > ongoingMessages.add(listMessage); > > } > > exchange.getIn().setBody(ongoingMessages); > > exchange.getIn().setHeader("primary", "true"); > > }) > > .choice() > > .when(header("primary").isEqualTo("true")) > > .split(body()) > > .process(exchange -> { > > Message msg = exchange.getMessage(); > > System.out.println("After Split, count=" + > > msg.getHeader("count", String.class)); > > }) > > .split(body()) > > .to("stream:out") > > .endChoice() > > .otherwise() > > .to("stream:out") > > .end() > > ; > > > > I got below error > > > > Exception in thread "main" java.lang.ClassCastException: > > org.apache.camel.model.SplitDefinition cannot be cast to > > org.apache.camel.model.ChoiceDefinition > > at > org.apache.camel.model.ProcessorDefinition.endChoice(ProcessorDefinition.java:1415) > > at > com.temenos.tti.test.utils.camel.MessageSplitCamelTest4$1.configure(MessageSplitCamelTest4.java:40) > > > > > > Kindly Help me to fix this error. > > > > -- > Claus Ibsen > ----------------- > http://davsclaus.com @davsclaus > Camel in Action 2: https://www.manning.com/ibsen2 >