forked from loafle/openapi-generator-original
Fix explicit KSerializer's name & generation when used in container (#20093)
* [kotlin][client] properly reference the same custom serializer name * [kotlin][client] properly use correct type when enum in container
This commit is contained in:
parent
d442fc9a65
commit
96adf2f8f5
@ -111,7 +111,7 @@ import {{packageName}}.infrastructure.ITransformForStorage
|
||||
*/
|
||||
{{^multiplatform}}
|
||||
{{#kotlinx_serialization}}
|
||||
{{#serializableModel}}@KSerializable{{/serializableModel}}{{^serializableModel}}@Serializable{{#enumUnknownDefaultCase}}(with = {{classname}}Serializer::class){{/enumUnknownDefaultCase}}{{/serializableModel}}
|
||||
{{#serializableModel}}@KSerializable{{/serializableModel}}{{^serializableModel}}@Serializable{{#enumUnknownDefaultCase}}(with = {{{nameInPascalCase}}}Serializer::class){{/enumUnknownDefaultCase}}{{/serializableModel}}
|
||||
{{/kotlinx_serialization}}
|
||||
{{#moshi}}
|
||||
@JsonClass(generateAdapter = false)
|
||||
@ -147,16 +147,16 @@ import {{packageName}}.infrastructure.ITransformForStorage
|
||||
{{#enumUnknownDefaultCase}}
|
||||
|
||||
internal object {{nameInPascalCase}}Serializer : KSerializer<{{nameInPascalCase}}> {
|
||||
override val descriptor = {{{dataType}}}.serializer().descriptor
|
||||
override val descriptor = {{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}.serializer().descriptor
|
||||
|
||||
override fun deserialize(decoder: Decoder): {{nameInPascalCase}} {
|
||||
val value = decoder.decodeSerializableValue({{{dataType}}}.serializer())
|
||||
val value = decoder.decodeSerializableValue({{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}.serializer())
|
||||
return {{nameInPascalCase}}.values().firstOrNull { it.value == value }
|
||||
?: {{nameInPascalCase}}.{{#allowableValues}}{{#enumVars}}{{#-last}}{{&name}}{{/-last}}{{/enumVars}}{{/allowableValues}}
|
||||
}
|
||||
|
||||
override fun serialize(encoder: Encoder, value: {{nameInPascalCase}}) {
|
||||
encoder.encodeSerializableValue({{{dataType}}}.serializer(), value.value)
|
||||
encoder.encodeSerializableValue({{^isContainer}}{{dataType}}{{/isContainer}}{{#isContainer}}kotlin.String{{/isContainer}}.serializer(), value.value)
|
||||
}
|
||||
}
|
||||
{{/enumUnknownDefaultCase}}
|
||||
|
@ -68,7 +68,7 @@ data class Order (
|
||||
*
|
||||
* Values: placed,approved,delivered,unknown_default_open_api
|
||||
*/
|
||||
@Serializable(with = OrderSerializer::class)
|
||||
@Serializable(with = StatusSerializer::class)
|
||||
enum class Status(val value: kotlin.String) {
|
||||
@SerialName(value = "placed") placed("placed"),
|
||||
@SerialName(value = "approved") approved("approved"),
|
||||
|
@ -70,7 +70,7 @@ data class Pet (
|
||||
*
|
||||
* Values: available,pending,sold,unknown_default_open_api
|
||||
*/
|
||||
@Serializable(with = PetSerializer::class)
|
||||
@Serializable(with = StatusSerializer::class)
|
||||
enum class Status(val value: kotlin.String) {
|
||||
@SerialName(value = "available") available("available"),
|
||||
@SerialName(value = "pending") pending("pending"),
|
||||
|
Loading…
x
Reference in New Issue
Block a user