summaryrefslogtreecommitdiff
path: root/taler-kotlin-android/src
diff options
context:
space:
mode:
authorTorsten Grote <t@grobox.de>2020-08-05 15:49:18 -0300
committerTorsten Grote <t@grobox.de>2020-08-05 15:49:18 -0300
commit78096abeb8ca000e3480e98d300bec86350f9d13 (patch)
tree28d697cf0f248b58eed419c353e1b2f29def40ad /taler-kotlin-android/src
parentb1acd03f70a33f069a321c6755943421330d2d8d (diff)
downloadtaler-android-78096abeb8ca000e3480e98d300bec86350f9d13.tar.gz
taler-android-78096abeb8ca000e3480e98d300bec86350f9d13.tar.bz2
taler-android-78096abeb8ca000e3480e98d300bec86350f9d13.zip
[wallet] support Timestamp with "never"
Diffstat (limited to 'taler-kotlin-android/src')
-rw-r--r--taler-kotlin-android/src/main/java/net/taler/common/TimestampMixin.kt12
-rw-r--r--taler-kotlin-android/src/test/java/net/taler/common/ContractTermsTest.kt5
2 files changed, 16 insertions, 1 deletions
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
index 28dbe7fe..6c1bebfa 100644
--- a/taler-kotlin-android/src/main/java/net/taler/common/TimestampMixin.kt
+++ b/taler-kotlin-android/src/main/java/net/taler/common/TimestampMixin.kt
@@ -17,11 +17,23 @@
package net.taler.common
import com.fasterxml.jackson.annotation.JsonProperty
+import com.fasterxml.jackson.core.JsonParser
+import com.fasterxml.jackson.databind.DeserializationContext
+import com.fasterxml.jackson.databind.annotation.JsonDeserialize
+import com.fasterxml.jackson.databind.deser.std.StdDeserializer
/**
* Used to support Jackson serialization along with KotlinX.
*/
abstract class TimestampMixin(
+ @get:JsonDeserialize(using = NeverDeserializer::class)
@get:JsonProperty("t_ms")
val ms: Long
)
+
+class NeverDeserializer : StdDeserializer<Long>(Long::class.java) {
+ override fun deserialize(p: JsonParser, ctxt: DeserializationContext): Long {
+ return if (p.text == "never") -1
+ else p.longValue
+ }
+}
diff --git a/taler-kotlin-android/src/test/java/net/taler/common/ContractTermsTest.kt b/taler-kotlin-android/src/test/java/net/taler/common/ContractTermsTest.kt
index 79a75989..077ff512 100644
--- a/taler-kotlin-android/src/test/java/net/taler/common/ContractTermsTest.kt
+++ b/taler-kotlin-android/src/test/java/net/taler/common/ContractTermsTest.kt
@@ -20,6 +20,7 @@ import com.fasterxml.jackson.databind.DeserializationFeature
import com.fasterxml.jackson.databind.ObjectMapper
import com.fasterxml.jackson.module.kotlin.KotlinModule
import com.fasterxml.jackson.module.kotlin.readValue
+import net.taler.common.Timestamp.Companion.NEVER
import org.junit.Assert.assertEquals
import org.junit.Test
@@ -29,6 +30,7 @@ class ContractTermsTest {
.registerModule(KotlinModule())
.configure(DeserializationFeature.FAIL_ON_UNKNOWN_PROPERTIES, false)
.addMixIn(Amount::class.java, AmountMixin::class.java)
+ .addMixIn(Timestamp::class.java, TimestampMixin::class.java)
@Test
fun test() {
@@ -40,7 +42,7 @@ class ContractTermsTest {
},
"fulfillment_url":"https://shop.test.taler.net/essay/1._The_Free_Software_Definition",
"summary":"Essay: 1. The Free Software Definition",
- "refund_deadline":{"t_ms":1596128414000},
+ "refund_deadline":{"t_ms":"never"},
"wire_transfer_deadline":{"t_ms":1596128564000},
"products":[],
"h_wire":"KV40K023N8EC1F5100TYNS23C4XN68Y1Z3PTJSWFGTMCNYD54KT4S791V2VQ91SZANN86VDAA369M4VEZ0KR6DN71EVRRZA71K681M0",
@@ -69,6 +71,7 @@ class ContractTermsTest {
""".trimIndent()
val contractTerms: ContractTerms = mapper.readValue(json)
assertEquals("Essay: 1. The Free Software Definition", contractTerms.summary)
+ assertEquals(Timestamp(NEVER), contractTerms.refundDeadline)
}
}