Skip to content

Commit 5eb1b18

Browse files
authored
Set use-bean-validation false as default (quarkiverse#820)
* Set use-bean-validation false as default * Remove unnused symbol
1 parent 9fd60e4 commit 5eb1b18

File tree

6 files changed

+66
-10
lines changed

6 files changed

+66
-10
lines changed
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
package io.quarkiverse.openapi.generator.deployment;
2+
3+
import java.nio.file.Path;
4+
5+
import org.eclipse.microprofile.config.Config;
6+
7+
public record OpenApiGeneratorOptions(
8+
Config config,
9+
Path openApiFilePath,
10+
Path outDir,
11+
Path templateDir,
12+
boolean isRestEasyReactive) {
13+
}

client/deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/codegen/OpenApiGeneratorCodeGenBase.java

Lines changed: 37 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import org.openapitools.codegen.config.GlobalSettings;
3333

3434
import io.quarkiverse.openapi.generator.deployment.CodegenConfig;
35+
import io.quarkiverse.openapi.generator.deployment.OpenApiGeneratorOptions;
3536
import io.quarkiverse.openapi.generator.deployment.circuitbreaker.CircuitBreakerConfigurationParser;
3637
import io.quarkiverse.openapi.generator.deployment.wrapper.OpenApiClassicClientGeneratorWrapper;
3738
import io.quarkiverse.openapi.generator.deployment.wrapper.OpenApiClientGeneratorWrapper;
@@ -109,6 +110,7 @@ public boolean trigger(CodeGenContext context) throws CodeGenException {
109110

110111
if (Files.isDirectory(openApiDir)) {
111112
final boolean isRestEasyReactive = isRestEasyReactive(context);
113+
boolean isHibernateValidatorPresent = isHibernateValidatorPresent(context);
112114

113115
if (isRestEasyReactive) {
114116
if (!isJacksonReactiveClientPresent(context)) {
@@ -123,16 +125,36 @@ public boolean trigger(CodeGenContext context) throws CodeGenException {
123125
Optional<String> templateBaseDir = getTemplateBaseDirRelativeToSourceRoot(context.inputDir(), context.config());
124126
Path templateDir = templateBaseDir.map(Path::of)
125127
.orElseGet(() -> context.workDir().resolve("classes").resolve("templates"));
126-
openApiFilesPaths
128+
List<Path> openApiPaths = openApiFilesPaths
127129
.filter(Files::isRegularFile)
128130
.filter(path -> {
129131
String fileName = path.getFileName().toString();
130132
return fileName.endsWith(inputExtension())
131133
&& !filesToExclude.contains(fileName)
132134
&& (filesToInclude.isEmpty() || filesToInclude.contains(fileName));
133-
})
134-
.forEach(openApiFilePath -> generate(context.config(), openApiFilePath, outDir, templateDir,
135-
isRestEasyReactive));
135+
}).toList();
136+
137+
for (Path openApiPath : openApiPaths) {
138+
139+
Boolean usingBeanValidation = getValues(context.config(), openApiPath,
140+
CodegenConfig.ConfigName.BEAN_VALIDATION, Boolean.class)
141+
.orElse(false);
142+
143+
if (usingBeanValidation && !isHibernateValidatorPresent) {
144+
throw new CodeGenException(
145+
"You need to add io.quarkus:quarkus-hibernate-validator to your dependencies.");
146+
}
147+
148+
OpenApiGeneratorOptions options = new OpenApiGeneratorOptions(
149+
context.config(),
150+
openApiPath,
151+
outDir,
152+
templateDir,
153+
isRestEasyReactive);
154+
155+
generate(options);
156+
}
157+
136158
} catch (IOException e) {
137159
throw new CodeGenException("Failed to generate java files from OpenApi files in " + openApiDir.toAbsolutePath(),
138160
e);
@@ -150,6 +172,10 @@ private static boolean isJacksonClassicClientPresent(CodeGenContext context) {
150172
return isExtensionCapabilityPresent(context, Capability.RESTEASY_JSON_JACKSON_CLIENT);
151173
}
152174

175+
protected static boolean isHibernateValidatorPresent(CodeGenContext context) {
176+
return isExtensionCapabilityPresent(context, Capability.HIBERNATE_VALIDATOR);
177+
}
178+
153179
private void validateUserConfiguration(CodeGenContext context) throws CodeGenException {
154180
List<String> configurations = StreamSupport.stream(context.config().getPropertyNames().spliterator(), false)
155181
.collect(Collectors.toList());
@@ -171,8 +197,12 @@ private static String determineRestClientReactiveJacksonCapabilityId() {
171197
}
172198

173199
// TODO: do not generate if the output dir has generated files and the openapi file has the same checksum of the previous run
174-
protected void generate(final Config config, final Path openApiFilePath, final Path outDir,
175-
Path templateDir, boolean isRestEasyReactive) {
200+
protected void generate(OpenApiGeneratorOptions options) {
201+
Config config = options.config();
202+
Path openApiFilePath = options.openApiFilePath();
203+
Path outDir = options.outDir();
204+
boolean isRestEasyReactive = options.isRestEasyReactive();
205+
176206
final String basePackage = getBasePackage(config, openApiFilePath);
177207
final Boolean verbose = config.getOptionalValue(getGlobalConfigName(CodegenConfig.ConfigName.VERBOSE), Boolean.class)
178208
.orElse(false);
@@ -183,7 +213,7 @@ protected void generate(final Config config, final Path openApiFilePath, final P
183213
final OpenApiClientGeneratorWrapper generator = createGeneratorWrapper(openApiFilePath, outDir, isRestEasyReactive,
184214
verbose, validateSpec);
185215

186-
generator.withTemplateDir(templateDir);
216+
generator.withTemplateDir(options.templateDir());
187217

188218
generator.withClassesCodeGenConfig(ClassCodegenConfigParser.parse(config, basePackage))
189219
.withCircuitBreakerConfig(CircuitBreakerConfigurationParser.parse(

client/deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/codegen/OpenApiGeneratorStreamCodeGen.java

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919
import org.slf4j.Logger;
2020
import org.slf4j.LoggerFactory;
2121

22+
import io.quarkiverse.openapi.generator.deployment.OpenApiGeneratorOptions;
2223
import io.quarkus.bootstrap.prebuild.CodeGenException;
2324
import io.quarkus.deployment.CodeGenContext;
2425
import io.smallrye.config.SmallRyeConfigBuilder;
@@ -74,8 +75,15 @@ public boolean trigger(CodeGenContext context) throws CodeGenException {
7475
StandardOpenOption.CREATE)) {
7576
outChannel.transferFrom(inChannel, 0, Integer.MAX_VALUE);
7677
LOGGER.debug("Saved OpenAPI spec input model in {}", openApiFilePath);
77-
this.generate(this.mergeConfig(context, inputModel), openApiFilePath, outDir,
78-
context.workDir().resolve("classes").resolve("templates"), isRestEasyReactive);
78+
79+
OpenApiGeneratorOptions options = new OpenApiGeneratorOptions(
80+
this.mergeConfig(context, inputModel),
81+
openApiFilePath,
82+
outDir,
83+
context.workDir().resolve("classes").resolve("templates"),
84+
isRestEasyReactive);
85+
86+
this.generate(options);
7987
generated = true;
8088
}
8189
} catch (IOException e) {

client/deployment/src/main/java/io/quarkiverse/openapi/generator/deployment/wrapper/QuarkusJavaClientCodegen.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,7 +53,8 @@ public void processOpts() {
5353
this.testFolder = "";
5454
this.embeddedTemplateDir = "templates";
5555

56-
Boolean beanValidation = (Boolean) this.additionalProperties.getOrDefault("use-bean-validation", true);
56+
Boolean beanValidation = (Boolean) this.additionalProperties.getOrDefault("use-bean-validation", false);
57+
5758
this.setUseBeanValidation(beanValidation);
5859
this.setPerformBeanValidation(beanValidation);
5960

client/deployment/src/main/resources/templates/libraries/microprofile/api.qute

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,10 @@ package {package};
33
import java.util.List;
44
import java.util.Map;
55

6+
{#if use-bean-validation}
67
{! https://github.com/OpenAPITools/openapi-generator/issues/18974 !}
78
import jakarta.validation.Valid;
9+
{/if}
810

911
{#for imp in imports}
1012
import {imp.import};

client/deployment/src/main/resources/templates/libraries/microprofile/model.qute

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,9 @@
11
package {package};
22

3+
{#if use-bean-validation}
34
{! https://github.com/OpenAPITools/openapi-generator/issues/18974 !}
45
import jakarta.validation.Valid;
6+
{/if}
57

68
{#for imp in imports}
79
import {imp.import};

0 commit comments

Comments
 (0)