Fix a regression with Kotlin generic controllers

This commit reintroduces a more defensive parameter type check that
skips KClass casting for generic parameters.

Closes gh-32510
This commit is contained in:
Sébastien Deleuze
2024-03-21 17:53:12 +01:00
parent e17c3d3be4
commit 1e80694daf
6 changed files with 81 additions and 18 deletions

View File

@@ -317,11 +317,9 @@ public class InvocableHandlerMethod extends HandlerMethod {
Object arg = args[index];
if (!(parameter.isOptional() && arg == null)) {
KType type = parameter.getType();
if (!(type.isMarkedNullable() && arg == null)) {
KClass<?> kClass = (KClass<?>) type.getClassifier();
if (KotlinDetector.isInlineClass(JvmClassMappingKt.getJavaClass(kClass))) {
arg = KClasses.getPrimaryConstructor(kClass).call(arg);
}
if (!(type.isMarkedNullable() && arg == null) && type.getClassifier() instanceof KClass<?> kClass
&& KotlinDetector.isInlineClass(JvmClassMappingKt.getJavaClass(kClass))) {
arg = KClasses.getPrimaryConstructor(kClass).call(arg);
}
argMap.put(parameter, arg);
}