[
https://issues.apache.org/jira/browse/CAMEL-8646?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14620453#comment-14620453
]
Alex Savitsky commented on CAMEL-8646:
--------------------------------------
What do you mean by "latest code"? The latest I see in Maven is 2.15.2, and the
code certainly fails there. Will attach a complete Maven project to illustrate
the issue.
> 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
>
>
> 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)