[
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}
public void configure() throws Exception {
errorHandler(deadLetterChannel("direct:a"))
.from("timer:myTimer1?repeatCount=1").routeId("route1")
.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").routeId("route2")
.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("route3")
.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("route4")
.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 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}
> 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
> Assignee: Claus Ibsen
> Priority: Minor
> Fix For: 2.11.0
>
>
> i created two route,and i add error handler at begin of two route,the
> generated code are:
> {noformat}
> public void configure() throws Exception {
> errorHandler(deadLetterChannel("direct:a"))
>
> .from("timer:myTimer1?repeatCount=1").routeId("route1")
> .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").routeId("route2")
> .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("route3")
> .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("route4")
> .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