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... --- wallet/build.gradle | 8 ++++---- .../java/net/taler/wallet/backend/WalletBackendApi.kt | 15 +++++++++++---- .../java/net/taler/wallet/payment/PaymentResponsesTest.kt | 1 - 3 files changed, 15 insertions(+), 9 deletions(-) (limited to 'wallet') diff --git a/wallet/build.gradle b/wallet/build.gradle index 70b9648..5d02bca 100644 --- a/wallet/build.gradle +++ b/wallet/build.gradle @@ -105,8 +105,8 @@ dependencies { implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" implementation 'androidx.preference:preference:1.1.1' - implementation 'com.google.android.material:material:1.2.0' - implementation 'androidx.constraintlayout:constraintlayout:2.0.0' + implementation "com.google.android.material:material:$material_version" + implementation "androidx.constraintlayout:constraintlayout:$constraintlayout_version" // Lists and Selection implementation "androidx.recyclerview:recyclerview:1.1.0" @@ -133,8 +133,8 @@ dependencies { testImplementation 'junit:junit:4.13' testImplementation 'org.json:json:20200518' - androidTestImplementation 'androidx.test:runner:1.2.0' - androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0' + androidTestImplementation 'androidx.test:runner:1.3.0' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.3.0' } def walletLibraryDir = "src/main/assets" 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) } diff --git a/wallet/src/test/java/net/taler/wallet/payment/PaymentResponsesTest.kt b/wallet/src/test/java/net/taler/wallet/payment/PaymentResponsesTest.kt index 15702c6..fbdc07d 100644 --- a/wallet/src/test/java/net/taler/wallet/payment/PaymentResponsesTest.kt +++ b/wallet/src/test/java/net/taler/wallet/payment/PaymentResponsesTest.kt @@ -57,7 +57,6 @@ class PaymentResponsesTest { "max_wire_fee": "CHF:0.1", "max_fee": "CHF:0.1", "wire_fee_amortization": 10, - "merchant_base_url": "https:\/\/backend.chf.taler.net\/instances\/department\/", "merchant": { "name": "BFH Department Technik und Informatik", "instance": "department" -- cgit v1.2.3