org.glassfish.internal.api
Class DelegatingClassLoader
java.lang.Object
java.lang.ClassLoader
org.glassfish.internal.api.DelegatingClassLoader
public class DelegatingClassLoader
- extends java.lang.ClassLoader
This classloader has a list of classloaders called as delegates
that it uses to find classes. All those delegates must have the
same parent as this classloader in order to have a consistent class space.
By consistent class space, I mean a class space where no two loaded class
have same name. An inconsistent class space can lead to ClassCastException.
This classloader does not define any class, classes are always loaded
either by its parent or by one of the delegates.
- Author:
- Sanjeeb.Sahoo@Sun.COM
| Methods inherited from class java.lang.ClassLoader |
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findSystemClass, getPackage, getPackages, getParent, getResource, getResourceAsStream, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, loadClass, loadClass, resolveClass, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners |
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait |
DelegatingClassLoader
public DelegatingClassLoader(java.lang.ClassLoader parent,
java.util.List<DelegatingClassLoader.ClassFinder> delegates)
throws java.lang.IllegalArgumentException
- Throws:
java.lang.IllegalArgumentException - when the delegate does not have same parent
as this classloader.
DelegatingClassLoader
public DelegatingClassLoader(java.lang.ClassLoader parent)
addDelegate
public boolean addDelegate(DelegatingClassLoader.ClassFinder d)
throws java.lang.IllegalStateException,
java.lang.IllegalArgumentException
- Adds a ClassFinder to list of delegates. To have a consistent
class space (by consistent class space, I mean a classpace where there
does not exist two class with same name), this method does not allow
a delegate to be added that has a different parent.
- Parameters:
d - ClassFinder to add to the list of delegates
- Returns:
- true if the delegate is added, false otherwise.
- Throws:
java.lang.IllegalStateException - when this method is called after the
classloader has been used to load any class.
java.lang.IllegalArgumentException - when the delegate does not have same parent
as this classloader.
removeDelegate
public boolean removeDelegate(DelegatingClassLoader.ClassFinder d)
- Removes a ClassFinder from list of delegates. This method must not be used
once this classloader has beed used to load any class. If attempted to
do so, this method throws IllegalStateException
- Parameters:
d - ClassFinder to remove from the list of delegates
- Returns:
- true if the delegate was removed, false otherwise.
- Throws:
java.lang.IllegalStateException - when this method is called after the
classloader has been used to load any class.
findClass
public java.lang.Class<?> findClass(java.lang.String name)
throws java.lang.ClassNotFoundException
- Overrides:
findClass in class java.lang.ClassLoader
- Throws:
java.lang.ClassNotFoundException
findResource
protected java.net.URL findResource(java.lang.String name)
- Overrides:
findResource in class java.lang.ClassLoader
findResources
protected java.util.Enumeration<java.net.URL> findResources(java.lang.String name)
throws java.io.IOException
- Overrides:
findResources in class java.lang.ClassLoader
- Throws:
java.io.IOException
getName
public java.lang.String getName()
setName
public void setName(java.lang.String name)
getDelegates
public java.util.List<DelegatingClassLoader.ClassFinder> getDelegates()
toString
public java.lang.String toString()
- Overrides:
toString in class java.lang.Object
Copyright © 2012 GlassFish Community. All Rights Reserved.