camel-issues mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Xiaoli Ding (JIRA)" <j...@apache.org>
Subject [jira] [Updated] (CAMEL-5612) Can not define error handler at begin of two route simultaneously
Date Fri, 14 Sep 2012 08:58:07 GMT

     [ 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

Mime
View raw message