Skip to content

Commit 3ec1661

Browse files
committed
Fixed to not process constructors of Java classes
To avoid errors when referencing Record types defined in Java. Fixed #778.
1 parent 32730dc commit 3ec1661

File tree

1 file changed

+9
-2
lines changed

1 file changed

+9
-2
lines changed

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

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -59,8 +59,15 @@ internal class ReflectionCache(reflectionCacheSize: Int) : Serializable {
5959
private val valueClassBoxConverterCache: LRUMap<KClass<*>, ValueClassBoxConverter<*, *>> =
6060
LRUMap(0, reflectionCacheSize)
6161

62-
fun kotlinFromJava(key: Constructor<*>): KFunction<*>? = javaExecutableToKotlin.get(key)
63-
?: key.valueClassAwareKotlinFunction()?.let { javaExecutableToKotlin.putIfAbsent(key, it) ?: it }
62+
// If the Record type defined in Java is processed,
63+
// an error will occur, so if it is not defined in Kotlin, skip the process.
64+
// see https://github.com/FasterXML/jackson-module-kotlin/issues/778
65+
fun kotlinFromJava(key: Constructor<*>): KFunction<*>? = if (key.declaringClass.isKotlinClass()) {
66+
javaExecutableToKotlin.get(key)
67+
?: key.valueClassAwareKotlinFunction()?.let { javaExecutableToKotlin.putIfAbsent(key, it) ?: it }
68+
} else {
69+
null
70+
}
6471

6572
fun kotlinFromJava(key: Method): KFunction<*>? = javaExecutableToKotlin.get(key)
6673
?: key.kotlinFunction?.let { javaExecutableToKotlin.putIfAbsent(key, it) ?: it }

0 commit comments

Comments
 (0)