Groovy 1.7.9

org.codehaus.groovy.control
[Java] Class CompilationUnit

java.lang.Object
  org.codehaus.groovy.control.ProcessingUnit
      org.codehaus.groovy.control.CompilationUnit

public class CompilationUnit
extends ProcessingUnit

Collects all compilation data as it is generated by the compiler system. Allows additional source units to be added and compilation run again (to affect only the deltas).

Authors:
Chris Poirier
Jochen Theodorou
Roshan Dawrani
Version:
\$Id: CompilationUnit.java 21351 2010-12-22 08:40:55Z paulk \$


Nested Class Summary
static class CompilationUnit.ClassgenCallback

A callback interface you can use to "accompany" the classgen() code as it traverses the ClassNode tree.

static class CompilationUnit.GroovyClassOperation

static class CompilationUnit.PrimaryClassNodeOperation

An callback interface for use in the applyToSourceUnits loop driver.

static class CompilationUnit.ProgressCallback

A callback interface you can use to get a callback after every unit of the compile process.

static class CompilationUnit.SourceUnitOperation

An callback interface for use in the applyToSourceUnits loop driver.

 
Field Summary
protected CompileUnit ast

protected Map classSourcesByPublicClassName

protected CompilationUnit.ClassgenCallback classgenCallback

protected boolean configured

protected boolean debug

protected List generatedClasses

protected List names

protected OptimizerVisitor optimizer

protected CompilationUnit.ProgressCallback progressCallback

protected LinkedList queuedSources

protected ResolveVisitor resolveVisitor

protected Map sources

protected StaticImportVisitor staticImportVisitor

protected Map summariesByPublicClassName

protected Map summariesBySourceName

protected Verifier verifier

 
Fields inherited from class ProcessingUnit
classLoader, configuration, errorCollector, phase, phaseComplete
 
Constructor Summary
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 security, GroovyClassLoader loader)

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

CompilationUnit(CompilerConfiguration configuration, CodeSource security, 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.

 
Method Summary
void addClassNode(ClassNode node)

Adds a ClassNode directly to the unit (ie. without source).

void addNewPhaseOperation(CompilationUnit.SourceUnitOperation op, int phase)

void addPhaseOperation(CompilationUnit.SourceUnitOperation op, int phase)

void addPhaseOperation(CompilationUnit.PrimaryClassNodeOperation op, int phase)

void addPhaseOperation(CompilationUnit.GroovyClassOperation op)

SourceUnit addSource(File file)

Adds a source file to the unit.

SourceUnit addSource(URL url)

Adds a source file to the unit.

SourceUnit addSource(String name, InputStream stream)

Adds a InputStream source to the unit.

SourceUnit addSource(String name, String scriptText)

SourceUnit addSource(SourceUnit source)

Adds a SourceUnit to the unit.

void addSources(String[] paths)

Adds a set of file paths to the unit.

void addSources(File[] files)

Adds a set of source files to the unit.

void applyToGeneratedGroovyClasses(CompilationUnit.GroovyClassOperation body)

void applyToPrimaryClassNodes(CompilationUnit.PrimaryClassNodeOperation body)

A loop driver for applying operations to all primary ClassNodes in our AST.

void applyToSourceUnits(CompilationUnit.SourceUnitOperation body)

A loop driver for applying operations to all SourceUnits.

void compile()

Synonym for compile(Phases.ALL).

void compile(int throughPhase)

Compiles the compilation unit from sources.

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.

CompileUnit getAST()

Returns the CompileUnit that roots our AST.

ClassNode getClassNode(String name)

Convenience routine to get the named ClassNode.

Map getClassSourcesByPublicClassName()

List getClasses()

Get the GroovyClasses generated by compile().

ClassNode getFirstClassNode()

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

Map getSummariesByPublicClassName()

Map getSummariesBySourceName()

Get the source summaries

GroovyClassLoader getTransformLoader()

Returns the class loader for loading AST transformations.

boolean isPublicClass(String className)

Iterator iterator()

Returns an iterator on the unit's SourceUnits.

protected void mark()

Updates the phase marker on all sources.

void setClassgenCallback(CompilationUnit.ClassgenCallback visitor)

Sets a ClassgenCallback.

void setProgressCallback(CompilationUnit.ProgressCallback callback)

Sets a ProgressCallback.

 
Methods inherited from class ProcessingUnit
completePhase, configure, getClassLoader, getConfiguration, getErrorCollector, getPhase, getPhaseDescription, gotoPhase, nextPhase, setClassLoader, setConfiguration
 
Methods inherited from class Object
wait, wait, wait, equals, toString, hashCode, getClass, notify, notifyAll
 

Field Detail

ast

protected CompileUnit ast


classSourcesByPublicClassName

protected Map classSourcesByPublicClassName


classgenCallback

protected CompilationUnit.ClassgenCallback classgenCallback


configured

protected boolean configured


debug

protected boolean debug


generatedClasses

protected List generatedClasses


names

protected List names


optimizer

protected OptimizerVisitor optimizer


progressCallback

protected CompilationUnit.ProgressCallback progressCallback


queuedSources

protected LinkedList queuedSources


resolveVisitor

protected ResolveVisitor resolveVisitor


sources

protected Map sources


staticImportVisitor

protected StaticImportVisitor staticImportVisitor


summariesByPublicClassName

protected Map summariesByPublicClassName


summariesBySourceName

protected Map summariesBySourceName


verifier

protected Verifier verifier


 
Constructor Detail

CompilationUnit

public CompilationUnit()
Initializes the CompilationUnit with defaults.


CompilationUnit

public CompilationUnit(GroovyClassLoader loader)
Initializes the CompilationUnit with defaults except for class loader.


CompilationUnit

public CompilationUnit(CompilerConfiguration configuration)
Initializes the CompilationUnit with no security considerations.


CompilationUnit

public CompilationUnit(CompilerConfiguration configuration, CodeSource security, GroovyClassLoader loader)
Initializes the CompilationUnit with a CodeSource for controlling security stuff and a class loader for loading classes.


CompilationUnit

public CompilationUnit(CompilerConfiguration configuration, CodeSource security, 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 CompilationUnit.class.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
security - - security setting for the compilation
configuration - - compilation configuration


 
Method Detail

addClassNode

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


addNewPhaseOperation

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


addPhaseOperation

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


addPhaseOperation

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


addPhaseOperation

public void addPhaseOperation(CompilationUnit.GroovyClassOperation op)


addSource

public SourceUnit addSource(File file)
Adds a source file to the unit.


addSource

public SourceUnit addSource(URL url)
Adds a source file to the unit.


addSource

public SourceUnit addSource(String name, InputStream stream)
Adds a InputStream source to the unit.


addSource

public SourceUnit addSource(String name, String scriptText)


addSource

public SourceUnit addSource(SourceUnit source)
Adds a SourceUnit to the unit.


addSources

public void addSources(String[] paths)
Adds a set of file paths to the unit.


addSources

public void addSources(File[] files)
Adds a set of source files to the unit.


applyToGeneratedGroovyClasses

public void applyToGeneratedGroovyClasses(CompilationUnit.GroovyClassOperation body)


applyToPrimaryClassNodes

public void applyToPrimaryClassNodes(CompilationUnit.PrimaryClassNodeOperation body)
A loop driver for applying operations to all primary ClassNodes in our AST. Automatically skips units that have already been processed through the current phase.


applyToSourceUnits

public void applyToSourceUnits(CompilationUnit.SourceUnitOperation body)
A loop driver for applying operations to all SourceUnits. Automatically skips units that have already been processed through the current phase.


compile

public void compile()
Synonym for compile(Phases.ALL).


compile

public void compile(int throughPhase)
Compiles the compilation unit from sources.


configure

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.


createClassVisitor

protected org.objectweb.asm.ClassVisitor createClassVisitor()


dequeued

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 SoucreUnit has already passed a phase it is skipped until a higher phase is reached.

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


getAST

public CompileUnit getAST()
Returns the CompileUnit that roots our AST.


getClassNode

public ClassNode getClassNode(String name)
Convenience routine to get the named ClassNode.


getClassSourcesByPublicClassName

public Map getClassSourcesByPublicClassName()


getClasses

public List getClasses()
Get the GroovyClasses generated by compile().


getFirstClassNode

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


getSummariesByPublicClassName

public Map getSummariesByPublicClassName()


getSummariesBySourceName

public Map getSummariesBySourceName()
Get the source summaries


getTransformLoader

public GroovyClassLoader getTransformLoader()
Returns the class loader for loading AST transformations.
Returns:
- the transform class loader


isPublicClass

public boolean isPublicClass(String className)


iterator

public Iterator iterator()
Returns an iterator on the unit's SourceUnits.


mark

protected void mark()
Updates the phase marker on all sources.


setClassgenCallback

public void setClassgenCallback(CompilationUnit.ClassgenCallback visitor)
Sets a ClassgenCallback. You can have only one, and setting it to null removes any existing setting.


setProgressCallback

public void setProgressCallback(CompilationUnit.ProgressCallback callback)
Sets a ProgressCallback. You can have only one, and setting it to null removes any existing setting.


 

Copyright © 2003-2010 The Codehaus. All rights reserved.