You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2017/10/31 10:24:41 UTC
[camel] branch camel-2.19.x updated: CAMEL-11951: Fixed rest-dsl
uri matching when using matchOnUriPrefix to match more broadly should take
in account http request method in use.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-2.19.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-2.19.x by this push:
new 2993142 CAMEL-11951: Fixed rest-dsl uri matching when using matchOnUriPrefix to match more broadly should take in account http request method in use.
2993142 is described below
commit 2993142cfdb05cd1580fcf5790829f1f3ea4a309
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Oct 31 11:22:06 2017 +0100
CAMEL-11951: Fixed rest-dsl uri matching when using matchOnUriPrefix to match more broadly should take in account http request method in use.
---
.../common/HttpServletResolveConsumerStrategy.java | 23 ++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpServletResolveConsumerStrategy.java b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpServletResolveConsumerStrategy.java
index 027aca1..e55e650 100644
--- a/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpServletResolveConsumerStrategy.java
+++ b/components/camel-http-common/src/main/java/org/apache/camel/http/common/HttpServletResolveConsumerStrategy.java
@@ -16,7 +16,11 @@
*/
package org.apache.camel.http.common;
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Locale;
import java.util.Map;
+import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import org.apache.camel.support.RestConsumerContextPathMatcher;
@@ -35,6 +39,7 @@ public class HttpServletResolveConsumerStrategy implements ServletResolveConsume
HttpConsumer answer = consumers.get(path);
if (answer == null) {
+ List<HttpConsumer> candidates = new ArrayList<>();
for (String key : consumers.keySet()) {
//We need to look up the consumer path here
String consumerPath = consumers.get(key).getPath();
@@ -42,8 +47,17 @@ public class HttpServletResolveConsumerStrategy implements ServletResolveConsume
boolean matchOnUriPrefix = consumer.getEndpoint().isMatchOnUriPrefix();
// Just make sure the we get the right consumer path first
if (RestConsumerContextPathMatcher.matchPath(path, consumerPath, matchOnUriPrefix)) {
- answer = consumers.get(key);
- break;
+ candidates.add(consumer);
+ }
+ }
+
+ if (candidates.size() == 1) {
+ answer = candidates.get(0);
+ } else {
+ // extra filter by restrict
+ candidates = candidates.stream().filter(c -> matchRestMethod(request.getMethod(), c.getEndpoint().getHttpMethodRestrict())).collect(Collectors.toList());
+ if (candidates.size() == 1) {
+ answer = candidates.get(0);
}
}
}
@@ -51,4 +65,9 @@ public class HttpServletResolveConsumerStrategy implements ServletResolveConsume
return answer;
}
+ private static boolean matchRestMethod(String method, String restrict) {
+ return restrict == null || restrict.toLowerCase(Locale.ENGLISH).contains(method.toLowerCase(Locale.ENGLISH));
+ }
+
+
}
--
To stop receiving notification emails like this one, please contact
['"commits@camel.apache.org" <co...@camel.apache.org>'].