@SupportedOptions(value={"micronaut.openapi.enabled","micronaut.openapi.server.context.path","micronaut.openapi.property.naming.strategy","micronaut.openapi.views.spec","micronaut.openapi.filename","micronaut.openapi.json.format","micronaut.openapi.environments","micronaut.environment.enabled","micronaut.openapi.field.visibility.level","micronaut.openapi.config.file.locations","micronaut.openapi.target.file","micronaut.openapi.views.dest.dir","micronaut.openapi.additional.files","micronaut.openapi.config.file","micronaut.openapi.security.enabled"})
public class OpenApiApplicationVisitor
extends java.lang.Object
implements io.micronaut.inject.visitor.TypeElementVisitor<io.swagger.v3.oas.annotations.OpenAPIDefinition,java.lang.Object>
| Modifier and Type | Field and Description |
|---|---|
static java.lang.String |
MICRONAUT_CONFIG_FILE_LOCATIONS
Config file locations.
|
static java.lang.String |
MICRONAUT_ENVIRONMENT_ENABLED
Is this property true, properties wll be loaded in the standard way from application.yml.
|
static java.lang.String |
MICRONAUT_INTERNAL_OPENAPI_FILENAME
Final calculated openapi filename.
|
static java.lang.String |
MICRONAUT_OPENAPI_ADDITIONAL_FILES
System property that specifies the location of additional swagger YAML and JSON files to read from.
|
static java.lang.String |
MICRONAUT_OPENAPI_CONFIG_FILE
System property that enables setting the open api config file.
|
static java.lang.String |
MICRONAUT_OPENAPI_CONTEXT_SERVER_PATH
System property for server context path.
|
static java.lang.String |
MICRONAUT_OPENAPI_ENABLED
System property that enables or disables open api annotation processing.
|
static java.lang.String |
MICRONAUT_OPENAPI_ENDPOINT_CLASS_TAGS
The name of the entry for Endpoint class tags in the context.
|
static java.lang.String |
MICRONAUT_OPENAPI_ENDPOINT_SECURITY_REQUIREMENTS
The name of the entry for Endpoint security requirements in the context.
|
static java.lang.String |
MICRONAUT_OPENAPI_ENDPOINT_SERVERS
The name of the entry for Endpoint servers in the context.
|
static java.lang.String |
MICRONAUT_OPENAPI_ENVIRONMENTS
Active micronaut environments which will be used for @Requires annotations.
|
static java.lang.String |
MICRONAUT_OPENAPI_EXPAND_PREFIX
Prefix for expandable properties.
|
static java.lang.String |
MICRONAUT_OPENAPI_FIELD_VISIBILITY_LEVEL
System property that specifies the schema classes fields visibility level.
|
static java.lang.String |
MICRONAUT_OPENAPI_FILENAME
The name of the result swagger file.
|
static java.lang.String |
MICRONAUT_OPENAPI_JSON_FORMAT
Is this property true, output file format will be JSON, otherwise YAML.
|
static java.lang.String |
MICRONAUT_OPENAPI_PROPERTY_NAMING_STRATEGY
System property for naming strategy.
|
static java.lang.String |
MICRONAUT_OPENAPI_SECURITY_DEFAULT_SCHEMA_NAME
System property that specifies the default security schema name, if it's not specified by annotation SecurityScheme.
|
static java.lang.String |
MICRONAUT_OPENAPI_SECURITY_ENABLED
Is this property true, micronaut-openapi will process micronaut-security proerties and annotations
to construct openapi security schema.
|
static java.lang.String |
MICRONAUT_OPENAPI_TARGET_FILE
System property that enables setting the target file to write to.
|
static java.lang.String |
MICRONAUT_OPENAPI_VIEWS_DEST_DIR
System property that specifies the path where the generated UI elements will be located.
|
static java.lang.String |
MICRONAUT_OPENAPI_VIEWS_SPEC
System property for views specification.
|
static java.lang.String |
MICRONAUT_SERVER_CONTEXT_PATH
Loaded micronaut-http server context path property.
|
static java.lang.String |
OPENAPI_CONFIG_FILE
Default openapi config file.
|
| Constructor and Description |
|---|
OpenApiApplicationVisitor() |
| 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.
|
static java.lang.String |
expandProperties(java.lang.String s,
java.util.List<java.util.Map.Entry<java.lang.String,java.lang.String>> properties,
io.micronaut.inject.visitor.VisitorContext context) |
void |
finish(io.micronaut.inject.visitor.VisitorContext context) |
static java.util.List<java.lang.String> |
getActiveEnvs(io.micronaut.inject.visitor.VisitorContext context) |
static boolean |
getBooleanProperty(java.lang.String property,
boolean defaultValue,
io.micronaut.inject.visitor.VisitorContext context) |
static java.lang.String |
getConfigurationProperty(java.lang.String key,
io.micronaut.inject.visitor.VisitorContext context) |
static io.micronaut.inject.ast.ClassElement |
getCustomSchema(java.lang.String className,
java.util.Map<java.lang.String,io.micronaut.inject.ast.ClassElement> typeArgs,
io.micronaut.inject.visitor.VisitorContext context) |
static io.micronaut.context.env.Environment |
getEnv(io.micronaut.inject.visitor.VisitorContext context) |
static java.util.List<java.util.Map.Entry<java.lang.String,java.lang.String>> |
getExpandableProperties(io.micronaut.inject.visitor.VisitorContext context) |
int |
getOrder() |
static io.micronaut.openapi.visitor.OpenApiApplicationVisitor.SchemaDecorator |
getSchemaDecoration(java.lang.String packageName,
io.micronaut.inject.visitor.VisitorContext context) |
static SecurityProperties |
getSecurityProperties(io.micronaut.inject.visitor.VisitorContext context) |
protected boolean |
isElementNotNullable(io.micronaut.inject.ast.Element element,
io.micronaut.inject.ast.Element classElement) |
static boolean |
isOpenApiEnabled(io.micronaut.inject.visitor.VisitorContext context) |
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. |
static java.util.Properties |
readOpenApiConfigFile(io.micronaut.inject.visitor.VisitorContext context) |
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.
|
static java.lang.String |
replacePlaceholders(java.lang.String value,
io.micronaut.inject.visitor.VisitorContext context) |
static java.nio.file.Path |
resolve(io.micronaut.inject.visitor.VisitorContext context,
java.nio.file.Path path) |
static com.fasterxml.jackson.databind.JsonNode |
resolvePlaceholders(com.fasterxml.jackson.databind.node.ArrayNode anode,
java.util.function.UnaryOperator<java.lang.String> propertyExpander) |
static com.fasterxml.jackson.databind.JsonNode |
resolvePlaceholders(com.fasterxml.jackson.databind.JsonNode node,
java.util.function.UnaryOperator<java.lang.String> propertyExpander) |
static com.fasterxml.jackson.databind.JsonNode |
resolvePlaceholders(com.fasterxml.jackson.databind.node.ObjectNode onode,
java.util.function.UnaryOperator<java.lang.String> propertyExpander) |
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.
|
void |
visitClass(io.micronaut.inject.ast.ClassElement element,
io.micronaut.inject.visitor.VisitorContext context) |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, waitpublic static final java.lang.String MICRONAUT_OPENAPI_ENABLED
public static final java.lang.String MICRONAUT_OPENAPI_CONFIG_FILE
public static final java.lang.String MICRONAUT_OPENAPI_EXPAND_PREFIX
public static final java.lang.String MICRONAUT_OPENAPI_CONTEXT_SERVER_PATH
public static final java.lang.String MICRONAUT_OPENAPI_PROPERTY_NAMING_STRATEGY
public static final java.lang.String MICRONAUT_OPENAPI_VIEWS_SPEC
public static final java.lang.String MICRONAUT_OPENAPI_TARGET_FILE
public static final java.lang.String MICRONAUT_OPENAPI_VIEWS_DEST_DIR
public static final java.lang.String MICRONAUT_OPENAPI_ADDITIONAL_FILES
public static final java.lang.String MICRONAUT_OPENAPI_SECURITY_DEFAULT_SCHEMA_NAME
public static final java.lang.String MICRONAUT_OPENAPI_FIELD_VISIBILITY_LEVEL
Available values:
PRIVATE PACKAGE PROTECTED PUBLICpublic static final java.lang.String OPENAPI_CONFIG_FILE
public static final java.lang.String MICRONAUT_OPENAPI_ENDPOINT_CLASS_TAGS
public static final java.lang.String MICRONAUT_OPENAPI_ENDPOINT_SERVERS
public static final java.lang.String MICRONAUT_OPENAPI_ENDPOINT_SECURITY_REQUIREMENTS
public static final java.lang.String MICRONAUT_OPENAPI_JSON_FORMAT
public static final java.lang.String MICRONAUT_OPENAPI_FILENAME
Default filename is <info.title>-<info.version>.yml. If info annotation not set, filename will be swagger.yml.
public static final java.lang.String MICRONAUT_OPENAPI_ENVIRONMENTS
public static final java.lang.String MICRONAUT_ENVIRONMENT_ENABLED
public static final java.lang.String MICRONAUT_OPENAPI_SECURITY_ENABLED
public static final java.lang.String MICRONAUT_CONFIG_FILE_LOCATIONS
You can set your custom paths separated by ','. To set absolute paths use prefix 'file:', classpath paths use prefix 'classpath:' or use prefix 'project:' to set paths from project directory.
public static final java.lang.String MICRONAUT_SERVER_CONTEXT_PATH
public static final java.lang.String MICRONAUT_INTERNAL_OPENAPI_FILENAME
public static boolean isOpenApiEnabled(io.micronaut.inject.visitor.VisitorContext context)
public void visitClass(io.micronaut.inject.ast.ClassElement element,
io.micronaut.inject.visitor.VisitorContext context)
visitClass in interface io.micronaut.inject.visitor.TypeElementVisitor<io.swagger.v3.oas.annotations.OpenAPIDefinition,java.lang.Object>public static io.micronaut.openapi.visitor.OpenApiApplicationVisitor.SchemaDecorator getSchemaDecoration(java.lang.String packageName,
io.micronaut.inject.visitor.VisitorContext context)
public static io.micronaut.inject.ast.ClassElement getCustomSchema(java.lang.String className,
java.util.Map<java.lang.String,io.micronaut.inject.ast.ClassElement> typeArgs,
io.micronaut.inject.visitor.VisitorContext context)
public static java.lang.String getConfigurationProperty(java.lang.String key,
io.micronaut.inject.visitor.VisitorContext context)
public static SecurityProperties getSecurityProperties(io.micronaut.inject.visitor.VisitorContext context)
public static boolean getBooleanProperty(java.lang.String property,
boolean defaultValue,
io.micronaut.inject.visitor.VisitorContext context)
@Nullable public static io.micronaut.context.env.Environment getEnv(io.micronaut.inject.visitor.VisitorContext context)
public static java.util.List<java.lang.String> getActiveEnvs(io.micronaut.inject.visitor.VisitorContext context)
public static java.nio.file.Path resolve(io.micronaut.inject.visitor.VisitorContext context,
java.nio.file.Path path)
public static java.util.Properties readOpenApiConfigFile(io.micronaut.inject.visitor.VisitorContext context)
public static com.fasterxml.jackson.databind.JsonNode resolvePlaceholders(com.fasterxml.jackson.databind.node.ArrayNode anode,
java.util.function.UnaryOperator<java.lang.String> propertyExpander)
public static com.fasterxml.jackson.databind.JsonNode resolvePlaceholders(com.fasterxml.jackson.databind.node.ObjectNode onode,
java.util.function.UnaryOperator<java.lang.String> propertyExpander)
public static com.fasterxml.jackson.databind.JsonNode resolvePlaceholders(com.fasterxml.jackson.databind.JsonNode node,
java.util.function.UnaryOperator<java.lang.String> propertyExpander)
public static java.lang.String expandProperties(java.lang.String s,
java.util.List<java.util.Map.Entry<java.lang.String,java.lang.String>> properties,
io.micronaut.inject.visitor.VisitorContext context)
public static java.lang.String replacePlaceholders(java.lang.String value,
io.micronaut.inject.visitor.VisitorContext context)
public static java.util.List<java.util.Map.Entry<java.lang.String,java.lang.String>> getExpandableProperties(io.micronaut.inject.visitor.VisitorContext context)
public void finish(io.micronaut.inject.visitor.VisitorContext context)
finish in interface io.micronaut.inject.visitor.TypeElementVisitor<io.swagger.v3.oas.annotations.OpenAPIDefinition,java.lang.Object>public int getOrder()
getOrder in interface io.micronaut.core.order.Orderedprotected 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.