onException policy within global context lost when error handler redefined 
within route context.
------------------------------------------------------------------------------------------------

                 Key: CAMEL-5167
                 URL: https://issues.apache.org/jira/browse/CAMEL-5167
             Project: Camel
          Issue Type: Bug
    Affects Versions: 2.9.1
            Reporter: Radoslaw Szymanek


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: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to