## org.codehaus.groovy.control
Class CompilationUnit

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).

author:
  Chris Poirier

author:
  Jochen Theodorou

version:
  $Id: CompilationUnit.java 8552 2007-10-10 20:56:37Z blackdrag $

Field Summary
`CompileUnit` | `ast`
`Map` | `classSourcesByPublicClassName`
`ClassgenCallback` | `classgenCallback`
`boolean` | `configured`
`boolean` | `debug`
`List` | `generatedClasses`
`List` | `names`
`def` | `phaseOperations`
`ProgressCallback` | `progressCallback`
`LinkedList` | `queuedSources`
`ResolveVisitor` | `resolveVisitor`
`Map` | `sources`
`StaticImportVisitor` | `staticImportVisitor`
`Map` | `summariesByPublicClassName`
`Map` | `summariesBySourceName`
`Verifier` | `verifier`

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.

Method Summary
`void` | `addClassNode(ClassNode node)` Adds a ClassNode directly to the unit (ie. without source).
`void` | `addPhaseOperation(SourceUnitOperation op, int phase)`
`void` | `addPhaseOperation(PrimaryClassNodeOperation op, int phase)`
`void` | `addPhaseOperation(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(SourceUnit source)` Adds a SourceUnit to the unit.
`void` | `addSources(def paths)` Adds a set of file paths to the unit.
`void` | `addSources(def files)` Adds a set of source files to the unit.
`void` | `appendCompilerConfigurationClasspathToClassLoader(CompilerConfiguration configuration, GroovyClassLoader classLoader)`
`void` | `configure(CompilerConfiguration configuration)`
`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
`boolean` | `isPublicClass(String className)`
`Iterator` | `iterator()` Returns an iterator on the unit's SourceUnits.

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

### 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

### addPhaseOperation

    public void addPhaseOperation(SourceUnitOperation op, int phase)

### addPhaseOperation

    public void addPhaseOperation(PrimaryClassNodeOperation op, int phase)

### addPhaseOperation

    public void addPhaseOperation(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(SourceUnit source)

  Adds a SourceUnit to the unit.

### addSources

    public void addSources(def paths)

  Adds a set of file paths to the unit.

### addSources

    public void addSources(def files)

  Adds a set of source files to the unit.

### appendCompilerConfigurationClasspathToClassLoader

    void appendCompilerConfigurationClasspathToClassLoader(CompilerConfiguration configuration, GroovyClassLoader classLoader)

### configure

    public void configure(CompilerConfiguration configuration)

### 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

### isPublicClass

    public boolean isPublicClass(String className)

### iterator

    public Iterator iterator()

  Returns an iterator on the unit's SourceUnits.