From 248fd78fa2e203e82d7a37ebb783bf392ce4cc13 Mon Sep 17 00:00:00 2001 From: Matheus Cruz <56329339+mcruzdev@users.noreply.github.com> Date: Thu, 24 Jul 2025 10:13:22 -0300 Subject: [PATCH] Add bean validation feature from apicurio-codegen 1.2.5.Final (#1245) --- pom.xml | 4 ++-- .../generator/deployment/CodegenConfig.java | 10 +++++++++ .../deployment/ServerCodegenConfig.java | 6 +++++ .../codegen/ApicurioCodegenWrapper.java | 22 +++++++++++++++---- 4 files changed, 36 insertions(+), 6 deletions(-) diff --git a/pom.xml b/pom.xml index f4f8604e7..8d76346f7 100644 --- a/pom.xml +++ b/pom.xml @@ -28,8 +28,8 @@ 17 UTF-8 UTF-8 - 3.20.1 - 1.2.1.Final + 1.2.5.Final + 3.25.0 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 69b474d57..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 @@ -13,6 +13,8 @@ public interface CodegenConfig extends ServerCodegenConfig { String CODEGEN_SPEC = CODEGEN_TIME_CONFIG_PREFIX + ".spec"; 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; @@ -29,4 +31,12 @@ static String getInputBaseDirPropertyName() { static String getCodegenReactive() { return CODEGEN_REACTIVE; } + + 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 f2a9873e8..136c7c2ef 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 @@ -31,4 +31,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 eef7cf10b..47148f679 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 { @@ -38,8 +39,10 @@ public ApicurioCodegenWrapper(Config config, File outdir) { public ApicurioCodegenWrapper(Config config, File outdir, JaxRsProjectSettings projectSettings) { this.outdir = outdir; this.projectSettings = projectSettings; - this.projectSettings.setJavaPackage(getBasePackage(config)); - this.projectSettings.setReactive(getReactiveValue(config)); + this.projectSettings.setJavaPackage(getBasePackage()); + this.projectSettings.setReactive(getReactiveValue()); + this.projectSettings.setUseJsr303(getUseBeanValidation()); + this.projectSettings.setGenerateBuilders(getGenerateBuilders()); } public void generate(Path openApiResource) throws CodeGenException { @@ -65,6 +68,7 @@ public void generate(Path openApiResource) throws CodeGenException { generator.setSettings(projectSettings); generator.setUpdateOnly(true); generator.setOpenApiDocument(openApiStream); + log.info("Generating code..."); generator.generate(fos); } catch (Exception e) { @@ -108,13 +112,23 @@ private void unzip(File fromZipFile, File toOutputDir) throws IOException { private String getBasePackage(final Config config) { return config - .getOptionalValue(getBasePackagePropertyName(), String.class) + .getOptionalValue(CodegenConfig.getBasePackagePropertyName(), String.class) .orElse(DEFAULT_PACKAGE); } private Boolean getReactiveValue(final Config config) { 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); }