Skip to content

Commit 0adee90

Browse files
committed
Use the model where the interface represents the one-of 'root' and the options implement that interface.
1 parent 701b6bd commit 0adee90

4 files changed

Lines changed: 8 additions & 2 deletions

File tree

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,9 @@ public class KotlinServerCodegen extends AbstractKotlinCodegen implements BeanVa
106106
public KotlinServerCodegen() {
107107
super();
108108

109+
useOneOfInterfaces = true;
110+
addOneOfInterfaceImports = true;
111+
109112
modifyFeatureSet(features -> features
110113
.includeDocumentationFeatures(DocumentationFeature.Readme)
111114
.wireFormatFeatures(EnumSet.of(WireFormatFeature.JSON, WireFormatFeature.XML))

modules/openapi-generator/src/main/resources/kotlin-server/data_class.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ import java.io.Serializable
2828
{{/-last}}{{/requiredVars}}{{#hasRequired}}{{#hasOptional}},
2929
{{/hasOptional}}{{/hasRequired}}{{#optionalVars}}{{>data_class_opt_var}}{{^-last}},
3030
{{/-last}}{{/optionalVars}}
31-
){{^isKtor}}{{^serializableModel}}{{#parcelizeModels}} : Parcelable{{/parcelizeModels}}{{/serializableModel}}{{^parcelizeModels}}{{#serializableModel}}: Serializable {{/serializableModel}}{{/parcelizeModels}}{{#parcelizeModels}}{{#serializableModel}} : Parcelable, Serializable {{/serializableModel}}{{/parcelizeModels}}{{/isKtor}}
31+
){{^isKtor}}{{#vendorExtensions.x-implements}}: {{{.}}}{{/vendorExtensions.x-implements}}{{^serializableModel}}{{#parcelizeModels}} : Parcelable{{/parcelizeModels}}{{/serializableModel}}{{^parcelizeModels}}{{#serializableModel}}: Serializable {{/serializableModel}}{{/parcelizeModels}}{{#parcelizeModels}}{{#serializableModel}} : Parcelable, Serializable {{/serializableModel}}{{/parcelizeModels}}{{/isKtor}}
3232
{{#vendorExtensions.x-has-data-class-body}}
3333
{
3434
{{/vendorExtensions.x-has-data-class-body}}

modules/openapi-generator/src/main/resources/kotlin-server/model.mustache

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,6 @@ package {{modelPackage}}
66

77
{{#models}}
88
{{#model}}
9-
{{#isEnum}}{{>enum_class}}{{/isEnum}}{{^isEnum}}{{>data_class}}{{/isEnum}}
9+
{{#isEnum}}{{>enum_class}}{{/isEnum}}{{^isEnum}}{{#oneOf}}{{>oneof_model}}{{/oneOf}}{{^oneOf}}{{>data_class}}{{/oneOf}}{{/isEnum}}
1010
{{/model}}
1111
{{/models}}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{{#-first}}
2+
interface {{classname}}
3+
{{/-first}}

0 commit comments

Comments
 (0)