Skip to content

Commit d55388b

Browse files
committed
fix (JAVA OKHTTP-GSON): don't add oneOf interface as CustomTypeAdapterFactory
1 parent 91eef90 commit d55388b

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
@@ -3869,4 +3869,32 @@ public void testClientWithUseOneOfInterfaceShouldntGenerateOneOfExample_issue_17
38693869

38703870
}
38713871

3872-
}
3872+
@Test
3873+
public void testOkHttpGsonClientWithUseOneOfInterfaceShouldntRegisterInterfaceAsTypeAdapter_issue_17419() {
3874+
// given
3875+
final Path output = newTempFolder();
3876+
final CodegenConfigurator configurator = new CodegenConfigurator()
3877+
.setGeneratorName("java")
3878+
.setLibrary(OKHTTP_GSON)
3879+
.setAdditionalProperties(Map.of("useOneOfInterfaces", "true"))
3880+
.setInputSpec("src/test/resources/3_0/typescript-fetch/oneOf.yaml")
3881+
.setOutputDir(output.toString().replace("\\", "/"));
3882+
3883+
final ClientOptInput input = configurator.toClientOptInput();
3884+
3885+
// when
3886+
List<File> files = new DefaultGenerator().opts(input).generate();
3887+
3888+
// then
3889+
validateJavaSourceFiles(files);
3890+
TestUtils.assertFileNotContains(
3891+
output.resolve("src/main/java/org/openapitools/client/model/TestResponse.java"),
3892+
"CustomTypeAdapterFactory"
3893+
);
3894+
TestUtils.assertFileNotContains(
3895+
output.resolve("src/main/java/org/openapitools/client/JSON.java"),
3896+
"new org.openapitools.client.model.TestResponse.CustomTypeAdapterFactory()"
3897+
);
3898+
}
3899+
3900+
}

0 commit comments

Comments
 (0)