Recognize Kotlin coroutines in isAsyncVoidReturnType

This commit makes sure that Kotlin coroutines are correctly identified
by InvocableHandlerMethod::isAsyncVoidReturnType.

Closes gh-26829
This commit is contained in:
Arjen Poutsma
2022-05-19 13:33:17 +02:00
parent aa8802a81d
commit c55606ed08

View File

@@ -205,15 +205,17 @@ public class InvocableHandlerMethod extends HandlerMethod {
if (reactiveAdapter.isNoValue()) {
return true;
}
Type parameterType = returnType.getGenericParameterType();
if (parameterType instanceof ParameterizedType) {
ParameterizedType type = (ParameterizedType) parameterType;
if (type.getActualTypeArguments().length == 1) {
return Void.class.equals(type.getActualTypeArguments()[0]);
}
}
Type parameterType = returnType.getGenericParameterType();
if (parameterType instanceof ParameterizedType) {
ParameterizedType type = (ParameterizedType) parameterType;
if (type.getActualTypeArguments().length == 1) {
return Void.class.equals(type.getActualTypeArguments()[0]);
}
}
return false;
Method method = returnType.getMethod();
return method != null && KotlinDetector.isSuspendingFunction(method) &&
Void.TYPE.equals(returnType.getParameterType());
}
}