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

Xiaoli Ding updated CAMEL-5601:
-------------------------------

    Description: 
step1:add one route begin with Error handler component whose dead letter url is 
"direct:b".
step2:add send route with without error handler component.
step3:add the deadLetterChannel with url:"direct:b"

the generated code are:
{noformat} 
                @Override
        public void configure() throws Exception {
                errorHandler(deadLetterChannel("direct:b"))
                                .from("timer:myTimer1?repeatCount=1")
                                .process(new org.apache.camel.Processor() {
                                        public void 
process(org.apache.camel.Exchange exchange)
                                                        throws Exception {
                                                throw new 
Exception("exception1");
                                        }

                                }).id("cProcessor_1");

                from("timer:myTimer2?repeatCount=1")
                                .routeId("Sender_cMessagingEndpoint_1")
                                .process(new org.apache.camel.Processor() {
                                        public void 
process(org.apache.camel.Exchange exchange)
                                                        throws Exception {
                                                throw new 
Exception("exception2");
                                        }

                                }).id("cProcessor_3");
                from("direct:b")
                                
.routeId("toProcessStartRouteLevel_cMessagingEndpoint_4")
                                .process(new org.apache.camel.Processor() {
                                        public void 
process(org.apache.camel.Exchange exchange)
                                                        throws Exception {
                                                Exception exception = 
(Exception) exchange.getProperties().get("CamelExceptionCaught");
                                                if(exception != null){
                                                        
System.out.println("error message:" + exception.getMessage());
                                                }
                                        }

                                }).id("cProcessor_4");
        }
{noformat} 

when run it,error handler deal with first and second exception which throwed by 
two route,the output is:
{noformat} 
error message:exception2
error message:exception1
{noformat}
but expect deal with first  exception,expect the output is:
{noformat}
error message:exception1
{noformat}


the whole class is in attachment(CamelTester.java)


  was:
step1:add one route begin with Error handler component whose dead letter url is 
"direct:b".
step2:add send route with without error handler component.
step3:add the deadLetterChannel with url:"direct:b"

the generated code are:
{noformat} 
        @Override
        public void configure() throws Exception {
                
errorHandler(deadLetterChannel("direct:b")).from("timer:myTimer1?repeatCount=1")
                                .process(new org.apache.camel.Processor() {
                                        public void process(
                                                        
org.apache.camel.Exchange exchange)
                                                        throws Exception {      
                                        
                                                throw new Exception("i am in 
start of route");
                                        }

                                }).id("cProcessor_1");
                from("timer:myTimer2?repeatCount=1")
                                .routeId("Sender_cMessagingEndpoint_1")
                                .process(new org.apache.camel.Processor() {
                                        public void process(
                                                        
org.apache.camel.Exchange exchange)
                                                        throws Exception {
                                                throw new Exception("i am 
isolate in the model");
                                        }

                                }).id("cProcessor_3");
                from("direct:b")
                                
.routeId("toProcessStartRouteLevel_cMessagingEndpoint_4")
                                .process(new org.apache.camel.Processor() {
                                        public void process(
                                                        
org.apache.camel.Exchange exchange)
                                                        throws Exception {      
                                        
                                                System.out.println("it is route 
level handler");
                                        }

                                }).id("cProcessor_4");
        }
{noformat} 

when run it,error handler deal with first and second exception which throwed by 
two route,the output is:
{noformat} 
it is route level handler
it is route level handler
{noformat}
but expect deal with first  exception,expect the output is:
{noformat}
it is route level handler
{noformat}
only one time.

the whole class is in attachment(CamelTester.java)


    
> Error handler level is wrong
> ----------------------------
>
>                 Key: CAMEL-5601
>                 URL: https://issues.apache.org/jira/browse/CAMEL-5601
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.9.3
>            Reporter: Xiaoli Ding
>            Priority: Minor
>         Attachments: CamelTester.java
>
>
> step1:add one route begin with Error handler component whose dead letter url 
> is "direct:b".
> step2:add send route with without error handler component.
> step3:add the deadLetterChannel with url:"direct:b"
> the generated code are:
> {noformat} 
>               @Override
>       public void configure() throws Exception {
>               errorHandler(deadLetterChannel("direct:b"))
>                               .from("timer:myTimer1?repeatCount=1")
>                               .process(new org.apache.camel.Processor() {
>                                       public void 
> process(org.apache.camel.Exchange exchange)
>                                                       throws Exception {
>                                               throw new 
> Exception("exception1");
>                                       }
>                               }).id("cProcessor_1");
>               from("timer:myTimer2?repeatCount=1")
>                               .routeId("Sender_cMessagingEndpoint_1")
>                               .process(new org.apache.camel.Processor() {
>                                       public void 
> process(org.apache.camel.Exchange exchange)
>                                                       throws Exception {
>                                               throw new 
> Exception("exception2");
>                                       }
>                               }).id("cProcessor_3");
>               from("direct:b")
>                               
> .routeId("toProcessStartRouteLevel_cMessagingEndpoint_4")
>                               .process(new org.apache.camel.Processor() {
>                                       public void 
> process(org.apache.camel.Exchange exchange)
>                                                       throws Exception {
>                                               Exception exception = 
> (Exception) exchange.getProperties().get("CamelExceptionCaught");
>                                               if(exception != null){
>                                                       
> System.out.println("error message:" + exception.getMessage());
>                                               }
>                                       }
>                               }).id("cProcessor_4");
>       }
> {noformat} 
> when run it,error handler deal with first and second exception which throwed 
> by two route,the output is:
> {noformat} 
> error message:exception2
> error message:exception1
> {noformat}
> but expect deal with first  exception,expect the output is:
> {noformat}
> error message:exception1
> {noformat}
> the whole class is in attachment(CamelTester.java)

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira

Reply via email to