org.codehaus.classworlds
Class DefaultClassRealm
java.lang.Object
org.codehaus.classworlds.DefaultClassRealm
- All Implemented Interfaces:
- ClassRealm
public class DefaultClassRealm
- extends java.lang.Object
- implements ClassRealm
Implementation of ClassRealm. The realm is the class loading gateway.
The search is proceded as follows:
- Search the parent class loader (passed via the constructor) if there
is one.
- Search the imports.
- Search this realm's constituents.
- Search the parent realm.
- Version:
- $Id: DefaultClassRealm.java 126 2006-01-12 04:17:51Z $
- Author:
- bob mcwhirter, Jason van Zyl
| Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
world
private ClassWorld world
id
private java.lang.String id
imports
private java.util.TreeSet imports
foreignClassLoader
private java.lang.ClassLoader foreignClassLoader
classLoader
private RealmClassLoader classLoader
parent
private ClassRealm parent
DefaultClassRealm
public DefaultClassRealm(ClassWorld world,
java.lang.String id)
DefaultClassRealm
public DefaultClassRealm(ClassWorld world,
java.lang.String id,
java.lang.ClassLoader foreignClassLoader)
getConstituents
public java.net.URL[] getConstituents()
- Specified by:
getConstituents in interface ClassRealm
getParent
public ClassRealm getParent()
- Specified by:
getParent in interface ClassRealm
setParent
public void setParent(ClassRealm parent)
- Specified by:
setParent in interface ClassRealm
getId
public java.lang.String getId()
- Specified by:
getId in interface ClassRealm
getWorld
public ClassWorld getWorld()
- Specified by:
getWorld in interface ClassRealm
importFrom
public void importFrom(java.lang.String realmId,
java.lang.String packageName)
throws NoSuchRealmException
- Specified by:
importFrom in interface ClassRealm
- Throws:
NoSuchRealmException
addConstituent
public void addConstituent(java.net.URL constituent)
- Specified by:
addConstituent in interface ClassRealm
addConstituent
public void addConstituent(java.lang.String constituent,
byte[] b)
throws java.lang.ClassNotFoundException
- Adds a byte[] class definition as a constituent for locating classes.
Currently uses BytesURLStreamHandler to hold a reference of the byte[] in memory.
This ensures we have a unifed URL resource model for all constituents.
The code to cache to disk is commented out - maybe a property to choose which method?
- Parameters:
constituent - class nameb - the class definition as a byte[]
- Throws:
java.lang.ClassNotFoundException
locateSourceRealm
public ClassRealm locateSourceRealm(java.lang.String classname)
- Specified by:
locateSourceRealm in interface ClassRealm
getClassLoader
public java.lang.ClassLoader getClassLoader()
- Specified by:
getClassLoader in interface ClassRealm
createChildRealm
public ClassRealm createChildRealm(java.lang.String id)
throws DuplicateRealmException
- Specified by:
createChildRealm in interface ClassRealm
- Throws:
DuplicateRealmException
loadClass
public java.lang.Class loadClass(java.lang.String name)
throws java.lang.ClassNotFoundException
- Specified by:
loadClass in interface ClassRealm
- Throws:
java.lang.ClassNotFoundException
getResource
public java.net.URL getResource(java.lang.String name)
- Specified by:
getResource in interface ClassRealm
getResourceAsStream
public java.io.InputStream getResourceAsStream(java.lang.String name)
- Specified by:
getResourceAsStream in interface ClassRealm
findResources
public java.util.Enumeration findResources(java.lang.String name)
throws java.io.IOException
- Specified by:
findResources in interface ClassRealm
- Throws:
java.io.IOException
display
public void display()
- Specified by:
display in interface ClassRealm
showUrls
private void showUrls(ClassRealm classRealm)