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 and Description
    --- | ---
    `static ClassNode` | `PROPERTY_OPTIONS_TYPE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `PropertyHandler()`

  - ### Method Summary

    All Methods Static Methods Instance Methods Abstract Methods Concrete Methods
    Modifier and Type | Method and 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)`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### PROPERTY_OPTIONS_TYPE

          public static final ClassNode PROPERTY_OPTIONS_TYPE

  - ### Constructor Detail

    - #### PropertyHandler

          public PropertyHandler()

  - ### 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 processed
        `anno` - the '@ImmutableBase' annotation node
        `cNode` - the classnode containing the property
        `pNode` - the property node to initialize
        `namedArgMap` - 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)