Skip to content

Commit d45c293

Browse files
committed
add "java.io.Serializable" directly via x-kotlin-implements
1 parent f17b647 commit d45c293

112 files changed

Lines changed: 119 additions & 242 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

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

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -839,6 +839,7 @@ protected boolean needToImport(String type) {
839839
@Override
840840
public CodegenModel fromModel(String name, Schema schema) {
841841
CodegenModel m = super.fromModel(name, schema);
842+
m.getVendorExtensions().putIfAbsent(VendorExtension.X_KOTLIN_IMPLEMENTS.getName(), List.of());
842843
List<String> implementedInterfacesClasses = (List<String>) m.getVendorExtensions().getOrDefault(VendorExtension.X_KOTLIN_IMPLEMENTS.getName(), List.of());
843844
List<String> implementedInterfacesFields = Optional.ofNullable((List<String>) m.getVendorExtensions().get(VendorExtension.X_KOTLIN_IMPLEMENTS_FIELDS.getName()))
844845
.map(xKotlinImplementsFields -> {
@@ -849,6 +850,13 @@ public CodegenModel fromModel(String name, Schema schema) {
849850
}
850851
return xKotlinImplementsFields;
851852
}).orElse(List.of());
853+
if (serializableModel) {
854+
if (!implementedInterfacesClasses.contains("java.io.Serializable")) {
855+
var implementedInterfacesClassesWithSerializable = new ArrayList<>(implementedInterfacesClasses);
856+
implementedInterfacesClassesWithSerializable.add("java.io.Serializable");
857+
m.getVendorExtensions().put(VendorExtension.X_KOTLIN_IMPLEMENTS.getName(), implementedInterfacesClassesWithSerializable);
858+
}
859+
}
852860
m.optionalVars = m.optionalVars.stream().distinct().collect(Collectors.toList());
853861
// Update allVars/requiredVars/optionalVars with isInherited
854862
// Each of these lists contains elements that are similar, but they are all cloned

modules/openapi-generator/src/main/resources/kotlin-spring/dataClass.mustache

Lines changed: 1 addition & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -19,31 +19,13 @@
1919
{{/-last}}{{/optionalVars}}
2020
){{/discriminator}}{{! no newline
2121
}}{{#parent}} : {{{.}}}{{#isMap}}(){{/isMap}}{{! no newline
22-
}}{{#serializableModel}}{{! no newline
23-
}}{{^vendorExtensions.x-kotlin-implements}}, Serializable{{/vendorExtensions.x-kotlin-implements}}{{! no newline
24-
}}{{#vendorExtensions.x-kotlin-implements}}, Serializable, {{! no newline
25-
}}{{#-first}} {{{.}}}{{/-first}}{{! no newline
26-
}}{{^-first}}, {{{.}}}{{/-first}}{{! no newline
27-
}}{{/vendorExtensions.x-kotlin-implements}}{{! no newline
28-
}}{{/serializableModel}}{{! no newline
29-
}}{{^serializableModel}}{{! no newline
30-
}}{{#vendorExtensions.x-kotlin-implements}}, {{{.}}}{{/vendorExtensions.x-kotlin-implements}}{{! no newline
31-
}}{{/serializableModel}}{{! no newline
22+
}}{{#vendorExtensions.x-kotlin-implements}}, {{{.}}}{{/vendorExtensions.x-kotlin-implements}}{{! <- serializableModel is also handled via x-kotlin-implements
3223
}}{{/parent}}{{! no newline
3324
}}{{^parent}}{{! no newline
34-
}}{{#serializableModel}}{{! no newline
35-
}}{{^vendorExtensions.x-kotlin-implements}} : Serializable{{/vendorExtensions.x-kotlin-implements}}{{! no newline
36-
}}{{#vendorExtensions.x-kotlin-implements}}{{! no newline
37-
}}{{#-first}} : Serializable, {{{.}}}{{/-first}}{{! no newline
38-
}}{{^-first}}, {{{.}}}{{/-first}}{{! no newline
39-
}}{{/vendorExtensions.x-kotlin-implements}}{{! no newline
40-
}}{{/serializableModel}}{{! no newline
41-
}}{{^serializableModel}}{{! no newline
4225
}}{{#vendorExtensions.x-kotlin-implements}}{{! no newline
4326
}}{{#-first}} : {{{.}}}{{/-first}}{{! no newline
4427
}}{{^-first}}, {{{.}}}{{/-first}}{{! no newline
4528
}}{{/vendorExtensions.x-kotlin-implements}}{{! no newline
46-
}}{{/serializableModel}}{{! no newline
4729
}}{{/parent}} {
4830
{{#discriminator}}
4931
{{#requiredVars}}

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,6 @@ package {{package}}
33
import java.util.Objects
44
{{#imports}}import {{import}}
55
{{/imports}}
6-
{{#serializableModel}}
7-
import java.io.Serializable
8-
{{/serializableModel}}
96
{{#useBeanValidation}}
107
import {{javaxPackage}}.validation.constraints.DecimalMax
118
import {{javaxPackage}}.validation.constraints.DecimalMin

modules/openapi-generator/src/test/java/org/openapitools/codegen/kotlin/spring/KotlinSpringServerCodegenTest.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1003,8 +1003,7 @@ public void generateSerializableModel() throws Exception {
10031003
Path path = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/model/Pet.kt");
10041004
assertFileContains(
10051005
path,
1006-
"import java.io.Serializable",
1007-
") : Serializable {",
1006+
") : java.io.Serializable {",
10081007
"private const val serialVersionUID: kotlin.Long = 1"
10091008
);
10101009
}
@@ -1035,9 +1034,8 @@ public void generateSerializableModelWithXimplements() throws Exception {
10351034
Path path = Paths.get(outputPath + "/src/main/kotlin/org/openapitools/model/Dog.kt");
10361035
assertFileContains(
10371036
path,
1038-
"import java.io.Serializable",
10391037
"@get:JsonProperty(\"likesFetch\", required = true) override val likesFetch: kotlin.Boolean,",
1040-
") : Pet, Serializable, com.some.pack.Fetchable {",
1038+
") : Pet, com.some.pack.Fetchable, java.io.Serializable {",
10411039
"private const val serialVersionUID: kotlin.Long = 1"
10421040
);
10431041
}

samples/server/petstore/kotlin-spring-cloud/src/main/kotlin/org/openapitools/model/Category.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package org.openapitools.model
22

33
import java.util.Objects
44
import com.fasterxml.jackson.annotation.JsonProperty
5-
import java.io.Serializable
65
import javax.validation.constraints.DecimalMax
76
import javax.validation.constraints.DecimalMin
87
import javax.validation.constraints.Email
@@ -24,7 +23,7 @@ data class Category(
2423

2524
@get:Pattern(regexp="^[a-zA-Z0-9]+[a-zA-Z0-9\\.\\-_]*[a-zA-Z0-9]+$")
2625
@get:JsonProperty("name") val name: kotlin.String? = null
27-
) : Serializable {
26+
) : java.io.Serializable {
2827

2928
companion object {
3029
private const val serialVersionUID: kotlin.Long = 1

samples/server/petstore/kotlin-spring-cloud/src/main/kotlin/org/openapitools/model/ModelApiResponse.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package org.openapitools.model
22

33
import java.util.Objects
44
import com.fasterxml.jackson.annotation.JsonProperty
5-
import java.io.Serializable
65
import javax.validation.constraints.DecimalMax
76
import javax.validation.constraints.DecimalMin
87
import javax.validation.constraints.Email
@@ -26,7 +25,7 @@ data class ModelApiResponse(
2625
@get:JsonProperty("type") val type: kotlin.String? = null,
2726

2827
@get:JsonProperty("message") val message: kotlin.String? = null
29-
) : Serializable {
28+
) : java.io.Serializable {
3029

3130
companion object {
3231
private const val serialVersionUID: kotlin.Long = 1

samples/server/petstore/kotlin-spring-cloud/src/main/kotlin/org/openapitools/model/Order.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,6 @@ import java.util.Objects
44
import com.fasterxml.jackson.annotation.JsonCreator
55
import com.fasterxml.jackson.annotation.JsonProperty
66
import com.fasterxml.jackson.annotation.JsonValue
7-
import java.io.Serializable
87
import javax.validation.constraints.DecimalMax
98
import javax.validation.constraints.DecimalMin
109
import javax.validation.constraints.Email
@@ -37,7 +36,7 @@ data class Order(
3736
@get:JsonProperty("status") val status: Order.Status? = null,
3837

3938
@get:JsonProperty("complete") val complete: kotlin.Boolean? = false
40-
) : Serializable {
39+
) : java.io.Serializable {
4140

4241
/**
4342
* Order Status

samples/server/petstore/kotlin-spring-cloud/src/main/kotlin/org/openapitools/model/Pet.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import com.fasterxml.jackson.annotation.JsonProperty
66
import com.fasterxml.jackson.annotation.JsonValue
77
import org.openapitools.model.Category
88
import org.openapitools.model.Tag
9-
import java.io.Serializable
109
import javax.validation.constraints.DecimalMax
1110
import javax.validation.constraints.DecimalMin
1211
import javax.validation.constraints.Email
@@ -42,7 +41,7 @@ data class Pet(
4241

4342
@Deprecated(message = "")
4443
@get:JsonProperty("status") val status: Pet.Status? = null
45-
) : Serializable {
44+
) : java.io.Serializable {
4645

4746
/**
4847
* pet status in the store

samples/server/petstore/kotlin-spring-cloud/src/main/kotlin/org/openapitools/model/Tag.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package org.openapitools.model
22

33
import java.util.Objects
44
import com.fasterxml.jackson.annotation.JsonProperty
5-
import java.io.Serializable
65
import javax.validation.constraints.DecimalMax
76
import javax.validation.constraints.DecimalMin
87
import javax.validation.constraints.Email
@@ -23,7 +22,7 @@ data class Tag(
2322
@get:JsonProperty("id") val id: kotlin.Long? = null,
2423

2524
@get:JsonProperty("name") val name: kotlin.String? = null
26-
) : Serializable {
25+
) : java.io.Serializable {
2726

2827
companion object {
2928
private const val serialVersionUID: kotlin.Long = 1

samples/server/petstore/kotlin-spring-cloud/src/main/kotlin/org/openapitools/model/User.kt

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package org.openapitools.model
22

33
import java.util.Objects
44
import com.fasterxml.jackson.annotation.JsonProperty
5-
import java.io.Serializable
65
import javax.validation.constraints.DecimalMax
76
import javax.validation.constraints.DecimalMin
87
import javax.validation.constraints.Email
@@ -41,7 +40,7 @@ data class User(
4140
@get:JsonProperty("phone") val phone: kotlin.String? = null,
4241

4342
@get:JsonProperty("userStatus") val userStatus: kotlin.Int? = null
44-
) : Serializable {
43+
) : java.io.Serializable {
4544

4645
companion object {
4746
private const val serialVersionUID: kotlin.Long = 1

0 commit comments

Comments
 (0)