Merge branch '6.1.x'
This commit is contained in:
@@ -328,11 +328,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);
|
||||
}
|
||||
|
||||
@@ -249,6 +249,15 @@ class InvocableHandlerMethodKotlinTests {
|
||||
assertHandlerResultValue(result, "foo-20")
|
||||
}
|
||||
|
||||
@Test
|
||||
fun genericParameter() {
|
||||
val horse = Animal("horse")
|
||||
this.resolvers.add(stubResolver(horse))
|
||||
val method = AnimalController::handle.javaMethod!!
|
||||
val result = invoke(AnimalController(), method, null)
|
||||
assertHandlerResultValue(result, horse.name)
|
||||
}
|
||||
|
||||
|
||||
private fun invokeForResult(handler: Any, method: Method, vararg providedArgs: Any): HandlerResult? {
|
||||
return invoke(handler, method, *providedArgs).block(Duration.ofSeconds(5))
|
||||
@@ -379,6 +388,19 @@ class InvocableHandlerMethodKotlinTests {
|
||||
}
|
||||
}
|
||||
|
||||
private abstract class GenericController<T : Named> {
|
||||
|
||||
fun handle(named: T) = named.name
|
||||
}
|
||||
|
||||
private class AnimalController : GenericController<Animal>()
|
||||
|
||||
interface Named {
|
||||
val name: String
|
||||
}
|
||||
|
||||
data class Animal(override val name: String) : Named
|
||||
|
||||
@JvmInline
|
||||
value class LongValueClass(val value: Long)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user