Skip to content

Commit b05604d

Browse files
authored
Restricted Java oneOf imports to Jackson only when needed (#21404) (#21405)
* Fixed issue #21404 - Restricted Java oneOf imports to Jackson when needed * Fix TODOs
1 parent cfe476f commit b05604d

File tree

3 files changed

+39
-10
lines changed

3 files changed

+39
-10
lines changed

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: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3699,4 +3699,29 @@ 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+
String outputPath = output.getAbsolutePath() + "/src/main/java/org/openapitools";
3722+
File testModel = new File(outputPath, "/client/model/Fruit.java");
3723+
String fileContent = Files.readString(testModel.toPath());
3724+
TestUtils.assertValidJavaSourceCode(fileContent);
3725+
TestUtils.assertFileNotContains(testModel.toPath(), "com.fasterxml.jackson");
3726+
}
37023727
}

0 commit comments

Comments
 (0)