I am trying to build a application with several camel routes which re use many common routes internally. Hence, I am trying to segregate the routes in several different Rou
correct, the onException() clauses only apply to the current RouteBuilder's route definitions...
that said, you can reuse these definitions by having all your RouteBuilders extend the ExceptionRouteBuilder and call super.configure()...something like this
public class MyRouteBuilder extends ExceptionRouteBuilder {
@Override
public void configure() throws Exception {
super.configure();
from("direct:start").throwException(new Exception("error"));
}
}
...
public class ExceptionRouteBuilder implements RouteBuilder {
@Override
public void configure() throws Exception {
onException(Exception.class).handled(true).to("mock:error");
}
}
or even just have a static method in an ExceptionBuilder class to setup the clauses for a given RouteBuilder instance
public class MyRouteBuilder extends RouteBuilder {
@Override
public void configure() throws Exception {
ExceptionBuilder.setup(this);
from("direct:start").throwException(new Exception("error"));
}
}
...
public class ExceptionBuilder {
public static void setup(RouteBuilder routeBuilder) {
routeBuilder.onException(Exception.class).handled(true).to("mock:error");
}
}