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

Xiaoli Ding updated CAMEL-5612:
-------------------------------

    Description: 
i created two route,and i add  error handler at begin of two route,the 
generated code are:
{noformat}
        @Override
        public void configure() throws Exception {
                errorHandler(deadLetterChannel("direct:a"))
                                .from("timer:myTimer1?repeatCount=1")
                                .process(new org.apache.camel.Processor() {
                                        public void 
process(org.apache.camel.Exchange exchange)
                                                        throws Exception {
                                                throw new Exception("errorA");
                                        }

                                }).id("cProcessor_1");
                errorHandler(deadLetterChannel("direct:b"))
                                .from("timer:myTimer2?repeatCount=1")
                                .process(new org.apache.camel.Processor() {
                                        public void 
process(org.apache.camel.Exchange exchange)
                                                        throws Exception {
                                                throw new Exception("errorB");
                                        }

                                }).id("cProcessor_2");
                from("direct:a")
                                
.routeId("toProcessMidRouteLevel_1_cMessagingEndpoint_3")
                                .process(new org.apache.camel.Processor() {
                                        public void 
process(org.apache.camel.Exchange exchange)
                                                        throws Exception {
                                                Throwable exception = 
(Throwable) exchange
                                                                
.getProperty(org.apache.camel.Exchange.EXCEPTION_CAUGHT);
                                                System.out.println("first 
error:"
                                                                + 
exception.getMessage());
                                        }

                                }).id("cProcessor_3");
                from("direct:b")
                                
.routeId("toProcessMidRouteLevel_1_cMessagingEndpoint_4")
                                .process(new org.apache.camel.Processor() {
                                        public void 
process(org.apache.camel.Exchange exchange)
                                                        throws Exception {
                                                Throwable exception = 
(Throwable) exchange
                                                                
.getProperty(org.apache.camel.Exchange.EXCEPTION_CAUGHT);
                                                System.out.println("second 
error:"
                                                                + 
exception.getMessage());
                                        }

                                }).id("cProcessor_4");
        }
{noformat}
when run it,the result is:
{noformat}
Exception in thread "main" java.lang.IllegalArgumentException: errorHandler 
must be defined before any routes in the RouteBuilder
        at 
org.apache.camel.builder.RouteBuilder.errorHandler(RouteBuilder.java:145)
        at org.talend.esb.camel.CamelTester.configure(CamelTester.java:53)
        at 
org.apache.camel.builder.RouteBuilder.checkInitialized(RouteBuilder.java:324)
        at 
org.apache.camel.builder.RouteBuilder.configureRoutes(RouteBuilder.java:278)
        at 
org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:264)
        at 
org.apache.camel.impl.DefaultCamelContext.addRoutes(DefaultCamelContext.java:605)
        at org.talend.esb.camel.CamelTester.initialize(CamelTester.java:16)
        at org.talend.esb.camel.CamelTester.<init>(CamelTester.java:11)
        at org.talend.esb.camel.CamelTester.main(CamelTester.java:35)
{noformat}

  was:
i created two route,and i add one error handler at begin of route,the generated 
code are:
{noformat}
        @Override
        public void configure() throws Exception {
                errorHandler(deadLetterChannel("direct:a"))
                                .from("timer:myTimer1?repeatCount=1")
                                .process(new org.apache.camel.Processor() {
                                        public void 
process(org.apache.camel.Exchange exchange)
                                                        throws Exception {
                                                throw new Exception("errorA");
                                        }

                                }).id("cProcessor_1");
                errorHandler(deadLetterChannel("direct:b"))
                                .from("timer:myTimer2?repeatCount=1")
                                .process(new org.apache.camel.Processor() {
                                        public void 
process(org.apache.camel.Exchange exchange)
                                                        throws Exception {
                                                throw new Exception("errorB");
                                        }

                                }).id("cProcessor_2");
                from("direct:a")
                                
.routeId("toProcessMidRouteLevel_1_cMessagingEndpoint_3")
                                .process(new org.apache.camel.Processor() {
                                        public void 
process(org.apache.camel.Exchange exchange)
                                                        throws Exception {
                                                Throwable exception = 
(Throwable) exchange
                                                                
.getProperty(org.apache.camel.Exchange.EXCEPTION_CAUGHT);
                                                System.out.println("first 
error:"
                                                                + 
exception.getMessage());
                                        }

                                }).id("cProcessor_3");
                from("direct:b")
                                
.routeId("toProcessMidRouteLevel_1_cMessagingEndpoint_4")
                                .process(new org.apache.camel.Processor() {
                                        public void 
process(org.apache.camel.Exchange exchange)
                                                        throws Exception {
                                                Throwable exception = 
(Throwable) exchange
                                                                
.getProperty(org.apache.camel.Exchange.EXCEPTION_CAUGHT);
                                                System.out.println("second 
error:"
                                                                + 
exception.getMessage());
                                        }

                                }).id("cProcessor_4");
        }
{noformat}
when run it,the result is:
{noformat}
Exception in thread "main" java.lang.IllegalArgumentException: errorHandler 
must be defined before any routes in the RouteBuilder
        at 
org.apache.camel.builder.RouteBuilder.errorHandler(RouteBuilder.java:145)
        at org.talend.esb.camel.CamelTester.configure(CamelTester.java:53)
        at 
org.apache.camel.builder.RouteBuilder.checkInitialized(RouteBuilder.java:324)
        at 
org.apache.camel.builder.RouteBuilder.configureRoutes(RouteBuilder.java:278)
        at 
org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:264)
        at 
org.apache.camel.impl.DefaultCamelContext.addRoutes(DefaultCamelContext.java:605)
        at org.talend.esb.camel.CamelTester.initialize(CamelTester.java:16)
        at org.talend.esb.camel.CamelTester.<init>(CamelTester.java:11)
        at org.talend.esb.camel.CamelTester.main(CamelTester.java:35)
{noformat}

    
> Can not define error handler at begin of two route simultaneously
> -----------------------------------------------------------------
>
>                 Key: CAMEL-5612
>                 URL: https://issues.apache.org/jira/browse/CAMEL-5612
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-core
>    Affects Versions: 2.9.3
>            Reporter: Xiaoli Ding
>            Priority: Minor
>
> i created two route,and i add  error handler at begin of two route,the 
> generated code are:
> {noformat}
>       @Override
>       public void configure() throws Exception {
>               errorHandler(deadLetterChannel("direct:a"))
>                               .from("timer:myTimer1?repeatCount=1")
>                               .process(new org.apache.camel.Processor() {
>                                       public void 
> process(org.apache.camel.Exchange exchange)
>                                                       throws Exception {
>                                               throw new Exception("errorA");
>                                       }
>                               }).id("cProcessor_1");
>               errorHandler(deadLetterChannel("direct:b"))
>                               .from("timer:myTimer2?repeatCount=1")
>                               .process(new org.apache.camel.Processor() {
>                                       public void 
> process(org.apache.camel.Exchange exchange)
>                                                       throws Exception {
>                                               throw new Exception("errorB");
>                                       }
>                               }).id("cProcessor_2");
>               from("direct:a")
>                               
> .routeId("toProcessMidRouteLevel_1_cMessagingEndpoint_3")
>                               .process(new org.apache.camel.Processor() {
>                                       public void 
> process(org.apache.camel.Exchange exchange)
>                                                       throws Exception {
>                                               Throwable exception = 
> (Throwable) exchange
>                                                               
> .getProperty(org.apache.camel.Exchange.EXCEPTION_CAUGHT);
>                                               System.out.println("first 
> error:"
>                                                               + 
> exception.getMessage());
>                                       }
>                               }).id("cProcessor_3");
>               from("direct:b")
>                               
> .routeId("toProcessMidRouteLevel_1_cMessagingEndpoint_4")
>                               .process(new org.apache.camel.Processor() {
>                                       public void 
> process(org.apache.camel.Exchange exchange)
>                                                       throws Exception {
>                                               Throwable exception = 
> (Throwable) exchange
>                                                               
> .getProperty(org.apache.camel.Exchange.EXCEPTION_CAUGHT);
>                                               System.out.println("second 
> error:"
>                                                               + 
> exception.getMessage());
>                                       }
>                               }).id("cProcessor_4");
>       }
> {noformat}
> when run it,the result is:
> {noformat}
> Exception in thread "main" java.lang.IllegalArgumentException: errorHandler 
> must be defined before any routes in the RouteBuilder
>       at 
> org.apache.camel.builder.RouteBuilder.errorHandler(RouteBuilder.java:145)
>       at org.talend.esb.camel.CamelTester.configure(CamelTester.java:53)
>       at 
> org.apache.camel.builder.RouteBuilder.checkInitialized(RouteBuilder.java:324)
>       at 
> org.apache.camel.builder.RouteBuilder.configureRoutes(RouteBuilder.java:278)
>       at 
> org.apache.camel.builder.RouteBuilder.addRoutesToCamelContext(RouteBuilder.java:264)
>       at 
> org.apache.camel.impl.DefaultCamelContext.addRoutes(DefaultCamelContext.java:605)
>       at org.talend.esb.camel.CamelTester.initialize(CamelTester.java:16)
>       at org.talend.esb.camel.CamelTester.<init>(CamelTester.java:11)
>       at org.talend.esb.camel.CamelTester.main(CamelTester.java:35)
> {noformat}

--
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