Skip to content

Commit 5ed6070

Browse files
author
springdoc
committed
fixes #148
1 parent 073062b commit 5ed6070

File tree

10 files changed

+131
-40
lines changed

10 files changed

+131
-40
lines changed

springdoc-openapi-common/src/main/java/org/springdoc/core/AbstractRequestBuilder.java

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -79,7 +79,6 @@ public Operation build(Components components, HandlerMethod handlerMethod, Reque
7979
applyBeanValidatorAnnotations(parameter, Arrays.asList(parameters[i].getAnnotations()));
8080
} else if (!RequestMethod.GET.equals(requestMethod)) {
8181
requestBodyInfo.incrementNbParam();
82-
parameterInfo = new ParameterInfo(pName, parameters[i], parameterDoc);
8382
requestBodyInfo.setRequestBody(operation.getRequestBody());
8483
requestBodyBuilder.calculateRequestBodyInfo(components, handlerMethod, methodAttributes, i,
8584
parameterInfo, requestBodyInfo);

springdoc-openapi-common/src/main/java/org/springdoc/core/ParameterInfo.java

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,8 @@ class ParameterInfo {
66

77
private final java.lang.reflect.Parameter parameter;
88
private String pName;
9-
private io.swagger.v3.oas.annotations.Parameter parameterDoc;
109
private io.swagger.v3.oas.models.parameters.Parameter parameterModel;
11-
private int index;
10+
private final int index;
1211

1312
public ParameterInfo(String pName, Parameter parameter,
1413
io.swagger.v3.oas.models.parameters.Parameter parameterModel, int index) {
@@ -19,13 +18,6 @@ public ParameterInfo(String pName, Parameter parameter,
1918
this.index = index;
2019
}
2120

22-
public ParameterInfo(String pName, Parameter parameter, io.swagger.v3.oas.annotations.Parameter parameterDoc) {
23-
super();
24-
this.pName = pName;
25-
this.parameter = parameter;
26-
this.parameterDoc = parameterDoc;
27-
}
28-
2921
public String getpName() {
3022
return pName;
3123
}
@@ -38,10 +30,6 @@ public java.lang.reflect.Parameter getParameter() {
3830
return parameter;
3931
}
4032

41-
public io.swagger.v3.oas.annotations.Parameter getParameterDoc() {
42-
return parameterDoc;
43-
}
44-
4533
public io.swagger.v3.oas.models.parameters.Parameter getParameterModel() {
4634
return parameterModel;
4735
}

springdoc-openapi-common/src/main/java/org/springdoc/core/RequestBodyBuilder.java

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -103,28 +103,29 @@ private RequestBody buildRequestBody(RequestBody requestBody, Components compone
103103
if (requestBody == null)
104104
requestBody = new RequestBody();
105105

106+
if (parameterInfo.getParameterModel() != null) {
107+
io.swagger.v3.oas.models.parameters.Parameter parameter = parameterInfo.getParameterModel();
108+
if (StringUtils.isNotBlank(parameter.getDescription()))
109+
requestBody.setDescription(parameter.getDescription());
110+
if (parameter.getSchema() != null) {
111+
Schema<?> schema = parameterInfo.getParameterModel().getSchema();
112+
buildContent(requestBody, methodAttributes, schema);
113+
}
114+
requestBody.setRequired(parameter.getRequired());
115+
}
116+
106117
if (requestBody.getContent() == null
107118
|| (requestBody.getContent() != null && methodAttributes.isMethodOverloaded())) {
108-
109119
Schema<?> schema = parameterBuilder.calculateSchema(components, parameterInfo.getParameter(),
110120
parameterInfo.getpName(), requestBodyInfo,
111121
methodAttributes.getJsonViewAnnotationForRequestBody());
112-
Content content = requestBody.getContent();
113-
content = buildContent(methodAttributes, schema, content);
114-
requestBody.setContent(content);
122+
buildContent(requestBody, methodAttributes, schema);
115123
}
116-
117-
if (parameterInfo.getParameterDoc() != null) {
118-
io.swagger.v3.oas.annotations.Parameter parameterDoc = parameterInfo.getParameterDoc();
119-
if (StringUtils.isNotBlank(parameterDoc.description()))
120-
requestBody.setDescription(parameterDoc.description());
121-
requestBody.setRequired(parameterDoc.required());
122-
}
123-
124124
return requestBody;
125125
}
126126

127-
private Content buildContent(MethodAttributes methodAttributes, Schema<?> schema, Content content) {
127+
private void buildContent(RequestBody requestBody, MethodAttributes methodAttributes, Schema<?> schema) {
128+
Content content = requestBody.getContent();
128129
if (methodAttributes.isMethodOverloaded() && content != null) {
129130
for (String value : methodAttributes.getAllConsumes()) {
130131
setMediaTypeToContent(schema, content, value);
@@ -135,9 +136,11 @@ private Content buildContent(MethodAttributes methodAttributes, Schema<?> schema
135136
setMediaTypeToContent(schema, content, value);
136137
}
137138
}
138-
return content;
139+
requestBody.setContent(content);
139140
}
140141

142+
143+
141144
private void setMediaTypeToContent(Schema schema, Content content, String value) {
142145
io.swagger.v3.oas.models.media.MediaType mediaTypeObject = new io.swagger.v3.oas.models.media.MediaType();
143146
mediaTypeObject.setSchema(schema);

springdoc-openapi-webflux-core/src/test/resources/results/app4.json

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,8 +33,7 @@
3333
}
3434
}
3535
}
36-
},
37-
"required": false
36+
}
3837
},
3938
"responses": {
4039
"400": {
@@ -59,4 +58,4 @@
5958
}
6059
}
6160
}
62-
}
61+
}
Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
package test.org.springdoc.api.app58;
2+
3+
import com.fasterxml.jackson.databind.JsonNode;
4+
import io.swagger.v3.oas.annotations.Operation;
5+
import io.swagger.v3.oas.annotations.Parameter;
6+
import io.swagger.v3.oas.annotations.media.Schema;
7+
import org.springframework.web.bind.annotation.GetMapping;
8+
import org.springframework.web.bind.annotation.PostMapping;
9+
import org.springframework.web.bind.annotation.RestController;
10+
11+
@RestController
12+
public class HelloController {
13+
14+
@PostMapping("/examplePost")
15+
@Operation(summary = "schema example")
16+
public Object example(@Parameter(schema = @Schema(hidden = true)) JsonNode json)
17+
{
18+
return null;
19+
}
20+
21+
@GetMapping("/example")
22+
public void test(@Parameter(schema = @Schema(hidden = true))JsonNode json) {
23+
24+
}
25+
}
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
package test.org.springdoc.api.app58;
2+
3+
import test.org.springdoc.api.AbstractSpringDocTest;
4+
5+
public class SpringDocApp58Test extends AbstractSpringDocTest {
6+
7+
8+
}
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package test.org.springdoc.api.app58;
2+
3+
import org.springframework.boot.SpringApplication;
4+
import org.springframework.boot.autoconfigure.SpringBootApplication;
5+
6+
@SpringBootApplication
7+
public class SpringDocTestApp {
8+
9+
public static void main(String[] args) {
10+
SpringApplication.run(SpringDocTestApp.class, args);
11+
}
12+
}

springdoc-openapi-webmvc-core/src/test/resources/results/app1.json

Lines changed: 6 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -158,8 +158,7 @@
158158
"$ref": "#/components/schemas/InventoryItem"
159159
}
160160
}
161-
},
162-
"required": false
161+
}
163162
},
164163
"responses": {
165164
"500": {
@@ -559,12 +558,9 @@
559558
}
560559
}
561560
},
562-
"ItemDTO": {
561+
"ItemLightDTO": {
563562
"type": "object",
564563
"properties": {
565-
"itemID": {
566-
"type": "string"
567-
},
568564
"description": {
569565
"type": "string"
570566
},
@@ -574,9 +570,12 @@
574570
}
575571
}
576572
},
577-
"ItemLightDTO": {
573+
"ItemDTO": {
578574
"type": "object",
579575
"properties": {
576+
"itemID": {
577+
"type": "string"
578+
},
580579
"description": {
581580
"type": "string"
582581
},

springdoc-openapi-webmvc-core/src/test/resources/results/app2.json

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -347,8 +347,7 @@
347347
}
348348
}
349349
}
350-
},
351-
"required": false
350+
}
352351
},
353352
"responses": {
354353
"400": {
Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
{
2+
"openapi": "3.0.1",
3+
"info": {
4+
"title": "OpenAPI definition",
5+
"version": "v0"
6+
},
7+
"servers": [
8+
{
9+
"url": "http://localhost",
10+
"description": "Generated server url"
11+
}
12+
],
13+
"paths": {
14+
"/example": {
15+
"get": {
16+
"operationId": "test",
17+
"parameters": [
18+
{
19+
"name": "json",
20+
"in": "query",
21+
"required": true,
22+
"schema": {}
23+
}
24+
],
25+
"responses": {
26+
"200": {
27+
"description": "default response"
28+
}
29+
}
30+
}
31+
},
32+
"/examplePost": {
33+
"post": {
34+
"summary": "schema example",
35+
"operationId": "example",
36+
"requestBody": {
37+
"content": {
38+
"*/*": {
39+
"schema": {}
40+
}
41+
}
42+
},
43+
"responses": {
44+
"200": {
45+
"description": "default response",
46+
"content": {
47+
"*/*": {
48+
"schema": {
49+
"type": "object"
50+
}
51+
}
52+
}
53+
}
54+
}
55+
}
56+
}
57+
},
58+
"components": {}
59+
}

0 commit comments

Comments
 (0)