Skip to content

Commit c841b62

Browse files
committed
Consistent parameter retrieval across InvocableHandlerMethod variants
See gh-22900
1 parent 3f85a7d commit c841b62

File tree

3 files changed

+13
-13
lines changed

3 files changed

+13
-13
lines changed

spring-messaging/src/main/java/org/springframework/messaging/handler/invocation/InvocableHandlerMethod.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -127,10 +127,11 @@ public Object invoke(Message<?> message, Object... providedArgs) throws Exceptio
127127
* @since 5.1.2
128128
*/
129129
protected Object[] getMethodArgumentValues(Message<?> message, Object... providedArgs) throws Exception {
130-
if (ObjectUtils.isEmpty(getMethodParameters())) {
130+
MethodParameter[] parameters = getMethodParameters();
131+
if (ObjectUtils.isEmpty(parameters)) {
131132
return EMPTY_ARGS;
132133
}
133-
MethodParameter[] parameters = getMethodParameters();
134+
134135
Object[] args = new Object[parameters.length];
135136
for (int i = 0; i < parameters.length; i++) {
136137
MethodParameter parameter = parameters[i];

spring-web/src/main/java/org/springframework/web/method/support/InvocableHandlerMethod.java

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -147,10 +147,11 @@ public Object invokeForRequest(NativeWebRequest request, @Nullable ModelAndViewC
147147
protected Object[] getMethodArgumentValues(NativeWebRequest request, @Nullable ModelAndViewContainer mavContainer,
148148
Object... providedArgs) throws Exception {
149149

150-
if (ObjectUtils.isEmpty(getMethodParameters())) {
150+
MethodParameter[] parameters = getMethodParameters();
151+
if (ObjectUtils.isEmpty(parameters)) {
151152
return EMPTY_ARGS;
152153
}
153-
MethodParameter[] parameters = getMethodParameters();
154+
154155
Object[] args = new Object[parameters.length];
155156
for (int i = 0; i < parameters.length; i++) {
156157
MethodParameter parameter = parameters[i];

spring-webflux/src/main/java/org/springframework/web/reactive/result/method/InvocableHandlerMethod.java

Lines changed: 7 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -110,12 +110,9 @@ public ParameterNameDiscoverer getParameterNameDiscoverer() {
110110
}
111111

112112
/**
113-
* Configure a reactive registry. This is needed for cases where the response
114-
* is fully handled within the controller in combination with an async void
115-
* return value.
116-
* <p>By default this is an instance of {@link ReactiveAdapterRegistry} with
117-
* default settings.
118-
* @param registry the registry to use
113+
* Configure a reactive registry. This is needed for cases where the response is fully
114+
* handled within the controller in combination with an async void return value.
115+
* <p>By default this is a {@link ReactiveAdapterRegistry} with default settings.
119116
*/
120117
public void setReactiveAdapterRegistry(ReactiveAdapterRegistry registry) {
121118
this.reactiveAdapterRegistry = registry;
@@ -171,10 +168,11 @@ public Mono<HandlerResult> invoke(
171168
private Mono<Object[]> getMethodArgumentValues(
172169
ServerWebExchange exchange, BindingContext bindingContext, Object... providedArgs) {
173170

174-
if (ObjectUtils.isEmpty(getMethodParameters())) {
171+
MethodParameter[] parameters = getMethodParameters();
172+
if (ObjectUtils.isEmpty(parameters)) {
175173
return EMPTY_ARGS;
176174
}
177-
MethodParameter[] parameters = getMethodParameters();
175+
178176
List<Mono<Object>> argMonos = new ArrayList<>(parameters.length);
179177
for (MethodParameter parameter : parameters) {
180178
parameter.initParameterNameDiscovery(this.parameterNameDiscoverer);
@@ -198,7 +196,7 @@ private Mono<Object[]> getMethodArgumentValues(
198196
}
199197
}
200198
return Mono.zip(argMonos, values ->
201-
Stream.of(values).map(o -> o != NO_ARG_VALUE ? o : null).toArray());
199+
Stream.of(values).map(value -> value != NO_ARG_VALUE ? value : null).toArray());
202200
}
203201

204202
private void logArgumentErrorIfNecessary(ServerWebExchange exchange, MethodParameter parameter, Throwable ex) {

0 commit comments

Comments
 (0)