public abstract class AbstractOpenApiEndpointVisitor
extends java.lang.Object
TypeElementVisitor the builds the Swagger model from Micronaut controllers at compile time.| Modifier and Type | Field and Description |
|---|---|
protected io.swagger.v3.oas.models.ExternalDocumentation |
classExternalDocs |
protected java.util.List<io.swagger.v3.oas.models.tags.Tag> |
classTags |
static java.lang.String |
COMPONENTS_CALLBACKS_PREFIX |
protected static java.lang.String |
CONTEXT_CHILD_OP_ID_PREFIX |
protected static java.lang.String |
CONTEXT_CHILD_OP_ID_SUFFIX |
protected static java.lang.String |
CONTEXT_CHILD_OP_ID_SUFFIX_ADD_ALWAYS |
protected static java.lang.String |
CONTEXT_CHILD_PATH |
protected static java.lang.String |
IS_PROCESS_PARENT_CLASS |
| Constructor and Description |
|---|
AbstractOpenApiEndpointVisitor() |
| Modifier and Type | Method and Description |
|---|---|
protected io.swagger.v3.oas.models.media.Schema |
bindArraySchemaAnnotationValue(io.micronaut.inject.visitor.VisitorContext context,
io.micronaut.inject.ast.Element element,
io.swagger.v3.oas.models.media.Schema schemaToBind,
io.micronaut.core.annotation.AnnotationValue<io.swagger.v3.oas.annotations.media.ArraySchema> schemaAnn)
Binds the array schema for the given element.
|
protected io.swagger.v3.oas.models.media.Schema |
bindSchemaAnnotationValue(io.micronaut.inject.visitor.VisitorContext context,
io.micronaut.inject.ast.Element element,
io.swagger.v3.oas.models.media.Schema schemaToBind,
io.micronaut.core.annotation.AnnotationValue<io.swagger.v3.oas.annotations.media.Schema> schemaAnn)
Binds the schema for the given element.
|
protected io.swagger.v3.oas.models.media.Schema |
bindSchemaForElement(io.micronaut.inject.visitor.VisitorContext context,
io.micronaut.inject.ast.TypedElement element,
io.micronaut.inject.ast.ClassElement elementType,
io.swagger.v3.oas.models.media.Schema schemaToBind)
Binds the schema for the given element.
|
protected abstract java.util.List<io.swagger.v3.oas.models.tags.Tag> |
classTags(io.micronaut.inject.ast.ClassElement element,
io.micronaut.inject.visitor.VisitorContext context)
Returns the class tags.
|
protected abstract java.util.List<io.micronaut.http.MediaType> |
consumesMediaTypes(io.micronaut.inject.ast.MethodElement element)
Returns the consumes media types.
|
protected abstract java.lang.String |
description(io.micronaut.inject.ast.MethodElement element)
Returns the description for the element.
|
protected abstract io.micronaut.http.HttpMethod |
httpMethod(io.micronaut.inject.ast.MethodElement element)
Returns the HttpMethod of the element.
|
protected abstract boolean |
ignore(io.micronaut.inject.ast.ClassElement element,
io.micronaut.inject.visitor.VisitorContext context)
Returns true if the specified element should not be processed.
|
protected abstract boolean |
ignore(io.micronaut.inject.ast.MethodElement element,
io.micronaut.inject.visitor.VisitorContext context)
Returns true if the specified element should not be processed.
|
protected boolean |
isElementNotNullable(io.micronaut.inject.ast.Element element,
io.micronaut.inject.ast.Element classElement) |
protected abstract java.util.List<io.swagger.v3.oas.models.security.SecurityRequirement> |
methodSecurityRequirements(io.micronaut.inject.ast.MethodElement element,
io.micronaut.inject.visitor.VisitorContext context)
Returns the security requirements at method level.
|
protected abstract java.util.List<io.swagger.v3.oas.models.servers.Server> |
methodServers(io.micronaut.inject.ast.MethodElement element,
io.micronaut.inject.visitor.VisitorContext context)
Returns the servers at method level.
|
static java.lang.String |
prependIfMissing(java.lang.String str,
java.lang.String prefix) |
protected void |
processJavaxValidationAnnotations(io.micronaut.inject.ast.Element element,
io.micronaut.inject.ast.ClassElement elementType,
io.swagger.v3.oas.models.media.Schema schemaToBind) |
protected <T,A extends java.lang.annotation.Annotation> |
processOpenApiAnnotation(io.micronaut.inject.ast.Element element,
io.micronaut.inject.visitor.VisitorContext context,
java.lang.Class<A> annotationType,
java.lang.Class<T> modelType,
java.util.List<T> tagList)
Converts annotation to model.
|
protected void |
processSchemaProperty(io.micronaut.inject.visitor.VisitorContext context,
io.micronaut.inject.ast.TypedElement element,
io.micronaut.inject.ast.ClassElement elementType,
io.micronaut.inject.ast.Element classElement,
io.swagger.v3.oas.models.media.Schema parentSchema,
io.swagger.v3.oas.models.media.Schema propertySchema)
Processes a schema property.
|
protected void |
processSecuritySchemes(io.micronaut.inject.ast.ClassElement element,
io.micronaut.inject.visitor.VisitorContext context)
Processes
SecurityScheme
annotations. |
protected abstract java.util.List<io.micronaut.http.MediaType> |
producesMediaTypes(io.micronaut.inject.ast.MethodElement element)
Returns the produces media types.
|
protected io.swagger.v3.oas.models.media.Schema |
readSchema(io.micronaut.core.annotation.AnnotationValue<io.swagger.v3.oas.annotations.media.Schema> schemaValue,
io.swagger.v3.oas.models.OpenAPI openAPI,
io.micronaut.inject.visitor.VisitorContext context,
io.micronaut.inject.ast.Element type,
java.util.Map<java.lang.String,io.micronaut.inject.ast.ClassElement> typeArgs,
java.util.List<io.micronaut.http.MediaType> mediaTypes)
Reads schema.
|
protected io.swagger.v3.oas.models.media.Schema |
resolveSchema(io.micronaut.inject.ast.Element definingElement,
io.micronaut.inject.ast.ClassElement type,
io.micronaut.inject.visitor.VisitorContext context,
java.util.List<io.micronaut.http.MediaType> mediaTypes)
Resolves the schema for the given type element.
|
protected io.swagger.v3.oas.models.media.Schema |
resolveSchema(io.swagger.v3.oas.models.OpenAPI openAPI,
io.micronaut.inject.ast.Element definingElement,
io.micronaut.inject.ast.ClassElement type,
io.micronaut.inject.visitor.VisitorContext context,
java.util.List<io.micronaut.http.MediaType> mediaTypes,
JavadocDescription fieldJavadoc,
JavadocDescription classJavadoc)
Resolves the schema for the given type element.
|
protected java.util.Map<java.lang.CharSequence,java.lang.Object> |
toValueMap(java.util.Map<java.lang.CharSequence,java.lang.Object> values,
io.micronaut.inject.visitor.VisitorContext context)
Convert the values to a map.
|
protected abstract java.util.List<io.micronaut.http.uri.UriMatchTemplate> |
uriMatchTemplates(io.micronaut.inject.ast.MethodElement element,
io.micronaut.inject.visitor.VisitorContext context)
Returns the uri paths of the element.
|
void |
visitClass(io.micronaut.inject.ast.ClassElement element,
io.micronaut.inject.visitor.VisitorContext context)
Executed when a class is encountered that matches the generic class.
|
void |
visitMethod(io.micronaut.inject.ast.MethodElement element,
io.micronaut.inject.visitor.VisitorContext context)
Executed when a method is encountered that matches the generic element.
|
public static final java.lang.String COMPONENTS_CALLBACKS_PREFIX
protected static final java.lang.String CONTEXT_CHILD_PATH
protected static final java.lang.String CONTEXT_CHILD_OP_ID_PREFIX
protected static final java.lang.String CONTEXT_CHILD_OP_ID_SUFFIX
protected static final java.lang.String CONTEXT_CHILD_OP_ID_SUFFIX_ADD_ALWAYS
protected static final java.lang.String IS_PROCESS_PARENT_CLASS
protected java.util.List<io.swagger.v3.oas.models.tags.Tag> classTags
protected io.swagger.v3.oas.models.ExternalDocumentation classExternalDocs
public void visitClass(io.micronaut.inject.ast.ClassElement element,
io.micronaut.inject.visitor.VisitorContext context)
element - The elementcontext - The visitor contextprotected abstract java.util.List<io.swagger.v3.oas.models.security.SecurityRequirement> methodSecurityRequirements(io.micronaut.inject.ast.MethodElement element,
io.micronaut.inject.visitor.VisitorContext context)
element - The MethodElement.context - The context.protected abstract java.util.List<io.swagger.v3.oas.models.servers.Server> methodServers(io.micronaut.inject.ast.MethodElement element,
io.micronaut.inject.visitor.VisitorContext context)
element - The MethodElement.context - The context.protected abstract java.util.List<io.swagger.v3.oas.models.tags.Tag> classTags(io.micronaut.inject.ast.ClassElement element,
io.micronaut.inject.visitor.VisitorContext context)
element - The ClassElement.context - The context.protected abstract boolean ignore(io.micronaut.inject.ast.ClassElement element,
io.micronaut.inject.visitor.VisitorContext context)
element - The ClassElement.context - The context.protected abstract boolean ignore(io.micronaut.inject.ast.MethodElement element,
io.micronaut.inject.visitor.VisitorContext context)
element - The ClassElement.context - The context.protected abstract io.micronaut.http.HttpMethod httpMethod(io.micronaut.inject.ast.MethodElement element)
element - The MethodElement.protected abstract java.util.List<io.micronaut.http.uri.UriMatchTemplate> uriMatchTemplates(io.micronaut.inject.ast.MethodElement element,
io.micronaut.inject.visitor.VisitorContext context)
element - The MethodElement.context - The contextprotected abstract java.util.List<io.micronaut.http.MediaType> consumesMediaTypes(io.micronaut.inject.ast.MethodElement element)
element - The MethodElement.protected abstract java.util.List<io.micronaut.http.MediaType> producesMediaTypes(io.micronaut.inject.ast.MethodElement element)
element - The MethodElement.protected abstract java.lang.String description(io.micronaut.inject.ast.MethodElement element)
element - The MethodElement.public void visitMethod(io.micronaut.inject.ast.MethodElement element,
io.micronaut.inject.visitor.VisitorContext context)
element - The elementcontext - The visitor contextprotected java.util.Map<java.lang.CharSequence,java.lang.Object> toValueMap(java.util.Map<java.lang.CharSequence,java.lang.Object> values,
io.micronaut.inject.visitor.VisitorContext context)
values - The valuescontext - The visitor contextpublic static java.lang.String prependIfMissing(java.lang.String str,
java.lang.String prefix)
@Nullable
protected io.swagger.v3.oas.models.media.Schema resolveSchema(@Nullable
io.micronaut.inject.ast.Element definingElement,
io.micronaut.inject.ast.ClassElement type,
io.micronaut.inject.visitor.VisitorContext context,
java.util.List<io.micronaut.http.MediaType> mediaTypes)
definingElement - The defining elementtype - The type elementcontext - The contextmediaTypes - An optional media type@Nullable
protected io.swagger.v3.oas.models.media.Schema resolveSchema(io.swagger.v3.oas.models.OpenAPI openAPI,
@Nullable
io.micronaut.inject.ast.Element definingElement,
io.micronaut.inject.ast.ClassElement type,
io.micronaut.inject.visitor.VisitorContext context,
java.util.List<io.micronaut.http.MediaType> mediaTypes,
JavadocDescription fieldJavadoc,
JavadocDescription classJavadoc)
openAPI - The OpenAPI objectdefiningElement - The defining elementtype - The type elementcontext - The contextmediaTypes - An optional media typefieldJavadoc - Field-level java docclassJavadoc - Class-level java docprotected void processSchemaProperty(io.micronaut.inject.visitor.VisitorContext context,
io.micronaut.inject.ast.TypedElement element,
io.micronaut.inject.ast.ClassElement elementType,
@Nullable
io.micronaut.inject.ast.Element classElement,
io.swagger.v3.oas.models.media.Schema parentSchema,
io.swagger.v3.oas.models.media.Schema propertySchema)
context - The visitor contextelement - The elementelementType - The element typeclassElement - The class elementparentSchema - The parent schemapropertySchema - The property schemaprotected boolean isElementNotNullable(io.micronaut.inject.ast.Element element,
@Nullable
io.micronaut.inject.ast.Element classElement)
protected io.swagger.v3.oas.models.media.Schema bindSchemaForElement(io.micronaut.inject.visitor.VisitorContext context,
io.micronaut.inject.ast.TypedElement element,
io.micronaut.inject.ast.ClassElement elementType,
io.swagger.v3.oas.models.media.Schema schemaToBind)
context - The contextelement - The elementelementType - The element typeschemaToBind - The schema to bindprotected void processJavaxValidationAnnotations(io.micronaut.inject.ast.Element element,
io.micronaut.inject.ast.ClassElement elementType,
io.swagger.v3.oas.models.media.Schema schemaToBind)
protected io.swagger.v3.oas.models.media.Schema bindSchemaAnnotationValue(io.micronaut.inject.visitor.VisitorContext context,
io.micronaut.inject.ast.Element element,
io.swagger.v3.oas.models.media.Schema schemaToBind,
io.micronaut.core.annotation.AnnotationValue<io.swagger.v3.oas.annotations.media.Schema> schemaAnn)
context - The contextelement - The elementschemaToBind - The schema to bindschemaAnn - The schema annotationprotected io.swagger.v3.oas.models.media.Schema bindArraySchemaAnnotationValue(io.micronaut.inject.visitor.VisitorContext context,
io.micronaut.inject.ast.Element element,
io.swagger.v3.oas.models.media.Schema schemaToBind,
io.micronaut.core.annotation.AnnotationValue<io.swagger.v3.oas.annotations.media.ArraySchema> schemaAnn)
context - The contextelement - The elementschemaToBind - The schema to bindschemaAnn - The schema annotationprotected io.swagger.v3.oas.models.media.Schema readSchema(io.micronaut.core.annotation.AnnotationValue<io.swagger.v3.oas.annotations.media.Schema> schemaValue,
io.swagger.v3.oas.models.OpenAPI openAPI,
io.micronaut.inject.visitor.VisitorContext context,
@Nullable
io.micronaut.inject.ast.Element type,
java.util.Map<java.lang.String,io.micronaut.inject.ast.ClassElement> typeArgs,
java.util.List<io.micronaut.http.MediaType> mediaTypes)
throws com.fasterxml.jackson.core.JsonProcessingException
schemaValue - annotation valueopenAPI - The OpenApicontext - The VisitorContexttype - type elementtypeArgs - type argumentsmediaTypes - The media types of schemacom.fasterxml.jackson.core.JsonProcessingException - when Json parsing failsprotected void processSecuritySchemes(io.micronaut.inject.ast.ClassElement element,
io.micronaut.inject.visitor.VisitorContext context)
SecurityScheme
annotations.element - The elementcontext - The visitor contextprotected <T,A extends java.lang.annotation.Annotation> java.util.List<T> processOpenApiAnnotation(io.micronaut.inject.ast.Element element,
io.micronaut.inject.visitor.VisitorContext context,
java.lang.Class<A> annotationType,
java.lang.Class<T> modelType,
java.util.List<T> tagList)
T - The model type.A - The annotation type.element - The element to process.context - The context.annotationType - The annotation type.modelType - The model type.tagList - The initial list of models.