org.codehaus.groovy.control
Class CompilationUnit

java.lang.Object
  extended byorg.codehaus.groovy.control.ProcessingUnit
      extended byorg.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).

Version:
$Id: CompilationUnit.java,v 1.34 2005/11/19 21:22:12 blackdrag Exp $
Author:
Chris Poirier

Nested Class Summary
static class CompilationUnit.ClassgenCallback
          A callback interface you can use to "accompany" the classgen() code as it traverses the ClassNode tree.
 class CompilationUnit.LoopBodyForPrimaryClassNodeOperations
          An callback interface for use in the applyToSourceUnits loop driver.
 class CompilationUnit.LoopBodyForSourceUnitOperations
          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.
 
Field Summary
protected  CompileUnit ast
           
protected  CompilationUnit.ClassgenCallback classgenCallback
           
protected  Map classSourcesByPublicClassName
           
protected  ClassCompletionVerifier completionVerifier
           
protected  boolean configured
           
protected  boolean debug
           
protected  ArrayList generatedClasses
           
protected  ArrayList names
           
protected  CompilationUnit.ProgressCallback progressCallback
           
protected  LinkedList queuedSources
           
protected  HashMap sources
           
protected  Map summariesByPublicClassName
           
protected  Map summariesBySourceName
           
protected  Verifier verifier
           
 
Fields inherited from class org.codehaus.groovy.control.ProcessingUnit
classLoader, configuration, errorCollector, phase, phaseComplete
 
Constructor Summary
CompilationUnit()
          Initializes the CompilationUnit with defaults.
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(GroovyClassLoader loader)
          Initializes the CompilationUnit with defaults except for class loader.
 
Method Summary
 void addClassNode(ClassNode node)
          Adds a ClassNode directly to the unit (ie.
 SourceUnit addSource(File file)
          Adds a source file to the unit.
 SourceUnit addSource(SourceUnit source)
          Adds a SourceUnit to the unit.
 SourceUnit addSource(String name, InputStream stream)
          Adds a InputStream source to the unit.
 SourceUnit addSource(URL url)
          Adds a source file to the unit.
 void addSources(File[] files)
          Adds a set of source files to the unit.
 void addSources(String[] paths)
          Adds a set of file paths to the unit.
 void applyToPrimaryClassNodes(CompilationUnit.LoopBodyForPrimaryClassNodeOperations body, boolean sort)
          A loop driver for applying operations to all primary ClassNodes in our AST.
 void applyToSourceUnits(CompilationUnit.LoopBodyForSourceUnitOperations body)
          A loop driver for applying operations to all SourceUnits.
 void classgen()
          Expands and canonicalizes the ASTs generated during parsing and conversion, then generates classes.
 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.
 void convert()
          Builds ASTs for all parsed sources.
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.
 List getClasses()
          Get the GroovyClasses generated by compile().
 ClassNode getClassNode(String name)
          Convenience routine to get the named ClassNode.
 Map getClassSourcesByPublicClassName()
           
 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
 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 output()
          Outputs the generated class files to permanent storage.
 void parse()
          Parses all sources.
 void semanticAnalysis()
           
 void setClassgenCallback(CompilationUnit.ClassgenCallback visitor)
          Sets a ClassgenCallback.
 void setProgressCallback(CompilationUnit.ProgressCallback callback)
          Sets a ProgressCallback.
 
Methods inherited from class org.codehaus.groovy.control.ProcessingUnit
completePhase, getClassLoader, getConfiguration, getErrorCollector, getPhase, getPhaseDescription, gotoPhase, nextPhase, setClassLoader, setConfiguration
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

sources

protected HashMap sources

summariesBySourceName

protected Map summariesBySourceName

summariesByPublicClassName

protected Map summariesByPublicClassName

classSourcesByPublicClassName

protected Map classSourcesByPublicClassName

names

protected ArrayList names

queuedSources

protected LinkedList queuedSources

ast

protected CompileUnit ast

generatedClasses

protected ArrayList generatedClasses

verifier

protected Verifier verifier

completionVerifier

protected ClassCompletionVerifier completionVerifier

debug

protected boolean debug

configured

protected boolean configured

classgenCallback

protected CompilationUnit.ClassgenCallback classgenCallback

progressCallback

protected CompilationUnit.ProgressCallback progressCallback
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.

Method Detail

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.

Overrides:
configure in class ProcessingUnit

getAST

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


getSummariesBySourceName

public Map getSummariesBySourceName()
Get the source summaries


getSummariesByPublicClassName

public Map getSummariesByPublicClassName()

getClassSourcesByPublicClassName

public Map getClassSourcesByPublicClassName()

isPublicClass

public boolean isPublicClass(String className)

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.


getClassNode

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


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.


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(SourceUnit source)
Adds a SourceUnit to the unit.


iterator

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


addClassNode

public void addClassNode(ClassNode node)
Adds a ClassNode directly to the unit (ie. without source). Used primarily for testing support.


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.


compile

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

Throws:
CompilationFailedException

compile

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

Throws:
CompilationFailedException

dequeued

protected boolean dequeued()
                    throws CompilationFailedException
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.

Returns:
TODO
Throws:
CompilationFailedException

parse

public void parse()
           throws CompilationFailedException
Parses all sources.

Throws:
CompilationFailedException

convert

public void convert()
             throws CompilationFailedException
Builds ASTs for all parsed sources.

Throws:
CompilationFailedException

semanticAnalysis

public void semanticAnalysis()
                      throws CompilationFailedException
Throws:
CompilationFailedException

classgen

public void classgen()
              throws CompilationFailedException
Expands and canonicalizes the ASTs generated during parsing and conversion, then generates classes.

Throws:
CompilationFailedException

createClassVisitor

protected org.objectweb.asm.ClassVisitor createClassVisitor()

output

public void output()
            throws CompilationFailedException
Outputs the generated class files to permanent storage.

Throws:
CompilationFailedException

mark

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

Throws:
CompilationFailedException

applyToSourceUnits

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

Throws:
CompilationFailedException

applyToPrimaryClassNodes

public void applyToPrimaryClassNodes(CompilationUnit.LoopBodyForPrimaryClassNodeOperations body,
                                     boolean sort)
                              throws CompilationFailedException
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.

Throws:
CompilationFailedException


Copyright © 2003-2007 The Codehaus. All Rights Reserved.