Class CompilationCustomizer

java.lang.Object
org.codehaus.groovy.control.customizers.CompilationCustomizer
All Implemented Interfaces:
CompilationUnit.IPrimaryClassNodeOperation
Direct Known Subclasses:
DelegatingCustomizer, ImportCustomizer, SecureASTCustomizer

public abstract class CompilationCustomizer extends Object implements CompilationUnit.IPrimaryClassNodeOperation
Users wanting to customize the configuration process such as adding imports, restricting the language features or apply AST transformations by default should implement this class, then call the CompilerConfiguration.addCompilationCustomizers(CompilationCustomizer...) method.

A customizer is registered for a particular compilation and is invoked for every primary class node of it. Two consequences are easy to overlook:

  • The SourceUnit passed to call may be null, for class nodes supplied directly via addClassNode rather than parsed from source. Guard accordingly; an unguarded dereference surfaces as a GroovyBugError rather than as your own exception.
  • A customizer should not assume the class nodes it sees belong to the compilation it was registered for. A configuration may be copied for a nested compilation, which carries its customizers along unless the two-argument copy constructor is used to omit them.
Since:
1.8.0
  • Constructor Details

    • CompilationCustomizer

      public CompilationCustomizer(CompilePhase phase)
      Creates a customizer bound to the supplied compile phase.
      Parameters:
      phase - the phase in which this customizer should run
  • Method Details

    • getPhase

      public CompilePhase getPhase()
      Returns the compile phase in which this customizer runs.
      Returns:
      the configured compile phase