Class DefaultSourceGenerationContext

java.lang.Object
io.micronaut.aot.core.context.DefaultSourceGenerationContext
All Implemented Interfaces:
AOTContext

public final class DefaultSourceGenerationContext extends Object implements 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 Details

  • Method Details

    • getPackageName

      @NonNull public @NonNull String getPackageName()
      Description copied from interface: AOTContext
      The package which should be used for generated classes.
      Specified by:
      getPackageName in interface AOTContext
      Returns:
      the package name
    • getRuntime

      @NonNull public @NonNull Runtime getRuntime()
      Description copied from interface: AOTContext
      Returns the target runtime environment.
      Specified by:
      getRuntime in interface AOTContext
      Returns:
      target runtime
    • getConfiguration

      @NonNull public @NonNull Configuration getConfiguration()
      Description copied from interface: AOTContext
      Returns the source generators configuration.
      Specified by:
      getConfiguration in interface AOTContext
      Returns:
      the configuration
    • getAnalyzer

      @NonNull public @NonNull ApplicationContextAnalyzer getAnalyzer()
      Description copied from interface: AOTContext
      Returns the application context analyzer.
      Specified by:
      getAnalyzer in interface AOTContext
      Returns:
      the application context analyzer
    • registerExcludedResource

      public void registerExcludedResource(@NonNull @NonNull String path)
      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 interface AOTContext
      Parameters:
      path - the path of the resource to exclude
    • registerClassNeededAtCompileTime

      public void registerClassNeededAtCompileTime(@NonNull @NonNull Class<?> clazz)
      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 interface AOTContext
      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 interface AOTContext
      Parameters:
      javaFile - the file to be added.
    • getGeneratedJavaFiles

      public List<com.squareup.javapoet.JavaFile> 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 interface AOTContext
      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 the StaticOptimizations service type. The consumer should create a body which returns an instance of the optimization type.
      Specified by:
      registerStaticOptimization in interface AOTContext
      Type Parameters:
      T - the type class of the optimization
      Parameters:
      className - the name of the class to generate
      optimizationKind - the type of the optimization
      bodyBuilder - the builder of the body of the load() method
    • registerServiceImplementation

      public void registerServiceImplementation(Class<?> serviceType, String simpleServiceName)
      Registers a generated service type.
      Specified by:
      registerServiceImplementation in interface AOTContext
      Parameters:
      serviceType - the type of the service
      simpleServiceName - the simple name of the generated type
    • getGeneratedStaticInitializers

      public List<com.squareup.javapoet.MethodSpec> 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 interface AOTContext
      Parameters:
      path - the relative path to the resource (including file name)
      consumer - the consumer to be called when the resource is generated.
    • getExtraClasspath

      @NonNull public @NonNull List<File> getExtraClasspath()
    • registerBuildTimeInit

      public void registerBuildTimeInit(String className)
      Description copied from interface: AOTContext
      Registers a type as a requiring initialization at build time.
      Specified by:
      registerBuildTimeInit in interface AOTContext
      Parameters:
      className - the type
    • getExcludedResources

      @NonNull public @NonNull Set<String> 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 interface AOTContext
      Parameters:
      typeSpec - the type spec of the main class
      Returns:
      a java file
    • addDiagnostics

      public void addDiagnostics(String category, String message)
      Description copied from interface: AOTContext
      Adds a diagnostic message, which is going to be written in a log file.
      Specified by:
      addDiagnostics in interface AOTContext
      Parameters:
      category - a category for the message, typically corresponding to the source generator type
      message - a message to log
    • put

      public <T> void put(@NonNull @NonNull Class<T> type, @NonNull T value)
      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 interface AOTContext
      Type Parameters:
      T - the type of the value
      Parameters:
      type - the class of the value to store
      value - the value to store
    • get

      @NonNull public <T> @NonNull Optional<T> get(@NonNull @NonNull Class<T> type)
      Description copied from interface: AOTContext
      Reads an entry from the context.
      Specified by:
      get in interface AOTContext
      Type Parameters:
      T - the type of the entry
      Parameters:
      type - the class of the entry
      Returns:
      an empty value if absent
    • getDiagnostics

      @NonNull public @NonNull Map<String,List<String>> getDiagnostics()
      Description copied from interface: AOTContext
      Returns the diagnostics map.
      Specified by:
      getDiagnostics in interface AOTContext
      Returns:
      the diagnostics
    • getBuildTimeInitClasses

      public Set<String> getBuildTimeInitClasses()
      Description copied from interface: AOTContext
      Returns the set of classes which require build time initialization
      Specified by:
      getBuildTimeInitClasses in interface AOTContext
      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 interface AOTContext