You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by zr...@apache.org on 2019/02/13 14:20:51 UTC

[camel] branch camel-2.23.x updated: CAMEL-13192: Path resolution in rest-swagger fa...

This is an automated email from the ASF dual-hosted git repository.

zregvart pushed a commit to branch camel-2.23.x
in repository https://gitbox.apache.org/repos/asf/camel.git


The following commit(s) were added to refs/heads/camel-2.23.x by this push:
     new e908e67  CAMEL-13192: Path resolution in rest-swagger fa...
e908e67 is described below

commit e908e671a5257f343643fda4e5bba8ca1cb0ec93
Author: Zoran Regvart <zr...@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 |  6 +++++-
 .../rest/swagger/RestSwaggerEndpointTest.java       | 21 +++++++++++++++++++++
 2 files changed, 26 insertions(+), 1 deletion(-)

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 93ff96e..2e2c392 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();
     }
 
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<>();