I guess it worked that way thanks for the clarifi...
# squarelibraries
l
I guess it worked that way thanks for the clarification
Copy code
class 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()
            }
        }
    }
}