Class ReflectorLoader
java.lang.Object
java.lang.ClassLoader
org.codehaus.groovy.runtime.metaclass.ReflectorLoader
public class ReflectorLoader
extends java.lang.ClassLoader
Reflector creation helper. This class is used to define the Reflector classes.
For each ClassLoader such a loader will be created by MetaClass.
Special about this loader is, that it knows the classes form the
Groovy Runtime. The Reflector class is resolved in different ways: During
the definition of a class Reflector will resolve to the Reflector class of
the runtime, even if there is another Reflector class in the parent loader.
After the new class is defined Reflector will resolve like other Groovy
classes. This loader is able to resolve all Groovy classes even if the
parent does not know them, but the parent serves first (Reflector during a
class definition is different).
-
Constructor Summary
Constructors Constructor Description ReflectorLoader(java.lang.ClassLoader parent)
creates a ReflectorLoader. -
Method Summary
Modifier and Type Method Description java.lang.Class
defineClass(java.lang.String name, byte[] bytecode, java.security.ProtectionDomain domain)
helper method to define Reflector classes.protected java.lang.Class
findClass(java.lang.String name)
Tries to find a Groovy class.java.lang.Class
getLoadedClass(java.lang.String name)
try to load one of the defined Reflector classes by name.protected java.lang.Class
loadClass(java.lang.String name, boolean resolve)
Loads a class per name.Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findResource, findResources, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
-
Constructor Details
-
ReflectorLoader
public ReflectorLoader(java.lang.ClassLoader parent)creates a ReflectorLoader.- Parameters:
parent
- the parent loader. This should never be null!
-
-
Method Details
-
findClass
protected java.lang.Class findClass(java.lang.String name) throws java.lang.ClassNotFoundExceptionTries to find a Groovy class.- Overrides:
findClass
in classjava.lang.ClassLoader
- Returns:
- the class if found
- Throws:
java.lang.ClassNotFoundException
- if not found
-
loadClass
protected java.lang.Class loadClass(java.lang.String name, boolean resolve) throws java.lang.ClassNotFoundExceptionLoads a class per name. Unlike a normal loadClass this version behaves different during a class definition. In that case it checks if the class we want to load is Reflector and returns class if the check is successful. If it is not during a class definition it just calls the super class version of loadClass.- Overrides:
loadClass
in classjava.lang.ClassLoader
- Parameters:
name
- of the class to loadresolve
- is true if the class should be resolved- Throws:
java.lang.ClassNotFoundException
- See Also:
Reflector
,ClassLoader.loadClass(String, boolean)
-
defineClass
public java.lang.Class defineClass(java.lang.String name, byte[] bytecode, java.security.ProtectionDomain domain)helper method to define Reflector classes.- Parameters:
name
- of the Reflectorbytecode
- the bytecodedomain
- the protection domain- Returns:
- the generated class
-
getLoadedClass
public java.lang.Class getLoadedClass(java.lang.String name)try to load one of the defined Reflector classes by name.- Parameters:
name
- of the Reflector class- Returns:
- the Reflector class if defined else null.
-