Skip to content

Commit 657b1c6

Browse files
committed
Document need for -parameters flag in exception messages
Closes gh-31675
1 parent 23dc569 commit 657b1c6

File tree

5 files changed

+21
-16
lines changed

5 files changed

+21
-16
lines changed

spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/reactive/AbstractNamedValueMethodArgumentResolver.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,10 @@ private NamedValueInfo updateNamedValueInfo(MethodParameter parameter, NamedValu
152152
if (info.name.isEmpty()) {
153153
name = parameter.getParameterName();
154154
if (name == null) {
155-
throw new IllegalArgumentException(
156-
"Name for argument of type [" + parameter.getNestedParameterType().getName() +
157-
"] not specified, and parameter name information not found in class file either.");
155+
throw new IllegalArgumentException("""
156+
Name for argument of type [%s] not specified, and parameter name information not \
157+
available via reflection. Ensure that the compiler uses the '-parameters' flag."""
158+
.formatted(parameter.getNestedParameterType().getName()));
158159
}
159160
}
160161
return new NamedValueInfo(name, info.required,

spring-messaging/src/main/java/org/springframework/messaging/handler/annotation/support/AbstractNamedValueMethodArgumentResolver.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -162,9 +162,10 @@ private NamedValueInfo updateNamedValueInfo(MethodParameter parameter, NamedValu
162162
if (info.name.isEmpty()) {
163163
name = parameter.getParameterName();
164164
if (name == null) {
165-
throw new IllegalArgumentException(
166-
"Name for argument of type [" + parameter.getNestedParameterType().getName() +
167-
"] not specified, and parameter name information not found in class file either.");
165+
throw new IllegalArgumentException("""
166+
Name for argument of type [%s] not specified, and parameter name information not \
167+
available via reflection. Ensure that the compiler uses the '-parameters' flag."""
168+
.formatted(parameter.getNestedParameterType().getName()));
168169
}
169170
}
170171
return new NamedValueInfo(name, info.required,

spring-web/src/main/java/org/springframework/web/method/annotation/AbstractNamedValueMethodArgumentResolver.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -179,9 +179,10 @@ private NamedValueInfo updateNamedValueInfo(MethodParameter parameter, NamedValu
179179
if (info.name.isEmpty()) {
180180
name = parameter.getParameterName();
181181
if (name == null) {
182-
throw new IllegalArgumentException(
183-
"Name for argument of type [" + parameter.getNestedParameterType().getName() +
184-
"] not specified, and parameter name information not found in class file either.");
182+
throw new IllegalArgumentException("""
183+
Name for argument of type [%s] not specified, and parameter name information not \
184+
available via reflection. Ensure that the compiler uses the '-parameters' flag."""
185+
.formatted(parameter.getNestedParameterType().getName()));
185186
}
186187
}
187188
String defaultValue = (ValueConstants.DEFAULT_NONE.equals(info.defaultValue) ? null : info.defaultValue);

spring-web/src/main/java/org/springframework/web/service/invoker/AbstractNamedValueArgumentResolver.java

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright 2002-2022 the original author or authors.
2+
* Copyright 2002-2023 the original author or authors.
33
*
44
* Licensed under the Apache License, Version 2.0 (the "License");
55
* you may not use this file except in compliance with the License.
@@ -127,9 +127,10 @@ private NamedValueInfo updateNamedValueInfo(MethodParameter parameter, NamedValu
127127
if (info.name.isEmpty()) {
128128
name = parameter.getParameterName();
129129
if (name == null) {
130-
throw new IllegalArgumentException(
131-
"Name for argument of type [" + parameter.getParameterType().getName() + "] " +
132-
"not specified, and parameter name information not found in class file either.");
130+
throw new IllegalArgumentException("""
131+
Name for argument of type [%s] not specified, and parameter name information not \
132+
available via reflection. Ensure that the compiler uses the '-parameters' flag."""
133+
.formatted(parameter.getNestedParameterType().getName()));
133134
}
134135
}
135136
boolean required = (info.required && !parameter.getParameterType().equals(Optional.class));

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

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -152,9 +152,10 @@ private NamedValueInfo updateNamedValueInfo(MethodParameter parameter, NamedValu
152152
if (info.name.isEmpty()) {
153153
name = parameter.getParameterName();
154154
if (name == null) {
155-
throw new IllegalArgumentException(
156-
"Name for argument of type [" + parameter.getNestedParameterType().getName() +
157-
"] not specified, and parameter name information not found in class file either.");
155+
throw new IllegalArgumentException("""
156+
Name for argument of type [%s] not specified, and parameter name information not \
157+
available via reflection. Ensure that the compiler uses the '-parameters' flag."""
158+
.formatted(parameter.getNestedParameterType().getName()));
158159
}
159160
}
160161
String defaultValue = (ValueConstants.DEFAULT_NONE.equals(info.defaultValue) ? null : info.defaultValue);

0 commit comments

Comments
 (0)