W3cubDocs

/Groovy 3.0

[Java] Class CompilationUnit

  • org.codehaus.groovy.control.CompilationUnit
public class CompilationUnit
extends ProcessingUnit

The CompilationUnit collects all compilation data as it is generated by the compiler system. You can use this object to add additional source units to the compilation, or force the compilation to be run again (to affect only the deltas).

You can also add PhaseOperations to this compilation using the addPhaseOperation method. This is commonly used when you want to wire a new AST Transformation into the compilation.

Nested Class Summary

Nested classes
Modifiers Name Description
interface CompilationUnit.ClassgenCallback A callback interface you can use to "accompany" the classgen() code as it traverses the ClassNode tree.
static class CompilationUnit.GroovyClassOperation
interface CompilationUnit.IGroovyClassOperation
interface CompilationUnit.IPrimaryClassNodeOperation
interface CompilationUnit.ISourceUnitOperation
static class CompilationUnit.PrimaryClassNodeOperation
interface CompilationUnit.ProgressCallback A callback interface you can use to get a callback after every unit of the compile process.
static class CompilationUnit.SourceUnitOperation

Field Summary

Fields
Modifiers Name Description
protected CompileUnit ast
protected ASTTransformationsContext astTransformationsContext The AST transformations state data.
protected ClassNodeResolver classNodeResolver
protected CompilationUnit.ClassgenCallback classgenCallback A callback for use during classgen
protected boolean configured True after the first configure(CompilerConfiguration) operation.
protected boolean debug Controls behavior of classgen and other routines.
protected CompilationUnit.ProgressCallback progressCallback A callback for use during compile()
protected Queue<SourceUnit> queuedSources
protected ResolveVisitor resolveVisitor
protected Map<String, SourceUnit> sources The source units from which this unit is built.
Inherited fields
Fields inherited from class Fields
class ProcessingUnit classLoader, configuration, errorCollector, phase, phaseComplete

Constructor Summary

Constructors
Constructor and description
CompilationUnit ()
Initializes the CompilationUnit with defaults.
CompilationUnit (GroovyClassLoader loader)
Initializes the CompilationUnit with defaults except for class loader.
CompilationUnit (CompilerConfiguration configuration)
Initializes the CompilationUnit with no security considerations.
CompilationUnit (CompilerConfiguration configuration, CodeSource codeSource, GroovyClassLoader loader)
Initializes the CompilationUnit with a CodeSource for controlling security stuff and a class loader for loading classes.
CompilationUnit (CompilerConfiguration configuration, CodeSource codeSource, GroovyClassLoader loader, GroovyClassLoader transformLoader)
Initializes the CompilationUnit with a CodeSource for controlling security stuff, a class loader for loading classes, and a class loader for loading AST transformations.

Methods Summary

Methods
Type Params Return Type Name and description
public void addClassNode(ClassNode node)
Adds a ClassNode directly to the unit (ie. without source).
public void addFirstPhaseOperation(IPrimaryClassNodeOperation op, int phase)
public void addFirstPhaseOperation(CompilationUnit.PrimaryClassNodeOperation op, int phase)
public void addJavaCompilationUnits(Set<JavaFileObject> javaCompilationUnitSet)
public void addNewPhaseOperation(ISourceUnitOperation op, int phase)
public void addNewPhaseOperation(CompilationUnit.SourceUnitOperation op, int phase)
public void addPhaseOperation(IGroovyClassOperation op)
public void addPhaseOperation(ISourceUnitOperation op, int phase)
public void addPhaseOperation(IPrimaryClassNodeOperation op, int phase)
public void addPhaseOperation(CompilationUnit.GroovyClassOperation op)
public void addPhaseOperation(CompilationUnit.SourceUnitOperation op, int phase)
public void addPhaseOperation(CompilationUnit.PrimaryClassNodeOperation op, int phase)
public SourceUnit addSource(File file)
Adds a source file to the unit.
public SourceUnit addSource(URL url)
Adds a source file to the unit.
public SourceUnit addSource(String name, InputStream stream)
Adds a InputStream source to the unit.
public SourceUnit addSource(String name, String scriptText)
public SourceUnit addSource(SourceUnit source)
Adds a SourceUnit to the unit.
public void addSources(String[] paths)
Adds a set of file paths to the unit.
public void addSources(File[] files)
Adds a set of source files to the unit.
public void applyToPrimaryClassNodes(CompilationUnit.PrimaryClassNodeOperation op)
public void applyToSourceUnits(CompilationUnit.SourceUnitOperation op)
public void call(SourceUnit source, GeneratorContext context, ClassNode classNode)
public void compile()
Synonym for compile(Phases.ALL).
public void compile(int throughPhase)
Compiles the compilation unit from sources.
public void configure(CompilerConfiguration configuration)
Configures its debugging mode and classloader classpath from a given compiler configuration.
protected org.objectweb.asm.ClassVisitor createClassVisitor()
protected boolean dequeued()
Dequeues any source units add through addSource and resets the compiler phase to initialization.
public CompileUnit getAST()
Returns the CompileUnit that roots our AST.
public ASTTransformationsContext getASTTransformationsContext()
Returns:
the AST transformations current context
public ClassNode getClassNode(String name)
Convenience routine to get the named ClassNode.
public ClassNodeResolver getClassNodeResolver()
public List<GroovyClass> getClasses()
Get the GroovyClasses generated by compile().
public CompilationUnit.ClassgenCallback getClassgenCallback()
protected String getCommonSuperClass(String arg1, String arg2)
public ClassNode getFirstClassNode()
Convenience routine to get the first ClassNode, for when you are sure there is only one.
public Set<JavaFileObject> getJavaCompilationUnitSet()
public CompilationUnit.ProgressCallback getProgressCallback()
protected SourceUnit getSourceUnit()
protected SourceUnit getSourceUnit()
public GroovyClassLoader getTransformLoader()
Returns the class loader for loading AST transformations.
public boolean hasNext()
public Iterator<SourceUnit> iterator()
Returns an iterator on the unit's SourceUnits.
protected void mark()
Updates the phase marker on all sources.
public boolean needSortedInput()
public SourceUnit next()
public void remove()
public void setClassNodeResolver(ClassNodeResolver classNodeResolver)
public void setClassgenCallback(CompilationUnit.ClassgenCallback visitor)
Sets a ClassgenCallback.
public void setProgressCallback(CompilationUnit.ProgressCallback callback)
Sets a ProgressCallback.
public Expression transform(Expression expression)

Inherited Methods Summary

Inherited Methods
Methods inherited from class Name
class ProcessingUnit completePhase, configure, getClassLoader, getConfiguration, getErrorCollector, getPhase, getPhaseDescription, gotoPhase, isPhaseComplete, nextPhase, setClassLoader, setConfiguration

Field Detail

protected CompileUnit ast

protected ASTTransformationsContext astTransformationsContext

The AST transformations state data.

protected ClassNodeResolver classNodeResolver

protected CompilationUnit.ClassgenCallback classgenCallback

A callback for use during classgen

protected boolean configured

True after the first configure(CompilerConfiguration) operation.

protected boolean debug

Controls behavior of classgen and other routines.

protected CompilationUnit.ProgressCallback progressCallback

A callback for use during compile()

protected Queue<SourceUnit> queuedSources

protected ResolveVisitor resolveVisitor

protected Map<String, SourceUnit> sources

The source units from which this unit is built.

Constructor Detail

public CompilationUnit()

Initializes the CompilationUnit with defaults.

public CompilationUnit(GroovyClassLoader loader)

Initializes the CompilationUnit with defaults except for class loader.

public CompilationUnit(CompilerConfiguration configuration)

Initializes the CompilationUnit with no security considerations.

public CompilationUnit(CompilerConfiguration configuration, CodeSource codeSource, GroovyClassLoader loader)

Initializes the CompilationUnit with a CodeSource for controlling security stuff and a class loader for loading classes.

public CompilationUnit(CompilerConfiguration configuration, CodeSource codeSource, GroovyClassLoader loader, GroovyClassLoader transformLoader)

Initializes the CompilationUnit with a CodeSource for controlling security stuff, a class loader for loading classes, and a class loader for loading AST transformations.

Note: The transform loader must be able to load compiler classes. That means classLoader must be at last a parent to transformLoader. The other loader has no such constraint.

Parameters:
transformLoader - - the loader for transforms
loader - - loader used to resolve classes against during compilation
codeSource - - security setting for the compilation
configuration - - compilation configuration

Method Detail

public void addClassNode(ClassNode node)

Adds a ClassNode directly to the unit (ie. without source). WARNING: the source is needed for error reporting, using this method without setting a SourceUnit will cause NullPinterExceptions

public void addFirstPhaseOperation(IPrimaryClassNodeOperation op, int phase)

@Deprecated public void addFirstPhaseOperation(CompilationUnit.PrimaryClassNodeOperation op, int phase)

public void addJavaCompilationUnits(Set<JavaFileObject> javaCompilationUnitSet)

public void addNewPhaseOperation(ISourceUnitOperation op, int phase)

@Deprecated public void addNewPhaseOperation(CompilationUnit.SourceUnitOperation op, int phase)

public void addPhaseOperation(IGroovyClassOperation op)

public void addPhaseOperation(ISourceUnitOperation op, int phase)

public void addPhaseOperation(IPrimaryClassNodeOperation op, int phase)

@Deprecated public void addPhaseOperation(CompilationUnit.GroovyClassOperation op)

@Deprecated public void addPhaseOperation(CompilationUnit.SourceUnitOperation op, int phase)

@Deprecated public void addPhaseOperation(CompilationUnit.PrimaryClassNodeOperation op, int phase)

public SourceUnit addSource(File file)

Adds a source file to the unit.

public SourceUnit addSource(URL url)

Adds a source file to the unit.

public SourceUnit addSource(String name, InputStream stream)

Adds a InputStream source to the unit.

public SourceUnit addSource(String name, String scriptText)

public SourceUnit addSource(SourceUnit source)

Adds a SourceUnit to the unit.

public void addSources(String[] paths)

Adds a set of file paths to the unit.

public void addSources(File[] files)

Adds a set of source files to the unit.

@Deprecated public void applyToPrimaryClassNodes(CompilationUnit.PrimaryClassNodeOperation op)

@Deprecated public void applyToSourceUnits(CompilationUnit.SourceUnitOperation op)

@Override public void call(SourceUnit source, GeneratorContext context, ClassNode classNode)

public void compile()

Synonym for compile(Phases.ALL).

public void compile(int throughPhase)

Compiles the compilation unit from sources.

@Override public void configure(CompilerConfiguration configuration)

Configures its debugging mode and classloader classpath from a given compiler configuration. This cannot be done more than once due to limitations in URLClassLoader.

protected org.objectweb.asm.ClassVisitor createClassVisitor()

protected boolean dequeued()

Dequeues any source units add through addSource and resets the compiler phase to initialization.

Note: this does not mean a file is recompiled. If a SourceUnit has already passed a phase it is skipped until a higher phase is reached.

throws:
CompilationFailedException
Returns:
true if there was a queued source

public CompileUnit getAST()

Returns the CompileUnit that roots our AST.

public ASTTransformationsContext getASTTransformationsContext()

Returns:
the AST transformations current context

public ClassNode getClassNode(String name)

Convenience routine to get the named ClassNode.

public ClassNodeResolver getClassNodeResolver()

public List<GroovyClass> getClasses()

Get the GroovyClasses generated by compile().

public CompilationUnit.ClassgenCallback getClassgenCallback()

@Override protected String getCommonSuperClass(String arg1, String arg2)

public ClassNode getFirstClassNode()

Convenience routine to get the first ClassNode, for when you are sure there is only one.

public Set<JavaFileObject> getJavaCompilationUnitSet()

public CompilationUnit.ProgressCallback getProgressCallback()

@Override protected SourceUnit getSourceUnit()

@Override protected SourceUnit getSourceUnit()

public GroovyClassLoader getTransformLoader()

Returns the class loader for loading AST transformations.

@Override public boolean hasNext()

public Iterator<SourceUnit> iterator()

Returns an iterator on the unit's SourceUnits.

protected void mark()

Updates the phase marker on all sources.

@Override public boolean needSortedInput()

@Override public SourceUnit next()

@Override public void remove()

public void setClassNodeResolver(ClassNodeResolver classNodeResolver)

public void setClassgenCallback(CompilationUnit.ClassgenCallback visitor)

Sets a ClassgenCallback. You can have only one, and setting it to null removes any existing setting.

public void setProgressCallback(CompilationUnit.ProgressCallback callback)

Sets a ProgressCallback. You can have only one, and setting it to null removes any existing setting.

@Override public Expression transform(Expression expression)

© 2003-2020 The Apache Software Foundation
Licensed under the Apache license.
https://docs.groovy-lang.org/3.0.7/html/gapi/org/codehaus/groovy/control/CompilationUnit.html