You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Raúl Kripalani (JIRA)" <ji...@apache.org> on 2015/09/29 17:42:04 UTC

[jira] [Commented] (CAMEL-7180) Support multiple onWhen + onOtherwise in onComplete blocks

    [ https://issues.apache.org/jira/browse/CAMEL-7180?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14935336#comment-14935336 ] 

Raúl Kripalani commented on CAMEL-7180:
---------------------------------------

You're right. I was going for syntactic sugar, but there has been no further demand on this ticket so I think the community doesn't need it.

However, I do see this being useful not in the context of a choice where only 1 path would be taken, but in a "condition guards" use-case, e.g.:

{code}
.onCompletion().onCompleteOnly()
    .onWhen(xpath("/result = 'ok'"))
        .log("All good!")
    .onWhen(xpath("/result/code = 'abc-0001'"))
        .log("Code abc-0001")
.end()
{code}

Each condition would be satisfied by itself, without interrupting the block if one matches.

Currently, one doesn't have an easy way of implementing this routing logic if not using multicast + filters, right?

In this case, we'd obviously drop the {{onOtherwise}} DSL.

> Support multiple onWhen + onOtherwise in onComplete blocks
> ----------------------------------------------------------
>
>                 Key: CAMEL-7180
>                 URL: https://issues.apache.org/jira/browse/CAMEL-7180
>             Project: Camel
>          Issue Type: New Feature
>          Components: camel-core
>    Affects Versions: 2.12.2
>            Reporter: Raúl Kripalani
>            Assignee: Raúl Kripalani
>
> Will allow for something like:
> {code}
> .onCompletion().onCompleteOnly()
>     .onWhen(xpath("/result = 'ok'"))
>         .log("All good!")
>     .onWhen(xpath("/result = 'warn'"))
>         .log(LoggingLevel.WARN, "Something didn't go quite as right!")
>     .onOtherwise()
>         .log(LoggingLevel.ERROR, "Something went awfully wrong!")
> .end()
> {code}
> This will specifically benefit route-level onComplete blocks, as only 1 is supported per route. Currently, if you want to take decisions, you have to create a nested choice() which feels clumsy, given that the onComplete DSL already supports some degree of decision-making.



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