Skip to content

Commit 96c5385

Browse files
committed
Merge branch 'kotlin-client/integer-enums-multiplatform' of https://github.com/rlnt/openapi-generator into rlnt-kotlin-client/integer-enums-multiplatform
2 parents 4603cc9 + 42cfb4b commit 96c5385

File tree

1 file changed

+23
-1
lines changed

1 file changed

+23
-1
lines changed

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

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,14 +42,17 @@ import kotlinx.serialization.encoding.Encoder
4242
{{/multiplatform}}
4343
{{#multiplatform}}
4444
import kotlinx.serialization.*
45+
import kotlinx.serialization.builtins.serializer
46+
import kotlinx.serialization.encoding.Decoder
47+
import kotlinx.serialization.encoding.Encoder
4548
{{/multiplatform}}
4649

4750
/**
4851
* {{{description}}}
4952
*
5053
* Values: {{#allowableValues}}{{#enumVars}}{{&name}}{{^-last}},{{/-last}}{{/enumVars}}{{/allowableValues}}
5154
*/
52-
{{#multiplatform}}@Serializable{{/multiplatform}}{{#kotlinx_serialization}}@Serializable{{#enumUnknownDefaultCase}}(with = {{classname}}Serializer::class){{/enumUnknownDefaultCase}}{{^enumUnknownDefaultCase}}{{^isString}}(with = {{classname}}Serializer::class){{/isString}}{{/enumUnknownDefaultCase}}{{/kotlinx_serialization}}
55+
{{#multiplatform}}@Serializable{{^isString}}(with = {{classname}}Serializer::class){{/isString}}{{/multiplatform}}{{#kotlinx_serialization}}@Serializable{{#enumUnknownDefaultCase}}(with = {{classname}}Serializer::class){{/enumUnknownDefaultCase}}{{^enumUnknownDefaultCase}}{{^isString}}(with = {{classname}}Serializer::class){{/isString}}{{/enumUnknownDefaultCase}}{{/kotlinx_serialization}}
5356
{{^multiplatform}}
5457
{{#moshi}}
5558
@JsonClass(generateAdapter = false)
@@ -74,7 +77,9 @@ import kotlinx.serialization.*
7477
{{/kotlinx_serialization}}
7578
{{/multiplatform}}
7679
{{#multiplatform}}
80+
{{#isString}}
7781
@SerialName(value = {{#lambda.doublequote}}{{{value}}}{{/lambda.doublequote}})
82+
{{/isString}}
7883
{{/multiplatform}}
7984
{{#isArray}}
8085
{{#isList}}
@@ -172,3 +177,20 @@ internal object {{classname}}Serializer : KSerializer<{{classname}}> {
172177
}
173178
{{/isString}}{{/enumUnknownDefaultCase}}
174179
{{/kotlinx_serialization}}
180+
{{#multiplatform}}
181+
{{^isString}}
182+
internal object {{classname}}Serializer : KSerializer<{{classname}}> {
183+
override val descriptor = {{dataType}}.serializer().descriptor
184+
185+
override fun deserialize(decoder: Decoder): {{classname}} {
186+
val value = decoder.decodeSerializableValue({{{dataType}}}.serializer())
187+
return {{classname}}.values().firstOrNull { it.value == value }
188+
?: throw IllegalArgumentException("Unknown enum value: $value")
189+
}
190+
191+
override fun serialize(encoder: Encoder, value: {{classname}}) {
192+
encoder.encodeSerializableValue({{{dataType}}}.serializer(), value.value)
193+
}
194+
}
195+
{{/isString}}
196+
{{/multiplatform}}

0 commit comments

Comments
 (0)