Skip to content

Commit dc75c2f

Browse files
committed
treeToValue extensions function should not have type erasure and should work similar to readValue
1 parent 9da59a4 commit dc75c2f

File tree

3 files changed

+19
-1
lines changed

3 files changed

+19
-1
lines changed

release-notes/CREDITS-2.x

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -119,3 +119,6 @@ Konstantin Volivach (kostya05983@github)
119119
Laimonas Turauskas (Laimiux@github)
120120
* Contributed fix for #180: handle nullable method parameters correctly (for creator methods)
121121
(2.10.1)
122+
123+
Fedor Bobin (Fuud@github)
124+
* Contributed fix for #496 and #45: treeToValue extension function should not have type erasure

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -46,7 +46,7 @@ inline fun <reified T> ObjectMapper.readValue(src: Reader): T = readValue(src, j
4646
inline fun <reified T> ObjectMapper.readValue(src: InputStream): T = readValue(src, jacksonTypeRef<T>())
4747
inline fun <reified T> ObjectMapper.readValue(src: ByteArray): T = readValue(src, jacksonTypeRef<T>())
4848

49-
inline fun <reified T> ObjectMapper.treeToValue(n: TreeNode): T? = readValue(this.treeAsTokens(n), jacksonTypeRef<T>())
49+
inline fun <reified T> ObjectMapper.treeToValue(n: TreeNode): T = readValue(this.treeAsTokens(n), jacksonTypeRef<T>())
5050
inline fun <reified T> ObjectMapper.convertValue(from: Any): T = convertValue(from, jacksonTypeRef<T>())
5151

5252
inline fun <reified T> ObjectReader.readValueTyped(jp: JsonParser): T = readValue(jp, jacksonTypeRef<T>())

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

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -61,4 +61,19 @@ class TestExtensionMethods {
6161
(4 downTo 0).forEach { arrayNode -= it }
6262
assertThat(arrayNode.size(), `is`(0))
6363
}
64+
65+
@Test fun noTypeErasure(){
66+
data class Person(val name: String)
67+
val source = """[ { "name" : "Neo" } ]"""
68+
val tree = mapper.readTree(source)
69+
70+
val readValueResult: List<Person> = mapper.readValue(source)
71+
assertThat(readValueResult, `is`(listOf(Person("Neo"))))
72+
73+
val treeToValueResult: List<Person> = mapper.treeToValue(tree)
74+
assertThat(treeToValueResult, `is`(listOf(Person("Neo"))))
75+
76+
val convertValueResult: List<Person> = mapper.convertValue(tree)
77+
assertThat(convertValueResult, `is`(listOf(Person("Neo"))))
78+
}
6479
}

0 commit comments

Comments
 (0)