Package: org.codehaus.groovy.control.customizers.builder

## [Java] Class SourceAwareCustomizerFactory

- org.codehaus.groovy.control.customizers.builder.SourceAwareCustomizerFactory

- All Implemented Interfaces and Traits:
    PostCompletionFactory

      public class SourceAwareCustomizerFactory
      extends AbstractFactory
      implements PostCompletionFactory

  Factory for use with CompilerCustomizationBuilder. Allows the construction of source aware customizers. Syntax:

           // apply CompileStatic AST annotation on .sgroovy files
           builder.source(extension: 'sgroovy') {
               ast(CompileStatic)
           }

           // apply CompileStatic AST annotation on .sgroovy or .sg files
           builder.source(extensions: ['sgroovy','sg']) {
               ast(CompileStatic)
           }

           // apply CompileStatic AST annotation on .sgroovy or .sg files
           builder.source(extensionValidator: { it.name in ['sgroovy','sg']}) {
               ast(CompileStatic)
           }

           // apply CompileStatic AST annotation on files whose name is 'foo'
           builder.source(basename: 'foo') {
               ast(CompileStatic)
           }

           // apply CompileStatic AST annotation on files whose name is 'foo' or 'bar'
           builder.source(basenames: ['foo', 'bar']) {
               ast(CompileStatic)
           }

           // apply CompileStatic AST annotation on files whose name is 'foo' or 'bar'
           builder.source(basenameValidator: { it in ['foo', 'bar'] }) {
               ast(CompileStatic)
           }

           // apply CompileStatic AST annotation on files that do not contain a class named 'Baz'
           builder.source(unitValidator: { unit -> !unit.AST.classes.any { it.name == 'Baz' } }) {
               ast(CompileStatic)
           }

           // apply CompileStatic AST annotation on class nodes that end with 'CS'
           builder.source(classValidator: { cn -> cn.name.endsWith('CS') }) {
               ast(CompileStatic)
           }

- - ### Nested Class Summary

    Nested classes
    Modifiers | Name | Description
    --- | --- | ---
    `static class` | `SourceAwareCustomizerFactory.SourceOptions` | Collected builder options used to create a SourceAwareCustomizer.

  - ### Methods Summary

    Methods
    Type Params | Return Type | Name and description
    --- | --- | ---
    `` | `public Object` | `newInstance(FactoryBuilderSupport builder, Object name, Object value, Map attributes)` Creates the mutable source options collected from the builder node.
    `` | `public Object` | `postCompleteNode(FactoryBuilderSupport factory, Object parent, Object node)` Converts the collected source options into a configured SourceAwareCustomizer.
    `` | `public void` | `setChild(FactoryBuilderSupport builder, Object parent, Object child)` Captures the nested compilation customizer selected for the source-aware wrapper.

  - ### Inherited Methods Summary

    Inherited Methods
    Methods inherited from class | Name
    --- | ---
    `class AbstractFactory` | `isHandlesNodeChildren, isLeaf, onFactoryRegistration, onHandleNodeAttributes, onNodeChildren, onNodeCompleted, setChild, setParent`

- - ### Method Detail

    - #### public Object newInstance(FactoryBuilderSupport builder, Object name, Object value, Map attributes)

      Creates the mutable source options collected from the builder node.

      throws:
        InstantiationException if instantiation fails
      throws:
        IllegalAccessException if access fails
      Parameters:
        `builder` - the active builder
        `name` - the node name
        `value` - the supplied node value
        `attributes` - the node attributes
      Returns:
        the collected source options

    - #### public Object postCompleteNode(FactoryBuilderSupport factory, Object parent, Object node)

      Converts the collected source options into a configured SourceAwareCustomizer.

      Parameters:
        `factory` - the active builder
        `parent` - the parent node
        `node` - the completed node
      Returns:
        the configured source-aware customizer

    - #### public void setChild(FactoryBuilderSupport builder, Object parent, Object child)

      Captures the nested compilation customizer selected for the source-aware wrapper.

      Parameters:
        `builder` - the active builder
        `parent` - the parent node
        `child` - the child node