diff --git a/src/java/pom.xml b/src/java/pom.xml index b382510..0ca3107 100644 --- a/src/java/pom.xml +++ b/src/java/pom.xml @@ -25,6 +25,10 @@ https://git.bitbadger.solutions/bit-badger/solutions.bitbadger.documents + + 2.18.2 + + solutions.bitbadger.documents @@ -34,6 +38,12 @@ ${project.basedir}/../common/target/common-4.0.0-alpha1-SNAPSHOT.jar jar + + com.fasterxml.jackson.core + jackson-databind + ${jackson.version} + test + @@ -65,8 +75,8 @@ - ${project.basedir}/src/test/java ${project.basedir}/src/test/kotlin + ${project.basedir}/src/test/java diff --git a/src/java/src/test/kotlin/JacksonDocumentSerializer.kt b/src/java/src/test/kotlin/JacksonDocumentSerializer.kt new file mode 100644 index 0000000..f491be5 --- /dev/null +++ b/src/java/src/test/kotlin/JacksonDocumentSerializer.kt @@ -0,0 +1,18 @@ +package solutions.bitbadger.documents.java + +import solutions.bitbadger.documents.common.DocumentSerializer +import com.fasterxml.jackson.databind.ObjectMapper + +/** + * A JSON serializer using Jackson's default options + */ +class JacksonDocumentSerializer : DocumentSerializer { + + val mapper = ObjectMapper() + + override fun serialize(document: TDoc) = + mapper.writeValueAsString(document) + + override fun deserialize(json: String, clazz: Class) = + mapper.readValue(json, clazz) +} diff --git a/src/java/src/test/kotlin/integration/Types.kt b/src/java/src/test/kotlin/integration/Types.kt index 730caa0..d239866 100644 --- a/src/java/src/test/kotlin/integration/Types.kt +++ b/src/java/src/test/kotlin/integration/Types.kt @@ -7,13 +7,20 @@ import solutions.bitbadger.documents.java.insert const val TEST_TABLE = "test_table" @Serializable -data class NumIdDocument(val key: Int, val text: String) +data class NumIdDocument(val key: Int, val text: String) { + constructor() : this(0, "") +} @Serializable -data class SubDocument(val foo: String, val bar: String) +data class SubDocument(val foo: String, val bar: String) { + constructor() : this("", "") +} @Serializable data class ArrayDocument(val id: String, val values: List) { + + constructor() : this("", listOf()) + companion object { /** A set of documents used for integration tests */ val testDocuments = listOf( @@ -26,6 +33,9 @@ data class ArrayDocument(val id: String, val values: List) { @Serializable data class JsonDocument(val id: String, val value: String = "", val numValue: Int = 0, val sub: SubDocument? = null) { + + constructor() : this("") + companion object { /** Documents to use for testing */ private val testDocuments = listOf( diff --git a/src/java/src/test/kotlin/integration/postgresql/PgDB.kt b/src/java/src/test/kotlin/integration/postgresql/PgDB.kt index 902acc1..87413b1 100644 --- a/src/java/src/test/kotlin/integration/postgresql/PgDB.kt +++ b/src/java/src/test/kotlin/integration/postgresql/PgDB.kt @@ -13,6 +13,7 @@ class PgDB : ThrowawayDatabase { private var dbName = "" init { + DocumentConfig.serializer = JacksonDocumentSerializer() dbName = "throwaway_${AutoId.generateRandomString(8)}" Configuration.connectionString = connString("postgres") Configuration.dbConn().use { diff --git a/src/java/src/test/kotlin/integration/sqlite/SQLiteDB.kt b/src/java/src/test/kotlin/integration/sqlite/SQLiteDB.kt index 0b98253..5075ae7 100644 --- a/src/java/src/test/kotlin/integration/sqlite/SQLiteDB.kt +++ b/src/java/src/test/kotlin/integration/sqlite/SQLiteDB.kt @@ -14,6 +14,7 @@ class SQLiteDB : ThrowawayDatabase { private var dbName = "" init { + DocumentConfig.serializer = JacksonDocumentSerializer() dbName = "test-db-${AutoId.generateRandomString(8)}.db" Configuration.connectionString = "jdbc:sqlite:$dbName" }