1
1
package com.fasterxml.jackson.module.kotlin
2
2
3
+ import com.fasterxml.jackson.annotation.OptBoolean
3
4
import com.fasterxml.jackson.databind.introspect.AnnotatedConstructor
4
5
import com.fasterxml.jackson.databind.introspect.AnnotatedMember
5
6
import com.fasterxml.jackson.databind.introspect.AnnotatedMethod
@@ -22,32 +23,12 @@ import kotlin.reflect.jvm.kotlinFunction
22
23
internal class ReflectionCache (reflectionCacheSize : Int ) : Serializable {
23
24
companion object {
24
25
// Increment is required when properties that use LRUMap are changed.
25
- private const val serialVersionUID = 3L
26
- }
27
-
28
- sealed class BooleanTriState (val value : Boolean? ) {
29
- class True : BooleanTriState (true )
30
- class False : BooleanTriState (false )
31
- class Empty : BooleanTriState (null )
32
-
33
- companion object {
34
- private val TRUE = True ()
35
- private val FALSE = False ()
36
- private val EMPTY = Empty ()
37
-
38
- fun fromBoolean (value : Boolean? ): BooleanTriState {
39
- return when (value) {
40
- null -> EMPTY
41
- true -> TRUE
42
- false -> FALSE
43
- }
44
- }
45
- }
26
+ private const val serialVersionUID = 4L
46
27
}
47
28
48
29
private val javaExecutableToKotlin = LRUMap <Executable , KFunction <* >>(reflectionCacheSize, reflectionCacheSize)
49
30
private val javaExecutableToValueCreator = LRUMap <Executable , ValueCreator <* >>(reflectionCacheSize, reflectionCacheSize)
50
- private val javaMemberIsRequired = LRUMap <AnnotatedMember , BooleanTriState ?>(reflectionCacheSize, reflectionCacheSize)
31
+ private val javaMemberIsRequired = LRUMap <AnnotatedMember , OptBoolean ?>(reflectionCacheSize, reflectionCacheSize)
51
32
52
33
// Initial size is 0 because the value class is not always used
53
34
private val valueClassReturnTypeCache: LRUMap <AnnotatedMethod , Optional <KClass <* >>> =
@@ -102,8 +83,8 @@ internal class ReflectionCache(reflectionCacheSize: Int) : Serializable {
102
83
)
103
84
} // we cannot reflect this method so do the default Java-ish behavior
104
85
105
- fun javaMemberIsRequired (key : AnnotatedMember , calc : (AnnotatedMember ) -> Boolean? ): Boolean? = javaMemberIsRequired.get(key)?.value
106
- ? : calc(key).let { javaMemberIsRequired.putIfAbsent(key, BooleanTriState .fromBoolean(it))?.value ? : it }
86
+ fun javaMemberIsRequired (key : AnnotatedMember , calc : (AnnotatedMember ) -> Boolean? ): Boolean? = javaMemberIsRequired.get(key)?.asBoolean()
87
+ ? : calc(key).let { javaMemberIsRequired.putIfAbsent(key, OptBoolean .fromBoolean(it))?.asBoolean() ? : it }
107
88
108
89
private fun AnnotatedMethod.getValueClassReturnType (): KClass <* >? {
109
90
val getter = this .member.apply {
0 commit comments