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. null means, the
compiler configuration is used.
|
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()
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()