This is an automated email from the ASF dual-hosted git repository. ffang 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 414a712 [CAMEL-13724]camel route customized id isn't correct if there are more than one Rest DSL route availble 414a712 is described below commit 414a7121f0b573c9f3ce39f880d7569e7a826cc2 Author: Freeman Fang <freeman.f...@gmail.com> AuthorDate: Thu Jul 4 17:32:33 2019 -0400 [CAMEL-13724]camel route customized id isn't correct if there are more than one Rest DSL route availble --- .../java/org/apache/camel/model/RouteDefinitionHelper.java | 14 ++++++++++---- .../org/apache/camel/impl/RouteIdRestDefinitionTest.java | 4 +++- 2 files changed, 13 insertions(+), 5 deletions(-) diff --git a/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java b/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java index 0a46539..ed83a26 100644 --- a/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java +++ b/core/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java @@ -152,7 +152,6 @@ public final class RouteDefinitionHelper { if (verb.hasCustomIdAssigned() && ObjectHelper.isNotEmpty(id) && !customIds.contains(id)) { route.setId(id); customIds.add(id); - break; } } } @@ -224,13 +223,20 @@ public final class RouteDefinitionHelper { * Find verb associated with the route by mapping uri */ private static VerbDefinition findVerbDefinition(RestDefinition rest, String endpointUri) { + VerbDefinition ret = null; + String preVerbUri = ""; for (VerbDefinition verb : rest.getVerbs()) { String verbUri = rest.buildFromUri(verb); - if (endpointUri.startsWith(verbUri)) { - return verb; + if (endpointUri.startsWith(verbUri) + && preVerbUri.length() < verbUri.length()) { + //if there are multiple verb uri match, select the most specific one + //for example if the endpoint Uri is rest:get:/user:/{id}/user?produces=text%2Fplain + //then the verbUri rest:get:/user:/{id}/user should overweigh the est:get:/user:/{id} + preVerbUri = verbUri; + ret = verb; } } - return null; + return ret; } /** diff --git a/core/camel-core/src/test/java/org/apache/camel/impl/RouteIdRestDefinitionTest.java b/core/camel-core/src/test/java/org/apache/camel/impl/RouteIdRestDefinitionTest.java index 8630a92..74c811b 100644 --- a/core/camel-core/src/test/java/org/apache/camel/impl/RouteIdRestDefinitionTest.java +++ b/core/camel-core/src/test/java/org/apache/camel/impl/RouteIdRestDefinitionTest.java @@ -39,7 +39,8 @@ public class RouteIdRestDefinitionTest extends ContextTestSupport { public void configure() throws Exception { from("direct:start1?timeout=30000").to("mock:result"); from("direct:start2").to("mock:result"); - rest("/say/hello").get("/bar").id("getSayHelloBar").to("mock:result"); + rest("/say/hello").get("/bar").id("getSayHelloBar").to("mock:result") + .get("/bar/{user}").id("getSayHelloBarWithUser").to("mock:result"); } }; } @@ -47,6 +48,7 @@ public class RouteIdRestDefinitionTest extends ContextTestSupport { @Test public void testSayHelloBar() { assertEquals("getSayHelloBar", context.getRouteDefinitions().get(2).getId()); + assertEquals("getSayHelloBarWithUser", context.getRouteDefinitions().get(3).getId()); } } \ No newline at end of file