summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIván Ávalos <avalos@disroot.org>2023-03-02 20:57:29 -0600
committerTorsten Grote <t@grobox.de>2023-03-07 15:06:13 -0300
commit2d9cd67b9952e4915e4bf23ac645ff7d2c9edaff (patch)
tree55330e92c83dff4d3d2588f2a24f9fd4061cd5c1
parent271fceac1ed7245fbbd2b41cb595080f0e0afb93 (diff)
downloadtaler-android-2d9cd67b9952e4915e4bf23ac645ff7d2c9edaff.tar.gz
taler-android-2d9cd67b9952e4915e4bf23ac645ff7d2c9edaff.tar.bz2
taler-android-2d9cd67b9952e4915e4bf23ac645ff7d2c9edaff.zip
[wallet] Implemented JSON serializer for TalerErrorCode
bug 0007606
-rw-r--r--wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt14
1 files changed, 11 insertions, 3 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt b/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt
index 22dcba9..37bf91e 100644
--- a/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt
+++ b/wallet/src/main/java/net/taler/wallet/backend/WalletResponse.kt
@@ -26,6 +26,9 @@ import kotlinx.serialization.encoding.Decoder
import kotlinx.serialization.encoding.Encoder
import kotlinx.serialization.json.JsonDecoder
import kotlinx.serialization.json.JsonElement
+import kotlinx.serialization.json.JsonObject
+import kotlinx.serialization.json.JsonPrimitive
+import kotlinx.serialization.json.buildJsonObject
import kotlinx.serialization.json.jsonPrimitive
@Serializable
@@ -53,7 +56,7 @@ sealed class WalletResponse<T> {
}
}
-@Serializable(with = TalerErrorInfoDeserializer::class)
+@Serializable(with = TalerErrorInfoSerializer::class)
data class TalerErrorInfo(
// Numeric error code defined defined in the
// GANA gnu-taler-error-codes registry.
@@ -81,7 +84,7 @@ data class TalerErrorInfo(
extra[key]?.jsonPrimitive?.content
}
-class TalerErrorInfoDeserializer : KSerializer<TalerErrorInfo> {
+class TalerErrorInfoSerializer : KSerializer<TalerErrorInfo> {
private val stringToJsonElementSerializer = MapSerializer(String.serializer(), JsonElement.serializer())
override val descriptor: SerialDescriptor
@@ -110,6 +113,11 @@ class TalerErrorInfoDeserializer : KSerializer<TalerErrorInfo> {
}
override fun serialize(encoder: Encoder, value: TalerErrorInfo) {
- error("not supported")
+ encoder.encodeSerializableValue(JsonObject.serializer(), buildJsonObject {
+ put("code", JsonPrimitive(value.code.code))
+ put("hint", JsonPrimitive(value.hint))
+ put("message", JsonPrimitive(value.message))
+ value.extra.forEach { (key, value) -> put(key, value) }
+ })
}
}