Skip to content

Commit 4fca25c

Browse files
committed
Introduce kotlin #554 code.
from FasterXML/jackson-module-kotlin#554
1 parent 858542d commit 4fca25c

File tree

2 files changed

+22
-0
lines changed

2 files changed

+22
-0
lines changed

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

+5
Original file line numberDiff line numberDiff line change
@@ -61,6 +61,11 @@ public inline fun <reified T> ObjectReader.readValuesTyped(jp: JsonParser): Iter
6161
public inline fun <reified T> ObjectReader.treeToValue(n: TreeNode): T? =
6262
readValue(this.treeAsTokens(n), jacksonTypeRef<T>())
6363

64+
public inline fun <reified T, reified U> ObjectMapper.addMixIn(): ObjectMapper =
65+
this.addMixIn(T::class.java, U::class.java)
66+
public inline fun <reified T, reified U> JsonMapper.Builder.addMixIn(): JsonMapper.Builder =
67+
this.addMixIn(T::class.java, U::class.java)
68+
6469
public operator fun ArrayNode.plus(element: Boolean) { add(element) }
6570
public operator fun ArrayNode.plus(element: Short) { add(element) }
6671
public operator fun ArrayNode.plus(element: Int) { add(element) }

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

+17
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,15 @@
11
package com.fasterxml.jackson.module.kotlin._ported.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,17 @@ private class TestExtensionMethods {
8286
val convertValueResult: List<Person> = mapper.convertValue(tree)
8387
assertEquals(listOf(Person("Neo")), convertValueResult)
8488
}
89+
90+
@Test fun mixInExtensionTest() {
91+
data class Person(val name: String)
92+
abstract class PersonMixIn {
93+
@JsonIgnore
94+
var name: String = ""
95+
}
96+
97+
val mapper: JsonMapper = jsonMapper { addMixIn<Person, PersonMixIn>() }
98+
val serializedPerson: String = mapper.writeValueAsString(Person("test"))
99+
100+
assertEquals("{}", serializedPerson)
101+
}
85102
}

0 commit comments

Comments
 (0)