From c59243c9bdabf07137ad0f070b6ecbde57e66466 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Tue, 1 Sep 2020 09:54:21 -0300 Subject: [wallet] don't crash on serialization errors from wallet-core This should not be necessary if we had a stable API with documentated and versioned changes, but well... --- .../java/net/taler/wallet/backend/WalletBackendApi.kt | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) (limited to 'wallet/src/main') diff --git a/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt b/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt index c6261bf..a72df9c 100644 --- a/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt +++ b/wallet/src/main/java/net/taler/wallet/backend/WalletBackendApi.kt @@ -158,12 +158,19 @@ class WalletBackendApi( } sendRequest(operation, args?.invoke(JSONObject())) { isError, message -> val response = if (isError) { - val error = json.decodeFromString(WalletErrorInfo.serializer(), message.toString()) + val error = + json.decodeFromString(WalletErrorInfo.serializer(), message.toString()) WalletResponse.Error(error) } else { - @Suppress("UNCHECKED_CAST") // if serializer is null, T must be Unit - val t: T = serializer?.let { json.decodeFromString(serializer, message.toString()) } ?: Unit as T - WalletResponse.Success(t) + try { + val t: T = serializer?.let { + json.decodeFromString(serializer, message.toString()) + } ?: Unit as T + WalletResponse.Success(t) + } catch (e: Exception) { + val info = WalletErrorInfo(0, "", e.toString(), null) + WalletResponse.Error(info) + } } cont.resume(response) } -- cgit v1.2.3