2
2
3
3
import com .fasterxml .jackson .annotation .JsonView ;
4
4
import io .swagger .v3 .oas .models .Components ;
5
+ import io .swagger .v3 .oas .models .media .ArraySchema ;
5
6
import io .swagger .v3 .oas .models .media .Schema ;
6
7
import org .springframework .http .ResponseEntity ;
7
8
import org .springframework .stereotype .Component ;
@@ -22,8 +23,7 @@ public ResponseBuilder(OperationBuilder operationBuilder) {
22
23
protected Schema calculateSchemaFromParameterizedType (Components components , ParameterizedType parameterizedType ,
23
24
JsonView jsonView ) {
24
25
Schema schemaN = null ;
25
- if (Mono .class .getName ().contentEquals (parameterizedType .getRawType ().getTypeName ())
26
- || Flux .class .getName ().contentEquals (parameterizedType .getRawType ().getTypeName ())) {
26
+ if (Mono .class .getName ().contentEquals (parameterizedType .getRawType ().getTypeName ())) {
27
27
if (parameterizedType .getActualTypeArguments ()[0 ] instanceof ParameterizedType && ResponseEntity .class
28
28
.getName ().contentEquals (((ParameterizedType ) parameterizedType .getActualTypeArguments ()[0 ])
29
29
.getRawType ().getTypeName ())) {
@@ -33,8 +33,23 @@ protected Schema calculateSchemaFromParameterizedType(Components components, Par
33
33
} else {
34
34
schemaN = calculateSchemaParameterizedType (components , parameterizedType , jsonView );
35
35
}
36
+ } else if (Flux .class .getName ().contentEquals (parameterizedType .getRawType ().getTypeName ())) {
37
+ if (parameterizedType .getActualTypeArguments ()[0 ] instanceof ParameterizedType && ResponseEntity .class
38
+ .getName ().contentEquals (((ParameterizedType ) parameterizedType .getActualTypeArguments ()[0 ])
39
+ .getRawType ().getTypeName ())) {
40
+ ParameterizedType parameterizedTypeNew = (ParameterizedType ) parameterizedType
41
+ .getActualTypeArguments ()[0 ];
42
+ schemaN = calculateFluxSchema (components , parameterizedTypeNew , jsonView );
43
+ } else {
44
+ schemaN = calculateFluxSchema (components , parameterizedType , jsonView );
45
+ }
36
46
}
37
47
return schemaN ;
38
48
}
39
49
50
+ private Schema calculateFluxSchema (Components components , ParameterizedType parameterizedType , JsonView jsonView ) {
51
+ Schema itemsSchema = SpringDocAnnotationsUtils .extractSchema (components , parameterizedType .getActualTypeArguments ()[0 ], jsonView );
52
+ return new ArraySchema ().items (itemsSchema );
53
+ }
54
+
40
55
}
0 commit comments