This is an automated email from the ASF dual-hosted git repository.
ffang pushed a commit to branch camel-2.24.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-2.24.x by this push:
new 39ad88e [CAMEL-13724]camel route customized id isn't correct if there
are more than one Rest DSL route availble
39ad88e is described below
commit 39ad88e5e0e2fe05f59dd7ab94d9fefed97f6ec0
Author: Freeman Fang <[email protected]>
AuthorDate: Fri Jul 5 13:31:05 2019 -0400
[CAMEL-13724]camel route customized id isn't correct if there are more than
one Rest DSL route availble
(cherry picked from commit 457479046dec039ffb1e23e69f15804df71d34b8)
---
.../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/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
b/camel-core/src/main/java/org/apache/camel/model/RouteDefinitionHelper.java
index f109d4b..f91f85d 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
@@ -151,7 +151,6 @@ public final class RouteDefinitionHelper {
if (verb.hasCustomIdAssigned() &&
ObjectHelper.isNotEmpty(id) && !customIds.contains(id)) {
route.setId(id);
customIds.add(id);
- break;
}
}
}
@@ -225,13 +224,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/camel-core/src/test/java/org/apache/camel/impl/RouteIdRestDefinitionTest.java
b/camel-core/src/test/java/org/apache/camel/impl/RouteIdRestDefinitionTest.java
index 30b1327..20bf9d6 100644
---
a/camel-core/src/test/java/org/apache/camel/impl/RouteIdRestDefinitionTest.java
+++
b/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