public class GroovyClassLoader
extends java.net.URLClassLoader
Modifier and Type | Class and Description |
---|---|
static class |
GroovyClassLoader.ClassCollector |
static class |
GroovyClassLoader.InnerLoader |
Modifier and Type | Field and Description |
---|---|
protected java.util.Map<java.lang.String,java.lang.Class> |
classCache
this cache contains the loaded classes or PARSING, if the class is currently parsed
|
protected java.util.Map<java.lang.String,java.lang.Class> |
sourceCache
This cache contains mappings of file name to class.
|
Constructor and Description |
---|
GroovyClassLoader()
creates a GroovyClassLoader using the current Thread's context
Class loader as parent.
|
GroovyClassLoader(java.lang.ClassLoader loader)
creates a GroovyClassLoader using the given ClassLoader as parent
|
GroovyClassLoader(java.lang.ClassLoader loader,
CompilerConfiguration config)
creates a GroovyClassLoader using the given ClassLoader as parent.
|
GroovyClassLoader(java.lang.ClassLoader parent,
CompilerConfiguration config,
boolean useConfigurationClasspath)
creates a GroovyClassLoader.
|
GroovyClassLoader(GroovyClassLoader parent)
creates a GroovyClassLoader using the given GroovyClassLoader as parent.
|
Modifier and Type | Method and Description |
---|---|
void |
addClasspath(java.lang.String path)
adds a classpath to this classloader.
|
void |
addURL(java.net.URL url)
adds a URL to the classloader.
|
void |
clearCache()
Removes all classes from the class cache.
|
protected GroovyClassLoader.ClassCollector |
createCollector(CompilationUnit unit,
SourceUnit su)
creates a ClassCollector for a new compilation.
|
protected CompilationUnit |
createCompilationUnit(CompilerConfiguration config,
java.security.CodeSource source)
creates a new CompilationUnit.
|
java.lang.Class |
defineClass(ClassNode classNode,
java.lang.String file,
java.lang.String newCodeBase)
Loads the given class node returning the implementation Class.
|
java.lang.Class |
defineClass(java.lang.String name,
byte[] b)
open up the super class define that takes raw bytes
|
java.lang.String |
generateScriptName() |
protected java.lang.Class |
getClassCacheEntry(java.lang.String name)
gets a class from the class cache.
|
protected java.lang.String[] |
getClassPath()
gets the currently used classpath.
|
java.lang.Class[] |
getLoadedClasses()
Returns all Groovy classes loaded by this class loader.
|
protected java.security.PermissionCollection |
getPermissions(java.security.CodeSource codeSource) |
GroovyResourceLoader |
getResourceLoader() |
protected long |
getTimeStamp(java.lang.Class cls)
gets the time stamp of a given class.
|
protected boolean |
isRecompilable(java.lang.Class cls)
Indicates if a class is recompilable.
|
java.lang.Boolean |
isShouldRecompile()
gets the currently set recompilation mode.
|
protected boolean |
isSourceNewer(java.net.URL source,
java.lang.Class cls)
Decides if the given source is newer than a class.
|
java.lang.Class<?> |
loadClass(java.lang.String name) |
protected java.lang.Class |
loadClass(java.lang.String name,
boolean resolve)
Implemented here to check package access prior to returning an
already loaded class.
|
java.lang.Class |
loadClass(java.lang.String name,
boolean lookupScriptFiles,
boolean preferClassOverScript)
loads a class from a file or a parent classloader.
|
java.lang.Class |
loadClass(java.lang.String name,
boolean lookupScriptFiles,
boolean preferClassOverScript,
boolean resolve)
loads a class from a file or a parent classloader.
|
java.lang.Class |
parseClass(java.io.File file)
Parses the given file into a Java class capable of being run
|
java.lang.Class |
parseClass(GroovyCodeSource codeSource) |
java.lang.Class |
parseClass(GroovyCodeSource codeSource,
boolean shouldCacheSource)
Parses the given code source into a Java class.
|
java.lang.Class |
parseClass(java.io.InputStream in,
java.lang.String fileName)
Deprecated.
Prefer using methods taking a Reader rather than an InputStream to avoid wrong encoding issues.
|
java.lang.Class |
parseClass(java.lang.String text)
Parses the given text into a Java class capable of being run
|
java.lang.Class |
parseClass(java.lang.String text,
java.lang.String fileName)
Parses the given text into a Java class capable of being run
|
protected java.lang.Class |
recompile(java.net.URL source,
java.lang.String className,
java.lang.Class oldClass)
(Re)Compiles the given source.
|
protected void |
removeClassCacheEntry(java.lang.String name)
removes a class from the class cache.
|
protected void |
setClassCacheEntry(java.lang.Class cls)
sets an entry in the class cache.
|
void |
setResourceLoader(GroovyResourceLoader resourceLoader) |
void |
setShouldRecompile(java.lang.Boolean mode)
sets if the recompilation should be enable.
|
close, definePackage, findClass, findResource, findResources, getResourceAsStream, getURLs, newInstance, newInstance
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getClassLoadingLock, getPackage, getPackages, getParent, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, registerAsParallelCapable, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
protected final java.util.Map<java.lang.String,java.lang.Class> classCache
protected final java.util.Map<java.lang.String,java.lang.Class> sourceCache
public GroovyClassLoader()
public GroovyClassLoader(java.lang.ClassLoader loader)
public GroovyClassLoader(GroovyClassLoader parent)
public GroovyClassLoader(java.lang.ClassLoader parent, CompilerConfiguration config, boolean useConfigurationClasspath)
parent
- the parent class loaderconfig
- the compiler configurationuseConfigurationClasspath
- determines if the configurations classpath should be addedpublic GroovyClassLoader(java.lang.ClassLoader loader, CompilerConfiguration config)
public void setResourceLoader(GroovyResourceLoader resourceLoader)
public GroovyResourceLoader getResourceLoader()
public java.lang.Class defineClass(ClassNode classNode, java.lang.String file, java.lang.String newCodeBase)
WARNING: this compilation is not synchronized
classNode
- public java.lang.Class parseClass(java.io.File file) throws CompilationFailedException, java.io.IOException
file
- the file name to parseCompilationFailedException
java.io.IOException
public java.lang.Class parseClass(java.lang.String text, java.lang.String fileName) throws CompilationFailedException
text
- the text of the script/class to parsefileName
- the file name to use as the name of the classCompilationFailedException
public java.lang.Class parseClass(java.lang.String text) throws CompilationFailedException
text
- the text of the script/class to parseCompilationFailedException
public java.lang.String generateScriptName()
@Deprecated public java.lang.Class parseClass(java.io.InputStream in, java.lang.String fileName) throws CompilationFailedException
CompilationFailedException
public java.lang.Class parseClass(GroovyCodeSource codeSource) throws CompilationFailedException
CompilationFailedException
public java.lang.Class parseClass(GroovyCodeSource codeSource, boolean shouldCacheSource) throws CompilationFailedException
shouldCacheSource
- if true then the generated class will be stored in the source cacheCompilationFailedException
protected java.lang.String[] getClassPath()
URLClassLoader.getURLs()
protected java.security.PermissionCollection getPermissions(java.security.CodeSource codeSource)
getPermissions
in class java.net.URLClassLoader
protected CompilationUnit createCompilationUnit(CompilerConfiguration config, java.security.CodeSource source)
config
- the compiler configuration, usually the same as for this class loadersource
- the source containing the initial file to compile, more files may follow during compilationprotected GroovyClassLoader.ClassCollector createCollector(CompilationUnit unit, SourceUnit su)
unit
- the compilationUnitsu
- the SourceUnitpublic java.lang.Class defineClass(java.lang.String name, byte[] b)
public java.lang.Class loadClass(java.lang.String name, boolean lookupScriptFiles, boolean preferClassOverScript) throws java.lang.ClassNotFoundException, CompilationFailedException
CompilationFailedException
- if compilation was not successfuljava.lang.ClassNotFoundException
protected java.lang.Class getClassCacheEntry(java.lang.String name)
name
- of the classremoveClassCacheEntry(String)
,
setClassCacheEntry(Class)
,
clearCache()
protected void setClassCacheEntry(java.lang.Class cls)
cls
- the classremoveClassCacheEntry(String)
,
getClassCacheEntry(String)
,
clearCache()
protected void removeClassCacheEntry(java.lang.String name)
name
- of the classgetClassCacheEntry(String)
,
setClassCacheEntry(Class)
,
clearCache()
public void addURL(java.net.URL url)
addURL
in class java.net.URLClassLoader
url
- the new classpath elementprotected boolean isRecompilable(java.lang.Class cls)
NOTE: First the parent loaders will be asked and only if they don't return a class the recompilation will happen. Recompilation also only happen if the source file is newer.
cls
- the class to be tested. If null the method should return trueisSourceNewer(URL, Class)
public void setShouldRecompile(java.lang.Boolean mode)
mode
- the recompilation modeCompilerConfiguration
public java.lang.Boolean isShouldRecompile()
public java.lang.Class loadClass(java.lang.String name, boolean lookupScriptFiles, boolean preferClassOverScript, boolean resolve) throws java.lang.ClassNotFoundException, CompilationFailedException
name
- of the class to be loadedlookupScriptFiles
- if false no lookup at files is done at allpreferClassOverScript
- if true the file lookup is only done if there is no classresolve
- see ClassLoader.loadClass(java.lang.String, boolean)
java.lang.ClassNotFoundException
- if the class could not be foundCompilationFailedException
- if the source file could not be compiledprotected java.lang.Class recompile(java.net.URL source, java.lang.String className, java.lang.Class oldClass) throws CompilationFailedException, java.io.IOException
source
- the source pointer for the compilationclassName
- the name of the class to be generatedoldClass
- a possible former classCompilationFailedException
- if the compilation failedjava.io.IOException
- if the source is not readableisSourceNewer(URL, Class)
public java.lang.Class<?> loadClass(java.lang.String name) throws java.lang.ClassNotFoundException
loadClass
in class java.lang.ClassLoader
java.lang.ClassNotFoundException
protected java.lang.Class loadClass(java.lang.String name, boolean resolve) throws java.lang.ClassNotFoundException
loadClass
in class java.lang.ClassLoader
CompilationFailedException
- if the compilation failedjava.lang.ClassNotFoundException
- if the class was not foundClassLoader.loadClass(java.lang.String, boolean)
protected long getTimeStamp(java.lang.Class cls)
cls
- the classprotected boolean isSourceNewer(java.net.URL source, java.lang.Class cls) throws java.io.IOException
source
- the source we may want to compilecls
- the former classjava.io.IOException
- if it is not possible to open an
connection for the given sourcegetTimeStamp(Class)
public void addClasspath(java.lang.String path)
path
- is a jar file or a directory.addURL(URL)
public java.lang.Class[] getLoadedClasses()
Returns all Groovy classes loaded by this class loader.
public void clearCache()