Skip to content

Commit 2f4dc91

Browse files
committed
fix (JAVA OKHTTP-GSON): don't add oneOf interface as CustomTypeAdapterFactory
1 parent 8597748 commit 2f4dc91

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
@@ -128,7 +128,9 @@ public class JSON {
128128
{{#model}}
129129
{{^isEnum}}
130130
{{^hasChildren}}
131+
{{^vendorExtensions.x-is-one-of-interface}}
131132
gsonBuilder.registerTypeAdapterFactory(new {{modelPackage}}.{{{classname}}}.CustomTypeAdapterFactory());
133+
{{/vendorExtensions.x-is-one-of-interface}}
132134
{{/hasChildren}}
133135
{{/isEnum}}
134136
{{/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
@@ -3621,4 +3621,32 @@ public void testClientWithUseOneOfInterfaceShouldntGenerateOneOfExample_issue_17
36213621

36223622
}
36233623

3624-
}
3624+
@Test
3625+
public void testOkHttpGsonClientWithUseOneOfInterfaceShouldntRegisterInterfaceAsTypeAdapter_issue_17419() {
3626+
// given
3627+
final Path output = newTempFolder();
3628+
final CodegenConfigurator configurator = new CodegenConfigurator()
3629+
.setGeneratorName("java")
3630+
.setLibrary(OKHTTP_GSON)
3631+
.setAdditionalProperties(Map.of("useOneOfInterfaces", "true"))
3632+
.setInputSpec("src/test/resources/3_0/typescript-fetch/oneOf.yaml")
3633+
.setOutputDir(output.toString().replace("\\", "/"));
3634+
3635+
final ClientOptInput input = configurator.toClientOptInput();
3636+
3637+
// when
3638+
List<File> files = new DefaultGenerator().opts(input).generate();
3639+
3640+
// then
3641+
validateJavaSourceFiles(files);
3642+
TestUtils.assertFileNotContains(
3643+
output.resolve("src/main/java/org/openapitools/client/model/TestResponse.java"),
3644+
"CustomTypeAdapterFactory"
3645+
);
3646+
TestUtils.assertFileNotContains(
3647+
output.resolve("src/main/java/org/openapitools/client/JSON.java"),
3648+
"new org.openapitools.client.model.TestResponse.CustomTypeAdapterFactory()"
3649+
);
3650+
}
3651+
3652+
}

0 commit comments

Comments
 (0)