diff --git a/src/main/kotlin/com/fasterxml/jackson/module/kotlin/Extensions.kt b/src/main/kotlin/com/fasterxml/jackson/module/kotlin/Extensions.kt index 4179a170..7ccf411c 100644 --- a/src/main/kotlin/com/fasterxml/jackson/module/kotlin/Extensions.kt +++ b/src/main/kotlin/com/fasterxml/jackson/module/kotlin/Extensions.kt @@ -59,6 +59,9 @@ inline fun ObjectReader.readValueTyped(jp: JsonParser): T = readValu inline fun ObjectReader.readValuesTyped(jp: JsonParser): Iterator = readValues(jp, jacksonTypeRef()) inline fun ObjectReader.treeToValue(n: TreeNode): T? = readValue(this.treeAsTokens(n), jacksonTypeRef()) +inline fun ObjectMapper.addMixIn(): ObjectMapper = this.addMixIn(T::class.java, U::class.java) +inline fun JsonMapper.Builder.addMixIn(): JsonMapper.Builder = this.addMixIn(T::class.java, U::class.java) + operator fun ArrayNode.plus(element: Boolean) = Unit.apply { add(element) } operator fun ArrayNode.plus(element: Short) = Unit.apply { add(element) } operator fun ArrayNode.plus(element: Int) = Unit.apply { add(element) } diff --git a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/ExtensionMethodsTests.kt b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/ExtensionMethodsTests.kt index 24ee247f..6d6216ff 100644 --- a/src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/ExtensionMethodsTests.kt +++ b/src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/ExtensionMethodsTests.kt @@ -1,11 +1,15 @@ package com.fasterxml.jackson.module.kotlin.test +import com.fasterxml.jackson.annotation.JsonIgnore import com.fasterxml.jackson.databind.ObjectMapper import com.fasterxml.jackson.databind.SerializationFeature +import com.fasterxml.jackson.databind.json.JsonMapper import com.fasterxml.jackson.databind.node.JsonNodeFactory +import com.fasterxml.jackson.module.kotlin.addMixIn import com.fasterxml.jackson.module.kotlin.contains import com.fasterxml.jackson.module.kotlin.convertValue import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper +import com.fasterxml.jackson.module.kotlin.jsonMapper import com.fasterxml.jackson.module.kotlin.minusAssign import com.fasterxml.jackson.module.kotlin.plusAssign import com.fasterxml.jackson.module.kotlin.readValue @@ -82,4 +86,15 @@ class TestExtensionMethods { val convertValueResult: List = mapper.convertValue(tree) assertThat(convertValueResult, `is`(listOf(Person("Neo")))) } -} \ No newline at end of file + + @Test fun mixInExtensionTest() { + + data class Person(val name: String) + abstract class PersonMixIn { @JsonIgnore var name: String = "" } + + val mapper: JsonMapper = jsonMapper { addMixIn() } + val serializedPerson: String = mapper.writeValueAsString(Person("test")) + + assertThat(serializedPerson, `is`("{}")) + } +}