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 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, java.lang.String memberName)` |
    `abstract boolean` | `validateAttributes​(AbstractASTTransformation xform, AnnotationNode anno)` |
    `boolean` | `validateProperties​(AbstractASTTransformation xform, BlockStatement body, ClassNode cNode, java.util.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,
                                            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 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,
                                             java.lang.String memberName)

    - #### createPropertyHandler

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