Merge branch '7.0.x'

This commit is contained in:
Sébastien Deleuze
2026-04-10 16:10:45 +02:00
11 changed files with 158 additions and 9 deletions
@@ -329,7 +329,7 @@ public class InvocableHandlerMethod extends HandlerMethod {
private static final String COROUTINE_CONTEXT_ATTRIBUTE = "org.springframework.web.server.CoWebFilter.context";
@SuppressWarnings("DataFlowIssue")
public static @Nullable Object invokeFunction(Method method, Object target, Object[] args, boolean isSuspendingFunction,
public static @Nullable Object invokeFunction(Method method, Object target, @Nullable Object[] args, boolean isSuspendingFunction,
ServerWebExchange exchange) throws InvocationTargetException, IllegalAccessException, NoSuchMethodException {
if (isSuspendingFunction) {
@@ -356,7 +356,7 @@ public class InvocableHandlerMethod extends HandlerMethod {
Object arg = args[index];
if (!(parameter.isOptional() && arg == null)) {
KType type = parameter.getType();
if (!(type.isMarkedNullable() && arg == null) &&
if (!type.isMarkedNullable() &&
type.getClassifier() instanceof KClass<?> kClass &&
KotlinDetector.isInlineClass(JvmClassMappingKt.getJavaClass(kClass))) {
arg = box(kClass, arg);
@@ -378,7 +378,7 @@ public class InvocableHandlerMethod extends HandlerMethod {
private static Object box(KClass<?> kClass, @Nullable Object arg) {
KFunction<?> constructor = Objects.requireNonNull(KClasses.getPrimaryConstructor(kClass));
KType type = constructor.getParameters().get(0).getType();
if (!(type.isMarkedNullable() && arg == null) &&
if (!type.isMarkedNullable() &&
type.getClassifier() instanceof KClass<?> parameterClass &&
KotlinDetector.isInlineClass(JvmClassMappingKt.getJavaClass(parameterClass))) {
arg = box(parameterClass, arg);
@@ -250,6 +250,14 @@ class InvocableHandlerMethodKotlinTests {
assertExceptionThrown(result, IllegalArgumentException::class)
}
@Test
fun valueClassWithNullableAndNonNullParameter() {
this.resolvers.add(stubResolver(LongValueClass(1), LongValueClass::class.java))
val method = ValueClassController::valueClassWithNullable.javaMethod!!
val result = invoke(ValueClassController(), method)
assertHandlerResultValue(result, "1")
}
@Test
fun valueClassWithNullable() {
this.resolvers.add(stubResolver(null, LongValueClass::class.java))