Class ModelBuilder

java.lang.Object
io.micronaut.sourcegen.generator.visitors.ModelBuilder
Direct Known Subclasses:
GradleModelBuilder, MavenModelBuilder

@Internal public class ModelBuilder extends Object
A utility class for building models.
  • Nested Class Summary

    Nested Classes
    Modifier and Type
    Class
    Description
    static final record 
    A record for holding the generated model.
  • Field Summary

    Fields
    Modifier and Type
    Field
    Description
    protected static final String
     
     
    protected final String
     
     
  • Constructor Summary

    Constructors
    Constructor
    Description
    ModelBuilder(String packageName)
    Create the model builder.
  • Method Summary

    Modifier and Type
    Method
    Description
    protected io.micronaut.sourcegen.model.ExpressionDef
    convertCollectionParameter(io.micronaut.sourcegen.model.VariableDef.Local localVar, io.micronaut.inject.ast.ClassElement arg, io.micronaut.sourcegen.model.ExpressionDef paramExpression, List<io.micronaut.sourcegen.model.StatementDef> statements, boolean isSet)
    Create expression for converting a parameter that is a collection.
    protected static io.micronaut.sourcegen.model.MethodDef
    convertEnumMethod(io.micronaut.sourcegen.model.TypeDef type, io.micronaut.inject.ast.ClassElement requiredType)
    Create a method for converting an enum.
    io.micronaut.sourcegen.model.ExpressionDef
    convertParameterIfRequired(io.micronaut.inject.ast.ClassElement type, String name, List<io.micronaut.sourcegen.model.StatementDef> statements, io.micronaut.sourcegen.model.ExpressionDef paramExpression)
    Converts a parameter value if required.
    protected io.micronaut.sourcegen.model.MethodDef
    convertPOJOMethod(io.micronaut.sourcegen.model.ClassTypeDef type, io.micronaut.inject.ast.ClassElement requiredType, List<PluginUtils.ParameterConfig> parameters)
    Create a method to convert a POJO.
    protected io.micronaut.sourcegen.model.ExpressionDef
    convertPOJOParameter(PluginUtils.ParameterConfig parameter, List<io.micronaut.sourcegen.model.StatementDef> statements, io.micronaut.sourcegen.model.ExpressionDef owner)
    Method to create an expression for converting a property of POJO.
    protected io.micronaut.sourcegen.model.ClassTypeDef
    copyEnum(io.micronaut.inject.visitor.VisitorContext context, io.micronaut.inject.ast.ClassElement element)
    Copy an existing enum to the plugin generated sources.
    protected io.micronaut.sourcegen.model.ClassTypeDef
    copyPOJO(io.micronaut.inject.visitor.VisitorContext context, io.micronaut.inject.ast.ClassElement element, List<PluginUtils.ParameterConfig> parameters)
    Copy an existing POJO to the plugin generated sources.
    protected static io.micronaut.sourcegen.model.MethodDef
    createGetter(io.micronaut.sourcegen.model.FieldDef field, @Nullable String javadoc)
    Create a getter method.
    protected static io.micronaut.sourcegen.model.MethodDef
    createSetter(io.micronaut.sourcegen.model.FieldDef field, @Nullable String javadoc)
    Create a setter method.
    protected static io.micronaut.sourcegen.model.MethodDef
    createWither(List<io.micronaut.sourcegen.model.FieldDef> fields, @Nullable String javadoc, int index)
    Create a wither method.
    Get all the models generated by this builder.
    getParameterConfig(@NonNull io.micronaut.inject.visitor.VisitorContext context, JavadocUtils.TypeJavadoc sourceJavadoc, @NonNull io.micronaut.inject.ast.PropertyElement property)
    Get configuration for a plugin parameter.
    protected static String
    getSimpleName(io.micronaut.inject.ast.ClassElement element)
     
    io.micronaut.sourcegen.model.TypeDef
    getType(io.micronaut.inject.visitor.VisitorContext context, io.micronaut.inject.ast.ClassElement element)
    A utility method for getting a parameter type.

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • Constructor Details

    • ModelBuilder

      public ModelBuilder(String packageName)
      Create the model builder.
      Parameters:
      packageName - The package name to use for new created models
  • Method Details

    • getGeneratedModels

      public Collection<ModelBuilder.GeneratedModel> getGeneratedModels()
      Get all the models generated by this builder.
      Returns:
      The models
    • getParameterConfig

      @NonNull public PluginUtils.ParameterConfig getParameterConfig(@NonNull @NonNull io.micronaut.inject.visitor.VisitorContext context, @NonNull JavadocUtils.TypeJavadoc sourceJavadoc, @NonNull @NonNull io.micronaut.inject.ast.PropertyElement property)
      Get configuration for a plugin parameter.
      Parameters:
      context - The visitor context
      sourceJavadoc - The javadoc for the task type
      property - The property representing the parameter
      Returns:
      THe configuration
    • getType

      public io.micronaut.sourcegen.model.TypeDef getType(io.micronaut.inject.visitor.VisitorContext context, io.micronaut.inject.ast.ClassElement element)
      A utility method for getting a parameter type. Complex types, like enums and POJOs get copied and re-mapped.
      Parameters:
      context - the Context
      element - The element
      Returns:
      The type
    • copyEnum

      protected io.micronaut.sourcegen.model.ClassTypeDef copyEnum(io.micronaut.inject.visitor.VisitorContext context, io.micronaut.inject.ast.ClassElement element)
      Copy an existing enum to the plugin generated sources.
      Parameters:
      context - The visitor context
      element - The element to copy
      Returns:
      The type of copied enum
    • copyPOJO

      protected io.micronaut.sourcegen.model.ClassTypeDef copyPOJO(io.micronaut.inject.visitor.VisitorContext context, io.micronaut.inject.ast.ClassElement element, List<PluginUtils.ParameterConfig> parameters)
      Copy an existing POJO to the plugin generated sources.
      Parameters:
      context - The visitor context
      element - The element to copy
      parameters - The POJO properties
      Returns:
      The type of copied POJO
    • convertParameterIfRequired

      public io.micronaut.sourcegen.model.ExpressionDef convertParameterIfRequired(io.micronaut.inject.ast.ClassElement type, String name, List<io.micronaut.sourcegen.model.StatementDef> statements, io.micronaut.sourcegen.model.ExpressionDef paramExpression)
      Converts a parameter value if required. Conversion is required if the value is a model, so a new type was generated for it instead of the original one.
      Parameters:
      type - The type
      name - The name to use for local variable
      statements - The modifiable statements to which a local variable may be added if needed
      paramExpression - The current expression for param
      Returns:
      The new expression for param
    • convertCollectionParameter

      protected io.micronaut.sourcegen.model.ExpressionDef convertCollectionParameter(io.micronaut.sourcegen.model.VariableDef.Local localVar, io.micronaut.inject.ast.ClassElement arg, io.micronaut.sourcegen.model.ExpressionDef paramExpression, List<io.micronaut.sourcegen.model.StatementDef> statements, boolean isSet)
      Create expression for converting a parameter that is a collection.
      Parameters:
      localVar - The variable to store to
      arg - The type to convert to
      paramExpression - The expression for the parameter
      statements - The current statements
      isSet - Whether the collection is a set
      Returns:
      The expression
    • createWither

      protected static io.micronaut.sourcegen.model.MethodDef createWither(List<io.micronaut.sourcegen.model.FieldDef> fields, @Nullable @Nullable String javadoc, int index)
      Create a wither method.
      Parameters:
      fields - The properties
      javadoc - The javadoc for property
      index - The property index
      Returns:
      The wither method
    • createGetter

      protected static io.micronaut.sourcegen.model.MethodDef createGetter(io.micronaut.sourcegen.model.FieldDef field, @Nullable @Nullable String javadoc)
      Create a getter method.
      Parameters:
      field - The field
      javadoc - The javadoc for property
      Returns:
      The getter method
    • createSetter

      protected static io.micronaut.sourcegen.model.MethodDef createSetter(io.micronaut.sourcegen.model.FieldDef field, @Nullable @Nullable String javadoc)
      Create a setter method.
      Parameters:
      field - The field
      javadoc - The javadoc for property
      Returns:
      The setter method
    • convertEnumMethod

      protected static io.micronaut.sourcegen.model.MethodDef convertEnumMethod(io.micronaut.sourcegen.model.TypeDef type, io.micronaut.inject.ast.ClassElement requiredType)
      Create a method for converting an enum.
      Parameters:
      type - The generated type to convert from
      requiredType - The required type to convert to
      Returns:
      The method definition
    • convertPOJOParameter

      protected io.micronaut.sourcegen.model.ExpressionDef convertPOJOParameter(PluginUtils.ParameterConfig parameter, List<io.micronaut.sourcegen.model.StatementDef> statements, io.micronaut.sourcegen.model.ExpressionDef owner)
      Method to create an expression for converting a property of POJO.
      Parameters:
      parameter - The parameter configuration information
      statements - The statements
      owner - The owner of the property
      Returns:
      The expression
    • convertPOJOMethod

      protected io.micronaut.sourcegen.model.MethodDef convertPOJOMethod(io.micronaut.sourcegen.model.ClassTypeDef type, io.micronaut.inject.ast.ClassElement requiredType, List<PluginUtils.ParameterConfig> parameters)
      Create a method to convert a POJO.
      Parameters:
      type - The generate POJO type to convert from
      requiredType - The required type to convert to
      parameters - The parameter configurations
      Returns:
      The method definition
    • getSimpleName

      protected static String getSimpleName(io.micronaut.inject.ast.ClassElement element)