leosan
06/11/2019, 3:02 PMclass PaymentMethodAdapter : JsonAdapter.Factory {
override fun create(type: Type, annotations: MutableSet<out Annotation>, moshi: Moshi): JsonAdapter<*>? {
if (!Types.getRawType(type).isAssignableFrom(PaymentMethod::class.java)) {
return null
}
return object: JsonAdapter<PaymentMethod>() {
private val tokenizedCardAdapter = moshi.adapter<TokenizedCard>(TokenizedCard::class.java)
private val unregisteredCardAdapter = moshi.adapter<UnregisteredCard>(UnregisteredCard::class.java)
override fun toJson(jsonWriter: JsonWriter, value: PaymentMethod?) {
requireNotNull(value)
when (value) {
is TokenizedCard -> { tokenizedCardAdapter.toJson(jsonWriter,value) }
is UnregisteredCard -> { unregisteredCardAdapter.toJson(jsonWriter,value) }
}
}
override fun fromJson(reader: JsonReader): PaymentMethod? {
TODO()
}
}
}
}