Class ModelBuilder
java.lang.Object
io.micronaut.sourcegen.generator.visitors.ModelBuilder
- Direct Known Subclasses:
GradleModelBuilder,MavenModelBuilder
A utility class for building models.
-
Nested Class Summary
Nested ClassesModifier and TypeClassDescriptionstatic final recordA record for holding the generated model. -
Field Summary
FieldsModifier and TypeFieldDescriptionprotected static final Stringprotected final Map<String, ModelBuilder.GeneratedModel> protected final Stringprotected final Map<String, List<PluginUtils.ParameterConfig>> -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionprotected io.micronaut.sourcegen.model.ExpressionDefconvertCollectionParameter(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.MethodDefconvertEnumMethod(io.micronaut.sourcegen.model.TypeDef type, io.micronaut.inject.ast.ClassElement requiredType) Create a method for converting an enum.io.micronaut.sourcegen.model.ExpressionDefconvertParameterIfRequired(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.MethodDefconvertPOJOMethod(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.ExpressionDefconvertPOJOParameter(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.ClassTypeDefcopyEnum(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.ClassTypeDefcopyPOJO(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.MethodDefcreateGetter(io.micronaut.sourcegen.model.FieldDef field, @Nullable String javadoc) Create a getter method.protected static io.micronaut.sourcegen.model.MethodDefcreateSetter(io.micronaut.sourcegen.model.FieldDef field, @Nullable String javadoc) Create a setter method.protected static io.micronaut.sourcegen.model.MethodDefcreateWither(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 StringgetSimpleName(io.micronaut.inject.ast.ClassElement element) io.micronaut.sourcegen.model.TypeDefgetType(io.micronaut.inject.visitor.VisitorContext context, io.micronaut.inject.ast.ClassElement element) A utility method for getting a parameter type.
-
Field Details
-
CONVERT_METHOD_PREFIX
- See Also:
-
pojoParametersCache
-
generatedModels
-
packageName
-
-
Constructor Details
-
ModelBuilder
Create the model builder.- Parameters:
packageName- The package name to use for new created models
-
-
Method Details
-
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 contextsourceJavadoc- The javadoc for the task typeproperty- 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 Contextelement- 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 contextelement- 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 contextelement- The element to copyparameters- 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 typename- The name to use for local variablestatements- The modifiable statements to which a local variable may be added if neededparamExpression- 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 toarg- The type to convert toparamExpression- The expression for the parameterstatements- The current statementsisSet- 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 propertiesjavadoc- The javadoc for propertyindex- 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 fieldjavadoc- 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 fieldjavadoc- 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 fromrequiredType- 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 informationstatements- The statementsowner- 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 fromrequiredType- The required type to convert toparameters- The parameter configurations- Returns:
- The method definition
-
getSimpleName
-