Package io.micronaut.aot.core.context
Class DefaultSourceGenerationContext
java.lang.Object
io.micronaut.aot.core.context.DefaultSourceGenerationContext
- All Implemented Interfaces:
AOTContext
The source generation context.
Typically, provides access to the application classloader or the name of the package of classes which are going to be generated.
In addition, the context can be used to register resources which will need to be excluded from the final binary (e.g. if a configuration file is replaced with a class at build time, we need a way to explain that the resource file needs to be excluded from the binary).
Last but not least, this context can be used to send diagnostic messages which are written to log files during code generation.
-
Constructor Summary
ConstructorDescriptionDefaultSourceGenerationContext
(String packageName, ApplicationContextAnalyzer analyzer, Configuration configuration, Path generatedResourcesDirectory) -
Method Summary
Modifier and TypeMethodDescriptionvoid
addDiagnostics
(String category, String message) Adds a diagnostic message, which is going to be written in a log file.void
finish()
Performs actions which have to be done as late as possible during source generation.<T> @NonNull Optional<T>
Reads an entry from the context.@NonNull ApplicationContextAnalyzer
Returns the application context analyzer.Returns the set of classes which require build time initialization.@NonNull Configuration
Returns the source generators configuration.Returns the diagnostics map.Returns the list of resources to be excluded from the binary.List<com.squareup.javapoet.JavaFile>
List<com.squareup.javapoet.MethodSpec>
@NonNull String
The package which should be used for generated classes.@NonNull Runtime
Returns the target runtime environment.@NonNull com.squareup.javapoet.JavaFile
javaFile
(com.squareup.javapoet.TypeSpec typeSpec) Generates a java file spec.<T> void
Stores an entry in the context.void
registerBuildTimeInit
(String className) Registers a type as a requiring initialization at build time.void
registerClassNeededAtCompileTime
(@NonNull Class<?> clazz) Registers a class as needed at compile time (where compile time is the compile time of generated classes).void
registerExcludedResource
(@NonNull String path) Registers a resource path as excluded.void
registerGeneratedResource
(@NonNull String path, Consumer<? super File> consumer) Registers a new generated resource.void
registerGeneratedSourceFile
(@NonNull com.squareup.javapoet.JavaFile javaFile) Registers a generated source file.void
registerServiceImplementation
(Class<?> serviceType, String simpleServiceName) Registers a generated service type.void
registerStaticInitializer
(com.squareup.javapoet.MethodSpec staticInitializer) Registers a code block to be executed statically when the optimized binary is loaded.<T> void
registerStaticOptimization
(String className, Class<T> optimizationKind, Consumer<? super com.squareup.javapoet.CodeBlock.Builder> bodyBuilder) Registers a static optimization method.
-
Constructor Details
-
DefaultSourceGenerationContext
public DefaultSourceGenerationContext(String packageName, ApplicationContextAnalyzer analyzer, Configuration configuration, Path generatedResourcesDirectory)
-
-
Method Details
-
getPackageName
Description copied from interface:AOTContext
The package which should be used for generated classes.- Specified by:
getPackageName
in interfaceAOTContext
- Returns:
- the package name
-
getRuntime
Description copied from interface:AOTContext
Returns the target runtime environment.- Specified by:
getRuntime
in interfaceAOTContext
- Returns:
- target runtime
-
getConfiguration
Description copied from interface:AOTContext
Returns the source generators configuration.- Specified by:
getConfiguration
in interfaceAOTContext
- Returns:
- the configuration
-
getAnalyzer
Description copied from interface:AOTContext
Returns the application context analyzer.- Specified by:
getAnalyzer
in interfaceAOTContext
- Returns:
- the application context analyzer
-
registerExcludedResource
Description copied from interface:AOTContext
Registers a resource path as excluded. Excluded resources should be removed, as much as possible, from the final binary/deliverable since they are either not used or substituted with code.- Specified by:
registerExcludedResource
in interfaceAOTContext
- Parameters:
path
- the path of the resource to exclude
-
registerClassNeededAtCompileTime
Description copied from interface:AOTContext
Registers a class as needed at compile time (where compile time is the compile time of generated classes). This will typically be used when source generators need classes which are not on the application classpath.- Specified by:
registerClassNeededAtCompileTime
in interfaceAOTContext
- Parameters:
clazz
- a class
-
registerGeneratedSourceFile
public void registerGeneratedSourceFile(@NonNull @NonNull com.squareup.javapoet.JavaFile javaFile) Description copied from interface:AOTContext
Registers a generated source file.- Specified by:
registerGeneratedSourceFile
in interfaceAOTContext
- Parameters:
javaFile
- the file to be added.
-
getGeneratedJavaFiles
-
registerStaticInitializer
public void registerStaticInitializer(com.squareup.javapoet.MethodSpec staticInitializer) Description copied from interface:AOTContext
Registers a code block to be executed statically when the optimized binary is loaded.- Specified by:
registerStaticInitializer
in interfaceAOTContext
- Parameters:
staticInitializer
- the static initializer method
-
registerStaticOptimization
public <T> void registerStaticOptimization(String className, Class<T> optimizationKind, Consumer<? super com.squareup.javapoet.CodeBlock.Builder> bodyBuilder) Registers a static optimization method. This will automatically create a class which implements theStaticOptimizations
service type. The consumer should create a body which returns an instance of the optimization type.- Specified by:
registerStaticOptimization
in interfaceAOTContext
- Type Parameters:
T
- the type class of the optimization- Parameters:
className
- the name of the class to generateoptimizationKind
- the type of the optimizationbodyBuilder
- the builder of the body of the load() method
-
registerServiceImplementation
Registers a generated service type.- Specified by:
registerServiceImplementation
in interfaceAOTContext
- Parameters:
serviceType
- the type of the servicesimpleServiceName
- the simple name of the generated type
-
getGeneratedStaticInitializers
-
registerGeneratedResource
public void registerGeneratedResource(@NonNull @NonNull String path, Consumer<? super File> consumer) Description copied from interface:AOTContext
Registers a new generated resource.- Specified by:
registerGeneratedResource
in interfaceAOTContext
- Parameters:
path
- the relative path to the resource (including file name)consumer
- the consumer to be called when the resource is generated.
-
getExtraClasspath
-
registerBuildTimeInit
Description copied from interface:AOTContext
Registers a type as a requiring initialization at build time.- Specified by:
registerBuildTimeInit
in interfaceAOTContext
- Parameters:
className
- the type
-
getExcludedResources
Returns the list of resources to be excluded from the binary.- Returns:
- the list of resources registered to be excluded.
- See Also:
-
javaFile
@NonNull public @NonNull com.squareup.javapoet.JavaFile javaFile(com.squareup.javapoet.TypeSpec typeSpec) Description copied from interface:AOTContext
Generates a java file spec.- Specified by:
javaFile
in interfaceAOTContext
- Parameters:
typeSpec
- the type spec of the main class- Returns:
- a java file
-
addDiagnostics
Description copied from interface:AOTContext
Adds a diagnostic message, which is going to be written in a log file.- Specified by:
addDiagnostics
in interfaceAOTContext
- Parameters:
category
- a category for the message, typically corresponding to the source generator typemessage
- a message to log
-
put
Description copied from interface:AOTContext
Stores an entry in the context. The entry may be read by other processors, as long as they are executed in the proper order.- Specified by:
put
in interfaceAOTContext
- Type Parameters:
T
- the type of the value- Parameters:
type
- the class of the value to storevalue
- the value to store
-
get
Description copied from interface:AOTContext
Reads an entry from the context.- Specified by:
get
in interfaceAOTContext
- Type Parameters:
T
- the type of the entry- Parameters:
type
- the class of the entry- Returns:
- an empty value if absent
-
getDiagnostics
Description copied from interface:AOTContext
Returns the diagnostics map.- Specified by:
getDiagnostics
in interfaceAOTContext
- Returns:
- the diagnostics
-
getBuildTimeInitClasses
Description copied from interface:AOTContext
Returns the set of classes which require build time initialization.- Specified by:
getBuildTimeInitClasses
in interfaceAOTContext
- Returns:
- the set of classes needing build time init
-
finish
public void finish()Description copied from interface:AOTContext
Performs actions which have to be done as late as possible during source generation.- Specified by:
finish
in interfaceAOTContext
-