20
20
import java .util .Collections ;
21
21
import java .util .List ;
22
22
import java .util .Map ;
23
+ import java .util .Optional ;
23
24
24
25
import jakarta .validation .Valid ;
25
26
import jakarta .validation .constraints .NotBlank ;
@@ -146,6 +147,20 @@ void fieldOfObjectPropertyOfMapValue() {
146
147
assertSingleFieldError (errors , 1 , courses , null , "CS 101" , "professor.name" , invalidPerson .name ());
147
148
}
148
149
150
+ @ Test
151
+ void fieldOfObjectPropertyOfOptionalBean () {
152
+ Method method = getMethod ("addOptionalCourse" );
153
+ Optional <Course > optional = Optional .of (new Course ("CS 101" , invalidPerson , Collections .emptyList ()));
154
+ Object [] args = {optional };
155
+
156
+ MethodValidationResult result =
157
+ validationAdapter .validateArguments (new MyService (), method , null , args , HINTS );
158
+
159
+ assertThat (result .getAllErrors ()).hasSize (1 );
160
+ ParameterErrors errors = result .getBeanResults ().get (0 );
161
+ assertSingleFieldError (errors , 1 , optional , null , null , "professor.name" , invalidPerson .name ());
162
+ }
163
+
149
164
}
150
165
151
166
@@ -204,7 +219,7 @@ private static Method getMethod(String methodName) {
204
219
}
205
220
206
221
207
- @ SuppressWarnings ("unused" )
222
+ @ SuppressWarnings ({ "unused" , "OptionalUsedAsFieldOrParameterType" } )
208
223
private static class MyService {
209
224
210
225
public void addCourse (@ Valid Course course ) {
@@ -219,6 +234,9 @@ public void addCourseArray(@Valid Course[] courses) {
219
234
public void addCourseMap (@ Valid Map <String , Course > courses ) {
220
235
}
221
236
237
+ public void addOptionalCourse (@ Valid Optional <Course > course ) {
238
+ }
239
+
222
240
@ Valid
223
241
public Course getCourse (Course course ) {
224
242
throw new UnsupportedOperationException ();
0 commit comments