Skip to content

Commit 50ee5b1

Browse files
committed
fix (JAVA OKHTTP-GSON): don't add oneOf interface as CustomTypeAdapterFactory
1 parent 97b39b3 commit 50ee5b1

2 files changed

Lines changed: 31 additions & 1 deletion

File tree

modules/openapi-generator/src/main/resources/Java/libraries/okhttp-gson/JSON.mustache

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,9 @@ public class JSON {
131131
{{#model}}
132132
{{^isEnum}}
133133
{{^hasChildren}}
134+
{{^vendorExtensions.x-is-one-of-interface}}
134135
gsonBuilder.registerTypeAdapterFactory(new {{modelPackage}}.{{{classname}}}.CustomTypeAdapterFactory());
136+
{{/vendorExtensions.x-is-one-of-interface}}
135137
{{/hasChildren}}
136138
{{/isEnum}}
137139
{{/model}}

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

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3810,4 +3810,32 @@ public void testClientWithUseOneOfInterfaceShouldntGenerateOneOfExample_issue_17
38103810

38113811
}
38123812

3813-
}
3813+
@Test
3814+
public void testOkHttpGsonClientWithUseOneOfInterfaceShouldntRegisterInterfaceAsTypeAdapter_issue_17419() {
3815+
// given
3816+
final Path output = newTempFolder();
3817+
final CodegenConfigurator configurator = new CodegenConfigurator()
3818+
.setGeneratorName("java")
3819+
.setLibrary(OKHTTP_GSON)
3820+
.setAdditionalProperties(Map.of("useOneOfInterfaces", "true"))
3821+
.setInputSpec("src/test/resources/3_0/typescript-fetch/oneOf.yaml")
3822+
.setOutputDir(output.toString().replace("\\", "/"));
3823+
3824+
final ClientOptInput input = configurator.toClientOptInput();
3825+
3826+
// when
3827+
List<File> files = new DefaultGenerator().opts(input).generate();
3828+
3829+
// then
3830+
validateJavaSourceFiles(files);
3831+
TestUtils.assertFileNotContains(
3832+
output.resolve("src/main/java/org/openapitools/client/model/TestResponse.java"),
3833+
"CustomTypeAdapterFactory"
3834+
);
3835+
TestUtils.assertFileNotContains(
3836+
output.resolve("src/main/java/org/openapitools/client/JSON.java"),
3837+
"new org.openapitools.client.model.TestResponse.CustomTypeAdapterFactory()"
3838+
);
3839+
}
3840+
3841+
}

0 commit comments

Comments
 (0)