核心代码1
public void apply(ModelPropertyContext context) {
Schema annotation = context.getAnnotatedElement()
.flatMap(OpenApiSchemaPropertyBuilder::findSchemaAnnotation)
.orElse(context.getBeanPropertyDefinition()
.flatMap(b -> findPropertyAnnotation(b, Schema.class))
.orElse(null));
if (annotation != null) {
ModelSpecification modelSpecification = null;
ResolvedType type = toType(context.getResolver()).apply(annotation);
if (!isVoid(type)) {
modelSpecification =
modelSpecifications.create(context.getOwner(), type);
}
context.getSpecificationBuilder()
.description(toDescription(descriptions).apply(annotation))
.readOnly(annotation.readOnly())
.isHidden(annotation.hidden())
.type(modelSpecification)
.position(0)
.required(annotation.required())
.example(annotation.example())
.enumerationFacet(e -> e.allowedValues(Arrays.asList(annotation.allowableValues())));
}
}
核心代码2
static Function<Schema, ResolvedType> toType(final TypeResolver resolver) {
return annotation -> resolver.resolve(annotation.implementation());
}
Schema 注解使用 ==> implementation指定class












网友评论