Skip to content

Commit 1acbf20

Browse files
committed
Support for @JsonProperty with Javadoc Change in springdoc-openapi. Fixes #2438, #2315
1 parent 9262482 commit 1acbf20

File tree

3 files changed

+29
-7
lines changed

3 files changed

+29
-7
lines changed

springdoc-openapi-starter-common/src/main/java/org/springdoc/core/customizers/JavadocPropertyCustomizer.java

Lines changed: 26 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,18 +33,17 @@
3333
import java.util.Iterator;
3434
import java.util.List;
3535
import java.util.Map;
36+
import java.util.Map.Entry;
3637
import java.util.Optional;
3738
import java.util.Set;
3839

40+
import com.fasterxml.jackson.annotation.JsonProperty;
3941
import com.fasterxml.jackson.databind.JavaType;
40-
import com.fasterxml.jackson.databind.ObjectMapper;
41-
import com.fasterxml.jackson.databind.introspect.SimpleMixInResolver;
4242
import io.swagger.v3.core.converter.AnnotatedType;
4343
import io.swagger.v3.core.converter.ModelConverter;
4444
import io.swagger.v3.core.converter.ModelConverterContext;
4545
import io.swagger.v3.core.converter.ModelConverterContextImpl;
4646
import io.swagger.v3.core.util.AnnotationsUtils;
47-
import io.swagger.v3.oas.annotations.media.SchemaProperty;
4847
import io.swagger.v3.oas.models.media.Schema;
4948
import org.apache.commons.lang3.StringUtils;
5049
import org.apache.commons.lang3.reflect.FieldUtils;
@@ -158,7 +157,7 @@ public void setJavadocDescription(Class<?> cls, List<Field> fields, List<Propert
158157
properties.entrySet().stream()
159158
.filter(stringSchemaEntry -> StringUtils.isBlank(stringSchemaEntry.getValue().getDescription()))
160159
.forEach(stringSchemaEntry -> {
161-
Optional<Field> optionalField = fields.stream().filter(field1 -> field1.getName().equals(stringSchemaEntry.getKey())).findAny();
160+
Optional<Field> optionalField = fields.stream().filter(field1 -> findFields(stringSchemaEntry, field1)).findAny();
162161
optionalField.ifPresent(field -> {
163162
String fieldJavadoc = javadocProvider.getFieldJavadoc(field);
164163
if (StringUtils.isNotBlank(fieldJavadoc))
@@ -176,4 +175,27 @@ public void setJavadocDescription(Class<?> cls, List<Field> fields, List<Propert
176175
}
177176
}
178177
}
178+
179+
/**
180+
* Find fields boolean.
181+
*
182+
* @param stringSchemaEntry the string schema entry
183+
* @param field the field
184+
* @return the boolean
185+
*/
186+
private static boolean findFields(Entry<String, Schema> stringSchemaEntry, Field field) {
187+
if (field.getName().equals(stringSchemaEntry.getKey())){
188+
return true;
189+
}
190+
else {
191+
JsonProperty jsonPropertyAnnotation = field.getAnnotation(JsonProperty.class);
192+
if (jsonPropertyAnnotation != null) {
193+
String jsonPropertyName = jsonPropertyAnnotation.value();
194+
if (jsonPropertyName.equals(stringSchemaEntry.getKey())){
195+
return true;
196+
}
197+
}
198+
return false;
199+
}
200+
}
179201
}

springdoc-openapi-tests/springdoc-openapi-javadoc-tests/src/test/java/test/org/springdoc/api/app97/StudentV2.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ public class StudentV2 {
1010
/**
1111
* The Name.
1212
*/
13-
@JsonProperty("name")
13+
@JsonProperty("bb")
1414
private String name;
1515

1616
/**

springdoc-openapi-tests/springdoc-openapi-javadoc-tests/src/test/resources/results/app97.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -132,7 +132,7 @@
132132
"StudentV2": {
133133
"type": "object",
134134
"properties": {
135-
"name": {
135+
"bb": {
136136
"type": "string",
137137
"description": "The Name."
138138
}
@@ -151,4 +151,4 @@
151151
}
152152
}
153153
}
154-
}
154+
}

0 commit comments

Comments
 (0)