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);
}