Class InlinedASTCustomizerFactory

  • All Implemented Interfaces:
    Factory, PostCompletionFactory

    public class InlinedASTCustomizerFactory
    extends AbstractFactory
    implements PostCompletionFactory
    This factory lets a user define a compilation customizer without having to define an anonymous inner class.

    Here is an example, which only logs the class name during compilation:

     inline(phase:'CONVERSION') { source, context, classNode ->
         println "visiting $classNode"
     }
     
    Since:
    2.1.0
    • Constructor Detail

      • InlinedASTCustomizerFactory

        public InlinedASTCustomizerFactory()
    • Method Detail

      • isHandlesNodeChildren

        public boolean isHandlesNodeChildren()
        Description copied from interface: Factory
        Does this factory "Own" it's child closure.
        Specified by:
        isHandlesNodeChildren in interface Factory
        Overrides:
        isHandlesNodeChildren in class AbstractFactory
        Returns:
        true if the factory should have onContentClosure() called, false if the builder should handle it
      • 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
      • onNodeChildren

        public boolean onNodeChildren​(FactoryBuilderSupport builder,
                                      java.lang.Object node,
                                      Closure childContent)
        Description copied from interface: Factory
        Only called if it isLeaf is false and isHandlesNodeChildren is true
        Specified by:
        onNodeChildren in interface Factory
        Overrides:
        onNodeChildren in class AbstractFactory
        Parameters:
        builder - the FactoryBuilder
        node - the node (returned from newINstance) to consider the attributes for
        childContent - the child content closure of the builder
        Returns:
        true if the factory builder should apply default node processing to the content child