|
13 | 13 | import java.util.Map;
|
14 | 14 | import java.util.Optional;
|
15 | 15 |
|
16 |
| -@SuppressWarnings("rawtypes") |
17 | 16 | public class RequestBodyBuilder {
|
18 | 17 |
|
19 | 18 | private final AbstractParameterBuilder parameterBuilder;
|
@@ -109,35 +108,39 @@ private RequestBody buildRequestBody(RequestBody requestBody, Components compone
|
109 | 108 | requestBody.setRequired(parameter.getRequired());
|
110 | 109 | }
|
111 | 110 |
|
112 |
| - if (requestBody.getContent() == null |
113 |
| - || (requestBody.getContent() != null && methodAttributes.isMethodOverloaded())) { |
| 111 | + if (requestBody.getContent() == null) { |
114 | 112 | Schema<?> schema = parameterBuilder.calculateSchema(components, parameterInfo.getParameter(),
|
115 | 113 | parameterInfo.getpName(), requestBodyInfo,
|
116 | 114 | methodAttributes.getJsonViewAnnotationForRequestBody());
|
117 | 115 | buildContent(requestBody, methodAttributes, schema);
|
| 116 | + } else if (requestBody.getContent() != null && (methodAttributes.isMethodOverloaded() || |
| 117 | + requestBody.getContent().values().stream().anyMatch(mediaType -> mediaType.getSchema() == null))) { |
| 118 | + Schema<?> schema = parameterBuilder.calculateSchema(components, parameterInfo.getParameter(), |
| 119 | + parameterInfo.getpName(), requestBodyInfo, |
| 120 | + methodAttributes.getJsonViewAnnotationForRequestBody()); |
| 121 | + mergeContent(requestBody, methodAttributes, schema); |
118 | 122 | }
|
119 | 123 | return requestBody;
|
120 | 124 | }
|
121 | 125 |
|
122 |
| - private void buildContent(RequestBody requestBody, MethodAttributes methodAttributes, Schema<?> schema) { |
| 126 | + private void mergeContent(RequestBody requestBody, MethodAttributes methodAttributes, Schema<?> schema) { |
123 | 127 | Content content = requestBody.getContent();
|
124 |
| - if (methodAttributes.isMethodOverloaded() && content != null) { |
125 |
| - for (String value : methodAttributes.getAllConsumes()) { |
126 |
| - setMediaTypeToContent(schema, content, value); |
127 |
| - } |
128 |
| - } else { |
129 |
| - content = new Content(); |
130 |
| - for (String value : methodAttributes.getAllConsumes()) { |
131 |
| - setMediaTypeToContent(schema, content, value); |
132 |
| - } |
133 |
| - } |
134 |
| - requestBody.setContent(content); |
| 128 | + buildContent(requestBody, methodAttributes, schema, content); |
135 | 129 | }
|
136 | 130 |
|
| 131 | + private void buildContent(RequestBody requestBody, MethodAttributes methodAttributes, Schema<?> schema) { |
| 132 | + Content content = new Content(); |
| 133 | + buildContent(requestBody, methodAttributes, schema, content); |
| 134 | + } |
137 | 135 |
|
138 |
| - private void setMediaTypeToContent(Schema schema, Content content, String value) { |
139 |
| - io.swagger.v3.oas.models.media.MediaType mediaTypeObject = new io.swagger.v3.oas.models.media.MediaType(); |
140 |
| - mediaTypeObject.setSchema(schema); |
141 |
| - content.addMediaType(value, mediaTypeObject); |
| 136 | + private void buildContent(RequestBody requestBody, MethodAttributes methodAttributes, Schema<?> schema, Content content) { |
| 137 | + for (String value : methodAttributes.getAllConsumes()) { |
| 138 | + io.swagger.v3.oas.models.media.MediaType mediaTypeObject = new io.swagger.v3.oas.models.media.MediaType(); |
| 139 | + mediaTypeObject.setSchema(schema); |
| 140 | + if (content.get(value) != null) |
| 141 | + mediaTypeObject.setExample(content.get(value).getExample()); |
| 142 | + content.addMediaType(value, mediaTypeObject); |
| 143 | + } |
| 144 | + requestBody.setContent(content); |
142 | 145 | }
|
143 | 146 | }
|
0 commit comments