This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch camel-3.11.x
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/camel-3.11.x by this push:
new 71fafc3 CAMEL-17049: camel-rest-openapi should avoid duplicate
parameters if the param is a path param.
71fafc3 is described below
commit 71fafc3304bb178f4e55bfd2ee68587dae06cfe5
Author: Claus Ibsen <[email protected]>
AuthorDate: Tue Oct 12 07:37:22 2021 +0200
CAMEL-17049: camel-rest-openapi should avoid duplicate parameters if the
param is a path param.
---
.../component/rest/openapi/RestOpenApiEndpoint.java | 18 +++++++++++++-----
1 file changed, 13 insertions(+), 5 deletions(-)
diff --git
a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpoint.java
b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpoint.java
index 7c13e5f..330adb9 100644
---
a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpoint.java
+++
b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiEndpoint.java
@@ -478,8 +478,7 @@ public final class RestOpenApiEndpoint extends
DefaultEndpoint {
parameters.put("consumes", determinedConsumes);
}
- // what we produce is what the API defined by OpenApi specification
- // consumes
+ // what we produce is what the API defined by OpenApi specification
consumes
List<String> specificationLevelProducers = new ArrayList<>();
if (openapi instanceof Oas20Document) {
@@ -493,7 +492,6 @@ public final class RestOpenApiEndpoint extends
DefaultEndpoint {
if (oas30Operation.requestBody != null &&
oas30Operation.requestBody.content != null) {
operationLevelProducers.addAll(oas30Operation.requestBody.content.keySet());
}
-
}
final String determinedProducers =
determineOption(specificationLevelProducers, operationLevelProducers,
@@ -528,7 +526,18 @@ public final class RestOpenApiEndpoint extends
DefaultEndpoint {
}
// Add rest endpoint parameters
- nestedParameters.putAll(this.parameters);
+ if (this.parameters != null && operation.getParameters() != null) {
+ for (Map.Entry<String, Object> entry : this.parameters.entrySet())
{
+ for (OasParameter param : operation.getParameters()) {
+ // skip parameters that are part of the operation as path
as otherwise
+ // it will be duplicated as query parameter as well
+ boolean clash = "path".equals(param.in) &&
entry.getKey().equals(param.getName());
+ if (!clash) {
+ nestedParameters.put(entry.getKey(), entry.getValue());
+ }
+ }
+ }
+ }
if (!nestedParameters.isEmpty()) {
// we're trying to set RestEndpoint.parameters['component']
@@ -742,7 +751,6 @@ public final class RestOpenApiEndpoint extends
DefaultEndpoint {
} else {
throw new IllegalStateException("We only support OpenApi 2.0
or 3.0 document here");
}
-
}
if (operation.getParameters() != null) {