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
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 Details
-
PROPERTY_OPTIONS_TYPE
-
-
Constructor Details
-
PropertyHandler
public PropertyHandler()
-
-
Method Details
-
validateAttributes
-
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
Create the getter block used when reading the property including any defensive copying.- Parameters:
pNode
- the property node
-
createPropSetter
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)
-