|
Groovy 2.2.0 | |||||||
FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Object java.lang.ClassLoader java.security.SecureClassLoader java.net.URLClassLoader groovy.lang.GroovyClassLoader
public class GroovyClassLoader extends URLClassLoader
A ClassLoader which can load Groovy classes. The loaded classes are cached, classes from other classloaders should not be cached. To be able to load a script that was asked for earlier but was created later it is essential not to keep anything like a "class not found" information for that class name. This includes possible parent loaders. Classes that are not cached are always reloaded.
Nested Class Summary | |
---|---|
static class |
GroovyClassLoader.ClassCollector
|
static class |
GroovyClassLoader.InnerLoader
|
Field Summary | |
---|---|
protected Map |
classCache
this cache contains the loaded classes or PARSING, if the class is currently parsed |
protected Map |
sourceCache
This cache contains mappings of file name to class. |
Constructor Summary | |
GroovyClassLoader()
creates a GroovyClassLoader using the current Thread's context Class loader as parent. |
|
GroovyClassLoader(ClassLoader loader)
creates a GroovyClassLoader using the given ClassLoader as parent |
|
GroovyClassLoader(GroovyClassLoader parent)
creates a GroovyClassLoader using the given GroovyClassLoader as parent. |
|
GroovyClassLoader(ClassLoader parent, CompilerConfiguration config, boolean useConfigurationClasspath)
creates a GroovyClassLoader. |
|
GroovyClassLoader(ClassLoader loader, CompilerConfiguration config)
creates a GroovyClassLoader using the given ClassLoader as parent. |
Method Summary | |
---|---|
void
|
addClasspath(String path)
|
void
|
addURL(URL url)
|
void
|
clearCache()
|
protected GroovyClassLoader.ClassCollector
|
createCollector(CompilationUnit unit, SourceUnit su)
|
protected CompilationUnit
|
createCompilationUnit(CompilerConfiguration config, CodeSource source)
|
Class
|
defineClass(ClassNode classNode, String file, String newCodeBase)
Loads the given class node returning the implementation Class. |
Class
|
defineClass(String name, byte[] b)
|
String
|
generateScriptName()
|
protected Class
|
getClassCacheEntry(String name)
|
protected String[]
|
getClassPath()
gets the currently used classpath. |
Class[]
|
getLoadedClasses()
|
protected PermissionCollection
|
getPermissions(CodeSource codeSource)
|
GroovyResourceLoader
|
getResourceLoader()
|
protected long
|
getTimeStamp(Class cls)
|
protected boolean
|
isRecompilable(Class cls)
|
Boolean
|
isShouldRecompile()
|
protected boolean
|
isSourceNewer(URL source, Class cls)
adds a classpath to this classloader. |
Class
|
loadClass(String name, boolean lookupScriptFiles, boolean preferClassOverScript)
|
Class
|
loadClass(String name, boolean lookupScriptFiles, boolean preferClassOverScript, boolean resolve)
|
Class
|
loadClass(String name)
Implemented here to check package access prior to returning an already loaded class. |
protected Class
|
loadClass(String name, boolean resolve)
This method will take a file name and try to "decode" any URL encoded characters. |
Class
|
parseClass(File file)
Parses the given file into a Java class capable of being run |
Class
|
parseClass(String text, String fileName)
Parses the given text into a Java class capable of being run |
Class
|
parseClass(String text)
Parses the given text into a Java class capable of being run |
Class
|
parseClass(InputStream in, String fileName)
@deprecated Prefer using methods taking a Reader rather than an InputStream to avoid wrong encoding issues. |
Class
|
parseClass(GroovyCodeSource codeSource)
|
Class
|
parseClass(GroovyCodeSource codeSource, boolean shouldCacheSource)
|
protected Class
|
recompile(URL source, String className, Class oldClass)
(Re)Compiles the given source. |
protected void
|
removeClassCacheEntry(String name)
|
protected void
|
setClassCacheEntry(Class cls)
|
void
|
setResourceLoader(GroovyResourceLoader resourceLoader)
|
void
|
setShouldRecompile(Boolean mode)
sets if the recompilation should be enable. |
Field Detail |
---|
protected final Map classCache
protected final Map sourceCache
Constructor Detail |
---|
public GroovyClassLoader()
public GroovyClassLoader(ClassLoader loader)
public GroovyClassLoader(GroovyClassLoader parent)
public GroovyClassLoader(ClassLoader parent, CompilerConfiguration config, boolean useConfigurationClasspath)
parent
- the parent class loaderconfig
- the compiler configurationuseConfigurationClasspath
- determines if the configurations classpath should be added
public GroovyClassLoader(ClassLoader loader, CompilerConfiguration config)
Method Detail |
---|
public void addClasspath(String path)
Returns all Groovy classes loaded by this class loader.
public void addURL(URL url)
public void clearCache()
protected GroovyClassLoader.ClassCollector createCollector(CompilationUnit unit, SourceUnit su)
protected CompilationUnit createCompilationUnit(CompilerConfiguration config, CodeSource source)
public Class defineClass(ClassNode classNode, String file, String newCodeBase)
WARNING: this compilation is not synchronized
public Class defineClass(String name, byte[] b)
public String generateScriptName()
protected Class getClassCacheEntry(String name)
protected String[] getClassPath()
public Class[] getLoadedClasses()
protected PermissionCollection getPermissions(CodeSource codeSource)
public GroovyResourceLoader getResourceLoader()
protected long getTimeStamp(Class cls)
protected boolean isRecompilable(Class cls)
public Boolean isShouldRecompile()
protected boolean isSourceNewer(URL source, Class cls)
path
- is a jar file or a directory.
public Class loadClass(String name, boolean lookupScriptFiles, boolean preferClassOverScript)
public Class loadClass(String name, boolean lookupScriptFiles, boolean preferClassOverScript, boolean resolve)
@Overrideprotected long getTimeStamp(Class cls) { public Class loadClass(String name)
protected Class loadClass(String name, boolean resolve)
This method was added specifically to fix defect: Groovy-1787. The defect involved a situation where two scripts were sitting in a directory with spaces in its name. The code would fail when the class loader tried to resolve the file name and would choke on the URLEncoded space values.
public Class parseClass(File file)
file
- the file name to parse
public Class parseClass(String text, String fileName)
text
- the text of the script/class to parsefileName
- the file name to use as the name of the class
public Class parseClass(String text)
text
- the text of the script/class to parse
public Class parseClass(InputStream in, String fileName)
public Class parseClass(GroovyCodeSource codeSource)
public Class parseClass(GroovyCodeSource codeSource, boolean shouldCacheSource)
protected Class recompile(URL source, String className, Class oldClass)
source
- the source pointer for the compilationclassName
- the name of the class to be generatedoldClass
- a possible former class
protected void removeClassCacheEntry(String name)
protected void setClassCacheEntry(Class cls)
public void setResourceLoader(GroovyResourceLoader resourceLoader)
public void setShouldRecompile(Boolean mode)
mode
- the recompilation mode
Copyright © 2003-2013 The Codehaus. All rights reserved.