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 Details

  • Constructor Details

    • PropertyHandler

      public PropertyHandler()
  • Method Details

    • validateAttributes

      public abstract boolean validateAttributes(AbstractASTTransformation xform, AnnotationNode anno)
      Validates annotation attributes supported by this handler.
      Parameters:
      xform - the active transform
      anno - the property options annotation
      Returns:
      true if validation succeeds
    • validateProperties

      public boolean validateProperties(AbstractASTTransformation xform, BlockStatement body, ClassNode cNode, List<PropertyNode> props)
      Validates the properties selected for processing.
      Parameters:
      xform - the active transform
      body - the statement block being generated
      cNode - the owning class
      props - the candidate properties
      Returns:
      true if validation succeeds
    • 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)
      Checks whether the named annotation attribute is unsupported for this handler.
      Parameters:
      xform - the active transform
      anno - the annotation being processed
      memberName - the attribute name to validate
      Returns:
      true if the attribute is valid for this handler
    • createPropertyHandler

      public static PropertyHandler createPropertyHandler(AbstractASTTransformation xform, GroovyClassLoader loader, ClassNode cNode)
      Creates the property handler configured for the supplied class.
      Parameters:
      xform - the active transform
      loader - the class loader used to instantiate custom handlers
      cNode - the class being transformed
      Returns:
      the configured property handler, or null if one could not be created