Skip to content

Commit b43847d

Browse files
committed
open-api: expand query doc from beans
- #3729
1 parent 3681e10 commit b43847d

File tree

7 files changed

+19
-43
lines changed

7 files changed

+19
-43
lines changed

modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/AnnotationParser.java

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -306,12 +306,7 @@ public static List<OperationExt> parse(ParserContext ctx, String prefix, Type ty
306306
.findFirst()
307307
.map(ParameterExt.class::cast)
308308
.orElse(null);
309-
var paramDoc =
310-
methodDoc.getParameterDoc(
311-
parameterName,
312-
Optional.ofNullable(paramExt)
313-
.map(ParameterExt::getContainerType)
314-
.orElse(null));
309+
var paramDoc = methodDoc.getParameterDoc(parameterName);
315310
if (paramDoc != null) {
316311
if (paramExt == null) {
317312
operationExt.getRequestBody().setDescription(paramDoc);

modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/ParameterExt.java

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,9 +10,6 @@
1010
import com.fasterxml.jackson.annotation.JsonIgnore;
1111

1212
public class ParameterExt extends io.swagger.v3.oas.models.parameters.Parameter {
13-
/* keep track of expanded query bean parameters. */
14-
@JsonIgnore private String containerType;
15-
1613
@JsonIgnore private String javaType;
1714

1815
@JsonIgnore private Object defaultValue;
@@ -27,14 +24,6 @@ public String getJavaType() {
2724
return javaType;
2825
}
2926

30-
public void setContainerType(String containerType) {
31-
this.containerType = containerType;
32-
}
33-
34-
public String getContainerType() {
35-
return containerType;
36-
}
37-
3827
public Object getDefaultValue() {
3928
if (defaultValue != null) {
4029
if (javaType.equals(boolean.class.getName())) {

modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/RouteParser.java

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -169,18 +169,25 @@ private List<Parameter> checkParameters(ParserContext ctx, List<Parameter> param
169169
.isPresent();
170170
if (expand) {
171171
SchemaRef ref = ctx.schemaRef(javaType).get();
172+
var doc = ctx.javadoc().parse(javaType).orElse(null);
172173
for (Object e : ref.schema.getProperties().entrySet()) {
173174
String name = (String) ((Map.Entry) e).getKey();
174175
Schema s = (Schema) ((Map.Entry) e).getValue();
175176
var schemaMap = Json.mapper().convertValue(s, Map.class);
176177
schemaMap.remove("description");
177178
var schemaNoDesc = Json.mapper().convertValue(schemaMap, Schema.class);
178179
ParameterExt p = new ParameterExt();
179-
p.setContainerType(javaType);
180180
p.setName(name);
181181
p.setIn(parameter.getIn());
182182
p.setSchema(schemaNoDesc);
183+
// default doc
183184
p.setDescription(parameter.getDescription());
185+
if (doc != null) {
186+
var propertyDoc = doc.getPropertyDoc(name);
187+
if (propertyDoc != null) {
188+
p.setDescription(propertyDoc);
189+
}
190+
}
184191

185192
params.add(p);
186193
}

modules/jooby-openapi/src/main/java/io/jooby/internal/openapi/javadoc/MethodDoc.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -50,13 +50,6 @@ public List<String> getParameterNames() {
5050
}
5151

5252
public String getParameterDoc(String name) {
53-
return getParameterDoc(name, null);
54-
}
55-
56-
public String getParameterDoc(String name, String in) {
57-
if (in != null) {
58-
return context.parse(in).map(bean -> bean.getPropertyDoc(name)).orElse(null);
59-
}
6053
return tree(javadoc)
6154
// must be a tag
6255
.filter(javadocToken(JavadocTokenTypes.JAVADOC_TAG))

modules/jooby-openapi/src/test/java/issues/i3729/api/ApiDocTest.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -96,17 +96,17 @@ public void shouldGenerateDoc(OpenAPIResult result) {
9696
+ " parameters:\n"
9797
+ " - name: title\n"
9898
+ " in: query\n"
99-
+ " description: Book's param query.\n"
99+
+ " description: Book's title.\n"
100100
+ " schema:\n"
101101
+ " type: string\n"
102102
+ " - name: author\n"
103103
+ " in: query\n"
104-
+ " description: Book's param query.\n"
104+
+ " description: Book's author. Optional.\n"
105105
+ " schema:\n"
106106
+ " type: string\n"
107107
+ " - name: isbn\n"
108108
+ " in: query\n"
109-
+ " description: Book's param query.\n"
109+
+ " description: Book's isbn. Optional.\n"
110110
+ " schema:\n"
111111
+ " type: string\n"
112112
+ " responses:\n"
@@ -167,7 +167,7 @@ public void shouldGenerateDoc(OpenAPIResult result) {
167167
+ " properties:\n"
168168
+ " title:\n"
169169
+ " type: string\n"
170-
+ " description: Book's title. Optional.\n"
170+
+ " description: Book's title.\n"
171171
+ " author:\n"
172172
+ " type: string\n"
173173
+ " description: Book's author. Optional.\n"

modules/jooby-openapi/src/test/java/issues/i3729/api/BookQuery.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
/**
99
* Query books by complex filters.
1010
*
11-
* @param title Book's title. Optional.
11+
* @param title Book's title.
1212
* @param author Book's author. Optional.
1313
* @param isbn Book's isbn. Optional.
1414
*/

modules/jooby-openapi/src/test/java/javadoc/JavaDocParserTest.java

Lines changed: 5 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -65,13 +65,9 @@ public void apiDoc() throws Exception {
6565
method -> {
6666
assertEquals("Search database.", method.getSummary());
6767
assertEquals("Search DB", method.getDescription());
68-
assertEquals(
69-
"Filter query. Works like internal filter.",
70-
method.getParameterDoc("fq", "javadoc.input.QueryBeanDoc"));
71-
assertEquals(
72-
"Offset, used for paging.",
73-
method.getParameterDoc("offset", "javadoc.input.QueryBeanDoc"));
74-
assertNull(method.getParameterDoc("limit", "javadoc.input.QueryBeanDoc"));
68+
assertNull(method.getParameterDoc("fq"));
69+
assertNull(method.getParameterDoc("offset"));
70+
assertNull(method.getParameterDoc("limit"));
7571
assertNull(method.getReturnDoc());
7672
});
7773

@@ -82,12 +78,8 @@ public void apiDoc() throws Exception {
8278
method -> {
8379
assertEquals("Record database.", method.getSummary());
8480
assertNull(method.getDescription());
85-
assertEquals(
86-
"Person id. Unique person identifier.",
87-
method.getParameterDoc("id", "javadoc.input.RecordBeanDoc"));
88-
assertEquals(
89-
"Person name. Example: edgar.",
90-
method.getParameterDoc("name", "javadoc.input.RecordBeanDoc"));
81+
assertNull(method.getParameterDoc("id"));
82+
assertNull(method.getParameterDoc("name"));
9183
});
9284

9385
withMethod(

0 commit comments

Comments
 (0)