Skip to content

Commit 8db2d2b

Browse files
committed
Hook OpenApi2JaxRs to expose the generateBuilders option
1 parent e41ef64 commit 8db2d2b

File tree

2 files changed

+31
-5
lines changed

2 files changed

+31
-5
lines changed

server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/CodegenConfig.java

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,6 +13,7 @@ public interface CodegenConfig extends ServerCodegenConfig {
1313
String CODEGEN_SPEC = CODEGEN_TIME_CONFIG_PREFIX + ".spec";
1414
String INPUT_BASE_DIR = CODEGEN_TIME_CONFIG_PREFIX + ".input-base-dir";
1515
String CODEGEN_REACTIVE = CODEGEN_TIME_CONFIG_PREFIX + ".reactive";
16+
String GENERATE_BUILDERS = CODEGEN_TIME_CONFIG_PREFIX + ".generate-builders";
1617

1718
static String getBasePackagePropertyName() {
1819
return CODEGEN_BASE_PACKAGE;
@@ -29,4 +30,8 @@ static String getInputBaseDirPropertyName() {
2930
static String getCodegenReactive() {
3031
return CODEGEN_REACTIVE;
3132
}
33+
34+
static String getGenerateBuilders() {
35+
return GENERATE_BUILDERS;
36+
}
3237
}

server/deployment/src/main/java/io/quarkiverse/openapi/server/generator/deployment/codegen/ApicurioCodegenWrapper.java

Lines changed: 26 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import static io.quarkiverse.openapi.server.generator.deployment.CodegenConfig.getBasePackagePropertyName;
44
import static io.quarkiverse.openapi.server.generator.deployment.CodegenConfig.getCodegenReactive;
5+
import static io.quarkiverse.openapi.server.generator.deployment.CodegenConfig.getGenerateBuilders;
56
import static io.quarkiverse.openapi.server.generator.deployment.ServerCodegenConfig.DEFAULT_PACKAGE;
67

78
import java.io.File;
@@ -17,6 +18,7 @@
1718

1819
import org.apache.commons.io.IOUtils;
1920
import org.eclipse.microprofile.config.Config;
21+
import org.jsonschema2pojo.DefaultGenerationConfig;
2022
import org.slf4j.Logger;
2123
import org.slf4j.LoggerFactory;
2224

@@ -28,6 +30,7 @@ public class ApicurioCodegenWrapper {
2830

2931
private static final Logger log = LoggerFactory.getLogger(ApicurioCodegenWrapper.class);
3032

33+
private final Config config;
3134
private final File outdir;
3235
private final JaxRsProjectSettings projectSettings;
3336

@@ -36,10 +39,11 @@ public ApicurioCodegenWrapper(Config config, File outdir) {
3639
}
3740

3841
public ApicurioCodegenWrapper(Config config, File outdir, JaxRsProjectSettings projectSettings) {
42+
this.config = config;
3943
this.outdir = outdir;
4044
this.projectSettings = projectSettings;
41-
this.projectSettings.setJavaPackage(getBasePackage(config));
42-
this.projectSettings.setReactive(getReactiveValue(config));
45+
this.projectSettings.setJavaPackage(getBasePackage());
46+
this.projectSettings.setReactive(getReactiveValue());
4347
}
4448

4549
public void generate(Path openApiResource) throws CodeGenException {
@@ -61,7 +65,18 @@ public void generate(Path openApiResource) throws CodeGenException {
6165

6266
try (FileOutputStream fos = new FileOutputStream(zipFile);
6367
FileInputStream openApiStream = new FileInputStream(openApiFile)) {
64-
OpenApi2JaxRs generator = new OpenApi2JaxRs();
68+
OpenApi2JaxRs generator = new OpenApi2JaxRs() {
69+
{
70+
config = new DefaultGenerationConfig() {
71+
@Override
72+
public boolean isGenerateBuilders() {
73+
Boolean generateBuildersValue = getGenerateBuildersValue();
74+
log.debug("Generate Builders={}", generateBuildersValue);
75+
return generateBuildersValue;
76+
}
77+
};
78+
}
79+
};
6580
generator.setSettings(projectSettings);
6681
generator.setUpdateOnly(true);
6782
generator.setOpenApiDocument(openApiStream);
@@ -106,18 +121,24 @@ private void unzip(File fromZipFile, File toOutputDir) throws IOException {
106121
}
107122
}
108123

109-
private String getBasePackage(final Config config) {
124+
private String getBasePackage() {
110125
return config
111126
.getOptionalValue(getBasePackagePropertyName(), String.class)
112127
.orElse(DEFAULT_PACKAGE);
113128
}
114129

115-
private Boolean getReactiveValue(final Config config) {
130+
private Boolean getReactiveValue() {
116131
return config
117132
.getOptionalValue(getCodegenReactive(), Boolean.class)
118133
.orElse(Boolean.FALSE);
119134
}
120135

136+
private Boolean getGenerateBuildersValue() {
137+
return config
138+
.getOptionalValue(getGenerateBuilders(), Boolean.class)
139+
.orElse(Boolean.FALSE);
140+
}
141+
121142
private static JaxRsProjectSettings defaultProjectSettings() {
122143
JaxRsProjectSettings projectSettings = new JaxRsProjectSettings();
123144
projectSettings.setJavaPackage(DEFAULT_PACKAGE);

0 commit comments

Comments
 (0)