Skip to content

Commit 1e45243

Browse files
author
springdoc
committed
fixes #195
1 parent 35394f4 commit 1e45243

File tree

2 files changed

+168
-147
lines changed

2 files changed

+168
-147
lines changed

springdoc-openapi-webflux-core/src/main/java/org/springdoc/core/ResponseBuilder.java

Lines changed: 17 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import com.fasterxml.jackson.annotation.JsonView;
44
import io.swagger.v3.oas.models.Components;
5+
import io.swagger.v3.oas.models.media.ArraySchema;
56
import io.swagger.v3.oas.models.media.Schema;
67
import org.springframework.http.ResponseEntity;
78
import org.springframework.stereotype.Component;
@@ -22,8 +23,7 @@ public ResponseBuilder(OperationBuilder operationBuilder) {
2223
protected Schema calculateSchemaFromParameterizedType(Components components, ParameterizedType parameterizedType,
2324
JsonView jsonView) {
2425
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())) {
2727
if (parameterizedType.getActualTypeArguments()[0] instanceof ParameterizedType && ResponseEntity.class
2828
.getName().contentEquals(((ParameterizedType) parameterizedType.getActualTypeArguments()[0])
2929
.getRawType().getTypeName())) {
@@ -33,8 +33,23 @@ protected Schema calculateSchemaFromParameterizedType(Components components, Par
3333
} else {
3434
schemaN = calculateSchemaParameterizedType(components, parameterizedType, jsonView);
3535
}
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+
}
3646
}
3747
return schemaN;
3848
}
3949

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+
4055
}

0 commit comments

Comments
 (0)