Class SourceAwareCustomizerFactory

  • All Implemented Interfaces:
    Factory, 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)
         }
     
    • Constructor Detail

      • SourceAwareCustomizerFactory

        public SourceAwareCustomizerFactory()
    • Method Detail

      • newInstance

        public java.lang.Object newInstance​(FactoryBuilderSupport builder,
                                            java.lang.Object name,
                                            java.lang.Object value,
                                            java.util.Map attributes)
                                     throws java.lang.InstantiationException,
                                            java.lang.IllegalAccessException
        Specified by:
        newInstance in interface Factory
        Parameters:
        builder - the FactoryBuilder
        name - the name of the node being built
        value - the 'value' argument in the build node
        attributes - the attributes of the build arg
        Returns:
        the object created for the builder
        Throws:
        java.lang.InstantiationException - if attempting to instantiate an interface or abstract class
        java.lang.IllegalAccessException - if the instance can't be created due to a security violation