Add test based on SO question
Project: http://git-wip-us.apache.org/repos/asf/camel/repo Commit: http://git-wip-us.apache.org/repos/asf/camel/commit/4129a589 Tree: http://git-wip-us.apache.org/repos/asf/camel/tree/4129a589 Diff: http://git-wip-us.apache.org/repos/asf/camel/diff/4129a589 Branch: refs/heads/master Commit: 4129a5894b82ebf62bf0e549b41829ae18de7a36 Parents: cc9160a Author: Claus Ibsen <[email protected]> Authored: Wed Apr 29 08:34:38 2015 +0200 Committer: Claus Ibsen <[email protected]> Committed: Wed Apr 29 10:26:31 2015 +0200 ---------------------------------------------------------------------- .../camel/issues/AdviceWithRoutePolicyTest.java | 83 ++++++++++++++++++++ 1 file changed, 83 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/camel/blob/4129a589/camel-core/src/test/java/org/apache/camel/issues/AdviceWithRoutePolicyTest.java ---------------------------------------------------------------------- diff --git a/camel-core/src/test/java/org/apache/camel/issues/AdviceWithRoutePolicyTest.java b/camel-core/src/test/java/org/apache/camel/issues/AdviceWithRoutePolicyTest.java new file mode 100644 index 0000000..356930c --- /dev/null +++ b/camel-core/src/test/java/org/apache/camel/issues/AdviceWithRoutePolicyTest.java @@ -0,0 +1,83 @@ +/** + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.issues; + +import org.apache.camel.ContextTestSupport; +import org.apache.camel.Exchange; +import org.apache.camel.Route; +import org.apache.camel.builder.AdviceWithRouteBuilder; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.model.RouteDefinition; +import org.apache.camel.support.RoutePolicySupport; + +/** + * @version + */ +public class AdviceWithRoutePolicyTest extends ContextTestSupport { + + public void testOk() throws Exception { + getMockEndpoint("mock:foo").expectedBodiesReceived("Hello World"); + getMockEndpoint("mock:foo").message(0).header("MyRoutePolicy").isEqualTo(true); + getMockEndpoint("mock:bar").expectedBodiesReceived("Hello World"); + getMockEndpoint("mock:bar").message(0).header("MyRoutePolicy").isEqualTo(true); + + template.sendBody("direct:start", "Hello World"); + + assertMockEndpointsSatisfied(); + } + + public void testAdviceRoutePolicyRemoved() throws Exception { + RouteDefinition route = context.getRouteDefinitions().get(0); + route.adviceWith(context, new AdviceWithRouteBuilder() { + @Override + public void configure() throws Exception { + // remove the route policy so we can test without it + getOriginalRoute().setRoutePolicies(null); + } + }); + + getMockEndpoint("mock:foo").expectedBodiesReceived("Hello World"); + getMockEndpoint("mock:foo").message(0).header("MyRoutePolicy").isNull(); + getMockEndpoint("mock:bar").expectedBodiesReceived("Hello World"); + getMockEndpoint("mock:bar").message(0).header("MyRoutePolicy").isNull(); + + template.sendBody("direct:start", "Hello World"); + + assertMockEndpointsSatisfied(); + } + + @Override + protected RouteBuilder createRouteBuilder() throws Exception { + return new RouteBuilder() { + @Override + public void configure() throws Exception { + from("direct:start").routePolicy(new MyRoutePolicy()) + .to("mock:foo") + .to("mock:bar"); + } + }; + } + + private class MyRoutePolicy extends RoutePolicySupport { + + @Override + public void onExchangeBegin(Route route, Exchange exchange) { + exchange.getIn().setHeader("MyRoutePolicy", true); + } + } + +}
