|
@@ -36,13 +36,15 @@ public class CustomizeParameterAnalyser extends ParameterAnalyser {
|
|
|
*/
|
|
|
private boolean isEnumerateWrapping(Parameter parameter) {
|
|
|
Field field = parameter.getField();
|
|
|
- if (field == null) {
|
|
|
- JsonSerialize annotation = parameter.getOriginal().getAnnotation(JsonSerialize.class);
|
|
|
- return annotation != null && JacksonEnumerateSerializer.class.isAssignableFrom(annotation.using());
|
|
|
+ Class<?> type = ObjectUtils.ifNull(field, Field::getType, parameter::getOriginal);
|
|
|
+ JsonSerialize annotation = type.getAnnotation(JsonSerialize.class);
|
|
|
+ if (annotation != null && (annotation.using() == JacksonEnumerateSerializer.class
|
|
|
+ || annotation.contentUsing() == JacksonEnumerateSerializer.class)) {
|
|
|
+ return true;
|
|
|
}
|
|
|
- JsonSerialize annotation = field.getAnnotation(JsonSerialize.class);
|
|
|
- return annotation != null && (JacksonEnumerateSerializer.class.isAssignableFrom(annotation.using())
|
|
|
- || JacksonEnumerateSerializer.class.isAssignableFrom(annotation.contentUsing()));
|
|
|
+ return field != null && (annotation = field.getAnnotation(JsonSerialize.class)) != null
|
|
|
+ && (annotation.using() == JacksonEnumerateSerializer.class
|
|
|
+ || annotation.contentUsing() == JacksonEnumerateSerializer.class);
|
|
|
}
|
|
|
|
|
|
/**
|
|
@@ -83,18 +85,31 @@ public class CustomizeParameterAnalyser extends ParameterAnalyser {
|
|
|
parameter.setExample("PT1S");
|
|
|
} else if (!parameter.isInput() && this.isEnumerateWrapping(parameter)) {
|
|
|
parameter.setType(Object.class);
|
|
|
- List<Parameter.Option> options = parameter.getOptions();
|
|
|
- List<Parameter> fields = Lists.newArrayListWithCapacity(2);
|
|
|
- fields.add(this.initializeEnumerateWrappingParameter(
|
|
|
- JacksonEnumerateSerializer.CODE, "编码", options
|
|
|
- ));
|
|
|
- options = ObjectUtils.isEmpty(options) ? Collections.emptyList() :
|
|
|
- options.stream().map(option -> Parameter.Option.builder().key(option.getValue())
|
|
|
+ List<Parameter> fields = Lists.newLinkedList();
|
|
|
+ List<Parameter.Option> options = ObjectUtils.ifEmpty(
|
|
|
+ parameter.getOptions(),
|
|
|
+ os -> os.stream().map(option -> Parameter.Option.builder().key(option.getValue())
|
|
|
.value(option.getKey()).deprecated(option.isDeprecated()).build())
|
|
|
- .collect(Collectors.toList());
|
|
|
- fields.add(this.initializeEnumerateWrappingParameter(
|
|
|
- JacksonEnumerateSerializer.DESCRIPTION, "描述", options
|
|
|
- ));
|
|
|
+ .collect(Collectors.toList()),
|
|
|
+ Collections::emptyList
|
|
|
+ );
|
|
|
+ Class<?> type = ObjectUtils.ifNull(parameter.getField(), Field::getType, parameter::getOriginal);
|
|
|
+ ObjectUtils.foreachClassFields(type, field -> {
|
|
|
+ String name = field.getName();
|
|
|
+ List<Parameter.Option> _options = JacksonEnumerateSerializer.CODE.equals(name)
|
|
|
+ || JacksonEnumerateSerializer.DESCRIPTION.equals(name) ? options : Collections.emptyList();
|
|
|
+ fields.add(this.initializeEnumerateWrappingParameter(name, this.getDescription(field), _options));
|
|
|
+ });
|
|
|
+ if (fields.stream().noneMatch(field -> JacksonEnumerateSerializer.CODE.equals(field.getName()))) {
|
|
|
+ fields.add(this.initializeEnumerateWrappingParameter(
|
|
|
+ JacksonEnumerateSerializer.CODE, "编码", options
|
|
|
+ ));
|
|
|
+ }
|
|
|
+ if (fields.stream().noneMatch(field -> JacksonEnumerateSerializer.DESCRIPTION.equals(field.getName()))) {
|
|
|
+ fields.add(this.initializeEnumerateWrappingParameter(
|
|
|
+ JacksonEnumerateSerializer.DESCRIPTION, "描述", options
|
|
|
+ ));
|
|
|
+ }
|
|
|
parameter.setFields(fields);
|
|
|
parameter.setOptions(Collections.emptyList());
|
|
|
}
|