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 2024/03/28 14:40:28 UTC
(camel) 14/38: CAMEL-20557: Rest DSL to use openapi spec directly
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch openapi2
in repository https://gitbox.apache.org/repos/asf/camel.git
commit bcd4534903ced30e334ba235ce9883c2afbc8c52
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Mon Mar 25 10:37:12 2024 +0100
CAMEL-20557: Rest DSL to use openapi spec directly
---
.../component/rest/openapi/RestOpenApiComponent.java | 3 ++-
.../component/rest/openapi/RestOpenApiEndpoint.java | 18 +++---------------
.../component/rest/openapi/RestOpenApiProcessor.java | 10 ++++++++++
.../rest/openapi/RestOpenApiRequestValidationTest.java | 3 +--
4 files changed, 16 insertions(+), 18 deletions(-)
diff --git a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiComponent.java b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiComponent.java
index eef794e5371..b405b1466c5 100644
--- a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiComponent.java
+++ b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiComponent.java
@@ -22,6 +22,7 @@ import java.util.Map;
import org.apache.camel.CamelContext;
import org.apache.camel.Endpoint;
import org.apache.camel.SSLContextParametersAware;
+import org.apache.camel.component.rest.openapi.validator.DefaultRequestValidationCustomizer;
import org.apache.camel.component.rest.openapi.validator.RequestValidationCustomizer;
import org.apache.camel.spi.Metadata;
import org.apache.camel.spi.RestProducerFactory;
@@ -133,7 +134,7 @@ public final class RestOpenApiComponent extends DefaultComponent implements SSLC
@Metadata(description = "If request validation is enabled, this option provides the capability to customize"
+ " the creation of OpenApiInteractionValidator used to validate requests.",
label = "advanced")
- private RequestValidationCustomizer requestValidationCustomizer;
+ private RequestValidationCustomizer requestValidationCustomizer = new DefaultRequestValidationCustomizer();
@Metadata(description = "Enable usage of global SSL context parameters.", label = "security")
private boolean useGlobalSslContextParameters;
@Metadata(description = "Customize TLS parameters used by the component. If not set defaults to the TLS parameters set in the Camel context ",
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 21fde6f5618..034a7e3e56b 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
@@ -62,7 +62,6 @@ import org.apache.camel.ExchangePattern;
import org.apache.camel.NoSuchBeanException;
import org.apache.camel.Processor;
import org.apache.camel.Producer;
-import org.apache.camel.component.rest.openapi.validator.DefaultRequestValidationCustomizer;
import org.apache.camel.component.rest.openapi.validator.RequestValidationCustomizer;
import org.apache.camel.component.rest.openapi.validator.RequestValidator;
import org.apache.camel.component.rest.openapi.validator.RestOpenApiOperation;
@@ -468,9 +467,8 @@ public final class RestOpenApiEndpoint extends DefaultEndpoint {
// let the rest endpoint configure itself
endpoint.configureProperties(params);
- RestOpenApiComponent component = getComponent();
RequestValidator requestValidator = null;
- if (component.isRequestValidationEnabled() || requestValidationEnabled) {
+ if (requestValidationEnabled) {
requestValidator = configureRequestValidator(openapi, operation, method, uriTemplate);
}
@@ -810,16 +808,6 @@ public final class RestOpenApiEndpoint extends DefaultEndpoint {
}
RequestValidator configureRequestValidator(OpenAPI openapi, Operation operation, String method, String uriTemplate) {
- RestOpenApiComponent component = getComponent();
- RequestValidationCustomizer validationCustomizer = requestValidationCustomizer;
- if (validationCustomizer == null) {
- validationCustomizer = component.getRequestValidationCustomizer();
- }
-
- if (validationCustomizer == null) {
- validationCustomizer = new DefaultRequestValidationCustomizer();
- }
-
RestOpenApiOperation restOpenApiOperation = new RestOpenApiOperation(operation, method, uriTemplate);
OpenApiInteractionValidator.Builder builder = OpenApiInteractionValidator.createFor(openapi);
@@ -837,9 +825,9 @@ public final class RestOpenApiEndpoint extends DefaultEndpoint {
});
builder.withLevelResolver(levelResolverBuilder.build());
- validationCustomizer.customizeOpenApiInteractionValidator(builder);
+ requestValidationCustomizer.customizeOpenApiInteractionValidator(builder);
- return new RequestValidator(builder.build(), restOpenApiOperation, validationCustomizer);
+ return new RequestValidator(builder.build(), restOpenApiOperation, requestValidationCustomizer);
}
static String determineOption(
diff --git a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiProcessor.java b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiProcessor.java
index 4cfbccc1839..5e3291d82c9 100644
--- a/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiProcessor.java
+++ b/components/camel-rest-openapi/src/main/java/org/apache/camel/component/rest/openapi/RestOpenApiProcessor.java
@@ -27,6 +27,7 @@ import org.apache.camel.CamelContext;
import org.apache.camel.CamelContextAware;
import org.apache.camel.Exchange;
import org.apache.camel.Processor;
+import org.apache.camel.component.rest.openapi.validator.RequestValidator;
import org.apache.camel.support.RestConsumerContextPathMatcher;
import org.apache.camel.support.processor.DelegateAsyncProcessor;
import org.apache.camel.support.service.ServiceHelper;
@@ -41,6 +42,7 @@ public class RestOpenApiProcessor extends DelegateAsyncProcessor implements Came
private final String basePath;
private final List<RestConsumerContextPathMatcher.ConsumerPath<Operation>> paths = new ArrayList<>();
private RestOpenapiProcessorStrategy restOpenapiProcessorStrategy;
+ private RequestValidator requestValidator;
public RestOpenApiProcessor(OpenAPI openAPI, String basePath, Processor processor) {
super(processor);
@@ -67,6 +69,14 @@ public class RestOpenApiProcessor extends DelegateAsyncProcessor implements Came
this.restOpenapiProcessorStrategy = restOpenapiProcessorStrategy;
}
+ public RequestValidator getRequestValidator() {
+ return requestValidator;
+ }
+
+ public void setRequestValidator(RequestValidator requestValidator) {
+ this.requestValidator = requestValidator;
+ }
+
@Override
public boolean process(Exchange exchange, AsyncCallback callback) {
// TODO: RequestValidator
diff --git a/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiRequestValidationTest.java b/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiRequestValidationTest.java
index 82593e6c461..cf2cf854e58 100644
--- a/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiRequestValidationTest.java
+++ b/components/camel-rest-openapi/src/test/java/org/apache/camel/component/rest/openapi/RestOpenApiRequestValidationTest.java
@@ -68,7 +68,6 @@ import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertInstanceOf;
import static org.junit.jupiter.api.Assertions.assertNotNull;
-import static org.junit.jupiter.api.Assertions.assertNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
public class RestOpenApiRequestValidationTest extends CamelTestSupport {
@@ -362,7 +361,7 @@ public class RestOpenApiRequestValidationTest extends CamelTestSupport {
RestOpenApiEndpoint endpoint = context.getEndpoint(petStoreVersion + ":#addPet", RestOpenApiEndpoint.class);
endpoint.createProducer();
assertFalse(endpoint.isRequestValidationEnabled());
- assertNull(endpoint.getRequestValidationCustomizer());
+ assertNotNull(endpoint.getRequestValidationCustomizer());
assertTrue(endpoint.getRequestValidationLevels().isEmpty());
}