Skip to content

Commit c4123c0

Browse files
committed
Adding logic and verifying with test which ensures @NotNull is generated for objects containing required fields
1 parent 0ff9625 commit c4123c0

2 files changed

Lines changed: 39 additions & 3 deletions

File tree

modules/openapi-generator/src/main/java/org/openapitools/codegen/languages/SpringCodegen.java

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -430,8 +430,6 @@ public void processOpts() {
430430
documentationProvider = DocumentationProvider.NONE;
431431
annotationLibrary = AnnotationLibrary.NONE;
432432
useJakartaEe = true;
433-
useBeanValidation = false;
434-
performBeanValidation = false;
435433

436434
additionalProperties.put(USE_JAKARTA_EE, useJakartaEe);
437435
additionalProperties.put(USE_BEANVALIDATION, useBeanValidation);
@@ -443,7 +441,7 @@ public void processOpts() {
443441

444442
applyJakartaPackage();
445443

446-
LOGGER.warn("For Spring HTTP Interface following options are disabled: documentProvider, annotationLibrary, useBeanValidation, performBeanValidation. "
444+
LOGGER.warn("For Spring HTTP Interface following options are disabled: documentProvider, annotationLibrary. "
447445
+ "useJakartaEe defaulted to 'true'");
448446
}
449447

modules/openapi-generator/src/test/java/org/openapitools/codegen/java/spring/SpringCodegenTest.java

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6664,4 +6664,42 @@ public void testJspecify(String library, int springBootVersion, String fooApiFil
66646664
JavaFileAssert.assertThat(files.get("model/package-info.java"))
66656665
.fileContains("@org.jspecify.annotations.NullMarked");
66666666
}
6667+
6668+
@Test
6669+
public void useBeanValidationTrueWithSpringHttpInterface() throws IOException {
6670+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
6671+
output.deleteOnExit();
6672+
6673+
OpenAPI openAPI = new OpenAPIParser()
6674+
.readLocation("src/test/resources/3_0/petstore.yaml", null, new ParseOptions())
6675+
.getOpenAPI();
6676+
6677+
SpringCodegen codegen = new SpringCodegen();
6678+
codegen.setLibrary(SPRING_HTTP_INTERFACE);
6679+
codegen.setOutputDir(output.getAbsolutePath());
6680+
codegen.setUseBeanValidation(true);
6681+
codegen.setPerformBeanValidation(true);
6682+
codegen.setUseSpringBoot3(true);
6683+
6684+
ClientOptInput input = new ClientOptInput();
6685+
input.openAPI(openAPI);
6686+
input.config(codegen);
6687+
6688+
DefaultGenerator generator = new DefaultGenerator();
6689+
generator.setGenerateMetadata(false);
6690+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false");
6691+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false");
6692+
generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true");
6693+
6694+
generator.opts(input).generate();
6695+
6696+
Path pet = Paths.get(
6697+
output.getAbsolutePath(),
6698+
"src/main/java/org/openapitools/model/Pet.java"
6699+
);
6700+
6701+
String content = Files.readString(pet);
6702+
6703+
assertThat(content).contains("@NotNull");
6704+
}
66676705
}

0 commit comments

Comments
 (0)