Package groovy.transform.options
Class PropertyHandler
- java.lang.Object
-
- groovy.transform.options.PropertyHandler
-
- Direct Known Subclasses:
DefaultPropertyHandler,ImmutablePropertyHandler
@Incubating public abstract class PropertyHandler extends java.lang.Object
Used to provide custom property handling when getting, setting or initializing properties.- Since:
- 2.5.0
-
-
Field Summary
Fields Modifier and Type Field Description static ClassNodePROPERTY_OPTIONS_TYPE
-
Constructor Summary
Constructors Constructor Description PropertyHandler()
-
Method Summary
All Methods Static Methods Instance Methods Abstract Methods Concrete Methods Modifier and Type Method Description static PropertyHandlercreatePropertyHandler(AbstractASTTransformation xform, GroovyClassLoader loader, ClassNode cNode)StatementcreatePropGetter(PropertyNode pNode)Create the getter block used when reading the property including any defensive copying.abstract StatementcreatePropInit(AbstractASTTransformation xform, AnnotationNode anno, ClassNode cNode, PropertyNode pNode, Parameter namedArgMap)Create a statement that will initialize the property including any defensive copying.StatementcreatePropSetter(PropertyNode pNode)Create the setter block used when setting the property.protected booleanisValidAttribute(AbstractASTTransformation xform, AnnotationNode anno, java.lang.String memberName)abstract booleanvalidateAttributes(AbstractASTTransformation xform, AnnotationNode anno)booleanvalidateProperties(AbstractASTTransformation xform, BlockStatement body, ClassNode cNode, java.util.List<PropertyNode> props)
-
-
-
Field Detail
-
PROPERTY_OPTIONS_TYPE
public static final ClassNode PROPERTY_OPTIONS_TYPE
-
-
Method Detail
-
validateAttributes
public abstract boolean validateAttributes(AbstractASTTransformation xform, AnnotationNode anno)
-
validateProperties
public boolean validateProperties(AbstractASTTransformation xform, BlockStatement body, ClassNode cNode, java.util.List<PropertyNode> props)
-
createPropInit
public abstract Statement createPropInit(AbstractASTTransformation xform, AnnotationNode anno, ClassNode cNode, PropertyNode pNode, Parameter namedArgMap)
Create a statement that will initialize the property including any defensive copying. Null if no statement should be added.- Parameters:
xform- the transform being processedanno- the '@ImmutableBase' annotation nodecNode- the classnode containing the propertypNode- the property node to initializenamedArgMap- an "args" Map if the property value should come from a named arg map or null if not
-
createPropGetter
public Statement createPropGetter(PropertyNode pNode)
Create the getter block used when reading the property including any defensive copying.- Parameters:
pNode- the property node
-
createPropSetter
public Statement createPropSetter(PropertyNode pNode)
Create the setter block used when setting the property. Can be null for read-only properties.- Parameters:
pNode- the property node
-
isValidAttribute
protected boolean isValidAttribute(AbstractASTTransformation xform, AnnotationNode anno, java.lang.String memberName)
-
createPropertyHandler
public static PropertyHandler createPropertyHandler(AbstractASTTransformation xform, GroovyClassLoader loader, ClassNode cNode)
-
-