camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Claus Ibsen (Resolved) (JIRA)" <>
Subject [jira] [Resolved] (CAMEL-5167) onException policy within global context lost when error handler redefined within route context.
Date Fri, 13 Apr 2012 14:40:16 GMT


Claus Ibsen resolved CAMEL-5167.

    Resolution: Fixed

And as I told you we will make the DSL stricter in Camel 3.0, where we will enforce that you
can only configure error handler in certain positions etc.

We cannot make this changes in the DSL in the 2.x line as it will break the DSL contract for

Error handlers and onException is configured in the *start* of the route.
> onException policy within global context lost when error handler redefined within route
> ------------------------------------------------------------------------------------------------
>                 Key: CAMEL-5167
>                 URL:
>             Project: Camel
>          Issue Type: Improvement
>    Affects Versions: 2.9.1
>            Reporter: Radoslaw Szymanek
>            Assignee: Claus Ibsen
>             Fix For: 2.10.0
> This may as well be Camel feature (limitation of Java DSL), but I found no indications/warning
that this is a feature in Camel book or web documentation. 
> The route is somewhat ill defined as local errorHandler should be placed before bean
part, but maybe for those types of mistakes 
> it should not have this nasty side effects of loosing global onException policy, but
at least complain during route creation (?).  
> Moreover, the route works properly if I remove global error handler, so it is rather
nasty effect if route definition correctness depends on the existence of the global error
handler definition.
> If I move local errorHandler before bean part then the my test passes as the onException
policy is triggered and works properly. 
> As soon as I redefine the error handler within a route the onException policy is no longer
applicable for the route and the route propagates the exception back to the caller. 
> {code}
>         errorHandler(defaultErrorHandler().maximumRedeliveries(1));
>         onException(NullPointerException.class).setOnRedelivery(new NullRegistrationDateProcessor());
>         from("direct:toPropertyFile").routeId("registrationEntryToPropertyFile")
>                 .setHeader(Exchange.FILE_NAME, simple("${body.firstname}.${body.surname}"))
>                 .bean(RegistrationToPropertiesBean.class, "convert")
>      // Potential bug in Camel, if the same error handler like global is turned on then
onException defined in global context will not be picked up.
>               .errorHandler(defaultErrorHandler().maximumRedeliveries(1))
>      // the code above is working if no default handler was created for a global context.
>               .to("file://" + outFolder);
> {code}

This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators:!default.jspa
For more information on JIRA, see:


View raw message