[ https://issues.apache.org/jira/browse/CAMEL-22117?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Bjorn Beskow updated CAMEL-22117: --------------------------------- Description: camel-openapi-validator doesn't provide query params or headers to the underlying OpenApiInteractionValidator for use in validation. Hence if the openapi specification contains required headers or query params, the validation will erroneously fail even if the query params or headers are present. They should be added to the context prior to the validation: {code:java} SimpleRequest.Builder builder = ... // Use all non-Camel headers for (Entry<String, Object> header : exchange.getMessage().getHeaders().entrySet()) { boolean isCamelHeader = header.getKey().startsWith("Camel") || header.getKey().startsWith("camel") || header.getKey().startsWith("org.apache.camel."); if (!isCamelHeader) { builder.withHeader(header.getKey(), header.getValue().toString()); } } // Use query parameters, if present String query = exchange.getMessage().getHeader(Exchange.HTTP_QUERY, String.class); if (query != null) { String[] params = query.split("&"); for (String param : params) { String[] keyValue = param.split("="); if (keyValue.length == 2) { builder.withQueryParam(keyValue[0], keyValue[1]); } else if (keyValue.length == 1) { builder.withQueryParam(keyValue[0], ""); } } } {code} was: camel-openapi-validator doesn't provide query params or headers to the underlying OpenApiInteractionValidator for use in validation. Hence if the openapi specification contains required headers or query params, the validation will erroneously fail even if the query params or headers are present. They should be added to the context prior to the validation: {code:java} SimpleRequest.Builder builder = ... // Use all non-Camel headers for (Entry<String, Object> header : exchange.getMessage().getHeaders().entrySet()) { boolean isCamelHeader = header.getKey().startsWith("Camel") || header.getKey().startsWith("camel") || header.getKey().startsWith("org.apache.camel."); if (!isCamelHeader) { builder.withHeader(header.getKey(), header.getValue().toString()); } } // Use query parameters, if present String query = exchange.getMessage().getHeader(Exchange.HTTP_QUERY, String.class); if (query != null) { String[] params = query.split("&"); for (String param : params) { String[] keyValue = param.split("="); if (keyValue.length == 2) { builder.withQueryParam(keyValue[0], keyValue[1]); } else if (keyValue.length == 1) { builder.withQueryParam(keyValue[0], ""); } } } {code} I will submit a merge request containing the above patch. > camel-openapi-validator doesn't use query params or headers for validation > -------------------------------------------------------------------------- > > Key: CAMEL-22117 > URL: https://issues.apache.org/jira/browse/CAMEL-22117 > Project: Camel > Issue Type: Bug > Affects Versions: 4.10.4, 4.11.0 > Reporter: Bjorn Beskow > Priority: Minor > Fix For: 4.10.6, 4.13.0 > > > camel-openapi-validator doesn't provide query params or headers to the > underlying OpenApiInteractionValidator for use in validation. Hence if the > openapi specification contains required headers or query params, the > validation will erroneously fail even if the query params or headers are > present. They should be added to the context prior to the validation: > {code:java} > SimpleRequest.Builder builder = ... > // Use all non-Camel headers > for (Entry<String, Object> header : > exchange.getMessage().getHeaders().entrySet()) { > boolean isCamelHeader = header.getKey().startsWith("Camel") > || header.getKey().startsWith("camel") > || header.getKey().startsWith("org.apache.camel."); > if (!isCamelHeader) { > builder.withHeader(header.getKey(), header.getValue().toString()); > } > } > // Use query parameters, if present > String query = exchange.getMessage().getHeader(Exchange.HTTP_QUERY, > String.class); > if (query != null) { > String[] params = query.split("&"); > for (String param : params) { > String[] keyValue = param.split("="); > if (keyValue.length == 2) { > builder.withQueryParam(keyValue[0], keyValue[1]); > } else if (keyValue.length == 1) { > builder.withQueryParam(keyValue[0], ""); > } > } > } > {code} -- This message was sent by Atlassian Jira (v8.20.10#820010)