[kotlin][client] add support for unknown default case with Kotlinx Serialization (#12930)

* [kotlin][client] Kotlinx Serialization cleanup

* [kotlin][client] Kotlinx Serialization cleanup

* [kotlin][client] add support for unknown default case with Kotlinx Serialization

* [kotlin][client] add support for unknown default case with Kotlinx Serialization

* [kotlin][client] add support for unknown default case with Kotlinx Serialization

* [kotlin][client] improve Kotlinx Serialization naming

* [kotlin][client] improve Kotlinx Serialization naming
This commit is contained in:
Bruno Coelho
2022-07-26 09:42:19 +01:00
committed by GitHub
parent bc98014146
commit 87dc75780a
62 changed files with 825 additions and 277 deletions

View File

@@ -16,7 +16,7 @@ import retrofit2.Converter
import retrofit2.converter.scalars.ScalarsConverterFactory
import com.jakewharton.retrofit2.converter.kotlinx.serialization.asConverterFactory
import org.openapitools.client.infrastructure.Serializer.jvmJson
import org.openapitools.client.infrastructure.Serializer.kotlinxSerializationJson
import okhttp3.MediaType.Companion.toMediaType
class ApiClient(
@@ -32,7 +32,7 @@ class ApiClient(
Retrofit.Builder()
.baseUrl(baseUrl)
.addConverterFactory(ScalarsConverterFactory.create())
.addConverterFactory(jvmJson.asConverterFactory("application/json".toMediaType()))
.addConverterFactory(kotlinxSerializationJson.asConverterFactory("application/json".toMediaType()))
.apply {
if (converterFactory != null) {
addConverterFactory(converterFactory)

View File

@@ -15,8 +15,13 @@ import java.util.concurrent.atomic.AtomicInteger
import java.util.concurrent.atomic.AtomicLong
object Serializer {
@Deprecated("Use Serializer.kotlinxSerializationAdapters instead", replaceWith = ReplaceWith("Serializer.kotlinxSerializationAdapters"))
@JvmStatic
val kotlinSerializationAdapters = SerializersModule {
val kotlinSerializationAdapters: SerializersModule
get() { return kotlinxSerializationAdapters }
@JvmStatic
val kotlinxSerializationAdapters = SerializersModule {
contextual(BigDecimal::class, BigDecimalAdapter)
contextual(BigInteger::class, BigIntegerAdapter)
contextual(LocalDate::class, LocalDateAdapter)
@@ -31,6 +36,17 @@ object Serializer {
contextual(StringBuilder::class, StringBuilderAdapter)
}
@Deprecated("Use Serializer.kotlinxSerializationJson instead", replaceWith = ReplaceWith("Serializer.kotlinxSerializationJson"))
@JvmStatic
val jvmJson: Json by lazy { Json { serializersModule = kotlinSerializationAdapters } }
val jvmJson: Json
get() { return kotlinxSerializationJson }
@JvmStatic
val kotlinxSerializationJson: Json by lazy {
Json {
serializersModule = kotlinxSerializationAdapters
ignoreUnknownKeys = true
isLenient = true
}
}
}