summaryrefslogtreecommitdiff
path: root/merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2020-08-24 17:10:49 -0300
committerTorsten Grote <t@grobox.de>2020-08-24 17:10:49 -0300
commit39dcd04750eef1581d0bdde394371ef9ca2808b9 (patch)
treea33a9c9f2683d911ff4fd2b691d91f15d117ce39 /merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt
parent35bc91761ad1f8336f331c6b04cff8bf4d9ae064 (diff)
downloadtaler-android-39dcd04750eef1581d0bdde394371ef9ca2808b9.tar.gz
taler-android-39dcd04750eef1581d0bdde394371ef9ca2808b9.tar.bz2
taler-android-39dcd04750eef1581d0bdde394371ef9ca2808b9.zip
Get rid of Jackson and only use multi-platform serialization
Diffstat (limited to 'merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt')
-rw-r--r--merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt37
1 files changed, 5 insertions, 32 deletions
diff --git a/merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt b/merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt
index 9c23ef1..9242df3 100644
--- a/merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt
+++ b/merchant-lib/src/main/java/net/taler/merchantlib/Orders.kt
@@ -16,17 +16,10 @@
package net.taler.merchantlib
-import kotlinx.serialization.KSerializer
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
-import kotlinx.serialization.Serializer
-import kotlinx.serialization.encoding.Decoder
-import kotlinx.serialization.encoding.Encoder
-import kotlinx.serialization.json.JsonDecoder
-import kotlinx.serialization.json.JsonObject
-import kotlinx.serialization.json.boolean
-import kotlinx.serialization.json.jsonPrimitive
import net.taler.common.ContractTerms
+import net.taler.lib.android.CustomClassDiscriminator
import net.taler.lib.common.Duration
@Serializable
@@ -44,33 +37,12 @@ data class PostOrderResponse(
)
@Serializable
-sealed class CheckPaymentResponse {
+sealed class CheckPaymentResponse: CustomClassDiscriminator {
+ override val discriminator: String = "order_status"
abstract val paid: Boolean
- @Suppress("EXPERIMENTAL_API_USAGE")
- @Serializer(forClass = CheckPaymentResponse::class)
- companion object : KSerializer<CheckPaymentResponse> {
- override fun deserialize(decoder: Decoder): CheckPaymentResponse {
- val input = decoder as JsonDecoder
- val tree = input.decodeJsonElement() as JsonObject
- val orderStatus = tree.getValue("order_status").jsonPrimitive.content
-// return if (orderStatus == "paid") decoder.json.decodeFromJsonElement(Paid.serializer(), tree)
-// else decoder.json.decodeFromJsonElement(Unpaid.serializer(), tree)
- // manual parsing due to https://github.com/Kotlin/kotlinx.serialization/issues/576
- return if (orderStatus == "paid") Paid(
- refunded = tree.getValue("refunded").jsonPrimitive.boolean
- ) else Unpaid(
- talerPayUri = tree.getValue("taler_pay_uri").jsonPrimitive.content
- )
- }
-
- override fun serialize(encoder: Encoder, value: CheckPaymentResponse) = when (value) {
- is Unpaid -> Unpaid.serializer().serialize(encoder, value)
- is Paid -> Paid.serializer().serialize(encoder, value)
- }
- }
-
@Serializable
+ @SerialName("unpaid")
data class Unpaid(
override val paid: Boolean = false,
@SerialName("taler_pay_uri")
@@ -80,6 +52,7 @@ sealed class CheckPaymentResponse {
) : CheckPaymentResponse()
@Serializable
+ @SerialName("paid")
data class Paid(
override val paid: Boolean = true,
val refunded: Boolean