Consistent parameter retrieval across InvocableHandlerMethod variants
See gh-22900
This commit is contained in:
parent
3f85a7db1b
commit
c841b62bb0
|
@ -127,10 +127,11 @@ public class InvocableHandlerMethod extends HandlerMethod {
|
||||||
* @since 5.1.2
|
* @since 5.1.2
|
||||||
*/
|
*/
|
||||||
protected Object[] getMethodArgumentValues(Message<?> message, Object... providedArgs) throws Exception {
|
protected Object[] getMethodArgumentValues(Message<?> message, Object... providedArgs) throws Exception {
|
||||||
if (ObjectUtils.isEmpty(getMethodParameters())) {
|
MethodParameter[] parameters = getMethodParameters();
|
||||||
|
if (ObjectUtils.isEmpty(parameters)) {
|
||||||
return EMPTY_ARGS;
|
return EMPTY_ARGS;
|
||||||
}
|
}
|
||||||
MethodParameter[] parameters = getMethodParameters();
|
|
||||||
Object[] args = new Object[parameters.length];
|
Object[] args = new Object[parameters.length];
|
||||||
for (int i = 0; i < parameters.length; i++) {
|
for (int i = 0; i < parameters.length; i++) {
|
||||||
MethodParameter parameter = parameters[i];
|
MethodParameter parameter = parameters[i];
|
||||||
|
|
|
@ -147,10 +147,11 @@ public class InvocableHandlerMethod extends HandlerMethod {
|
||||||
protected Object[] getMethodArgumentValues(NativeWebRequest request, @Nullable ModelAndViewContainer mavContainer,
|
protected Object[] getMethodArgumentValues(NativeWebRequest request, @Nullable ModelAndViewContainer mavContainer,
|
||||||
Object... providedArgs) throws Exception {
|
Object... providedArgs) throws Exception {
|
||||||
|
|
||||||
if (ObjectUtils.isEmpty(getMethodParameters())) {
|
MethodParameter[] parameters = getMethodParameters();
|
||||||
|
if (ObjectUtils.isEmpty(parameters)) {
|
||||||
return EMPTY_ARGS;
|
return EMPTY_ARGS;
|
||||||
}
|
}
|
||||||
MethodParameter[] parameters = getMethodParameters();
|
|
||||||
Object[] args = new Object[parameters.length];
|
Object[] args = new Object[parameters.length];
|
||||||
for (int i = 0; i < parameters.length; i++) {
|
for (int i = 0; i < parameters.length; i++) {
|
||||||
MethodParameter parameter = parameters[i];
|
MethodParameter parameter = parameters[i];
|
||||||
|
|
|
@ -110,12 +110,9 @@ public class InvocableHandlerMethod extends HandlerMethod {
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Configure a reactive registry. This is needed for cases where the response
|
* Configure a reactive registry. This is needed for cases where the response is fully
|
||||||
* is fully handled within the controller in combination with an async void
|
* handled within the controller in combination with an async void return value.
|
||||||
* return value.
|
* <p>By default this is a {@link ReactiveAdapterRegistry} with default settings.
|
||||||
* <p>By default this is an instance of {@link ReactiveAdapterRegistry} with
|
|
||||||
* default settings.
|
|
||||||
* @param registry the registry to use
|
|
||||||
*/
|
*/
|
||||||
public void setReactiveAdapterRegistry(ReactiveAdapterRegistry registry) {
|
public void setReactiveAdapterRegistry(ReactiveAdapterRegistry registry) {
|
||||||
this.reactiveAdapterRegistry = registry;
|
this.reactiveAdapterRegistry = registry;
|
||||||
|
@ -171,10 +168,11 @@ public class InvocableHandlerMethod extends HandlerMethod {
|
||||||
private Mono<Object[]> getMethodArgumentValues(
|
private Mono<Object[]> getMethodArgumentValues(
|
||||||
ServerWebExchange exchange, BindingContext bindingContext, Object... providedArgs) {
|
ServerWebExchange exchange, BindingContext bindingContext, Object... providedArgs) {
|
||||||
|
|
||||||
if (ObjectUtils.isEmpty(getMethodParameters())) {
|
MethodParameter[] parameters = getMethodParameters();
|
||||||
|
if (ObjectUtils.isEmpty(parameters)) {
|
||||||
return EMPTY_ARGS;
|
return EMPTY_ARGS;
|
||||||
}
|
}
|
||||||
MethodParameter[] parameters = getMethodParameters();
|
|
||||||
List<Mono<Object>> argMonos = new ArrayList<>(parameters.length);
|
List<Mono<Object>> argMonos = new ArrayList<>(parameters.length);
|
||||||
for (MethodParameter parameter : parameters) {
|
for (MethodParameter parameter : parameters) {
|
||||||
parameter.initParameterNameDiscovery(this.parameterNameDiscoverer);
|
parameter.initParameterNameDiscovery(this.parameterNameDiscoverer);
|
||||||
|
@ -198,7 +196,7 @@ public class InvocableHandlerMethod extends HandlerMethod {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return Mono.zip(argMonos, values ->
|
return Mono.zip(argMonos, values ->
|
||||||
Stream.of(values).map(o -> o != NO_ARG_VALUE ? o : null).toArray());
|
Stream.of(values).map(value -> value != NO_ARG_VALUE ? value : null).toArray());
|
||||||
}
|
}
|
||||||
|
|
||||||
private void logArgumentErrorIfNecessary(ServerWebExchange exchange, MethodParameter parameter, Throwable ex) {
|
private void logArgumentErrorIfNecessary(ServerWebExchange exchange, MethodParameter parameter, Throwable ex) {
|
||||||
|
|
Loading…
Reference in New Issue