This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-4.10.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 15995e4cf738243255200061a0324dad6bf92697
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Tue Jun 3 13:48:10 2025 +0200

    CAMEL-22116: Fix camel-openapi-validator to better support base-path such 
as SB war apps that are seperated by context-path
---
 components/camel-openapi-validator/pom.xml         |  4 +++
 .../client/OpenApiRestClientRequestValidator.java  | 29 +++++++++++++++++-----
 2 files changed, 27 insertions(+), 6 deletions(-)

diff --git a/components/camel-openapi-validator/pom.xml 
b/components/camel-openapi-validator/pom.xml
index 02eedc2c9e6..e7e4b405ea5 100644
--- a/components/camel-openapi-validator/pom.xml
+++ b/components/camel-openapi-validator/pom.xml
@@ -42,6 +42,10 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-rest-openapi</artifactId>
         </dependency>
+        <dependency>
+            <groupId>org.apache.camel</groupId>
+            <artifactId>camel-http-base</artifactId>
+        </dependency>
 
         <dependency>
             <groupId>com.atlassian.oai</groupId>
diff --git 
a/components/camel-openapi-validator/src/main/java/org/apache/camel/component/rest/openapi/validator/client/OpenApiRestClientRequestValidator.java
 
b/components/camel-openapi-validator/src/main/java/org/apache/camel/component/rest/openapi/validator/client/OpenApiRestClientRequestValidator.java
index e0dcb1d4bf8..9a97f9838cc 100644
--- 
a/components/camel-openapi-validator/src/main/java/org/apache/camel/component/rest/openapi/validator/client/OpenApiRestClientRequestValidator.java
+++ 
b/components/camel-openapi-validator/src/main/java/org/apache/camel/component/rest/openapi/validator/client/OpenApiRestClientRequestValidator.java
@@ -24,6 +24,7 @@ import com.atlassian.oai.validator.report.ValidationReport;
 import io.swagger.v3.oas.models.OpenAPI;
 import org.apache.camel.Exchange;
 import org.apache.camel.component.rest.openapi.RestOpenApiHelper;
+import org.apache.camel.http.base.HttpHeaderFilterStrategy;
 import org.apache.camel.spi.RestClientRequestValidator;
 import org.apache.camel.spi.annotations.JdkService;
 import org.apache.camel.support.ExchangeHelper;
@@ -32,6 +33,18 @@ import org.apache.camel.support.MessageHelper;
 @JdkService(RestClientRequestValidator.FACTORY)
 public class OpenApiRestClientRequestValidator implements 
RestClientRequestValidator {
 
+    private final HttpHeaderFilterStrategy filter = new 
HttpHeaderFilterStrategy();
+
+    public OpenApiRestClientRequestValidator() {
+        // add extra additional HTTP request headers to skip
+        filter.getOutFilter().add("accept");
+        filter.getOutFilter().add("authorization");
+        filter.getOutFilter().add("content-encoding");
+        filter.getOutFilter().add("cookie");
+        filter.getOutFilter().add("origin");
+        filter.getOutFilter().add("user-agent");
+    }
+
     @Override
     public ValidationError validate(Exchange exchange, ValidationContext 
validationContent) {
         OpenAPI openAPI = exchange.getProperty(Exchange.REST_OPENAPI, 
OpenAPI.class);
@@ -62,11 +75,14 @@ public class OpenApiRestClientRequestValidator implements 
RestClientRequestValid
         if (body != null) {
             builder.withBody(body);
         }
-        // Use all non-Camel headers
-        for (String header : exchange.getMessage().getHeaders().keySet()) {
-            // TODO: should skip standard HTTP headers like: Host, User-Agent
-            if (!startsWithIgnoreCase(header, "Camel")) {
-                builder.withHeader(header, 
exchange.getMessage().getHeader(header, String.class));
+        // Use all non-Camel/non-HTTP headers
+        for (var header : exchange.getMessage().getHeaders().entrySet()) {
+            String key = header.getKey();
+            Object value = header.getValue();
+            boolean customHeader
+                    = !startsWithIgnoreCase(key, "Camel") && 
!filter.applyFilterToCamelHeaders(key, value, exchange);
+            if (customHeader) {
+                builder.withHeader(key, exchange.getMessage().getHeader(key, 
String.class));
             }
         }
         // Use query parameters, if present
@@ -94,10 +110,11 @@ public class OpenApiRestClientRequestValidator implements 
RestClientRequestValid
             }
             return new ValidationError(400, msg);
         }
+
         return null;
     }
 
-    boolean startsWithIgnoreCase(String s, String prefix) {
+    private static boolean startsWithIgnoreCase(String s, String prefix) {
         return s.regionMatches(true, 0, prefix, 0, prefix.length());
     }
 }

Reply via email to