Package io.micronaut.openapi.visitor
Class AbstractOpenApiEndpointVisitor
java.lang.Object
io.micronaut.openapi.visitor.AbstractOpenApiEndpointVisitor
- Direct Known Subclasses:
 OpenApiControllerVisitor,OpenApiEndpointVisitor
A 
TypeElementVisitor the builds the Swagger model from Micronaut controllers at compile time.- Since:
 - 1.0
 - Author:
 - graemerocher
 
- 
Field Summary
FieldsModifier and TypeFieldDescriptionprotected io.swagger.v3.oas.models.ExternalDocumentationprotected List<io.swagger.v3.oas.models.tags.Tag> - 
Constructor Summary
Constructors - 
Method Summary
Modifier and TypeMethodDescriptionprotected io.swagger.v3.oas.models.media.Schema<?>bindArraySchemaAnnotationValue(io.micronaut.inject.visitor.VisitorContext context, io.micronaut.inject.ast.TypedElement element, io.swagger.v3.oas.models.media.Schema<?> schemaToBind, io.micronaut.core.annotation.AnnotationValue<io.swagger.v3.oas.annotations.media.ArraySchema> schemaAnn, @Nullable io.micronaut.inject.ast.ClassElement jsonViewClass) 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.TypedElement element, io.swagger.v3.oas.models.media.Schema<?> schemaToBind, io.micronaut.core.annotation.AnnotationValue<io.swagger.v3.oas.annotations.media.Schema> schemaAnn, @Nullable io.micronaut.inject.ast.ClassElement jsonViewClass) 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, @Nullable io.micronaut.inject.ast.ClassElement jsonViewClass) Binds the schema for the given element.protected abstract 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 List<io.micronaut.http.MediaType>consumesMediaTypes(io.micronaut.inject.ast.MethodElement element) Returns the consumes media types.protected abstract Stringdescription(io.micronaut.inject.ast.MethodElement element) Returns the description for the element.protected abstract io.micronaut.http.HttpMethodhttpMethod(io.micronaut.inject.ast.MethodElement element) Returns the HttpMethod of the element.protected abstract booleanignore(io.micronaut.inject.ast.ClassElement element, io.micronaut.inject.visitor.VisitorContext context) Returns true if the specified element should not be processed.protected abstract booleanignore(io.micronaut.inject.ast.MethodElement element, io.micronaut.inject.visitor.VisitorContext context) Returns true if the specified element should not be processed.protected abstract 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 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.protected voidprocessJakartaValidationAnnotations(io.micronaut.inject.ast.Element element, io.micronaut.inject.ast.ClassElement elementType, io.swagger.v3.oas.models.media.Schema<?> schemaToBind) protected <T,A extends Annotation> 
List<T>processOpenApiAnnotation(io.micronaut.inject.ast.Element element, io.micronaut.inject.visitor.VisitorContext context, Class<A> annotationType, Class<T> modelType, List<T> tagList) Converts annotation to model.protected voidprocessSchemaProperty(io.micronaut.inject.visitor.VisitorContext context, io.micronaut.inject.ast.TypedElement element, io.micronaut.inject.ast.ClassElement elementType, @Nullable io.micronaut.inject.ast.ClassElement classElement, io.swagger.v3.oas.models.media.Schema<?> parentSchema, io.swagger.v3.oas.models.media.Schema<?> propertySchema) Processes a schema property.protected voidprocessSecuritySchemes(io.micronaut.inject.ast.ClassElement element, io.micronaut.inject.visitor.VisitorContext context) ProcessesSecuritySchemeannotations.protected abstract 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, @Nullable io.micronaut.inject.ast.Element type, Map<String, io.micronaut.inject.ast.ClassElement> typeArgs, @Nullable io.micronaut.inject.ast.Element definingElement, List<io.micronaut.http.MediaType> mediaTypes, @Nullable io.micronaut.inject.ast.ClassElement jsonViewClass) Reads schema.protected @Nullable 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, List<io.micronaut.http.MediaType> mediaTypes, @Nullable io.micronaut.inject.ast.ClassElement jsonViewClass) Resolves the schema for the given type element.protected @Nullable 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, List<io.micronaut.http.MediaType> mediaTypes, @Nullable io.micronaut.inject.ast.ClassElement jsonViewClass, JavadocDescription fieldJavadoc, JavadocDescription classJavadoc) Resolves the schema for the given type element.protected Map<CharSequence,Object> toValueMap(Map<CharSequence, Object> values, io.micronaut.inject.visitor.VisitorContext context, @Nullable io.micronaut.inject.ast.ClassElement jsonViewClass) Convert the values to a map.protected abstract 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.voidvisitClass(io.micronaut.inject.ast.ClassElement element, io.micronaut.inject.visitor.VisitorContext context) Executed when a class is encountered that matches the generic class.voidvisitMethod(io.micronaut.inject.ast.MethodElement element, io.micronaut.inject.visitor.VisitorContext context) Executed when a method is encountered that matches the generic element. 
- 
Field Details
- 
classTags
 - 
classExternalDocs
protected io.swagger.v3.oas.models.ExternalDocumentation classExternalDocs 
 - 
 - 
Constructor Details
- 
AbstractOpenApiEndpointVisitor
public AbstractOpenApiEndpointVisitor() 
 - 
 - 
Method Details
- 
visitClass
public 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.- Parameters:
 element- The elementcontext- The visitor context
 - 
methodSecurityRequirements
protected abstract 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.- Parameters:
 element- The MethodElement.context- The context.- Returns:
 - The security requirements.
 
 - 
methodServers
protected abstract 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.- Parameters:
 element- The MethodElement.context- The context.- Returns:
 - The servers.
 
 - 
classTags
protected abstract 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.- Parameters:
 element- The ClassElement.context- The context.- Returns:
 - The class tags.
 
 - 
ignore
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.- Parameters:
 element- The ClassElement.context- The context.- Returns:
 - true if the specified element should not be processed.
 
 - 
ignore
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.- Parameters:
 element- The ClassElement.context- The context.- Returns:
 - true if the specified element should not be processed.
 
 - 
httpMethod
protected abstract io.micronaut.http.HttpMethod httpMethod(io.micronaut.inject.ast.MethodElement element) Returns the HttpMethod of the element.- Parameters:
 element- The MethodElement.- Returns:
 - The HttpMethod of the element.
 
 - 
uriMatchTemplates
protected abstract 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.- Parameters:
 element- The MethodElement.context- The context- Returns:
 - The uri paths of the element.
 
 - 
consumesMediaTypes
protected abstract List<io.micronaut.http.MediaType> consumesMediaTypes(io.micronaut.inject.ast.MethodElement element) Returns the consumes media types.- Parameters:
 element- The MethodElement.- Returns:
 - The consumes media types.
 
 - 
producesMediaTypes
protected abstract List<io.micronaut.http.MediaType> producesMediaTypes(io.micronaut.inject.ast.MethodElement element) Returns the produces media types.- Parameters:
 element- The MethodElement.- Returns:
 - The produces media types.
 
 - 
description
Returns the description for the element.- Parameters:
 element- The MethodElement.- Returns:
 - The description for the element.
 
 - 
visitMethod
public 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.- Parameters:
 element- The elementcontext- The visitor context
 - 
toValueMap
protected Map<CharSequence,Object> toValueMap(Map<CharSequence, Object> values, io.micronaut.inject.visitor.VisitorContext context, @Nullable @Nullable io.micronaut.inject.ast.ClassElement jsonViewClass) Convert the values to a map.- Parameters:
 values- The valuescontext- The visitor contextjsonViewClass- Class from JsonView annotation- Returns:
 - The map
 
 - 
resolveSchema
@Nullable protected @Nullable io.swagger.v3.oas.models.media.Schema<?> resolveSchema(@Nullable @Nullable io.micronaut.inject.ast.Element definingElement, io.micronaut.inject.ast.ClassElement type, io.micronaut.inject.visitor.VisitorContext context, List<io.micronaut.http.MediaType> mediaTypes, @Nullable @Nullable io.micronaut.inject.ast.ClassElement jsonViewClass) Resolves the schema for the given type element.- Parameters:
 definingElement- The defining elementtype- The type elementcontext- The contextmediaTypes- An optional media typejsonViewClass- Class from JsonView annotation- Returns:
 - The schema or null if it cannot be resolved
 
 - 
resolveSchema
@Nullable protected @Nullable io.swagger.v3.oas.models.media.Schema<?> resolveSchema(io.swagger.v3.oas.models.OpenAPI openApi, @Nullable @Nullable io.micronaut.inject.ast.Element definingElement, io.micronaut.inject.ast.ClassElement type, io.micronaut.inject.visitor.VisitorContext context, List<io.micronaut.http.MediaType> mediaTypes, @Nullable @Nullable io.micronaut.inject.ast.ClassElement jsonViewClass, JavadocDescription fieldJavadoc, JavadocDescription classJavadoc) Resolves the schema for the given type element.- Parameters:
 openApi- The OpenAPI objectdefiningElement- The defining elementtype- The type elementcontext- The contextmediaTypes- An optional media typefieldJavadoc- Field-level java docclassJavadoc- Class-level java docjsonViewClass- Class from JsonView annotation- Returns:
 - The schema or null if it cannot be resolved
 
 - 
processSchemaProperty
protected void processSchemaProperty(io.micronaut.inject.visitor.VisitorContext context, io.micronaut.inject.ast.TypedElement element, io.micronaut.inject.ast.ClassElement elementType, @Nullable @Nullable io.micronaut.inject.ast.ClassElement classElement, io.swagger.v3.oas.models.media.Schema<?> parentSchema, io.swagger.v3.oas.models.media.Schema<?> propertySchema) Processes a schema property.- Parameters:
 context- The visitor contextelement- The elementelementType- The element typeclassElement- The class elementparentSchema- The parent schemapropertySchema- The property schema
 - 
bindSchemaForElement
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, @Nullable @Nullable io.micronaut.inject.ast.ClassElement jsonViewClass) Binds the schema for the given element.- Parameters:
 context- The contextelement- The elementelementType- The element typeschemaToBind- The schema to bindjsonViewClass- Class from JsonView annotation- Returns:
 - The bound schema
 
 - 
processJakartaValidationAnnotations
protected void processJakartaValidationAnnotations(io.micronaut.inject.ast.Element element, io.micronaut.inject.ast.ClassElement elementType, io.swagger.v3.oas.models.media.Schema<?> schemaToBind)  - 
bindSchemaAnnotationValue
protected io.swagger.v3.oas.models.media.Schema<?> bindSchemaAnnotationValue(io.micronaut.inject.visitor.VisitorContext context, io.micronaut.inject.ast.TypedElement element, io.swagger.v3.oas.models.media.Schema<?> schemaToBind, io.micronaut.core.annotation.AnnotationValue<io.swagger.v3.oas.annotations.media.Schema> schemaAnn, @Nullable @Nullable io.micronaut.inject.ast.ClassElement jsonViewClass) Binds the schema for the given element.- Parameters:
 context- The contextelement- The elementschemaToBind- The schema to bindschemaAnn- The schema annotationjsonViewClass- Class from JsonView annotation- Returns:
 - The bound schema
 
 - 
bindArraySchemaAnnotationValue
protected io.swagger.v3.oas.models.media.Schema<?> bindArraySchemaAnnotationValue(io.micronaut.inject.visitor.VisitorContext context, io.micronaut.inject.ast.TypedElement element, io.swagger.v3.oas.models.media.Schema<?> schemaToBind, io.micronaut.core.annotation.AnnotationValue<io.swagger.v3.oas.annotations.media.ArraySchema> schemaAnn, @Nullable @Nullable io.micronaut.inject.ast.ClassElement jsonViewClass) Binds the array schema for the given element.- Parameters:
 context- The contextelement- The elementschemaToBind- The schema to bindschemaAnn- The schema annotationjsonViewClass- Class from JsonView annotation- Returns:
 - The bound schema
 
 - 
readSchema
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, @Nullable @Nullable io.micronaut.inject.ast.Element type, Map<String, io.micronaut.inject.ast.ClassElement> typeArgs, @Nullable @Nullable io.micronaut.inject.ast.Element definingElement, List<io.micronaut.http.MediaType> mediaTypes, @Nullable @Nullable io.micronaut.inject.ast.ClassElement jsonViewClass) Reads schema.- Parameters:
 schemaValue- annotation valueopenAPI- The OpenApicontext- The VisitorContexttype- type elementtypeArgs- type argumentsmediaTypes- The media types of schemajsonViewClass- Class from JsonView annotation- Returns:
 - New schema instance
 
 - 
processSecuritySchemes
protected void processSecuritySchemes(io.micronaut.inject.ast.ClassElement element, io.micronaut.inject.visitor.VisitorContext context) ProcessesSecuritySchemeannotations.- Parameters:
 element- The elementcontext- The visitor context
 - 
processOpenApiAnnotation
protected <T,A extends Annotation> List<T> processOpenApiAnnotation(io.micronaut.inject.ast.Element element, io.micronaut.inject.visitor.VisitorContext context, Class<A> annotationType, Class<T> modelType, List<T> tagList) Converts annotation to model.- Type Parameters:
 T- The model type.A- The annotation type.- Parameters:
 element- The element to process.context- The context.annotationType- The annotation type.modelType- The model type.tagList- The initial list of models.- Returns:
 - A list of model objects.
 
 
 -