Skip to content

Commit c3d1790

Browse files
authored
Merge pull request #554 from Sylvain-maillard/mixin_extension_function
Add extension function for addMixin
2 parents 82ad938 + c908c25 commit c3d1790

File tree

2 files changed

+19
-1
lines changed

2 files changed

+19
-1
lines changed

src/main/kotlin/com/fasterxml/jackson/module/kotlin/Extensions.kt

+3
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,9 @@ inline fun <reified T> ObjectReader.readValueTyped(jp: JsonParser): T = readValu
5959
inline fun <reified T> ObjectReader.readValuesTyped(jp: JsonParser): Iterator<T> = readValues(jp, jacksonTypeRef<T>())
6060
inline fun <reified T> ObjectReader.treeToValue(n: TreeNode): T? = readValue(this.treeAsTokens(n), jacksonTypeRef<T>())
6161

62+
inline fun <reified T, reified U> ObjectMapper.addMixIn(): ObjectMapper = this.addMixIn(T::class.java, U::class.java)
63+
inline fun <reified T, reified U> JsonMapper.Builder.addMixIn(): JsonMapper.Builder = this.addMixIn(T::class.java, U::class.java)
64+
6265
operator fun ArrayNode.plus(element: Boolean) = Unit.apply { add(element) }
6366
operator fun ArrayNode.plus(element: Short) = Unit.apply { add(element) }
6467
operator fun ArrayNode.plus(element: Int) = Unit.apply { add(element) }

src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/ExtensionMethodsTests.kt

+16-1
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
package com.fasterxml.jackson.module.kotlin.test
22

3+
import com.fasterxml.jackson.annotation.JsonIgnore
34
import com.fasterxml.jackson.databind.ObjectMapper
45
import com.fasterxml.jackson.databind.SerializationFeature
6+
import com.fasterxml.jackson.databind.json.JsonMapper
57
import com.fasterxml.jackson.databind.node.JsonNodeFactory
8+
import com.fasterxml.jackson.module.kotlin.addMixIn
69
import com.fasterxml.jackson.module.kotlin.contains
710
import com.fasterxml.jackson.module.kotlin.convertValue
811
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper
12+
import com.fasterxml.jackson.module.kotlin.jsonMapper
913
import com.fasterxml.jackson.module.kotlin.minusAssign
1014
import com.fasterxml.jackson.module.kotlin.plusAssign
1115
import com.fasterxml.jackson.module.kotlin.readValue
@@ -82,4 +86,15 @@ class TestExtensionMethods {
8286
val convertValueResult: List<Person> = mapper.convertValue(tree)
8387
assertThat(convertValueResult, `is`(listOf(Person("Neo"))))
8488
}
85-
}
89+
90+
@Test fun mixInExtensionTest() {
91+
92+
data class Person(val name: String)
93+
abstract class PersonMixIn { @JsonIgnore var name: String = "" }
94+
95+
val mapper: JsonMapper = jsonMapper { addMixIn<Person, PersonMixIn>() }
96+
val serializedPerson: String = mapper.writeValueAsString(Person("test"))
97+
98+
assertThat(serializedPerson, `is`("{}"))
99+
}
100+
}

0 commit comments

Comments
 (0)