You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (JIRA)" <ji...@apache.org> on 2014/12/01 11:03:12 UTC

[jira] [Updated] (CAMEL-8097) Error in AST/Graph translation

     [ https://issues.apache.org/jira/browse/CAMEL-8097?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]

Claus Ibsen updated CAMEL-8097:
-------------------------------
    Fix Version/s: 2.15.0
                   2.14.1

> Error in AST/Graph translation
> ------------------------------
>
>                 Key: CAMEL-8097
>                 URL: https://issues.apache.org/jira/browse/CAMEL-8097
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.14.0
>            Reporter: Paolo Antinori
>             Fix For: 2.14.1, 2.15.0
>
>
> See https://github.com/hawtio/hawtio/issues/1202
> There could be a problem in {{camel-core}} with the graph model generation, in presence of multiple {{end()}} calls.
> {code:java}
>         from("direct:whatever")
>                 .split(body()).parallelProcessing().streaming()
>                     .setHeader("", simple(""))
>                     .process(new Processor() {
>                         @Override
>                         public void process(Exchange exchange) throws Exception {
>                             
>                         }
>                     })
>                     .choice()
>                         .when(simple("something"))
>                             .to("direct:a")
>                         .when(simple("something2"))
>                             .to("direct:b")
>                         .when(simple("something3"))
>                             .to("direct:c")
>                         .otherwise()
>                             .log("whatever")
>                     .end()
>                 .end()
>                 .log("very last");
> {code}
> Produces the equivalent of this xml dump:
> {code:xml}
> <route xmlns="http://camel.apache.org/schema/spring" id="route2">
>         <from uri="direct:whatever1"/>
>         <split parallelProcessing="true" streaming="true">
>             <expressionDefinition>body</expressionDefinition>
>             <setHeader headerName="">
>                 <simple/>
>             </setHeader>
>             <process/>
>             <choice>
>                 <when>
>                     <simple>something</simple>
>                     <to uri="direct:a"/>
>                 </when>
>                 <when>
>                     <simple>something2</simple>
>                     <to uri="direct:b"/>
>                 </when>
>                 <when>
>                     <simple>something3</simple>
>                     <to uri="direct:c"/>
>                 </when>
>                 <otherwise>
>                     <log message="whatever"/>
>                 </otherwise>
>             </choice>
>         </split>
>         <log message="very last"/>
>     </route>
> {code}
> while using *{{endChoice()}}* in place of the inner *{{end()}}*
> it produces:
> {code:xml}
> <route xmlns="http://camel.apache.org/schema/spring" id="route3">
>         <from uri="direct:whatever2"/>
>         <split parallelProcessing="true" streaming="true">
>             <expressionDefinition>body</expressionDefinition>
>             <setHeader headerName="">
>                 <simple/>
>             </setHeader>
>             <process/>
>             <choice>
>                 <when>
>                     <simple>something</simple>
>                     <to uri="direct:a"/>
>                 </when>
>                 <when>
>                     <simple>something2</simple>
>                     <to uri="direct:b"/>
>                 </when>
>                 <when>
>                     <simple>something3</simple>
>                     <to uri="direct:c"/>
>                 </when>
>                 <otherwise>
>                     <log message="whatever"/>
>                 </otherwise>
>             </choice>
>             <log message="very last"/>
>         </split>
>     </route>
> {code}
> Where the difference is in the location of the line *<log message="very last"/>*
> Is this behavior correct? or should this work already without the need of *{{endChoice()}}* statement?



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)