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)