You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Claus Ibsen (JIRA)" <ji...@apache.org> on 2015/07/09 12:19:05 UTC
[jira] [Resolved] (CAMEL-8646) Camel doesn't allow intercept and
advice on the same route
[ https://issues.apache.org/jira/browse/CAMEL-8646?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Claus Ibsen resolved CAMEL-8646.
--------------------------------
Resolution: Fixed
Assignee: Claus Ibsen
Fix Version/s: 2.15.3
2.16.0
Works with latest code, maybe also with 2.15.2
> 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)