24
24
import org .slf4j .Logger ;
25
25
import org .slf4j .LoggerFactory ;
26
26
import org .springdoc .core .DelegatingMethodParameter ;
27
- import org .springdoc .core .converters .models .Pageable ;
28
27
import org .springdoc .core .customizers .DelegatingMethodParameterCustomizer ;
29
28
30
29
import org .springframework .boot .autoconfigure .data .web .SpringDataWebProperties ;
@@ -72,8 +71,11 @@ public void customize(MethodParameter originalParameter, MethodParameter methodP
72
71
Annotation [] parameterAnnotations = (Annotation []) field .get (methodParameter );
73
72
if (ArrayUtils .isNotEmpty (parameterAnnotations ))
74
73
for (int i = 0 ; i < parameterAnnotations .length ; i ++) {
75
- if (Parameter .class .equals (parameterAnnotations [i ].annotationType ()))
76
- parameterAnnotations [i ] = getNewParameterAnnotationForField (methodParameter .getParameterName (), pageableDefault );
74
+ if (Parameter .class .equals (parameterAnnotations [i ].annotationType ())){
75
+ Optional <Annotation > annotationForField = getNewParameterAnnotationForField (methodParameter , pageableDefault );
76
+ if (annotationForField .isPresent ())
77
+ parameterAnnotations [i ] = annotationForField .get ();
78
+ }
77
79
}
78
80
}
79
81
catch (IllegalAccessException e ) {
@@ -85,15 +87,16 @@ public void customize(MethodParameter originalParameter, MethodParameter methodP
85
87
/**
86
88
* Gets new parameter annotation for field.
87
89
*
88
- * @param parameterName the parameter name
90
+ * @param methodParameter the method parameter
89
91
* @param pageableDefault the pageable default
90
92
* @return the new parameter annotation for field
91
93
*/
92
- private Annotation getNewParameterAnnotationForField (String parameterName , PageableDefault pageableDefault ) {
94
+ private Optional <Annotation > getNewParameterAnnotationForField (MethodParameter methodParameter , PageableDefault pageableDefault ) {
95
+ String parameterName = methodParameter .getParameterName ();
93
96
Field field ;
94
- Parameter parameterNew = null ;
97
+ Parameter parameterNew ;
95
98
try {
96
- field = Pageable . class .getDeclaredField (parameterName );
99
+ field = methodParameter . getContainingClass () .getDeclaredField (parameterName );
97
100
Parameter parameter = field .getAnnotation (Parameter .class );
98
101
parameterNew = new Parameter () {
99
102
@ Override
@@ -615,11 +618,12 @@ public String ref() {
615
618
return parameter .ref ();
616
619
}
617
620
};
621
+ return Optional .of (parameterNew );
618
622
}
619
623
catch (NoSuchFieldException e ) {
620
624
LOGGER .warn (e .getMessage ());
625
+ return Optional .empty ();
621
626
}
622
- return parameterNew ;
623
627
}
624
628
625
629
/**
0 commit comments