Interface Feature
- All Superinterfaces:
io.micronaut.core.naming.Described,io.micronaut.core.naming.Named,io.micronaut.core.order.Ordered
- All Known Subinterfaces:
AgoraPulseFeature,ApplicationFeature,ApplicationFeature,AwsApiFeature,AwsFeature,AwsLambdaEventFeature,BuildFeature,BuildPluginFeature,CacheFeature,CamundaCommunityFeature,ChatBotsFeature,CloudObjectStorageFeature,CodeContributingFeature,CommunityFeature,ConfigurationFeature,ContributingInterceptUrlMapFeature,ContributingStaticResources,CpuArchitecture,DatabaseDriverConfigurationFeature,DataDocumentFeature,DataFeature,DefaultFeature,DiscoveryFeature,DistributedConfigFeature,EclipseStoreFeature,FunctionFeature,GradleSpecificFeature,GroovyApplicationFeature,GroovyModuleFeature,HandlerClassFeature,HttpClientFeature,InfrastructureAsCodeFeature,JavaApplicationFeature,JmsFeature,JpaFeature,JsonFeature,JsonFeature,JunitCompanionFeature,KotlinApplicationFeature,KotlinSpecificFeature,KotlinSupportFeature,KotlinSymbolProcessingFeature,KotlinSymbolProcessingFeature,Langchain4jEmbeddedStore,Langchain4jFeature,Langchain4jLanguageModel,LanguageFeature,LanguageSpecificFeature,LicenseFeature,LoggingFeature,MavenSpecificFeature,MessagingFeature,MicrometerRegistryFeature,MicronautCommunityFeature,MicroStreamFeature,MigrationFeature,MinJdkFeature,MockingFeature,MqttFeature,MultiProjectFeature,ObjectStorageFeature,OneOfFeature,OpenRewriteFeature,OpenTelemetryFeature,ParentPomFeature,PicocliTestFeature,R2dbcFeature,ReactiveFeature,ReactiveHttpClientFeature,ReloadingFeature,RequireEagerSingletonInitializationFeature,RequireKaptFeature,RequiresMavenLocal,RequiresRepository,SerializationFeature,ServerFeature,SharedTestResourceFeature,TestFeature,ThirdPartyLibraryFeature,ThirdPartyServerFeature,TracingFeature,ValidationFeature,ViewFeature
- All Known Implementing Classes:
AbstractAzureContainerInstanceWorkflow,AbstractAzureFunction,AbstractCloudRunWorkflow,AbstractDekorateFeature,AbstractDekoratePlatformFeature,AbstractDekorateServiceFeature,AbstractDockerRegistryWorkflow,AbstractFunctionFeature,AbstractGoogleCloudFunction,AbstractJmsFeature,AbstractMicronautServerFeature,AbstractOpenTelemetry,AbstractOracleFunctionsWorkflow,AbstractServletFeature,Acme,ActiveMqArtemis,ActiveMqClassic,AmazonApiGateway,AmazonApiGatewayHttp,AmazonCloudWatchLogging,AmazonCognito,AmazonSesEmailFeature,AnnotationApi,AnthropicLangchain4jLanguageModel,AOP,Apache2LicenseFeature,ApiGatewayV2AwsLambdaHandlerProvider,ApplicationTypeCliFeature,ApplicationTypeDefaultFeature,ApplicationTypeFeature,ApplicationTypeFunctionFeature,ApplicationTypeGrpcFeature,ApplicationTypeLibraryFeature,ApplicationTypeMessagingFeature,AppName,AppOptics,Archaius,Arm,Asciidoctor,AssertJ,Atlas,Awaitility,AwsAlexa,AWSCiWorkflowFeature,AwsLambda,AwsLambdaCustomRuntime,AwsLambdaEventFunctionFeature,AwsLambdaEventsSerde,AwsLambdaRelatedFeature,AwsLambdaS3EventNotification,AwsLambdaScheduledEvent,AwsLambdaSnapstart,AwsParameterStore,AwsSecretsManager,AwsV2Sdk,AzureContainerInstanceGraalWorkflow,AzureContainerInstanceJavaWorkflow,AzureCosmosDbFeature,AzureHttpFunction,AzureKeyVaultFeature,AzureLangchain4jLanguageModel,AzureLogging,AzureMonitor,AzureRawFunction,BasecampAwsChatBot,BasecampAzureChatBot,BasecampGcpChatBot,BasecampHttpChatBot,BedrockLangchain4jLanguageModel,Buildless,Caffeine,Cassandra,Cdk,CdkFeature,ChatBots,CIWorkflowFeature,CloudTrace,CloudWatch,Coherence,CoherenceData,CoherenceDistributedConfiguration,CoherenceFeature,CoherenceGrpcClient,CoherenceSessionStore,Config4k,Console,Consul,ControlPanel,Core,Crac,Data,DataAzureCosmosFeature,DatabaseDriverFeature,DataDog,DataHibernateReactive,DataJdbc,DataJpa,DataMongo,DataMongoFeature,DataMongoReactive,DataR2dbc,DataSpringJdbcFeature,DatetimeGroovyModule,DateUtilGroovyModule,Dbcp,DefaultAwsLambdaHandlerProvider,DekorateHalkyon,DekorateJaeger,DekorateKnative,DekorateKubernetes,DekorateOpenshift,DekoratePrometheus,DekorateServiceCatalog,DiscoveryClient,DiscoveryConsul,DiscoveryCore,DiscoveryKubernetes,DistributedConfigConsul,DockerRegistryWorkflow,DynamoDb,Dynatrace,EaseTestingFeature,EclipseStore,EclipseStoreRest,EHCache,Elastic,Elasticsearch,ElasticSearchLangchain4jEmbeddedStore,EnforcerPlugin,Eureka,ExternalWorker,Flyway,Freemarker,FunctionAwsLambdaHandlerProvider,Ganglia,GinqGroovyModule,GithubCiWorkflowFeature,GitHubWorkflowFeature,GitIgnore,GitlabCiWorkflowFeature,GoogleAiGeminiLangchain4jLanguageModel,GoogleCloudCiWorkflowFeature,GoogleCloudEventsFunction,GoogleCloudFunction,GoogleCloudRawFunction,GoogleCloudRunGraalWorkflow,GoogleCloudRunJavaWorkflow,GoogleLogging,GoogleSecretManager,Graalpy,GraalVM,GraalVMDockerRegistryWorkflow,Gradle,GradleEnterprise,Graphite,GraphQL,Groovy,GroovyApplication,GroovyGradlePlugin,GroovyMavenPlusPlugin,Grpc,GruHttp,H2,Hamcrest,Handlebars,Hazelcast,HibernateJpa,HibernateJpaModelgen,HibernateReactiveFeature,HibernateReactiveJpa,HibernateValidator,Hikari,HttpClient,HttpClientJdk,HttpClientTest,HttpPoja,HttpSession,HuggingFaceLangchain4jLanguageModel,Humio,Hystrix,Infinispan,Influx,JacksonDatabindFeature,JacksonXml,Jaeger,JAsyncSQLFeature,Java,JavaApplication,JavaGradlePlugin,JavamailFeature,JaxRs,JaxRsSecurity,JdbcFeature,JdbiFeature,Jetty,Jib,JmsCore,Jmx,Jmx,JobRunrFeature,Jooq,Jrebel,JsonGroovyModule,JsonPath,JsonSchemaFeature,JsonSchemaValidationFeature,JsonSmart,JTE,JunitJupiterApi,JunitJupiterEngine,JunitParams,JunitPlatformSuiteEngine,Kafka,KafkaStreams,Kairos,Kapt,Knative,KoTest,Kotlin,KotlinApplication,KotlinExtensionFunctions,KotlinGradlePlugin,KotlinSymbolProcessing,Ktor,Kubernetes,KubernetesClient,KubernetesConfig,KubernetesInformer,KubernetesReactorClient,KubernetesRxJava2Client,LambdaFunctionUrl,Liquibase,LiquibaseSlf4j,LocalStack,Log4j2,Logback,MailjetEmailFeature,Management,MariaDB,Maven,MavenPublishGradlePlugin,MicrometerAnnotations,MicrometerFeature,MicrometerObservation,MicrometerObservationHttp,MicronautAot,MicronautAotGradlePlugin,MicronautApplicationGradlePluginFeature,MicronautBuildPlugin,MicronautCli,MicronautDistributedConfigurationFeature,MicronautGradleEnterprise,MicronautGuice,MicronautHttpValidation,MicronautLibraryGradlePlugin,MicronautMavenCompilerPlugin,MicronautMavenPlugin,MicronautParentPomFeature,MicronautRestAssured,MicronautSerdeJackson,MicronautSerializationProcessor,MicronautTestJunit5,MicronautTestSpock,MicronautValidationFeature,MicroStream,MicroStreamCache,MicroStreamRest,MistralAiLangchain4jLanguageModel,Mockito,Mockk,MockServerClient,MongoDbLangchain4jEmbeddedStore,MongoFeature,MongoReactive,MongoSync,Mqtt,MqttHiveMq,MqttV3,Multitenancy,MySQL,MySQLCompatibleFeature,Nats,Neo4jBolt,Neo4jLangchain4jEmbeddedStore,Netty,NewRelic,ObjectStorageAws,ObjectStorageAzure,ObjectStorageGcp,ObjectStorageLocal,ObjectStorageOracleCloud,OCICiWorkflowFeature,OllamaLangchain4jLanguageModel,OpenAiLangchain4jLanguageModel,OpenApi,OpenApiAdoc,OpenApiExplorer,OpenRewrite,OpenSearchAmazon,OpenSearchFeature,OpenSearchHttpClient5,OpenSearchLangchain4jEmbeddedStore,OpenSearchRestClient,OpenTelemetry,OpenTelemetryAnnotations,OpenTelemetryExporterFeature,OpenTelemetryExporterGoogleCloudTrace,OpenTelemetryExporterJaeger,OpenTelemetryExporterLogging,OpenTelemetryExporterOtlp,OpenTelemetryExporterZipkin,OpenTelemetryGoogleCloudTrace,OpenTelemetryGrpc,OpenTelemetryHttp,OpenTelemetryJaeger,OpenTelemetryXray,OpenTelemetryZipkin,Oracle,OracleAdvancedQueuing,OracleCloud,OracleCloudAutonomousDatabase,OracleCloudLogging,OracleCloudMicronautNettyClient,OracleCloudSdk,OracleCloudVault,OracleFunction,OracleFunctionsGraalWorkflow,OracleFunctionsJavaWorkflow,OracleLangchain4jEmbeddedStore,OracleRawFunction,Pebble,Permissions,PgVectorLangchain4jEmbeddedStore,Picocli,PicocliGroovyApplication,PicocliJavaApplication,PicocliJunit,PicocliKoTest,PicocliKotlinApplication,PicocliSpock,Platform7,PostgreSQL,PostmarkEmailFeature,ProblemJson,ProjectLombok,Prometheus,PrometheusPushGateway,Properties,PubSub,QdrantLangchain4jEmbeddedStore,R2dbc,R2dbcPool,RabbitMQ,RapiDoc,React,Reactor,ReactorHttpClient,Readme,RedisLettuce,Redoc,Retry,Ribbon,Rocker,Rss,RssItunes,RxJava1,RxJava2,RxJava2HttpClient,RxJava2HttpServerNetty,RxJava3,RxJava3HttpClient,Security,SecurityAnnotations,SecurityCsrf,SecurityFeature,SecurityJWT,SecurityLdap,SecurityOAuth2,SecurityOAuth2Feature,SecuritySession,SendGridEmailFeature,SerializationBsonFeature,SerializationJsonpFeature,ShadePlugin,Signalfx,SigningGradlePlugin,SimpleLogging,Slack,Slf4jJulBridge,Slf4jSimpleLogger,SourcegenJava,Soy,SpotlessGradlePlugin,Spring,SpringBoot,SpringDataJdbc,SpringDataJpa,SpringFeature,SpringWeb,SqlGroovyModule,SQLServer,SQS,Stackdriver,StaticResourceFeature,Statsd,SwaggerUI,TelegramAwsChatBot,TelegramAzureChatBot,TelegramGcpChatBot,TelegramHttpChatBot,TemplateEmailFeature,TestContainers,TestResources,Thymeleaf,Tomcat,Tomcat,Toml,TomlGroovyModule,Ucp,Undertow,Velocity,VertexAiGeminiLangchain4jLanguageModel,VertexAiLangchain4jLanguageModel,VertxMySql,VertxPg,ViewsFieldset,ViewsFieldsetTck,Wavefront,Websocket,Worker,X86,XmlGroovyModule,Yaml,YamlGroovyModule,Zeebe,Zipkin
@Indexed(Feature.class)
public interface Feature
extends io.micronaut.core.naming.Named, io.micronaut.core.order.Ordered, io.micronaut.core.naming.Described
A feature is a class that affects the outcome of a generated
project.
- Since:
- 2.0.0
- Author:
- James Kleeh
-
Field Summary
Fields inherited from interface io.micronaut.core.order.Ordered
HIGHEST_PRECEDENCE, LOWEST_PRECEDENCE -
Method Summary
Modifier and TypeMethodDescriptiondefault voidapply(GeneratorContext generatorContext) If this method is called for a given feature that means the feature was explicitly selected, included by default as a result ofDefaultFeature.shouldApply(io.micronaut.starter.options.Options, java.util.Set), or added explicitly by another feature throughFeatureContext.addFeature(Feature).default @Nullable Stringdefault Stringdefault @Nullable StringgetFrameworkDocumentation(GeneratorContext generatorContext) @NonNull StringgetName()The name of the feature.default intgetOrder()The order of a feature controls the order in which it applies.default @Nullable StringgetThirdPartyDocumentation(GeneratorContext generatorContext) default StringgetTitle()default booleandefault booleandefault booleanSome features should not be visible to the user because they are a common parent of other selectable features, or they should always be applied, or any other reason.default voidprocessSelectedFeatures(FeatureContext featureContext) If this method is called for a given feature then that feature was explicitly selected or was included by default as a result ofDefaultFeature.shouldApply(io.micronaut.starter.options.Options, java.util.Set).default booleanThis method must be implemented to ensure it is only selectable for the desired application types.Methods inherited from interface io.micronaut.core.naming.Described
getDescription
-
Method Details
-
getName
The name of the feature. It must be unique.- Specified by:
getNamein interfaceio.micronaut.core.naming.Named- Returns:
- the name of the feature
-
isPreview
default boolean isPreview()- Returns:
- Indicates the feature is in preview status and is subject to change.
-
isCommunity
default boolean isCommunity()- Returns:
- Indicates the feature is a community contribution.
-
getTitle
- Returns:
- The title of the feature
-
getDescription
- Specified by:
getDescriptionin interfaceio.micronaut.core.naming.Described
-
getOrder
default int getOrder()The order of a feature controls the order in which it applies. The order of a feature is important to ensure that any previous work done by other features that may be required is done. SeeFeaturePhasefor a list of phases to choose from.- Specified by:
getOrderin interfaceio.micronaut.core.order.Ordered- Returns:
- The order of the feature
-
processSelectedFeatures
If this method is called for a given feature then that feature was explicitly selected or was included by default as a result ofDefaultFeature.shouldApply(io.micronaut.starter.options.Options, java.util.Set). This method can be implemented to allow features to modify the list of features that will apply to the project. The methodsFeatureContext.addFeature(Feature)andFeatureContext.exclude(FeaturePredicate)are the primary ways to add and remove features from the context.FeatureContext.isPresent(Class)can be used to determine the existence of other features in order to make decisions.- Parameters:
featureContext- The feature context
-
apply
If this method is called for a given feature that means the feature was explicitly selected, included by default as a result ofDefaultFeature.shouldApply(io.micronaut.starter.options.Options, java.util.Set), or added explicitly by another feature throughFeatureContext.addFeature(Feature). At this point the feature list is set and cannot change.- Parameters:
generatorContext- THe generator context
-
supports
This method must be implemented to ensure it is only selectable for the desired application types. This method is not used for determining if a default feature should be applied.- Parameters:
options- Options- Returns:
- True if the feature can be selected by the user
-
isVisible
default boolean isVisible()Some features should not be visible to the user because they are a common parent of other selectable features, or they should always be applied, or any other reason.- Returns:
- True if the feature should be able to be selected by the user
-
getCategory
- Returns:
- The Category to which the feature belongs to.
-
getFrameworkDocumentation
- Parameters:
generatorContext- Generator Context- Returns:
- Returns a link to Framework documentation about the feature. eg. https://micronaut-projects.github.io/micronaut-cache/latest/guide/index.html#hazelcast
-
getThirdPartyDocumentation
- Parameters:
generatorContext- Generator Context- Returns:
- Returns a link to third party. E.g. https://hazelcast.org
-