Merge branch '6.1.x'
This commit is contained in:
@@ -313,18 +313,20 @@ public class InvocableHandlerMethod extends HandlerMethod {
|
||||
switch (parameter.getKind()) {
|
||||
case INSTANCE -> argMap.put(parameter, target);
|
||||
case VALUE, EXTENSION_RECEIVER -> {
|
||||
if (!parameter.isOptional() || args[index] != null) {
|
||||
Object arg = args[index];
|
||||
if (!(parameter.isOptional() && arg == null)) {
|
||||
if (parameter.getType().getClassifier() instanceof KClass<?> kClass) {
|
||||
Class<?> javaClass = JvmClassMappingKt.getJavaClass(kClass);
|
||||
if (KotlinDetector.isInlineClass(javaClass)) {
|
||||
argMap.put(parameter, KClasses.getPrimaryConstructor(kClass).call(args[index]));
|
||||
if (KotlinDetector.isInlineClass(javaClass)
|
||||
&& !(parameter.getType().isMarkedNullable() && arg == null)) {
|
||||
argMap.put(parameter, KClasses.getPrimaryConstructor(kClass).call(arg));
|
||||
}
|
||||
else {
|
||||
argMap.put(parameter, args[index]);
|
||||
argMap.put(parameter, arg);
|
||||
}
|
||||
}
|
||||
else {
|
||||
argMap.put(parameter, args[index]);
|
||||
argMap.put(parameter, arg);
|
||||
}
|
||||
}
|
||||
index++;
|
||||
|
||||
@@ -105,6 +105,13 @@ class InvocableHandlerMethodKotlinTests {
|
||||
Assertions.assertThatIllegalArgumentException().isThrownBy { invocable.invokeForRequest(request, null) }
|
||||
}
|
||||
|
||||
@Test
|
||||
fun valueClassWithNullable() {
|
||||
composite.addResolver(StubArgumentResolver(LongValueClass::class.java, null))
|
||||
val value = getInvocable(ValueClassHandler::class.java, LongValueClass::class.java).invokeForRequest(request, null)
|
||||
Assertions.assertThat(value).isNull()
|
||||
}
|
||||
|
||||
@Test
|
||||
fun propertyAccessor() {
|
||||
val value = getInvocable(PropertyAccessorHandler::class.java).invokeForRequest(request, null)
|
||||
@@ -173,6 +180,9 @@ class InvocableHandlerMethodKotlinTests {
|
||||
fun valueClassWithInit(valueClass: ValueClassWithInit) =
|
||||
valueClass
|
||||
|
||||
fun valueClassWithNullable(limit: LongValueClass?) =
|
||||
limit?.value
|
||||
|
||||
}
|
||||
|
||||
private class PropertyAccessorHandler {
|
||||
|
||||
Reference in New Issue
Block a user