Skip to content

Commit d85cc9e

Browse files
committed
Merge branch 'test-for-kotlin-instantiators' into fix-findValueInstantiator
2 parents 5ced96c + 9838ab4 commit d85cc9e

File tree

2 files changed

+67
-2
lines changed

2 files changed

+67
-2
lines changed

pom.xml

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,12 @@
88
<parent>
99
<groupId>com.fasterxml.jackson</groupId>
1010
<artifactId>jackson-base</artifactId>
11-
<version>2.14.0-SNAPSHOT</version>
11+
<version>2.13.1-SNAPSHOT</version>
1212
</parent>
1313
<groupId>com.fasterxml.jackson.module</groupId>
1414
<artifactId>jackson-module-kotlin</artifactId>
1515
<name>jackson-module-kotlin</name>
16-
<version>2.14.0-SNAPSHOT</version>
16+
<version>2.13.1-SNAPSHOT</version>
1717
<packaging>bundle</packaging>
1818
<description>Add-on module for Jackson (https://github.com/FasterXML/jackson/) to support
1919
Kotlin language, specifically introspection of method/constructor parameter names,
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
package com.fasterxml.jackson.module.kotlin
2+
3+
import com.fasterxml.jackson.databind.deser.std.StdValueInstantiator
4+
import org.junit.Assert.*
5+
import org.junit.Test
6+
7+
class KotlinInstantiatorsTest {
8+
private val mapper = jacksonObjectMapper()
9+
private val deserConfig = mapper.deserializationConfig
10+
11+
private val kotlinInstantiators = KotlinInstantiators(
12+
ReflectionCache(10),
13+
nullToEmptyCollection = false,
14+
nullToEmptyMap = false,
15+
nullIsSameAsDefault = false,
16+
strictNullChecks = false
17+
)
18+
19+
@Test
20+
fun `Provides default instantiator for Java class`() {
21+
val javaType = mapper.constructType(String::class.java)
22+
val defaultInstantiator = StdValueInstantiator(deserConfig, javaType)
23+
val instantiator = kotlinInstantiators.findValueInstantiator(
24+
deserConfig,
25+
deserConfig.introspect(javaType),
26+
defaultInstantiator
27+
)
28+
29+
assertEquals(defaultInstantiator, instantiator)
30+
}
31+
32+
@Test
33+
fun `Provides KotlinValueInstantiator for Kotlin class`() {
34+
class TestClass
35+
36+
val javaType = mapper.constructType(TestClass::class.java)
37+
val instantiator = kotlinInstantiators.findValueInstantiator(
38+
deserConfig,
39+
deserConfig.introspect(javaType),
40+
StdValueInstantiator(deserConfig, javaType)
41+
)
42+
43+
assertTrue(instantiator is StdValueInstantiator)
44+
assertTrue(instantiator::class == KotlinValueInstantiator::class)
45+
}
46+
47+
@Test
48+
fun `Throws for Kotlin class when default instantiator isn't StdValueInstantiator`() {
49+
class TestClass
50+
class DefaultClass
51+
52+
val subClassInstantiator = object : StdValueInstantiator(
53+
deserConfig,
54+
mapper.constructType(DefaultClass::class.java)
55+
) {}
56+
57+
assertThrows(IllegalStateException::class.java) {
58+
kotlinInstantiators.findValueInstantiator(
59+
deserConfig,
60+
deserConfig.introspect(mapper.constructType(TestClass::class.java)),
61+
subClassInstantiator
62+
)
63+
}
64+
}
65+
}

0 commit comments

Comments
 (0)