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 2023/06/19 07:12:20 UTC
[camel] branch main updated: Escape OPTIONS from ambiguous path exception (#10428)
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new bff054e00a5 Escape OPTIONS from ambiguous path exception (#10428)
bff054e00a5 is described below
commit bff054e00a5b13657752ea67a0a994b4a26cffb6
Author: EvanMi <43...@users.noreply.github.com>
AuthorDate: Mon Jun 19 15:12:14 2023 +0800
Escape OPTIONS from ambiguous path exception (#10428)
* 1. throw exception when duplicate servlet path occur in create stage.
2. throw exception when ambiguous path occur in rest requesting stage.
* and license
* and license
* rollback wrong commit file
* format the code with camel code formatter
* fix bug in PR https://github.com/apache/camel/pull/10400
* follow the style
* escape OPTIONS from ambiguous path exception
* rename method
---------
Co-authored-by: mipengcheng3 <mi...@jd.com>
---
.../apache/camel/support/RestConsumerContextPathMatcher.java | 12 +++++++++++-
1 file changed, 11 insertions(+), 1 deletion(-)
diff --git a/core/camel-support/src/main/java/org/apache/camel/support/RestConsumerContextPathMatcher.java b/core/camel-support/src/main/java/org/apache/camel/support/RestConsumerContextPathMatcher.java
index e096355a5d8..76b74b4fd33 100644
--- a/core/camel-support/src/main/java/org/apache/camel/support/RestConsumerContextPathMatcher.java
+++ b/core/camel-support/src/main/java/org/apache/camel/support/RestConsumerContextPathMatcher.java
@@ -196,7 +196,7 @@ public final class RestConsumerContextPathMatcher {
OptionalInt min = pathMap.keySet().stream().mapToInt(Integer::intValue).min();
if (min.isPresent()) {
List<ConsumerPath> bestConsumerPaths = pathMap.get(min.getAsInt());
- if (bestConsumerPaths.size() > 1) {
+ if (bestConsumerPaths.size() > 1 && !canBeAmbiguous(requestMethod, requestMethod)) {
String exceptionMsg = "Ambiguous paths " + bestConsumerPaths.stream().map(ConsumerPath::getConsumerPath)
.collect(Collectors.joining(",")) + " for request path " + requestPath;
throw new IllegalStateException(exceptionMsg);
@@ -218,6 +218,16 @@ public final class RestConsumerContextPathMatcher {
return answer;
}
+ /**
+ *
+ * @param requestMethod The request method
+ * @param requestPath The request path
+ * @return if the request method and path can escape from the ambiguous exception
+ */
+ private static boolean canBeAmbiguous(String requestMethod, String requestPath) {
+ return requestMethod.equalsIgnoreCase("options");
+ }
+
/**
* Matches the given request HTTP method with the configured HTTP method of the consumer.
*