Skip to content

Commit 602713b

Browse files
committed
Fixed issue #21404 - Restricted Java oneOf imports to Jackson when needed
1 parent 12fa2c0 commit 602713b

3 files changed

Lines changed: 43 additions & 10 deletions

File tree

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1230,11 +1230,13 @@ public String toApiVarName(String name) {
12301230

12311231
@Override
12321232
public void addImportsToOneOfInterface(List<Map<String, String>> imports) {
1233-
for (String i : Arrays.asList("JsonSubTypes", "JsonTypeInfo", "JsonIgnoreProperties")) {
1234-
Map<String, String> oneImport = new HashMap<>();
1235-
oneImport.put("import", importMapping.get(i));
1236-
if (!imports.contains(oneImport)) {
1237-
imports.add(oneImport);
1233+
if(additionalProperties.containsKey(SERIALIZATION_LIBRARY_JACKSON)) {
1234+
for (String i : Arrays.asList("JsonSubTypes", "JsonTypeInfo", "JsonIgnoreProperties")) {
1235+
Map<String, String> oneImport = new HashMap<>();
1236+
oneImport.put("import", importMapping.get(i));
1237+
if (!imports.contains(oneImport)) {
1238+
imports.add(oneImport);
1239+
}
12381240
}
12391241
}
12401242
}

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

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -479,11 +479,13 @@ public String toApiVarName(String name) {
479479

480480
@Override
481481
public void addImportsToOneOfInterface(List<Map<String, String>> imports) {
482-
for (String i : Arrays.asList("JsonSubTypes", "JsonTypeInfo", "JsonIgnoreProperties")) {
483-
Map<String, String> oneImport = new HashMap<>();
484-
oneImport.put("import", importMapping.get(i));
485-
if (!imports.contains(oneImport)) {
486-
imports.add(oneImport);
482+
if(additionalProperties.containsKey(SERIALIZATION_LIBRARY_JACKSON)) {
483+
for (String i : Arrays.asList("JsonSubTypes", "JsonTypeInfo", "JsonIgnoreProperties")) {
484+
Map<String, String> oneImport = new HashMap<>();
485+
oneImport.put("import", importMapping.get(i));
486+
if (!imports.contains(oneImport)) {
487+
imports.add(oneImport);
488+
}
487489
}
488490
}
489491
}

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

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3699,4 +3699,33 @@ public void testNativeClientWithUseSingleRequestParameter() {
36993699
TestUtils.assertFileNotContains(output.resolve("src/main/java/xyz/abcdef/api/PetApi.java"),
37003700
"public record DeletePetRequest(Long petId, String apiKey){}");
37013701
}
3702+
3703+
@Test(dataProvider = "librariesNotSupportingJackson")
3704+
public void givenOneOfUsesInterfacesAndLibraryNotJacksonWhenGenerateThenOneOfInterfaceDoesNotHaveJacksonImports(Library library) throws Exception {
3705+
File output = Files.createTempDirectory("test").toFile().getCanonicalFile();
3706+
output.deleteOnExit();
3707+
3708+
Map<String, Object> properties = new HashMap<>();
3709+
properties.put(USE_ONE_OF_INTERFACES, true);
3710+
3711+
Generator generator = new DefaultGenerator();
3712+
CodegenConfigurator configurator = new CodegenConfigurator()
3713+
.setInputSpec("src/test/resources/3_0/oneOf.yaml")
3714+
.setGeneratorName("java")
3715+
.setLibrary(library.value)
3716+
.setAdditionalProperties(properties)
3717+
.setOutputDir(output.getAbsolutePath());
3718+
ClientOptInput clientOptInput = configurator.toClientOptInput();
3719+
generator.opts(clientOptInput)
3720+
.generate();
3721+
//TODO Delete
3722+
System.out.println("Generator Settings: " + clientOptInput.getGeneratorSettings());
3723+
String outputPath = output.getAbsolutePath() + "/src/main/java/org/openapitools";
3724+
File testModel = new File(outputPath, "/client/model/Fruit.java");
3725+
String fileContent = Files.readString(testModel.toPath());
3726+
//TODO Delete
3727+
System.out.println(fileContent);
3728+
TestUtils.assertValidJavaSourceCode(fileContent);
3729+
TestUtils.assertFileNotContains(testModel.toPath(), "com.fasterxml.jackson");
3730+
}
37023731
}

0 commit comments

Comments
 (0)