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"
}