diff --git a/pom.xml b/pom.xml index e00df6a5..a3d6907a 100644 --- a/pom.xml +++ b/pom.xml @@ -53,7 +53,7 @@ 1.8 4.12 - 1.3.72 + 1.4.10 com/fasterxml/jackson/module/kotlin @@ -138,6 +138,11 @@ test-compile + + + -Xinline-classes + + @@ -145,10 +150,10 @@ org.apache.maven.plugins maven-surefire-plugin - - com/fasterxml/jackson/**/failing/* - - + + com/fasterxml/jackson/**/failing/* + + @@ -171,11 +176,11 @@ true - - - de.jjohannes - gradle-module-metadata-maven-plugin - + + + de.jjohannes + gradle-module-metadata-maven-plugin + diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/failing/Github356.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/failing/Github356.kt new file mode 100644 index 00000000..08fc8c88 --- /dev/null +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/failing/Github356.kt @@ -0,0 +1,33 @@ +package com.fasterxml.jackson.module.kotlin.test.failing + +import com.fasterxml.jackson.databind.annotation.JsonDeserialize +import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper +import com.fasterxml.jackson.module.kotlin.readValue +import org.junit.Test +import kotlin.test.assertEquals + +class TestGithub356 { + private val mapper = jacksonObjectMapper() + + @Test + fun deserializeInlineClass() { + val original = ClassWithInlineMember(InlineClass("bar")) + assertEquals(original, mapper.readValue(mapper.writeValueAsString(original))) + } + + @Test + fun serializeInlineClass() { + val original = ClassWithInlineMember(InlineClass("bar")) + assertEquals("""{"inlineClassProperty":"bar"}""", mapper.writeValueAsString(original)) + } +} + +@Suppress("EXPERIMENTAL_FEATURE_WARNING") // Enabled in test-compile +inline class InlineClass(val value: String) + +@JsonDeserialize(builder = ClassWithInlineMember.JacksonBuilder::class) +data class ClassWithInlineMember(val inlineClassProperty: InlineClass) { + data class JacksonBuilder constructor(val inlineClassProperty: String) { + fun build() = ClassWithInlineMember(InlineClass(inlineClassProperty)) + } +}