From 02851cc8241e7bb533163fe27f5bfbe75b1e3285 Mon Sep 17 00:00:00 2001 From: Matheus Cruz Date: Mon, 21 Jul 2025 22:27:14 -0300 Subject: [PATCH] Add bean validation feature from apicurio-codegen 1.2.5.Final --- .all-contributorsrc | 9 ++++++ README.md | 3 +- moqu/core/pom.xml | 2 +- pom.xml | 4 +-- .../generator/deployment/CodegenConfig.java | 5 ++++ .../deployment/ServerCodegenConfig.java | 6 ++++ .../codegen/ApicurioCodegenWrapper.java | 24 +++++++++++----- .../codegen/ConfigurableGenerationConfig.java | 28 ------------------- 8 files changed, 42 insertions(+), 39 deletions(-) delete mode 100644 server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/codegen/ConfigurableGenerationConfig.java diff --git a/.all-contributorsrc b/.all-contributorsrc index c3308c602..9a8ba2873 100644 --- a/.all-contributorsrc +++ b/.all-contributorsrc @@ -455,6 +455,15 @@ "contributions": [ "code" ] + }, + { + "login": "cmoine-swi", + "name": "Christophe Moine", + "avatar_url": "https://avatars.githubusercontent.com/u/180930830?v=4", + "profile": "https://github.com/cmoine-swi", + "contributions": [ + "code" + ] } ], "contributorsPerLine": 7, diff --git a/README.md b/README.md index 5731a079b..70bfbb071 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@
-[![All Contributors](https://img.shields.io/badge/all_contributors-48-orange.svg?style=flat-square)](#contributors-) +[![All Contributors](https://img.shields.io/badge/all_contributors-49-orange.svg?style=flat-square)](#contributors-) [![Build]()](https://github.com/quarkiverse/quarkus-openapi-generator/actions?query=workflow%3ABuild) [![Maven Central](https://img.shields.io/maven-central/v/io.quarkiverse.openapi.generator/quarkus-openapi-generator.svg?label=Maven%20Central&style=flat-square)](https://search.maven.org/artifact/io.quarkiverse.openapi.generator/quarkus-openapi-generator) @@ -109,6 +109,7 @@ Thanks goes to these wonderful people ([emoji key](https://allcontributors.org/d Luis Fabrício De Llamas
Luis Fabrício De Llamas

📖 ⚠️ João Guilherme Hagemann
João Guilherme Hagemann

📖 Matheus Oliveira da Silva
Matheus Oliveira da Silva

💻 + Christophe Moine
Christophe Moine

💻 diff --git a/moqu/core/pom.xml b/moqu/core/pom.xml index 686e31cae..8f523808b 100644 --- a/moqu/core/pom.xml +++ b/moqu/core/pom.xml @@ -11,7 +11,7 @@ Quarkus :: Openapi Generator :: Moqu :: Core - 2.19.0 + 2.20.0 diff --git a/pom.xml b/pom.xml index f806ef2e4..be7e8def0 100644 --- a/pom.xml +++ b/pom.xml @@ -28,8 +28,8 @@ 17 UTF-8 UTF-8 - 3.24.3 - 1.2.1.Final + 3.24.4 + 1.2.5.Final 3.27.0 3.27.3 4.1.2 diff --git a/server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/CodegenConfig.java b/server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/CodegenConfig.java index 1ff20a990..5b86ea193 100755 --- a/server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/CodegenConfig.java +++ b/server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/CodegenConfig.java @@ -14,6 +14,7 @@ public interface CodegenConfig extends ServerCodegenConfig { String INPUT_BASE_DIR = CODEGEN_TIME_CONFIG_PREFIX + ".input-base-dir"; String CODEGEN_REACTIVE = CODEGEN_TIME_CONFIG_PREFIX + ".reactive"; String GENERATE_BUILDERS = CODEGEN_TIME_CONFIG_PREFIX + ".builders"; + String CODEGEN_BEAN_VALIDATION = CODEGEN_TIME_CONFIG_PREFIX + ".bean-validation"; static String getBasePackagePropertyName() { return CODEGEN_BASE_PACKAGE; @@ -34,4 +35,8 @@ static String getCodegenReactive() { static String getGenerateBuilders() { return GENERATE_BUILDERS; } + + static String getUseBeanValidation() { + return CODEGEN_BEAN_VALIDATION; + } } diff --git a/server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/ServerCodegenConfig.java b/server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/ServerCodegenConfig.java index 9d5026178..9766f4127 100644 --- a/server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/ServerCodegenConfig.java +++ b/server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/ServerCodegenConfig.java @@ -37,4 +37,10 @@ public interface ServerCodegenConfig { */ @WithDefault(DEFAULT_PACKAGE) Optional basePackage(); + + /** + * Whether it must generate resources and beans using bean validation (JSR-303). + */ + @WithDefault("false") + boolean useBeanValidation(); } diff --git a/server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/codegen/ApicurioCodegenWrapper.java b/server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/codegen/ApicurioCodegenWrapper.java index 4e7cd38ad..26f66ad98 100755 --- a/server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/codegen/ApicurioCodegenWrapper.java +++ b/server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/codegen/ApicurioCodegenWrapper.java @@ -22,6 +22,7 @@ import io.apicurio.hub.api.codegen.JaxRsProjectSettings; import io.apicurio.hub.api.codegen.OpenApi2JaxRs; +import io.quarkiverse.openapi.server.generator.deployment.CodegenConfig; import io.quarkus.bootstrap.prebuild.CodeGenException; public class ApicurioCodegenWrapper { @@ -42,6 +43,8 @@ public ApicurioCodegenWrapper(Config config, File outdir, JaxRsProjectSettings p this.projectSettings = projectSettings; this.projectSettings.setJavaPackage(getBasePackage()); this.projectSettings.setReactive(getReactiveValue()); + this.projectSettings.setUseJsr303(getUseBeanValidation()); + this.projectSettings.setGenerateBuilders(getGenerateBuilders()); } public void generate(Path openApiResource) throws CodeGenException { @@ -63,14 +66,11 @@ public void generate(Path openApiResource) throws CodeGenException { try (FileOutputStream fos = new FileOutputStream(zipFile); FileInputStream openApiStream = new FileInputStream(openApiFile)) { - OpenApi2JaxRs generator = new OpenApi2JaxRs() { - { - config = new ConfigurableGenerationConfig(ApicurioCodegenWrapper.this.config); - } - }; + OpenApi2JaxRs generator = new OpenApi2JaxRs(); generator.setSettings(projectSettings); generator.setUpdateOnly(true); generator.setOpenApiDocument(openApiStream); + log.info("Generating code..."); generator.generate(fos); } catch (Exception e) { @@ -114,13 +114,23 @@ private void unzip(File fromZipFile, File toOutputDir) throws IOException { private String getBasePackage() { return config - .getOptionalValue(getBasePackagePropertyName(), String.class) + .getOptionalValue(CodegenConfig.getBasePackagePropertyName(), String.class) .orElse(DEFAULT_PACKAGE); } private Boolean getReactiveValue() { return config - .getOptionalValue(getCodegenReactive(), Boolean.class) + .getOptionalValue(CodegenConfig.getCodegenReactive(), Boolean.class) + .orElse(Boolean.FALSE); + } + + private Boolean getUseBeanValidation() { + return config.getOptionalValue(CodegenConfig.getUseBeanValidation(), Boolean.class) + .orElse(Boolean.FALSE); + } + + private Boolean getGenerateBuilders() { + return config.getOptionalValue(CodegenConfig.getGenerateBuilders(), Boolean.class) .orElse(Boolean.FALSE); } diff --git a/server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/codegen/ConfigurableGenerationConfig.java b/server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/codegen/ConfigurableGenerationConfig.java deleted file mode 100644 index f54ec10a9..000000000 --- a/server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/codegen/ConfigurableGenerationConfig.java +++ /dev/null @@ -1,28 +0,0 @@ -package io.quarkiverse.openapi.server.generator.deployment.codegen; - -import org.eclipse.microprofile.config.Config; -import org.jsonschema2pojo.DefaultGenerationConfig; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import io.quarkiverse.openapi.server.generator.deployment.CodegenConfig; - -public class ConfigurableGenerationConfig extends DefaultGenerationConfig { - - private static final Logger log = LoggerFactory.getLogger(ConfigurableGenerationConfig.class); - - private final boolean generateBuilders; - - public ConfigurableGenerationConfig(Config config) { - generateBuilders = config - .getOptionalValue(CodegenConfig.getGenerateBuilders(), Boolean.class) - .orElse(Boolean.FALSE); - log.debug("generateBuilders={}", generateBuilders); - } - - @Override - public boolean isGenerateBuilders() { - return generateBuilders; - } - -}