001: /*
002: $Id: Compiler.java 2257 2005-06-09 19:51:59Z blackdrag $
003:
004: Copyright 2003 (C) James Strachan and Bob Mcwhirter. All Rights Reserved.
005:
006: Redistribution and use of this software and associated documentation
007: ("Software"), with or without modification, are permitted provided
008: that the following conditions are met:
009:
010: 1. Redistributions of source code must retain copyright
011: statements and notices. Redistributions must also contain a
012: copy of this document.
013:
014: 2. Redistributions in binary form must reproduce the
015: above copyright notice, this list of conditions and the
016: following disclaimer in the documentation and/or other
017: materials provided with the distribution.
018:
019: 3. The name "groovy" must not be used to endorse or promote
020: products derived from this Software without prior written
021: permission of The Codehaus. For written permission,
022: please contact info@codehaus.org.
023:
024: 4. Products derived from this Software may not be called "groovy"
025: nor may "groovy" appear in their names without prior written
026: permission of The Codehaus. "groovy" is a registered
027: trademark of The Codehaus.
028:
029: 5. Due credit should be given to The Codehaus -
030: http://groovy.codehaus.org/
031:
032: THIS SOFTWARE IS PROVIDED BY THE CODEHAUS AND CONTRIBUTORS
033: ``AS IS'' AND ANY EXPRESSED OR IMPLIED WARRANTIES, INCLUDING, BUT
034: NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND
035: FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
036: THE CODEHAUS OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT,
037: INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
038: (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
039: SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
040: HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
041: STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
042: ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
043: OF THE POSSIBILITY OF SUCH DAMAGE.
044:
045: */
046:
047: package org.codehaus.groovy.tools;
048:
049: import java.io.File;
050:
051: import org.codehaus.groovy.control.CompilationFailedException;
052: import org.codehaus.groovy.control.CompilationUnit;
053: import org.codehaus.groovy.control.CompilerConfiguration;
054: import org.codehaus.groovy.control.SourceUnit;
055:
056: /**
057: * A convenience front end for getting standard compilations done.
058: * All compile() routines generate classes to the filesystem.
059: *
060: * @author <a href="mailto:cpoirier@dreaming.org">Chris Poirier</a>
061: *
062: * @version $Id: Compiler.java 2257 2005-06-09 19:51:59Z blackdrag $
063: */
064:
065: public class Compiler {
066: public static Compiler DEFAULT = new Compiler();
067:
068: private CompilerConfiguration configuration = null; // Optional configuration data
069:
070: /**
071: * Initializes the Compiler with default configuration.
072: */
073:
074: public Compiler() {
075: configuration = null;
076: }
077:
078: /**
079: * Initializes the Compiler with the specified configuration.
080: */
081:
082: public Compiler(CompilerConfiguration configuration) {
083: this .configuration = configuration;
084: }
085:
086: /**
087: * Compiles a single File.
088: */
089:
090: public void compile(File file) throws CompilationFailedException {
091: CompilationUnit unit = new CompilationUnit(configuration);
092: unit.addSource(file);
093: unit.compile();
094: }
095:
096: /**
097: * Compiles a series of Files.
098: */
099:
100: public void compile(File[] files) throws CompilationFailedException {
101: CompilationUnit unit = new CompilationUnit(configuration);
102: unit.addSources(files);
103: unit.compile();
104: }
105:
106: /**
107: * Compiles a series of Files from file names.
108: */
109:
110: public void compile(String[] files)
111: throws CompilationFailedException {
112: CompilationUnit unit = new CompilationUnit(configuration);
113: unit.addSources(files);
114: unit.compile();
115: }
116:
117: /**
118: * Compiles a string of code.
119: */
120:
121: public void compile(String name, String code)
122: throws CompilationFailedException {
123: CompilationUnit unit = new CompilationUnit(configuration);
124: unit.addSource(new SourceUnit(name, code, configuration, unit
125: .getClassLoader(), unit.getErrorCollector()));
126: unit.compile();
127: }
128:
129: }
|