Package: groovy.transform.options

## [Java] Class PropertyHandler

- groovy.transform.options.PropertyHandler

-     @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
    Modifiers | Name | Description
    --- | --- | ---
    `static ClassNode` | `PROPERTY_OPTIONS_TYPE` |

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public Statement` | `createPropGetter(PropertyNode pNode)` Create the getter block used when reading the property including any defensive copying.
    `` | `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.
    `` | `public Statement` | `createPropSetter(PropertyNode pNode)` Create the setter block used when setting the property.
    `` | `public static PropertyHandler` | `createPropertyHandler(AbstractASTTransformation xform, GroovyClassLoader loader, ClassNode cNode)`
    `` | `protected boolean` | `isValidAttribute(AbstractASTTransformation xform, AnnotationNode anno, String memberName)`
    `` | `public abstract boolean` | `validateAttributes(AbstractASTTransformation xform, AnnotationNode anno)`
    `` | `public boolean` | `validateProperties(AbstractASTTransformation xform, BlockStatement body, ClassNode cNode, List<PropertyNode> props)`

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class Object` | `equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Field Detail

    - #### public static final ClassNode PROPERTY_OPTIONS_TYPE

  - ### Method Detail

    - #### public Statement createPropGetter(PropertyNode pNode)

      Create the getter block used when reading the property including any defensive copying.

      Parameters:
        `pNode` - the property node

    - #### 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

    - #### 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

    - #### public static PropertyHandler createPropertyHandler(AbstractASTTransformation xform, GroovyClassLoader loader, ClassNode cNode)

    - #### protected boolean isValidAttribute(AbstractASTTransformation xform, AnnotationNode anno, String memberName)

    - #### public abstract boolean validateAttributes(AbstractASTTransformation xform, AnnotationNode anno)

    - #### public boolean validateProperties(AbstractASTTransformation xform, BlockStatement body, ClassNode cNode, List<PropertyNode> props)