From 05fb868574bb19094524ba00465f45fea312a309 Mon Sep 17 00:00:00 2001 From: Fabrice Lecomte Date: Sun, 15 Mar 2020 20:18:55 +0100 Subject: [PATCH] Add serialise list --- src/main/kotlin/fr/postgresjson/connexion/Connection.kt | 2 +- src/main/kotlin/fr/postgresjson/serializer/Serializer.kt | 1 + src/test/kotlin/fr/postgresjson/SerializerTest.kt | 8 ++++++++ 3 files changed, 10 insertions(+), 1 deletion(-) diff --git a/src/main/kotlin/fr/postgresjson/connexion/Connection.kt b/src/main/kotlin/fr/postgresjson/connexion/Connection.kt index 000f0cd..27a60f4 100644 --- a/src/main/kotlin/fr/postgresjson/connexion/Connection.kt +++ b/src/main/kotlin/fr/postgresjson/connexion/Connection.kt @@ -205,7 +205,7 @@ class Connection( private fun compileArgs(values: List): List { return values.map { - if (it is Serializable) { + if (it is Serializable || (it is List<*> && it.firstOrNull() is Serializable)) { serializer.serialize(it) } else { it diff --git a/src/main/kotlin/fr/postgresjson/serializer/Serializer.kt b/src/main/kotlin/fr/postgresjson/serializer/Serializer.kt index 52a339d..a8df7e4 100644 --- a/src/main/kotlin/fr/postgresjson/serializer/Serializer.kt +++ b/src/main/kotlin/fr/postgresjson/serializer/Serializer.kt @@ -49,5 +49,6 @@ class Serializer(val mapper: ObjectMapper = jacksonObjectMapper()) { } fun Serializable.serialize(pretty: Boolean = false) = Serializer().serialize(this, pretty) +fun List.serialize(pretty: Boolean = false) = Serializer().serialize(this, pretty) inline fun E.deserialize(json: String) = Serializer().deserialize(json, this) inline fun String.deserialize() = Serializer().deserialize(this) \ No newline at end of file diff --git a/src/test/kotlin/fr/postgresjson/SerializerTest.kt b/src/test/kotlin/fr/postgresjson/SerializerTest.kt index f222fb7..dac2d2b 100644 --- a/src/test/kotlin/fr/postgresjson/SerializerTest.kt +++ b/src/test/kotlin/fr/postgresjson/SerializerTest.kt @@ -41,6 +41,14 @@ internal class SerializerTest { assertTrue(json.contains(""""val1":"plop","val2":123""")) } + @Test + fun serializeList() { + val list = listOf(ObjTest("one", 1), ObjTest("two", 2)) + val json = list.serialize() + assertTrue(json.contains(""""val1":"one","val2":1""")) + assertTrue(json.contains(""""val1":"two","val2":2""")) + } + @Test fun serializeDate() { val objDate = ObjTestDate(DateTime.parse("2019-07-30T14:08:51.420108+04:00"))