Package org.codehaus.janino
Class SimpleCompiler
java.lang.Object
org.codehaus.commons.compiler.Cookable
org.codehaus.janino.SimpleCompiler
- All Implemented Interfaces:
ICookable,ISimpleCompiler
- Direct Known Subclasses:
ClassBodyEvaluator
To set up a
SimpleCompiler object, proceed as described for ISimpleCompiler.
Alternatively, a number of "convenience constructors" exist that execute the described steps
instantly.-
Field Summary
FieldsModifier and TypeFieldDescriptionprotected booleanprotected booleanprotected booleanFields inherited from interface org.codehaus.commons.compiler.ICookable
BOOT_CLASS_LOADER, SYSTEM_PROPERTY_SOURCE_DEBUGGING_DIR, SYSTEM_PROPERTY_SOURCE_DEBUGGING_ENABLE -
Constructor Summary
ConstructorsConstructorDescriptionSimpleCompiler(String fileName) Equivalent toSimpleCompiler(String optionalFileName, InputStream is) Equivalent toSimpleCompiler(String optionalFileName, Reader in) Equivalent toSimpleCompiler(Scanner scanner, ClassLoader optionalParentClassLoader) Equivalent to -
Method Summary
Modifier and TypeMethodDescriptionprotected voidThrow anIllegalStateExceptionif thisCookableis already cooked.protected Java.Type[]classesToTypes(Location location, Class[] classes) protected Java.TypeclassToType(Location location, Class clazz) protected final ClassLoadercompileToClassLoader(Java.CompilationUnit compilationUnit) Compile the given compilation unit.final voidScans, parses and compiles a given compilation unit from the givenReader.voidcook(Java.CompilationUnit compilationUnit) Cook this compilation unit directly.voidScans, parses and ompiles a given compilation unit from the given scanner.booleanTwoSimpleCompilers are regarded equal iff Both are objects of the same class (e.g.Returns aClassLoaderobject through which the previously compiled classes can be accessed.inthashCode()static voidvoidsetDebuggingInformation(boolean debugSource, boolean debugLines, boolean debugVars) Determines what kind of debugging information is included in the generates classes.voidsetParentClassLoader(ClassLoader optionalParentClassLoader) The "parent class loader" is used to load referenced classes.Methods inherited from class org.codehaus.commons.compiler.Cookable
cook, cook, cook, cook, cook, cook, cook, cookFile, cookFile, cookFile, cookFile, readString
-
Field Details
-
debugSource
protected boolean debugSource -
debugLines
protected boolean debugLines -
debugVars
protected boolean debugVars
-
-
Constructor Details
-
SimpleCompiler
Equivalent toSimpleCompiler sc = new SimpleCompiler(); sc.cook(optionalFileName, in);
- Throws:
IOExceptionCompileException- See Also:
-
SimpleCompiler
Equivalent toSimpleCompiler sc = new SimpleCompiler(); sc.cook(optionalFileName, is);
- Throws:
IOExceptionCompileException- See Also:
-
SimpleCompiler
Equivalent toSimpleCompiler sc = new SimpleCompiler(); sc.cook(fileName);
- Throws:
IOExceptionCompileException- See Also:
-
SimpleCompiler
public SimpleCompiler(Scanner scanner, ClassLoader optionalParentClassLoader) throws IOException, CompileException Equivalent toSimpleCompiler sc = new SimpleCompiler(); sc.setParentClassLoader(optionalParentClassLoader); sc.cook(scanner);
- Throws:
IOExceptionCompileException- See Also:
-
SimpleCompiler
public SimpleCompiler()
-
-
Method Details
-
main
- Throws:
Exception
-
setParentClassLoader
Description copied from interface:ICookableThe "parent class loader" is used to load referenced classes. Useful values are:
The parent class loader defaults to the current thread's context class loader.System.getSystemClassLoader()The running JVM's class path Thread.currentThread().getContextClassLoader()ornullThe class loader effective for the invoking thread ICookable.BOOT_CLASS_LOADERThe running JVM's boot class path - Specified by:
setParentClassLoaderin interfaceICookable
-
setDebuggingInformation
public void setDebuggingInformation(boolean debugSource, boolean debugLines, boolean debugVars) Description copied from interface:ICookableDetermines what kind of debugging information is included in the generates classes. The default is typically '-g:none', and '-g:all' if the system property 'org.codehaus.janino.source_debugging.enable' is set to 'true'.- Specified by:
setDebuggingInformationin interfaceICookable
-
cook
Scans, parses and compiles a given compilation unit from the givenReader. After completion,getClassLoader()returns aClassLoaderthat allows for access to the compiled classes.- Specified by:
cookin interfaceICookable- Specified by:
cookin classCookable- Parameters:
optionalFileName- Used when reporting errors and warnings.- Throws:
CompileExceptionIOException- See Also:
-
cook
Scans, parses and ompiles a given compilation unit from the given scanner. After completion,getClassLoader()returns aClassLoaderthat allows for access to the compiled classes.- Throws:
CompileExceptionIOException
-
cook
Cook this compilation unit directly. SeeCookable.cook(java.lang.String, java.io.Reader)- Throws:
CompileException
-
getClassLoader
Description copied from interface:ISimpleCompilerReturns aClassLoaderobject through which the previously compiled classes can be accessed. ThisClassLoadercan be used for subsequentISimpleCompilers in order to compile compilation units that use types (e.g. declare derived types) declared in the previous one.This method must only be called after exactly on of the
ICookable.cook(String, java.io.Reader)methods was called.- Specified by:
getClassLoaderin interfaceISimpleCompiler
-
equals
TwoSimpleCompilers are regarded equal iff- Both are objects of the same class (e.g. both are
ScriptEvaluators) - Both generated functionally equal classes as seen by
ByteArrayClassLoader.equals(Object)
- Both are objects of the same class (e.g. both are
-
hashCode
public int hashCode() -
classToType
-
classesToTypes
-
compileToClassLoader
protected final ClassLoader compileToClassLoader(Java.CompilationUnit compilationUnit) throws CompileException Compile the given compilation unit. (A "compilation unit" is typically the contents of a Java™ source file.)- Parameters:
compilationUnit- The parsed compilation unit- Returns:
- The
ClassLoaderinto which the compiled classes were defined - Throws:
CompileException
-
assertNotCooked
protected void assertNotCooked()Throw anIllegalStateExceptionif thisCookableis already cooked.
-