Skip to content

Commit e4400d0

Browse files
committed
Springdoc does not resolve property descriptions for arrays. Fixes #2003
1 parent 209c55b commit e4400d0

File tree

4 files changed

+33
-2
lines changed

4 files changed

+33
-2
lines changed

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

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
import io.swagger.v3.oas.models.info.Contact;
3535
import io.swagger.v3.oas.models.info.Info;
3636
import io.swagger.v3.oas.models.info.License;
37+
import io.swagger.v3.oas.models.media.ArraySchema;
3738
import io.swagger.v3.oas.models.media.Schema;
3839
import io.swagger.v3.oas.models.servers.Server;
3940
import org.apache.commons.lang3.StringUtils;
@@ -174,6 +175,10 @@ public Schema resolveProperties(Schema<?> schema, Locale locale) {
174175
if (!CollectionUtils.isEmpty(properties)) {
175176
LinkedHashMap<String, Schema> resolvedSchemas = properties.entrySet().stream().map(es -> {
176177
es.setValue(resolveProperties(es.getValue(), locale));
178+
if(es.getValue() instanceof ArraySchema){
179+
ArraySchema arraySchema = (ArraySchema) es.getValue();
180+
resolveProperties(arraySchema.getItems(), locale);
181+
}
177182
return es;
178183
}).collect(Collectors.toMap(Entry::getKey, Entry::getValue, (e1, e2) -> e2,
179184
LinkedHashMap::new));

springdoc-openapi-webmvc-core/src/test/java/test/org/springdoc/api/v30/app164/SampleResponseClass.java

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,11 @@
2222

2323
package test.org.springdoc.api.v30.app164;
2424

25+
import java.util.List;
26+
27+
import io.swagger.v3.oas.annotations.media.ArraySchema;
28+
import io.swagger.v3.oas.annotations.media.Schema;
29+
2530
public class SampleResponseClass {
2631

2732
private String idAsFirstParameter;
@@ -32,6 +37,18 @@ public class SampleResponseClass {
3237

3338
private boolean booleanValueAsFourthParameter;
3439

40+
@ArraySchema( arraySchema = @Schema( description = "${blahDescription.value}" ),
41+
schema = @Schema( description = "${blahDescription.value}" ) )
42+
private List<String> listBlah;
43+
44+
public List<String> getListBlah() {
45+
return listBlah;
46+
}
47+
48+
public void setListBlah(List<String> listBlah) {
49+
this.listBlah = listBlah;
50+
}
51+
3552
public String getIdAsFirstParameter() {
3653
return idAsFirstParameter;
3754
}
Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
spring.main.banner-mode=off
22
logging.level.root=OFF
3-
spring.main.lazy-initialization=true
3+
spring.main.lazy-initialization=true
4+
blahDescription.value=test

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

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -48,9 +48,17 @@
4848
},
4949
"booleanValueAsFourthParameter": {
5050
"type": "boolean"
51+
},
52+
"listBlah": {
53+
"type": "array",
54+
"description": "test",
55+
"items": {
56+
"type": "string",
57+
"description": "test"
58+
}
5159
}
5260
}
5361
}
5462
}
5563
}
56-
}
64+
}

0 commit comments

Comments
 (0)