From 39dcd04750eef1581d0bdde394371ef9ca2808b9 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 24 Aug 2020 17:10:49 -0300 Subject: Get rid of Jackson and only use multi-platform serialization --- .../net/taler/wallet/payment/PaymentResponses.kt | 41 ++++++++++++---------- 1 file changed, 23 insertions(+), 18 deletions(-) (limited to 'wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt') diff --git a/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt b/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt index c490654..19007b0 100644 --- a/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt +++ b/wallet/src/main/java/net/taler/wallet/payment/PaymentResponses.kt @@ -16,42 +16,47 @@ package net.taler.wallet.payment -import com.fasterxml.jackson.annotation.JsonTypeInfo -import com.fasterxml.jackson.annotation.JsonTypeInfo.Id.NAME -import com.fasterxml.jackson.annotation.JsonTypeName import kotlinx.serialization.SerialName import kotlinx.serialization.Serializable import net.taler.common.ContractTerms +import net.taler.lib.android.CustomClassDiscriminator import net.taler.lib.common.Amount import net.taler.wallet.transactions.TransactionError -@JsonTypeInfo(use = NAME, property = "status") -sealed class PreparePayResponse(open val proposalId: String) { - @JsonTypeName("payment-possible") +@Serializable +sealed class PreparePayResponse { + companion object : CustomClassDiscriminator { + override val discriminator: String = "status" + } + + @Serializable + @SerialName("payment-possible") data class PaymentPossibleResponse( - override val proposalId: String, + val proposalId: String, val amountRaw: Amount, val amountEffective: Amount, - val contractTerms: ContractTerms - ) : PreparePayResponse(proposalId) { + val contractTerms: ContractTerms, + ) : PreparePayResponse() { fun toPayStatusPrepared() = PayStatus.Prepared( contractTerms = contractTerms, proposalId = proposalId, amountRaw = amountRaw, - amountEffective = amountEffective + amountEffective = amountEffective, ) } - @JsonTypeName("insufficient-balance") + @Serializable + @SerialName("insufficient-balance") data class InsufficientBalanceResponse( - override val proposalId: String, + val proposalId: String, val amountRaw: Amount, - val contractTerms: ContractTerms - ) : PreparePayResponse(proposalId) + val contractTerms: ContractTerms, + ) : PreparePayResponse() - @JsonTypeName("already-confirmed") + @Serializable + @SerialName("already-confirmed") data class AlreadyConfirmedResponse( - override val proposalId: String, + val proposalId: String, /** * Did the payment succeed? */ @@ -62,8 +67,8 @@ sealed class PreparePayResponse(open val proposalId: String) { /** * Redirect URL for the fulfillment page, only given if paid==true. */ - val nextUrl: String? - ) : PreparePayResponse(proposalId) + val nextUrl: String?, + ) : PreparePayResponse() } @Serializable -- cgit v1.2.3