Nikky
09/11/2018, 9:09 PMoverride suspend fun read(type: TypeInfo, response: HttpResponse): Any {
val reified = type.reifiedType
if(reified is ParameterizedType) {
val arguments = reified.actualTypeArguments
val first = arguments.first()
if(first is WildcardType) {
val upperFirst = first.upperBounds.first()
println("upper bound: $upperFirst")
println("upper bound::class ${upperFirst::class}")
val kclass = kotlin.jvm.internal.ClassReference(upperFirst as Class<*>)
val serializer = when {
type.type == List::class -> kclass.serializer().list
type.type == Set::class -> kclass.serializer().set
else -> {
throw IllegalStateException("WildcardType '${type.reifiedType.typeName}' is not implemented")
}
}
return json.parse(serializer, response.readText())
}
}
return json.parse(type.type.serializer(), response.readText())
}