Package io.micronaut.openapi.visitor
Class OpenApiEndpointVisitor
java.lang.Object
io.micronaut.openapi.visitor.AbstractOpenApiEndpointVisitor
io.micronaut.openapi.visitor.OpenApiEndpointVisitor
- All Implemented Interfaces:
io.micronaut.core.order.Ordered
,io.micronaut.core.util.Toggleable
,io.micronaut.inject.visitor.TypeElementVisitor<Object,
Object>
@SupportedOptions("micronaut.openapi.enabled")
public class OpenApiEndpointVisitor
extends AbstractOpenApiEndpointVisitor
implements io.micronaut.inject.visitor.TypeElementVisitor<Object,Object>
A
TypeElementVisitor
the builds the Swagger model from Micronaut
controllers at compile time.- Since:
- 1.4
- Author:
- croudet
-
Nested Class Summary
Nested classes/interfaces inherited from interface io.micronaut.inject.visitor.TypeElementVisitor
io.micronaut.inject.visitor.TypeElementVisitor.VisitorKind
-
Field Summary
Fields inherited from class io.micronaut.openapi.visitor.AbstractOpenApiEndpointVisitor
classExternalDocs, classTags
Fields inherited from interface io.micronaut.core.order.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE
-
Constructor Summary
ConstructorDescriptionOpenApiEndpointVisitor
(boolean enabled) OpenApiEndpointVisitor
(boolean enabled, List<io.micronaut.core.annotation.AnnotationValue<io.swagger.v3.oas.annotations.tags.Tag>> additionalTags, List<io.micronaut.core.annotation.AnnotationValue<io.swagger.v3.oas.annotations.security.SecurityRequirement>> additionalSecurityRequirements) -
Method Summary
Modifier and TypeMethodDescriptionprotected List<io.micronaut.http.MediaType>
consumesMediaTypes
(io.micronaut.inject.ast.MethodElement element) Returns the consumes media types.protected String
description
(io.micronaut.inject.ast.MethodElement element) Returns the description for the element.int
getOrder()
protected List<io.swagger.v3.oas.models.tags.Tag>
getUserDefinedClassTags
(io.micronaut.inject.ast.ClassElement element, io.micronaut.inject.visitor.VisitorContext context) Returns the class tags.protected io.micronaut.http.HttpMethod
httpMethod
(io.micronaut.inject.ast.MethodElement element) Returns the HttpMethod of the element.protected 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 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 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 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 <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 void
processSecuritySchemes
(io.micronaut.inject.ast.ClassElement element, io.micronaut.inject.visitor.VisitorContext context) ProcessesSecurityScheme
annotations.protected List<io.micronaut.http.MediaType>
producesMediaTypes
(io.micronaut.inject.ast.MethodElement element) Returns the produces media types.void
start
(io.micronaut.inject.visitor.VisitorContext context) protected 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.Methods inherited from class io.micronaut.openapi.visitor.AbstractOpenApiEndpointVisitor
visitMethod
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface io.micronaut.core.util.Toggleable
isEnabled
Methods inherited from interface io.micronaut.inject.visitor.TypeElementVisitor
finish, getClassType, getElementType, getSupportedAnnotationNames, getSupportedOptions, getVisitorKind, visitConstructor, visitEnumConstant, visitField, visitMethod
-
Constructor Details
-
OpenApiEndpointVisitor
public OpenApiEndpointVisitor() -
OpenApiEndpointVisitor
public OpenApiEndpointVisitor(boolean enabled) -
OpenApiEndpointVisitor
-
-
Method Details
-
start
public void start(io.micronaut.inject.visitor.VisitorContext context) -
visitClass
public void visitClass(io.micronaut.inject.ast.ClassElement element, io.micronaut.inject.visitor.VisitorContext context) Description copied from class:AbstractOpenApiEndpointVisitor
Executed when a class is encountered that matches the generic class.- Specified by:
visitClass
in interfaceio.micronaut.inject.visitor.TypeElementVisitor<Object,
Object> - Overrides:
visitClass
in classAbstractOpenApiEndpointVisitor
- Parameters:
element
- The elementcontext
- The visitor context
-
ignore
protected boolean ignore(io.micronaut.inject.ast.ClassElement element, io.micronaut.inject.visitor.VisitorContext context) Description copied from class:AbstractOpenApiEndpointVisitor
Returns true if the specified element should not be processed.- Specified by:
ignore
in classAbstractOpenApiEndpointVisitor
- Parameters:
element
- The ClassElement.context
- The context.- Returns:
- true if the specified element should not be processed.
-
ignore
protected boolean ignore(io.micronaut.inject.ast.MethodElement element, io.micronaut.inject.visitor.VisitorContext context) Description copied from class:AbstractOpenApiEndpointVisitor
Returns true if the specified element should not be processed.- Specified by:
ignore
in classAbstractOpenApiEndpointVisitor
- Parameters:
element
- The ClassElement.context
- The context.- Returns:
- true if the specified element should not be processed.
-
httpMethod
protected io.micronaut.http.HttpMethod httpMethod(io.micronaut.inject.ast.MethodElement element) Description copied from class:AbstractOpenApiEndpointVisitor
Returns the HttpMethod of the element.- Specified by:
httpMethod
in classAbstractOpenApiEndpointVisitor
- Parameters:
element
- The MethodElement.- Returns:
- The HttpMethod of the element.
-
uriMatchTemplates
protected List<io.micronaut.http.uri.UriMatchTemplate> uriMatchTemplates(io.micronaut.inject.ast.MethodElement element, io.micronaut.inject.visitor.VisitorContext context) Description copied from class:AbstractOpenApiEndpointVisitor
Returns the uri paths of the element.- Specified by:
uriMatchTemplates
in classAbstractOpenApiEndpointVisitor
- Parameters:
element
- The MethodElement.context
- The context- Returns:
- The uri paths of the element.
-
consumesMediaTypes
protected List<io.micronaut.http.MediaType> consumesMediaTypes(io.micronaut.inject.ast.MethodElement element) Description copied from class:AbstractOpenApiEndpointVisitor
Returns the consumes media types.- Specified by:
consumesMediaTypes
in classAbstractOpenApiEndpointVisitor
- Parameters:
element
- The MethodElement.- Returns:
- The consumes media types.
-
producesMediaTypes
protected List<io.micronaut.http.MediaType> producesMediaTypes(io.micronaut.inject.ast.MethodElement element) Description copied from class:AbstractOpenApiEndpointVisitor
Returns the produces media types.- Specified by:
producesMediaTypes
in classAbstractOpenApiEndpointVisitor
- Parameters:
element
- The MethodElement.- Returns:
- The produces media types.
-
description
Description copied from class:AbstractOpenApiEndpointVisitor
Returns the description for the element.- Specified by:
description
in classAbstractOpenApiEndpointVisitor
- Parameters:
element
- The MethodElement.- Returns:
- The description for the element.
-
getUserDefinedClassTags
protected List<io.swagger.v3.oas.models.tags.Tag> getUserDefinedClassTags(io.micronaut.inject.ast.ClassElement element, io.micronaut.inject.visitor.VisitorContext context) Description copied from class:AbstractOpenApiEndpointVisitor
Returns the class tags.- Specified by:
getUserDefinedClassTags
in classAbstractOpenApiEndpointVisitor
- Parameters:
element
- The ClassElement.context
- The context.- Returns:
- The class tags.
-
methodServers
protected List<io.swagger.v3.oas.models.servers.Server> methodServers(io.micronaut.inject.ast.MethodElement element, io.micronaut.inject.visitor.VisitorContext context) Description copied from class:AbstractOpenApiEndpointVisitor
Returns the servers at method level.- Specified by:
methodServers
in classAbstractOpenApiEndpointVisitor
- Parameters:
element
- The MethodElement.context
- The context.- Returns:
- The servers.
-
methodSecurityRequirements
protected List<io.swagger.v3.oas.models.security.SecurityRequirement> methodSecurityRequirements(io.micronaut.inject.ast.MethodElement element, io.micronaut.inject.visitor.VisitorContext context) Description copied from class:AbstractOpenApiEndpointVisitor
Returns the security requirements at method level.- Specified by:
methodSecurityRequirements
in classAbstractOpenApiEndpointVisitor
- Parameters:
element
- The MethodElement.context
- The context.- Returns:
- The security requirements.
-
getOrder
public int getOrder()- Specified by:
getOrder
in interfaceio.micronaut.core.order.Ordered
-
processSecuritySchemes
protected void processSecuritySchemes(io.micronaut.inject.ast.ClassElement element, io.micronaut.inject.visitor.VisitorContext context) ProcessesSecurityScheme
annotations.- 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.
-