This is an automated email from the ASF dual-hosted git repository. davsclaus pushed a commit to branch camel-2.x in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-2.x by this push: new 05c2b46 (fix) CAMEL-13162: Fixed rest-dsl advice-with using inlined route with route id and replacing from should not append routeId as uri parameter. 05c2b46 is described below commit 05c2b46b4013b066d5e27b0bbd99bebf6ea004d5 Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Tue Mar 19 10:33:43 2019 +0100 (fix) CAMEL-13162: Fixed rest-dsl advice-with using inlined route with route id and replacing from should not append routeId as uri parameter. --- .../apache/camel/model/RouteDefinitionHelper.java | 7 ++- .../component/rest/FromRestAdviceWithTest.java | 66 ++++++++++++++++++++++ 2 files changed, 70 insertions(+), 3 deletions(-) diff --git a/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java b/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java index 83e79f3..3089861 100644 --- a/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java +++ b/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java @@ -191,12 +191,13 @@ public final class RouteDefinitionHelper { verb.setRouteId(id); } List<FromDefinition> fromDefinitions = route.getInputs(); - + + // if its the rest/rest-api endpoints then they should include the route id as well if (ObjectHelper.isNotEmpty(fromDefinitions)) { FromDefinition fromDefinition = fromDefinitions.get(0); String endpointUri = fromDefinition.getEndpointUri(); - if (ObjectHelper.isNotEmpty(endpointUri)) { - Map<String, Object> options = new HashMap<String, Object>(); + if (ObjectHelper.isNotEmpty(endpointUri) && (endpointUri.startsWith("rest:") || endpointUri.startsWith("rest-api:"))) { + Map<String, Object> options = new HashMap<String, Object>(1); options.put("routeId", route.getId()); endpointUri = URISupport.appendParametersToURI(endpointUri, options); diff --git a/camel-core/src/test/java/org/apache/camel/component/rest/FromRestAdviceWithTest.java b/camel-core/src/test/java/org/apache/camel/component/rest/FromRestAdviceWithTest.java new file mode 100644 index 0000000..dd6671b --- /dev/null +++ b/camel-core/src/test/java/org/apache/camel/component/rest/FromRestAdviceWithTest.java @@ -0,0 +1,66 @@ +/** + * 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.component.rest; + +import org.apache.camel.ContextTestSupport; +import org.apache.camel.builder.AdviceWithRouteBuilder; +import org.apache.camel.builder.RouteBuilder; +import org.apache.camel.model.RouteDefinition; +import org.junit.Test; + +public class FromRestAdviceWithTest extends ContextTestSupport { + + @Override + public boolean isUseRouteBuilder() { + return false; + } + + @Test + public void testAdviceWith() throws Exception { + context.addRoutes(new RouteBuilder() { + @Override + public void configure() throws Exception { + rest("/say/hello") + .get() + .route().routeId("myRoute") + .transform().constant("Bye World") + .to("direct:hello"); + + from("direct:hello") + .to("mock:hello"); + } + }); + + RouteDefinition route = context.getRouteDefinition("myRoute"); + route.adviceWith(context, new AdviceWithRouteBuilder() { + @Override + public void configure() throws Exception { + replaceFromWith("direct:foo"); + } + }); + + context.start(); + + getMockEndpoint("mock:hello").expectedMessageCount(1); + + String out = template.requestBody("direct:foo", "I was here", String.class); + assertEquals("Bye World", out); + + assertMockEndpointsSatisfied(); + } + +} \ No newline at end of file