This is an automated email from the ASF dual-hosted git repository. zregvart pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/master by this push: new 61083ca CAMEL-13192: Path resolution in rest-swagger fa... 61083ca is described below commit 61083cab91aa29511ec132840e60ff11cf131e2e Author: Zoran Regvart <zregv...@apache.org> AuthorDate: Wed Feb 13 14:27:17 2019 +0100 CAMEL-13192: Path resolution in rest-swagger fa... ...ils to include the whole path This fixes the path resolution in `rest-swagger` component so that any trailing path characters are not lost when resolving. --- .../component/rest/swagger/RestSwaggerEndpoint.java | 8 ++++++-- .../rest/swagger/RestSwaggerEndpointTest.java | 21 +++++++++++++++++++++ 2 files changed, 27 insertions(+), 2 deletions(-) diff --git a/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpoint.java b/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpoint.java index 1243fdb..a84f4f1 100644 --- a/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpoint.java +++ b/components/camel-rest-swagger/src/main/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpoint.java @@ -498,10 +498,14 @@ public final class RestSwaggerEndpoint extends DefaultEndpoint { resolved.append('{').append(name).append('}'); } - pos = end; + pos = end + 1; start = uriTemplate.indexOf('{', pos); } + if (pos < uriTemplate.length()) { + resolved.append(uriTemplate.substring(pos)); + } + return resolved.toString(); } @@ -569,7 +573,7 @@ public final class RestSwaggerEndpoint extends DefaultEndpoint { final JsonNode node = mapper.readTree(stream); return swaggerParser.read(node); - } catch (Exception e) { + } catch (final Exception e) { // try Swaggers loader final Swagger swagger = swaggerParser.read(uriAsString); diff --git a/components/camel-rest-swagger/src/test/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointTest.java b/components/camel-rest-swagger/src/test/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointTest.java index cb88a8c..7597f9f 100644 --- a/components/camel-rest-swagger/src/test/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointTest.java +++ b/components/camel-rest-swagger/src/test/java/org/apache/camel/component/rest/swagger/RestSwaggerEndpointTest.java @@ -21,10 +21,12 @@ import java.net.URI; import java.util.Arrays; import java.util.Collections; import java.util.HashMap; +import java.util.Map; import io.swagger.models.Operation; import io.swagger.models.Scheme; import io.swagger.models.Swagger; +import io.swagger.models.parameters.Parameter; import io.swagger.models.parameters.PathParameter; import io.swagger.models.parameters.QueryParameter; @@ -360,6 +362,25 @@ public class RestSwaggerEndpointTest { } @Test + public void shouldResolveUris() { + final RestSwaggerEndpoint endpoint = new RestSwaggerEndpoint(); + endpoint.parameters = new HashMap<>(); + endpoint.parameters.put("param1", "value1"); + + final Map<String, Parameter> pathParameters = new HashMap<>(); + pathParameters.put("param1", new PathParameter().name("param1")); + pathParameters.put("param2", new PathParameter().name("param2")); + + assertThat(endpoint.resolveUri("/path", pathParameters)).isEqualTo("/path"); + assertThat(endpoint.resolveUri("/path/{param1}", pathParameters)).isEqualTo("/path/value1"); + assertThat(endpoint.resolveUri("/{param1}/path", pathParameters)).isEqualTo("/value1/path"); + assertThat(endpoint.resolveUri("/{param1}/path/{param2}", pathParameters)).isEqualTo("/value1/path/{param2}"); + assertThat(endpoint.resolveUri("/{param1}/{param2}", pathParameters)).isEqualTo("/value1/{param2}"); + assertThat(endpoint.resolveUri("/path/{param1}/to/{param2}/rest", pathParameters)) + .isEqualTo("/path/value1/to/{param2}/rest"); + } + + @Test public void shouldSerializeGivenLiteralValues() { final RestSwaggerEndpoint endpoint = new RestSwaggerEndpoint(); endpoint.parameters = new HashMap<>();