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

Claus Ibsen commented on CAMEL-1144:
------------------------------------

This new rule applies:
- If the thrown exception has a caused by then this exception is used for 
selection, if no match found the original exception is used for selection 
instead


I was wondering if we should do this cause by check for all the entire 
exception hierarchy starting from the bottom and then recurring up?

1) RuntimeCamelException
2) +IOException
3)    + FileNotFoundException

So Camel will start with (3) and then match up the tree until (1)

Currently we support tree level 1+2 but I guess we should support all levels 
and start from the bottom, the real cause!

> Exceptions thrown from converters are not correctly handled
> -----------------------------------------------------------
>
>                 Key: CAMEL-1144
>                 URL: https://issues.apache.org/activemq/browse/CAMEL-1144
>             Project: Apache Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 1.5.0
>            Reporter: Martin Gilday
>            Assignee: Claus Ibsen
>            Priority: Critical
>             Fix For: 1.5.1, 2.0.0
>
>
> Related nabble: 
> http://www.nabble.com/Handling-converter-failure-td20830148s22882.html
> When an exception is thrown from a @Converter it is not correctly handled by 
> onException.  The handler is receiving a RuntimeCamelException and not 
> checking the cause when determining the best handler.
> {code}
> /////Converter
> @Converter
> public static LocalDateTime toLocalDateTime(final Object localDateTime)
> {
>   System.out.println("Converting to local date time");
>   throw new IllegalArgumentException("Bad data");
> }
> /////Routes
> Routes routes = new RouteBuilder() {
>   @Override
>   public void configure() throws Exception {
>     
> onException(IllegalArgumentException.class).handled(true).to("mock:exception");
>     from("direct:test").convertBodyTo(LocalDateTime.class).to("mock:end");
>   }
> };
> /////Test
> MockEndpoint endpoint = (MockEndpoint)
> camelContext.getEndpoint("mock:end");
> endpoint.expectedMessageCount(0);
> MockEndpoint endpoint2 = (MockEndpoint)
> camelContext.getEndpoint("mock:exception");
> endpoint2.expectedMessageCount(1);
> camelContext.createProducerTemplate().sendBody("direct:test", "test");
> endpoint.assertIsSatisfied();
> endpoint2.assertIsSatisfied();
> {code}

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to