Skip to content

Commit 3bc79c6

Browse files
author
Tatu Saloranta
committed
Update release notes wrt #225
1 parent 1fa512f commit 3bc79c6

File tree

7 files changed

+20
-11
lines changed

7 files changed

+20
-11
lines changed

pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -130,7 +130,7 @@
130130
<artifactId>maven-surefire-plugin</artifactId>
131131
<configuration>
132132
<excludes>
133-
<exclude>com/fasterxml/jackson/**/failing/*.java</exclude>
133+
<exclude>com/fasterxml/jackson/**/failing/*</exclude>
134134
</excludes>
135135
</configuration>
136136
</plugin>

release-notes/CREDITS-2.x

+3
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,6 @@ Stéphane B (StephaneBg@github)
1111
* Submitted fix for #176: Version 2.9.7 breaks compatibility with Android minSdk < 24
1212
(2.10.1)
1313

14+
Alain Lehmann (ciderale@github)
15+
* Contributed fix for #225: Don't instantiate new instances of Kotlin singleton objects
16+
(2.10.1)

release-notes/VERSION-2.x

+2
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@ Project: jackson-module-kotlin
88

99
#176: Version 2.9.7 breaks compatibility with Android minSdk < 24
1010
(reported jurriaan@github, fix submitted by Stéphane B)
11+
#225: Don't instantiate new instances of Kotlin singleton objects
12+
(reported by Dico200@github; fix by Alain L)
1113
- Make byte code target 1.8 (can't do many things with 1.7 anyway)
1214

1315
2.10.0 (26-Sep-2019)

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

+11-8
Original file line numberDiff line numberDiff line change
@@ -5,22 +5,25 @@ import com.fasterxml.jackson.databind.DeserializationConfig
55
import com.fasterxml.jackson.databind.JsonDeserializer
66
import com.fasterxml.jackson.databind.deser.BeanDeserializerModifier
77

8+
// [module-kotlin#225]: keep Kotlin singletons as singletons
89
object KotlinBeanDeserializerModifier: BeanDeserializerModifier() {
910
override fun modifyDeserializer(
1011
config: DeserializationConfig,
1112
beanDesc: BeanDescription,
1213
deserializer: JsonDeserializer<*>
13-
) = super.modifyDeserializer(config, beanDesc, deserializer)
14-
.maybeSingletonDeserializer(objectSingletonInstance(beanDesc.beanClass))
15-
}
16-
17-
fun JsonDeserializer<*>.maybeSingletonDeserializer(singleton: Any?) = when (singleton) {
18-
null -> this
19-
else -> this.asSingletonDeserializer(singleton)
14+
): JsonDeserializer<out Any> {
15+
val modifiedFromParent = super.modifyDeserializer(config, beanDesc, deserializer)
16+
val objectSingletonInstance = objectSingletonInstance(beanDesc.beanClass)
17+
return if (objectSingletonInstance != null) {
18+
KotlinObjectSingletonDeserializer(objectSingletonInstance, modifiedFromParent)
19+
} else {
20+
modifiedFromParent
21+
}
22+
}
2023
}
2124

2225
private fun objectSingletonInstance(beanClass: Class<*>): Any? = if (!beanClass.isKotlinClass()) {
2326
null
2427
} else {
2528
beanClass.kotlin.objectInstance
26-
}
29+
}

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

+1
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ class KotlinModule(val reflectionCacheSize: Int = 512, val nullToEmptyCollection
4343

4444
context.addValueInstantiators(KotlinInstantiators(cache, nullToEmptyCollection, nullToEmptyMap))
4545

46+
// [module-kotlin#225]: keep Kotlin singletons as singletons
4647
context.addBeanDeserializerModifier(KotlinBeanDeserializerModifier)
4748

4849
fun addMixIn(clazz: Class<*>, mixin: Class<*>) {

src/test/kotlin/com/fasterxml/jackson/module/kotlin/failing/Github160.kt renamed to src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/failing/Github160.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.fasterxml.jackson.module.kotlin.test
1+
package com.fasterxml.jackson.module.kotlin.test.failing
22

33
import com.fasterxml.jackson.databind.MapperFeature
44
import com.fasterxml.jackson.module.kotlin.jacksonObjectMapper

src/test/kotlin/com/fasterxml/jackson/module/kotlin/failing/GithubDatabind1329.kt renamed to src/test/kotlin/com/fasterxml/jackson/module/kotlin/test/failing/GithubDatabind1329.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.fasterxml.jackson.module.kotlin.test
1+
package com.fasterxml.jackson.module.kotlin.test.failing
22

33
import com.fasterxml.jackson.annotation.JsonSubTypes
44
import com.fasterxml.jackson.annotation.JsonTypeInfo

0 commit comments

Comments
 (0)