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 <[email protected]> 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 <[email protected]> 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
>