1
1
package org .springdoc .core ;
2
2
3
- import java .beans .IntrospectionException ;
4
- import java .beans .Introspector ;
5
- import java .beans .PropertyDescriptor ;
6
3
import java .lang .annotation .Annotation ;
7
4
import java .lang .reflect .AnnotatedElement ;
8
5
import java .lang .reflect .Constructor ;
9
6
import java .lang .reflect .Executable ;
10
- import java .lang .reflect .Field ;
11
7
import java .lang .reflect .Member ;
12
8
import java .lang .reflect .Method ;
13
9
import java .lang .reflect .Type ;
14
10
import java .util .ArrayList ;
15
11
import java .util .Arrays ;
16
12
import java .util .List ;
17
13
import java .util .Objects ;
18
- import java .util .stream .Stream ;
19
14
20
- import io .swagger .v3 .oas .annotations .Parameter ;
21
15
import org .apache .commons .lang3 .ArrayUtils ;
22
16
import org .springdoc .api .annotations .ParameterObject ;
23
17
import org .springdoc .core .converters .AdditionalModelsConverter ;
24
18
25
19
import org .springframework .core .MethodParameter ;
26
20
import org .springframework .core .ParameterNameDiscoverer ;
27
21
import org .springframework .lang .NonNull ;
28
- import org .springframework .lang .Nullable ;
29
22
30
23
/**
31
24
* @author zarebski.m
32
25
*/
33
26
class DelegatingMethodParameter extends MethodParameter {
27
+
34
28
private MethodParameter delegate ;
35
29
36
30
private Annotation [] additionalParameterAnnotations ;
@@ -50,10 +44,7 @@ public static MethodParameter[] customize(String[] pNames, MethodParameter[] par
50
44
MethodParameter p = parameters [i ];
51
45
if (p .hasParameterAnnotation (ParameterObject .class )) {
52
46
Class <?> paramClass = AdditionalModelsConverter .getReplacement (p .getParameterType ());
53
- allFieldsOf (paramClass ).stream ()
54
- .map (f -> fromGetterOfField (paramClass , f ))
55
- .filter (Objects ::nonNull )
56
- .forEach (explodedParameters ::add );
47
+ MethodParameterPojoExtractor .extractFrom (paramClass ).forEach (explodedParameters ::add );
57
48
}
58
49
else {
59
50
String name = pNames != null ? pNames [i ] : p .getParameterName ();
@@ -139,31 +130,6 @@ public void initParameterNameDiscovery(ParameterNameDiscoverer parameterNameDisc
139
130
delegate .initParameterNameDiscovery (parameterNameDiscoverer );
140
131
}
141
132
142
- @ Nullable
143
- static MethodParameter fromGetterOfField (Class <?> paramClass , Field field ) {
144
- try {
145
- Annotation [] filedAnnotations = field .getDeclaredAnnotations ();
146
- Parameter parameter = field .getAnnotation (Parameter .class );
147
- if (parameter != null && !parameter .required ()) {
148
- Field fieldNullable = NullableFieldClass .class .getDeclaredField ("nullableField" );
149
- Annotation annotation = fieldNullable .getAnnotation (Nullable .class );
150
- filedAnnotations = ArrayUtils .add (filedAnnotations , annotation );
151
- }
152
- Annotation [] filedAnnotationsNew = filedAnnotations ;
153
- return Stream .of (Introspector .getBeanInfo (paramClass ).getPropertyDescriptors ())
154
- .filter (d -> d .getName ().equals (field .getName ()))
155
- .map (PropertyDescriptor ::getReadMethod )
156
- .filter (Objects ::nonNull )
157
- .findFirst ()
158
- .map (method -> new MethodParameter (method , -1 ))
159
- .map (param -> new DelegatingMethodParameter (param , field .getName (), filedAnnotationsNew ))
160
- .orElse (null );
161
- }
162
- catch (IntrospectionException | NoSuchFieldException e ) {
163
- return null ;
164
- }
165
- }
166
-
167
133
@ Override
168
134
public boolean equals (Object o ) {
169
135
if (this == o ) return true ;
@@ -181,18 +147,4 @@ public int hashCode() {
181
147
result = 31 * result + Arrays .hashCode (additionalParameterAnnotations );
182
148
return result ;
183
149
}
184
-
185
- private class NullableFieldClass {
186
- @ Nullable
187
- private String nullableField ;
188
- }
189
-
190
- private static List <Field > allFieldsOf (Class <?> clazz ) {
191
- List <Field > fields = new ArrayList <>();
192
- do {
193
- fields .addAll (Arrays .asList (clazz .getDeclaredFields ()));
194
- clazz = clazz .getSuperclass ();
195
- } while (clazz != null );
196
- return fields ;
197
- }
198
150
}
0 commit comments