ImmutablePropertyHandler (Groovy 2.5.0)
Date: 2018-05-27

groovy.transform.options

## Class ImmutablePropertyHandler

- java.lang.Object
- - groovy.transform.options.PropertyHandler
  - - groovy.transform.options.ImmutablePropertyHandler

- Direct Known Subclasses:
    LegacyHashMapPropertyHandler

      public class ImmutablePropertyHandler
      extends PropertyHandler

- - ### Field Summary

    - ### Fields inherited from class groovy.transform.options.PropertyHandler

      `PROPERTY_OPTIONS_TYPE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `ImmutablePropertyHandler()`

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `protected Statement` | `checkFinalArgNotOverridden(ClassNode cNode, FieldNode fNode)`
    `protected Expression` | `cloneCollectionExpr(Expression fieldExpr, ClassNode type)`
    `protected Expression` | `createAsImmutableX(Expression expr, ClassNode type)`
    `protected Statement` | `createConstructorStatement(AbstractASTTransformation xform, ClassNode cNode, PropertyNode pNode, boolean namedArgs)`
    `Statement` | `createPropGetter(PropertyNode pNode)` Create the getter block used when reading the property including any defensive copying.
    `Statement` | `createPropInit(AbstractASTTransformation xform, AnnotationNode anno, ClassNode cNode, PropertyNode pNode, Parameter namedArgsMap)` 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.
    `boolean` | `validateAttributes(AbstractASTTransformation xform, AnnotationNode anno)`
    `boolean` | `validateProperties(AbstractASTTransformation xform, BlockStatement body, ClassNode cNode, java.util.List<PropertyNode> props)`

    - ### Methods inherited from class groovy.transform.options.PropertyHandler

      `createPropertyHandler, isValidAttribute`

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

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

- - ### Constructor Detail

    - #### ImmutablePropertyHandler

          public ImmutablePropertyHandler()

  - ### Method Detail

    - #### createPropGetter

          public Statement createPropGetter(PropertyNode pNode)

      Description copied from class: `PropertyHandler`
      Create the getter block used when reading the property including any defensive copying.
      Overrides:
        `createPropGetter` in class `PropertyHandler`
      Parameters:
        `pNode` - the property node

    - #### createPropSetter

          public Statement createPropSetter(PropertyNode pNode)

      Description copied from class: `PropertyHandler`
      Create the setter block used when setting the property. Can be null for read-only properties.
      Overrides:
        `createPropSetter` in class `PropertyHandler`
      Parameters:
        `pNode` - the property node

    - #### validateAttributes

          public boolean validateAttributes(AbstractASTTransformation xform,
                                            AnnotationNode anno)

      Specified by:
        `validateAttributes` in class `PropertyHandler`

    - #### validateProperties

          public boolean validateProperties(AbstractASTTransformation xform,
                                            BlockStatement body,
                                            ClassNode cNode,
                                            java.util.List<PropertyNode> props)

      Overrides:
        `validateProperties` in class `PropertyHandler`

    - #### createPropInit

          public Statement createPropInit(AbstractASTTransformation xform,
                                          AnnotationNode anno,
                                          ClassNode cNode,
                                          PropertyNode pNode,
                                          Parameter namedArgsMap)

      Description copied from class: `PropertyHandler`
      Create a statement that will initialize the property including any defensive copying. Null if no statement should be added.
      Specified by:
        `createPropInit` in class `PropertyHandler`
      Parameters:
        `xform` - the transform being processed
        `anno` - the '@ImmutableBase' annotation node
        `cNode` - the classnode containing the property
        `pNode` - the property node to initialize
        `namedArgsMap` - an "args" Map if the property value should come from a named arg map or null if not

    - #### cloneCollectionExpr

          protected Expression cloneCollectionExpr(Expression fieldExpr,
                                                   ClassNode type)

    - #### createAsImmutableX

          protected Expression createAsImmutableX(Expression expr,
                                                  ClassNode type)

    - #### createConstructorStatement

          protected Statement createConstructorStatement(AbstractASTTransformation xform,
                                                         ClassNode cNode,
                                                         PropertyNode pNode,
                                                         boolean namedArgs)

    - #### checkFinalArgNotOverridden

          protected Statement checkFinalArgNotOverridden(ClassNode cNode,
                                                         FieldNode fNode)