Skip to content

Commit d657e95

Browse files
authored
[Kotlin][Client] Added Kotlinx Serialization for JVM/Retrofit2/OkHttp3&4 (#6916)
* Added supporting kotlin.serialization for jvm * Added Serializable annotations for java types(date,time,url,uri etc.) * Added SafeEnumSerializer * Added StringBuilderAdapter for kotlin.serialization Fix adapter naming Fix Retrofit ApiClient.kt for kotlin.serialization * Added StringBuilderAdapter for kotlin.serialization * Switch sample to retrofit2-kotlin-serialization * Add sample for retrofit2-kotlin.serialization * update sample * update sample * update sample #3 * Fix enum quotes for kotlin.serialization * update samples * update pom.xml * add pom.xml to child module * fix kotlin-multiplatform freeCompilerArgs * refactoring, add useSafeEnum option, remove safeEnum for kotlin.multiplatform * update kotlin samples * fix import kotlinx.serialization.Required * Update kotlinx.serialization 1.0.0-rc-2, kotlin 1.4.10, retrofit-kotlinx-converter 0.7.0 * Update gradle wrapper 6.7-rc-3 * fix SafeEnum import * fix Json initialization, fix SafeEnumSerializer * update samples * update kotlinx.serialization to 1.0.0 * Update gradle to 6.7 in kotlin samples * fixed adding @contextual for collections with non-primitive type elements * remove unused SafeEnum imports, refactored * update kotlin readme * update kotlin project template Readme.md * update samples for kotlin * simplify template for class properties * remove @contextual from kotlin-multiplatform * update kotlin multiplatform dependencies * refactoring templates * revert all changes for multiplatform * fix tests * revert multiplatform #2 * update samples after merge, fix missed isListContainer->isArray * fixed redundant space before @contextual * Fixed enum template, Class were missed in generated samples * fix enum template toString value->serialName * fixed isEnum case for collections * update samples * removed useSafeEnum option, kotlinx serialization has out of box approach with coerceInputValues option for same behavior * generate samples * update kotlinx.serialization 1.0.1 * update samples * Added pom.mustache template for kotlin-client samples with fixed execution of gradle wrapper instead standalone installed gradle on CI * update samples with new pom.xml * reverted enum value property name * fixed kotlin-multiplatform pom.xml * update kotlin-threetenbp sample * update kotlin-string sample * update kotlin-string sample * fix adding kotlinx.serialization classpath to build.gradle * generate samples * add supporting kotlinx_serialization kotlinx.serialization.Serializable with java.io.Serializable at the same time * update retrofit2-kotlinx-serialization-converter:0.8.0 * update kotlinx_serialization sample with retrofit2-kotlinx-serialization-converter:0.8.0 * apply suggest from @blendthink * added proguard-rules.pro file for kotlinx.serialization on Android projects * fix pom.mustache * update gradle wrapper to 6.8.3 * update kotlin samples * fix kotlin readme template, update kotlin samples * update kotlin samples * update kotlin sample delete petstore/kotlin unit tests * revert deletion kotlin client tests remove adding pom.xml to kotlin client samples * add support kotlinx serialization for okhttp3/4 * update kotlin client samples
1 parent 349445a commit d657e95

File tree

239 files changed

+7544
-445
lines changed

Some content is hidden

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

239 files changed

+7544
-445
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
generatorName: kotlin
2+
outputDir: samples/client/petstore/kotlin-retrofit2-kotlinx_serialization
3+
library: jvm-retrofit2
4+
inputSpec: modules/openapi-generator/src/test/resources/2_0/petstore.yaml
5+
templateDir: modules/openapi-generator/src/main/resources/kotlin-client
6+
additionalProperties:
7+
serializationLibrary: kotlinx_serialization
8+
artifactId: kotlin-petstore-retrofit2-kotlinx_serialization
9+
enumPropertyNaming: UPPERCASE
10+
serializableModel: "true"
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
generatorName: kotlin
2+
outputDir: samples/openapi3/client/petstore/kotlin-jvm-retrofit2-rx2-kotlinx_serialization
3+
library: jvm-retrofit2
4+
inputSpec: modules/openapi-generator/src/test/resources/3_0/petstore-with-fake-endpoints-models-for-testing.yaml
5+
templateDir: modules/openapi-generator/src/main/resources/kotlin-client
6+
additionalProperties:
7+
serializationLibrary: kotlinx_serialization
8+
useRxJava2: "true"
9+
artifactId: kotlin-petstore-rx2-kotlinx_serialization-client
10+
serializableModel: "true"
11+
dateLibrary: java8

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ public abstract class AbstractKotlinCodegen extends DefaultCodegen implements Co
4444

4545
public static final String SERIALIZATION_LIBRARY_DESC = "What serialization library to use: 'moshi' (default), or 'gson' or 'jackson'";
4646

47-
public enum SERIALIZATION_LIBRARY_TYPE {moshi, gson, jackson}
47+
public enum SERIALIZATION_LIBRARY_TYPE {moshi, gson, jackson, kotlinx_serialization}
4848

4949
public static final String MODEL_MUTABLE = "modelMutable";
5050
public static final String MODEL_MUTABLE_DESC = "Create mutable models";

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

+24-8
Original file line numberDiff line numberDiff line change
@@ -235,7 +235,7 @@ public void setUseRxJava2(boolean useRxJava2) {
235235
}
236236
this.useRxJava2 = useRxJava2;
237237
}
238-
238+
239239
public void setUseRxJava3(boolean useRxJava3) {
240240
if (useRxJava3) {
241241
this.useRxJava = false;
@@ -379,7 +379,7 @@ public void processOpts() {
379379
if(ProcessUtils.hasHttpBearerMethods(openAPI)) {
380380
supportingFiles.add(new SupportingFile("auth/HttpBearerAuth.kt.mustache", authFolder, "HttpBearerAuth.kt"));
381381
}
382-
382+
383383
if(ProcessUtils.hasHttpBasicMethods(openAPI)) {
384384
supportingFiles.add(new SupportingFile("auth/HttpBasicAuth.kt.mustache", authFolder, "HttpBasicAuth.kt"));
385385
}
@@ -476,6 +476,22 @@ private void addSupportingSerializerAdapters(final String infrastructureFolder)
476476
//supportingFiles.add(new SupportingFile("jvm-common/infrastructure/DateAdapter.kt.mustache", infrastructureFolder, "DateAdapter.kt"));
477477
break;
478478

479+
case kotlinx_serialization:
480+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/AtomicBooleanAdapter.kt.mustache", infrastructureFolder, "AtomicBooleanAdapter.kt"));
481+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/AtomicIntegerAdapter.kt.mustache", infrastructureFolder, "AtomicIntegerAdapter.kt"));
482+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/AtomicLongAdapter.kt.mustache", infrastructureFolder, "AtomicLongAdapter.kt"));
483+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/URIAdapter.kt.mustache", infrastructureFolder, "URIAdapter.kt"));
484+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/URLAdapter.kt.mustache", infrastructureFolder, "URLAdapter.kt"));
485+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/BigIntegerAdapter.kt.mustache", infrastructureFolder, "BigIntegerAdapter.kt"));
486+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/BigDecimalAdapter.kt.mustache", infrastructureFolder, "BigDecimalAdapter.kt"));
487+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/DateAdapter.kt.mustache", infrastructureFolder, "DateAdapter.kt"));
488+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/LocalDateAdapter.kt.mustache", infrastructureFolder, "LocalDateAdapter.kt"));
489+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/LocalDateTimeAdapter.kt.mustache", infrastructureFolder, "LocalDateTimeAdapter.kt"));
490+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/OffsetDateTimeAdapter.kt.mustache", infrastructureFolder, "OffsetDateTimeAdapter.kt"));
491+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/UUIDAdapter.kt.mustache", infrastructureFolder, "UUIDAdapter.kt"));
492+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/StringBuilderAdapter.kt.mustache", infrastructureFolder, "StringBuilderAdapter.kt"));
493+
supportingFiles.add(new SupportingFile("jvm-common/infrastructure/proguard-rules.pro.mustache", "", "proguard-rules.pro"));
494+
break;
479495
}
480496
}
481497

@@ -551,12 +567,6 @@ private void processMultiplatformLibrary(final String infrastructureFolder) {
551567
supportingFiles.add(new SupportingFile("iosTest/Coroutine.kt.mustache", "src/iosTest/kotlin/util", "Coroutine.kt"));
552568
supportingFiles.add(new SupportingFile("jsTest/Coroutine.kt.mustache", "src/jsTest/kotlin/util", "Coroutine.kt"));
553569
supportingFiles.add(new SupportingFile("jvmTest/Coroutine.kt.mustache", "src/jvmTest/kotlin/util", "Coroutine.kt"));
554-
555-
// gradle wrapper supporting files
556-
supportingFiles.add(new SupportingFile("gradlew.mustache", "", "gradlew"));
557-
supportingFiles.add(new SupportingFile("gradlew.bat.mustache", "", "gradlew.bat"));
558-
supportingFiles.add(new SupportingFile("gradle-wrapper.properties.mustache", "gradle.wrapper".replace(".", File.separator), "gradle-wrapper.properties"));
559-
supportingFiles.add(new SupportingFile("gradle-wrapper.jar", "gradle.wrapper".replace(".", File.separator), "gradle-wrapper.jar"));
560570
}
561571

562572

@@ -571,6 +581,12 @@ private void commonSupportingFiles() {
571581
supportingFiles.add(new SupportingFile("README.mustache", "", "README.md"));
572582
supportingFiles.add(new SupportingFile("build.gradle.mustache", "", "build.gradle"));
573583
supportingFiles.add(new SupportingFile("settings.gradle.mustache", "", "settings.gradle"));
584+
585+
// gradle wrapper supporting files
586+
supportingFiles.add(new SupportingFile("gradlew.mustache", "", "gradlew"));
587+
supportingFiles.add(new SupportingFile("gradlew.bat.mustache", "", "gradlew.bat"));
588+
supportingFiles.add(new SupportingFile("gradle-wrapper.properties.mustache", "gradle.wrapper".replace(".", File.separator), "gradle-wrapper.properties"));
589+
supportingFiles.add(new SupportingFile("gradle-wrapper.jar", "gradle.wrapper".replace(".", File.separator), "gradle-wrapper.jar"));
574590
}
575591

576592
@Override

modules/openapi-generator/src/main/resources/kotlin-client/README.mustache

+2-2
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,8 @@
33
## Requires
44

55
{{#jvm}}
6-
* Kotlin 1.3.61
7-
* Gradle 4.9
6+
* Kotlin 1.4.30
7+
* Gradle 6.8.3
88
{{/jvm}}
99
{{#multiplatform}}
1010
* Kotlin 1.3.50

modules/openapi-generator/src/main/resources/kotlin-client/build.gradle.mustache

+14-2
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,12 @@ group '{{groupId}}'
22
version '{{artifactVersion}}'
33

44
wrapper {
5-
gradleVersion = '6.8.2'
5+
gradleVersion = '6.8.3'
66
distributionUrl = "https://services.gradle.org/distributions/gradle-$gradleVersion-all.zip"
77
}
88

99
buildscript {
10-
ext.kotlin_version = '1.4.20'
10+
ext.kotlin_version = '1.4.30'
1111
{{#jvm-retrofit2}}
1212
ext.retrofitVersion = '2.7.2'
1313
{{/jvm-retrofit2}}
@@ -26,6 +26,9 @@ buildscript {
2626
}
2727
dependencies {
2828
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
29+
{{#kotlinx_serialization}}
30+
classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version"
31+
{{/kotlinx_serialization}}
2932
}
3033
}
3134

@@ -36,6 +39,9 @@ apply plugin: 'kotlin-kapt'
3639
{{#parcelizeModels}}
3740
apply plugin: 'kotlin-parcelize'
3841
{{/parcelizeModels}}
42+
{{#kotlinx_serialization}}
43+
apply plugin: 'kotlinx-serialization'
44+
{{/kotlinx_serialization}}
3945

4046
repositories {
4147
maven { url "https://repo1.maven.org/maven2" }
@@ -65,6 +71,9 @@ dependencies {
6571
compile "com.fasterxml.jackson.module:jackson-module-kotlin:2.12.1"
6672
compile "com.fasterxml.jackson.datatype:jackson-datatype-jsr310:2.12.1"
6773
{{/jackson}}
74+
{{#kotlinx_serialization}}
75+
compile "org.jetbrains.kotlinx:kotlinx-serialization-json:1.1.0"
76+
{{/kotlinx_serialization}}
6877
{{#jvm-okhttp3}}
6978
compile "com.squareup.okhttp3:okhttp:3.12.13"
7079
{{/jvm-okhttp3}}
@@ -98,6 +107,9 @@ dependencies {
98107
{{#moshi}}
99108
compile "com.squareup.retrofit2:converter-moshi:$retrofitVersion"
100109
{{/moshi}}
110+
{{#kotlinx_serialization}}
111+
compile "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0"
112+
{{/kotlinx_serialization}}
101113
compile "com.squareup.retrofit2:converter-scalars:$retrofitVersion"
102114
{{/jvm-retrofit2}}
103115
testCompile "io.kotlintest:kotlintest-runner-junit5:3.4.2"

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

+15-10
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,13 @@ import com.fasterxml.jackson.annotation.JsonSubTypes
1515
import com.fasterxml.jackson.annotation.JsonTypeInfo
1616
{{/discriminator}}
1717
{{/jackson}}
18+
{{#kotlinx_serialization}}
19+
import {{#serializableModel}}kotlinx.serialization.Serializable as KSerializable{{/serializableModel}}{{^serializableModel}}kotlinx.serialization.Serializable{{/serializableModel}}
20+
import kotlinx.serialization.SerialName
21+
import kotlinx.serialization.Contextual
22+
{{#hasEnums}}
23+
{{/hasEnums}}
24+
{{/kotlinx_serialization}}
1825
{{#parcelizeModels}}
1926
import android.os.Parcelable
2027
import kotlinx.parcelize.Parcelize
@@ -38,7 +45,7 @@ import java.io.Serializable
3845
{{#parcelizeModels}}
3946
@Parcelize
4047
{{/parcelizeModels}}
41-
{{#multiplatform}}@Serializable{{/multiplatform}}{{#moshi}}{{#moshiCodeGen}}@JsonClass(generateAdapter = true){{/moshiCodeGen}}{{/moshi}}{{#jackson}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{/jackson}}
48+
{{#multiplatform}}@Serializable{{/multiplatform}}{{#kotlinx_serialization}}{{#serializableModel}}@KSerializable{{/serializableModel}}{{^serializableModel}}@Serializable{{/serializableModel}}{{/kotlinx_serialization}}{{#moshi}}{{#moshiCodeGen}}@JsonClass(generateAdapter = true){{/moshiCodeGen}}{{/moshi}}{{#jackson}}{{#discriminator}}{{>typeInfoAnnotation}}{{/discriminator}}{{/jackson}}
4249
{{#isDeprecated}}
4350
@Deprecated(message = "This schema is deprecated.")
4451
{{/isDeprecated}}
@@ -60,11 +67,10 @@ import java.io.Serializable
6067
{{#vars}}
6168
{{#isEnum}}
6269
/**
63-
* {{{description}}}
64-
* Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}}
65-
*/
66-
{{#multiplatform}}@Serializable(with = {{nameInCamelCase}}.Serializer::class){{/multiplatform}}
67-
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{{nameInCamelCase}}}(val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}){
70+
* {{{description}}}
71+
* Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}}
72+
*/
73+
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{{nameInCamelCase}}}(val value: {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}) {
6874
{{#allowableValues}}
6975
{{#enumVars}}
7076
{{^multiplatform}}
@@ -77,16 +83,15 @@ import java.io.Serializable
7783
{{#jackson}}
7884
@JsonProperty(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}}) {{&name}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}}
7985
{{/jackson}}
86+
{{#kotlinx_serialization}}
87+
@SerialName(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}}) {{&name}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}}
88+
{{/kotlinx_serialization}}
8089
{{/multiplatform}}
8190
{{#multiplatform}}
8291
{{&name}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}}
8392
{{/multiplatform}}
8493
{{/enumVars}}
8594
{{/allowableValues}}
86-
{{#multiplatform}}
87-
88-
{{#nonPublicApi}}internal {{/nonPublicApi}}object Serializer : CommonEnumSerializer<{{nameInCamelCase}}>("{{nameInCamelCase}}", values(), values().map { it.value.toString() }.toTypedArray())
89-
{{/multiplatform}}
9095
}
9196
{{/isEnum}}
9297
{{/vars}}

modules/openapi-generator/src/main/resources/kotlin-client/data_class_opt_var.mustache

+4-1
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@
1111
{{#jackson}}
1212
@field:JsonProperty("{{{vendorExtensions.x-base-name-literal}}}")
1313
{{/jackson}}
14+
{{#kotlinx_serialization}}
15+
{{^isEnum}}{{^isArray}}{{^isPrimitiveType}}{{^isModel}}@Contextual {{/isModel}}{{/isPrimitiveType}}{{/isArray}}{{/isEnum}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}")
16+
{{/kotlinx_serialization}}
1417
{{/multiplatform}}
1518
{{#deprecated}}
1619
@Deprecated(message = "This property is deprecated.")
1720
{{/deprecated}}
18-
{{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isArray}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isArray}}{{^isArray}}{{classname}}.{{{nameInCamelCase}}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}
21+
{{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isArray}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{^items.isEnum}}{{^items.isPrimitiveType}}{{^items.isModel}}{{#kotlinx_serialization}}@Contextual {{/kotlinx_serialization}}{{/items.isModel}}{{/items.isPrimitiveType}}{{{items.dataType}}}{{/items.isEnum}}{{#items.isEnum}}{{classname}}.{{{nameInCamelCase}}}{{/items.isEnum}}>{{/isArray}}{{^isEnum}}{{^isArray}}{{{dataType}}}{{/isArray}}{{/isEnum}}{{#isEnum}}{{^isArray}}{{classname}}.{{{nameInCamelCase}}}{{/isArray}}{{/isEnum}}? = {{#defaultvalue}}{{defaultvalue}}{{/defaultvalue}}{{^defaultvalue}}null{{/defaultvalue}}

modules/openapi-generator/src/main/resources/kotlin-client/data_class_req_var.mustache

+4-1
Original file line numberDiff line numberDiff line change
@@ -11,8 +11,11 @@
1111
{{#jackson}}
1212
@field:JsonProperty("{{{vendorExtensions.x-base-name-literal}}}")
1313
{{/jackson}}
14+
{{#kotlinx_serialization}}
15+
{{^isEnum}}{{^isArray}}{{^isPrimitiveType}}{{^isModel}}@Contextual {{/isModel}}{{/isPrimitiveType}}{{/isArray}}{{/isEnum}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}")
16+
{{/kotlinx_serialization}}
1417
{{/multiplatform}}
1518
{{#deprecated}}
1619
@Deprecated(message = "This property is deprecated.")
1720
{{/deprecated}}
18-
{{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") @Required {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isEnum}}{{#isArray}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{classname}}.{{{nameInCamelCase}}}>{{/isArray}}{{^isArray}}{{classname}}.{{{nameInCamelCase}}}{{/isArray}}{{/isEnum}}{{^isEnum}}{{{dataType}}}{{/isEnum}}{{#isNullable}}?{{/isNullable}}
21+
{{#multiplatform}}@SerialName(value = "{{{vendorExtensions.x-base-name-literal}}}") @Required {{/multiplatform}}{{#isInherited}}override {{/isInherited}}{{>modelMutable}} {{{name}}}: {{#isArray}}{{#isList}}kotlin.collections.List{{/isList}}{{^isList}}kotlin.Array{{/isList}}<{{^items.isEnum}}{{^items.isPrimitiveType}}{{^items.isModel}}{{#kotlinx_serialization}}@Contextual {{/kotlinx_serialization}}{{/items.isModel}}{{/items.isPrimitiveType}}{{{items.dataType}}}{{/items.isEnum}}{{#items.isEnum}}{{classname}}.{{{nameInCamelCase}}}{{/items.isEnum}}>{{/isArray}}{{^isEnum}}{{^isArray}}{{{dataType}}}{{/isArray}}{{/isEnum}}{{#isEnum}}{{^isArray}}{{classname}}.{{{nameInCamelCase}}}{{/isArray}}{{/isEnum}}{{#isNullable}}?{{/isNullable}}

modules/openapi-generator/src/main/resources/kotlin-client/enum_class.mustache

+9-7
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,10 @@ import com.squareup.moshi.Json
88
{{#jackson}}
99
import com.fasterxml.jackson.annotation.JsonProperty
1010
{{/jackson}}
11+
{{#kotlinx_serialization}}
12+
import kotlinx.serialization.SerialName
13+
import kotlinx.serialization.Serializable
14+
{{/kotlinx_serialization}}
1115
{{/multiplatform}}
1216
{{#multiplatform}}
1317
import kotlinx.serialization.*
@@ -18,8 +22,8 @@ import kotlinx.serialization.internal.CommonEnumSerializer
1822
* {{{description}}}
1923
* Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}}
2024
*/
21-
{{#multiplatform}}@Serializable(with = {{classname}}.Serializer::class){{/multiplatform}}
22-
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{classname}}(val value: {{{dataType}}}){
25+
{{#multiplatform}}@Serializable(with = {{classname}}.Serializer::class){{/multiplatform}}{{#kotlinx_serialization}}@Serializable(with = {{classname}}.Serializer::class){{/kotlinx_serialization}}
26+
{{#nonPublicApi}}internal {{/nonPublicApi}}enum class {{classname}}(val value: {{{dataType}}}) {
2327
2428
{{#allowableValues}}{{#enumVars}}
2529
{{^multiplatform}}
@@ -32,6 +36,9 @@ import kotlinx.serialization.internal.CommonEnumSerializer
3236
{{#jackson}}
3337
@JsonProperty(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}})
3438
{{/jackson}}
39+
{{#kotlinx_serialization}}
40+
@SerialName(value = {{^isString}}"{{/isString}}{{{value}}}{{^isString}}"{{/isString}})
41+
{{/kotlinx_serialization}}
3542
{{/multiplatform}}
3643
{{#isArray}}
3744
{{#isList}}
@@ -44,7 +51,6 @@ import kotlinx.serialization.internal.CommonEnumSerializer
4451
{{^isArray}}
4552
{{&name}}({{{value}}}){{^-last}},{{/-last}}{{#-last}};{{/-last}}
4653
{{/isArray}}
47-
4854
{{/enumVars}}{{/allowableValues}}
4955

5056
/**
@@ -54,8 +60,4 @@ import kotlinx.serialization.internal.CommonEnumSerializer
5460
override fun toString(): String {
5561
return value{{^isString}}.toString(){{/isString}}
5662
}
57-
58-
{{#multiplatform}}
59-
{{#nonPublicApi}}internal {{/nonPublicApi}}object Serializer : CommonEnumSerializer<{{classname}}>("{{classname}}", values(), values().map { it.value.toString() }.toTypedArray())
60-
{{/multiplatform}}
6163
}
Binary file not shown.
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,5 @@
1-
#Tue May 17 23:08:05 CST 2016
21
distributionBase=GRADLE_USER_HOME
32
distributionPath=wrapper/dists
3+
distributionUrl=https\://services.gradle.org/distributions/gradle-6.8.3-all.zip
44
zipStoreBase=GRADLE_USER_HOME
55
zipStorePath=wrapper/dists
6-
distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-bin.zip

0 commit comments

Comments
 (0)