[ https://issues.apache.org/jira/browse/CAMEL-8646?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Alex Savitsky reopened CAMEL-8646: ---------------------------------- > Camel doesn't allow intercept and advice on the same route > ---------------------------------------------------------- > > Key: CAMEL-8646 > URL: https://issues.apache.org/jira/browse/CAMEL-8646 > Project: Camel > Issue Type: Bug > Components: camel-core > Affects Versions: 2.15.0 > Reporter: Alex Savitsky > Assignee: Claus Ibsen > Fix For: 2.16.0, 2.15.3 > > Attachments: test.zip > > > Let's assume we have a route, defined in a RouteBuilder. It allows us to > define an interceptor that would be executed before every route step, via an > intercept(Processor) call. > Routes can also have an advice attached to them, via > RouteDefinition.adviceWith(AdviceWithRouteBuilder) call. > If these two methods of weaving custom processing into existing routes are > combined, Camel throws an exception: > {noformat} > Exception in thread "main" java.lang.IllegalArgumentException: There are no > outputs which matches: * in the route: Route(main)[[From[direct:main]] -> > [Intercept[[Log[Intercept ${body} ${headers}]]], Log[Main ${body} > ${headers}]]] > at > org.apache.camel.builder.AdviceWithTasks$3.task(AdviceWithTasks.java:257) > at > org.apache.camel.model.RouteDefinition.adviceWith(RouteDefinition.java:270) > at camel.Test.main(Test.java:20) > {noformat} > Simple test to illustrate the issue: > {noformat} > import org.apache.camel.builder.AdviceWithRouteBuilder; > import org.apache.camel.builder.RouteBuilder; > import org.apache.camel.impl.DefaultCamelContext; > import org.apache.camel.model.ModelCamelContext; > public class Test { > public static void main(String[] args) throws Exception { > ModelCamelContext context = new DefaultCamelContext(); > RouteBuilder route = new RouteBuilder() { > @Override > public void configure() throws Exception { > from("direct:advice").log("Advice ${body} > ${headers}"); > from("direct:main").routeId("main").log("Main > ${body} ${headers}"); > } > }; > route.intercept().log("Intercept ${body} ${headers}"); > context.addRoutes(route); > context.getRouteDefinition("main").adviceWith(context, new > AdviceWithRouteBuilder() { > @Override > public void configure() throws Exception { > weaveAddFirst().to("direct:advice"); > } > }); > } > } > {noformat} -- This message was sent by Atlassian JIRA (v6.3.4#6332)