Skip to content

Commit 6a5d888

Browse files
committed
fix(spring): Add Nullable import for array-type models (#22788)
1 parent 8b56322 commit 6a5d888

2 files changed

Lines changed: 38 additions & 5 deletions

File tree

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

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -968,11 +968,6 @@ public void postProcessModelProperty(CodegenModel model, CodegenProperty propert
968968
if (model.getVendorExtensions().containsKey("x-jackson-optional-nullable-helpers")) {
969969
model.imports.add("Arrays");
970970
}
971-
972-
// to prevent inheritors (JavaCamelServerCodegen etc.) mistakenly use it
973-
if (getName().contains("spring")) {
974-
model.imports.add("Nullable");
975-
}
976971
}
977972

978973
@Override
@@ -989,6 +984,11 @@ public CodegenModel fromModel(String name, Schema model) {
989984
codegenModel.imports.remove("Schema");
990985
}
991986

987+
// Add Nullable import for all models including array-type models (issue #22788)
988+
if (getName().contains("spring")) {
989+
codegenModel.imports.add("Nullable");
990+
}
991+
992992
return codegenModel;
993993
}
994994

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

Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6223,4 +6223,37 @@ public void testExtensionsOnSchema_issue9183() throws IOException {
62236223
));
62246224
}
62256225

6226+
@Test
6227+
public void shouldAddNullableImportForArrayTypeModels() throws IOException {
6228+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
6229+
output.deleteOnExit();
6230+
6231+
final OpenAPI openAPI = TestUtils.parseFlattenSpec(
6232+
"src/test/resources/3_0/spring/petstore-with-fake-endpoints-models-for-testing-with-spring-pageable.yaml");
6233+
final SpringCodegen codegen = new SpringCodegen();
6234+
codegen.setOpenAPI(openAPI);
6235+
codegen.setOutputDir(output.getAbsolutePath());
6236+
codegen.additionalProperties().put(INTERFACE_ONLY, "true");
6237+
codegen.additionalProperties().put(CodegenConstants.GENERATE_ALIAS_AS_MODEL, "true");
6238+
6239+
ClientOptInput input = new ClientOptInput();
6240+
input.openAPI(openAPI);
6241+
input.config(codegen);
6242+
6243+
DefaultGenerator generator = new DefaultGenerator();
6244+
generator.setGenerateMetadata(false);
6245+
generator.setGeneratorPropertyDefault(CodegenConstants.MODELS, "true");
6246+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_TESTS, "false");
6247+
generator.setGeneratorPropertyDefault(CodegenConstants.MODEL_DOCS, "false");
6248+
6249+
Map<String, File> files = generator.opts(input).generate().stream()
6250+
.collect(Collectors.toMap(File::getName, Function.identity()));
6251+
6252+
// AnimalFarm is an array-type model with no properties (issue #22788)
6253+
JavaFileAssert.assertThat(files.get("AnimalFarm.java"))
6254+
.hasImports("org.springframework.lang.Nullable");
6255+
JavaFileAssert.assertThat(files.get("Pet.java"))
6256+
.hasImports("org.springframework.lang.Nullable");
6257+
}
6258+
62266259
}

0 commit comments

Comments
 (0)