diff options
4 files changed, 34 insertions, 11 deletions
diff --git a/cashier/build.gradle b/cashier/build.gradle index 641a039..e443944 100644 --- a/cashier/build.gradle +++ b/cashier/build.gradle @@ -44,6 +44,10 @@ android { jvmTarget = "1.8" } + packagingOptions { + exclude("META-INF/*.kotlin_module") + } + lintOptions { abortOnError true ignoreWarnings false diff --git a/taler-kotlin-android/src/main/java/net/taler/common/ContractTerms.kt b/taler-kotlin-android/src/main/java/net/taler/common/ContractTerms.kt index 0d5fe5b..013427f 100644 --- a/taler-kotlin-android/src/main/java/net/taler/common/ContractTerms.kt +++ b/taler-kotlin-android/src/main/java/net/taler/common/ContractTerms.kt @@ -19,7 +19,6 @@ package net.taler.common import androidx.annotation.RequiresApi import com.fasterxml.jackson.annotation.JsonIgnore import com.fasterxml.jackson.annotation.JsonInclude -import com.fasterxml.jackson.annotation.JsonInclude.Include.NON_EMPTY import com.fasterxml.jackson.annotation.JsonInclude.Include.NON_NULL import com.fasterxml.jackson.annotation.JsonProperty import kotlinx.serialization.SerialName @@ -81,11 +80,3 @@ data class ContractProduct( data class ContractMerchant( val name: String ) - -@Serializable -@JsonInclude(NON_EMPTY) -class Timestamp( - @SerialName("t_ms") - @JsonProperty("t_ms") - val ms: Long -) diff --git a/taler-kotlin-android/src/main/java/net/taler/common/TimestampMixin.kt b/taler-kotlin-android/src/main/java/net/taler/common/TimestampMixin.kt new file mode 100644 index 0000000..28dbe7f --- /dev/null +++ b/taler-kotlin-android/src/main/java/net/taler/common/TimestampMixin.kt @@ -0,0 +1,27 @@ +/* + * This file is part of GNU Taler + * (C) 2020 Taler Systems S.A. + * + * GNU Taler is free software; you can redistribute it and/or modify it under the + * terms of the GNU General Public License as published by the Free Software + * Foundation; either version 3, or (at your option) any later version. + * + * GNU Taler is distributed in the hope that it will be useful, but WITHOUT ANY + * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR + * A PARTICULAR PURPOSE. See the GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License along with + * GNU Taler; see the file COPYING. If not, see <http://www.gnu.org/licenses/> + */ + +package net.taler.common + +import com.fasterxml.jackson.annotation.JsonProperty + +/** + * Used to support Jackson serialization along with KotlinX. + */ +abstract class TimestampMixin( + @get:JsonProperty("t_ms") + val ms: Long +) diff --git a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt index ffa2dea..2c5e318 100644 --- a/wallet/src/main/java/net/taler/wallet/MainViewModel.kt +++ b/wallet/src/main/java/net/taler/wallet/MainViewModel.kt @@ -24,7 +24,6 @@ import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.distinctUntilChanged import androidx.lifecycle.viewModelScope -import com.fasterxml.jackson.databind.DeserializationFeature import com.fasterxml.jackson.databind.DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.module.kotlin.KotlinModule @@ -32,6 +31,8 @@ import com.fasterxml.jackson.module.kotlin.readValue import net.taler.common.Amount import net.taler.common.AmountMixin import net.taler.common.Event +import net.taler.common.Timestamp +import net.taler.common.TimestampMixin import net.taler.common.assertUiThread import net.taler.common.toEvent import net.taler.wallet.backend.WalletBackendApi @@ -95,7 +96,7 @@ class MainViewModel(val app: Application) : AndroidViewModel(app) { .registerModule(KotlinModule()) .configure(FAIL_ON_UNKNOWN_PROPERTIES, false) .addMixIn(Amount::class.java, AmountMixin::class.java) - .enable(DeserializationFeature.ACCEPT_EMPTY_STRING_AS_NULL_OBJECT) + .addMixIn(Timestamp::class.java, TimestampMixin::class.java) val withdrawManager = WithdrawManager(walletBackendApi, mapper) val paymentManager = PaymentManager(walletBackendApi, mapper) |