Package groovy.transform.options
Class PropertyHandler
- java.lang.Object
-
- groovy.transform.options.PropertyHandler
-
- Direct Known Subclasses:
DefaultPropertyHandler
,ImmutablePropertyHandler
@Incubating public abstract class PropertyHandler extends 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 ClassNode
PROPERTY_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 PropertyHandler
createPropertyHandler(AbstractASTTransformation xform, GroovyClassLoader loader, ClassNode cNode)
Statement
createPropGetter(PropertyNode pNode)
Create the getter block used when reading the property including any defensive copying.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.Statement
createPropSetter(PropertyNode pNode)
Create the setter block used when setting the property.protected boolean
isValidAttribute(AbstractASTTransformation xform, AnnotationNode anno, String memberName)
abstract boolean
validateAttributes(AbstractASTTransformation xform, AnnotationNode anno)
boolean
validateProperties(AbstractASTTransformation xform, BlockStatement body, ClassNode cNode, 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, 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, String memberName)
-
createPropertyHandler
public static PropertyHandler createPropertyHandler(AbstractASTTransformation xform, GroovyClassLoader loader, ClassNode cNode)
-
-