java swagger参数排序_Swagger模型字段排序问题
import staticspringfox.documentation.schema.Annotations.findPropertyAnnotation;import staticspringfox.documentation.swagger.schema.ApiModelProperties.findApiModePropertyAnnotation;importjava.lang.refl
import staticspringfox.documentation.schema.Annotations.findPropertyAnnotation;import staticspringfox.documentation.swagger.schema.ApiModelProperties.findApiModePropertyAnnotation;importjava.lang.reflect.Field;importorg.apache.commons.lang3.ArrayUtils;importorg.apache.commons.logging.Log;importorg.apache.commons.logging.LogFactory;importorg.springframework.stereotype.Component;importcom.fasterxml.jackson.databind.introspect.AnnotatedField;importcom.fasterxml.jackson.databind.introspect.BeanPropertyDefinition;importcom.google.common.base.Optional;importio.swagger.annotations.ApiModelProperty;importspringfox.documentation.spi.DocumentationType;importspringfox.documentation.spi.schema.ModelPropertyBuilderPlugin;importspringfox.documentation.spi.schema.contexts.ModelPropertyContext;importspringfox.documentation.swagger.common.SwaggerPluginSupport;
@Componentpublic class CustomApiModelPropertyPositionBuilder implementsModelPropertyBuilderPlugin {private Log log =LogFactory.getLog(getClass());
@Overridepublic booleansupports(DocumentationType delimiter) {returnSwaggerPluginSupport.pluginDoesApply(delimiter);
}
@Overridepublic voidapply(ModelPropertyContext context) {
Optional beanPropertyDefinitionOpt =context.getBeanPropertyDefinition();
Optional annotation =Optional.absent();if(context.getAnnotatedElement().isPresent()) {
annotation=annotation.or(findApiModePropertyAnnotation(context.getAnnotatedElement().get()));
}if(context.getBeanPropertyDefinition().isPresent()) {
annotation= annotation.or(findPropertyAnnotation(context.getBeanPropertyDefinition().get(), ApiModelProperty.class));
}if(beanPropertyDefinitionOpt.isPresent()) {
BeanPropertyDefinition beanPropertyDefinition=beanPropertyDefinitionOpt.get();if (annotation.isPresent() && annotation.get().position() != 0) {return;
}
AnnotatedField field=beanPropertyDefinition.getField();
Class> clazz =field.getDeclaringClass();
Field[] declaredFields=clazz.getDeclaredFields();
Field declaredField;try{
declaredField=clazz.getDeclaredField(field.getName());
}catch (NoSuchFieldException |SecurityException e) {
log.error("", e);return;
}int indexOf =ArrayUtils.indexOf(declaredFields, declaredField);if (indexOf != -1) {
context.getBuilder().position(indexOf);
}
}
}
}
更多推荐
所有评论(0)