Class ClassRealm
- java.lang.Object
-
- java.lang.ClassLoader
-
- java.security.SecureClassLoader
-
- java.net.URLClassLoader
-
- org.codehaus.plexus.classworlds.realm.ClassRealm
-
- All Implemented Interfaces:
Closeable
,AutoCloseable
- Direct Known Subclasses:
ClassRealmReverseAdapter
,FilteredClassRealm
public class ClassRealm extends URLClassLoader
The class loading gateway. Each class realm has access to a base class loader, imports form zero or more other class loaders, an optional parent class loader and of course its own class path. When queried for a class/resource, a class realm will always query its base class loader first before it delegates to a pluggable strategy. The strategy in turn controls the order in which imported class loaders, the parent class loader and the realm itself are searched. The base class loader is assumed to be capable of loading of the bootstrap classes.- Author:
- bob mcwhirter, Jason van Zyl
-
-
Constructor Summary
Constructors Constructor Description ClassRealm(ClassWorld world, String id, ClassLoader baseClassLoader)
Creates a new class realm.
-
Method Summary
-
Methods inherited from class java.net.URLClassLoader
close, definePackage, getPermissions, getResourceAsStream, getURLs, newInstance, newInstance
-
Methods inherited from class java.security.SecureClassLoader
defineClass, defineClass
-
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findLibrary, findLoadedClass, findResource, findSystemClass, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
-
-
-
-
Constructor Detail
-
ClassRealm
public ClassRealm(ClassWorld world, String id, ClassLoader baseClassLoader)
Creates a new class realm.- Parameters:
world
- The class world this realm belongs to, must not benull
.id
- The identifier for this realm, must not benull
.baseClassLoader
- The base class loader for this realm, may benull
to use the bootstrap class loader.
-
-
Method Detail
-
getId
public String getId()
-
getWorld
public ClassWorld getWorld()
-
importFromParent
public void importFromParent(String packageName)
-
importFrom
public void importFrom(String realmId, String packageName) throws NoSuchRealmException
- Throws:
NoSuchRealmException
-
importFrom
public void importFrom(ClassLoader classLoader, String packageName)
-
getImportClassLoader
public ClassLoader getImportClassLoader(String name)
-
getImportRealms
public Collection<ClassRealm> getImportRealms()
-
getStrategy
public Strategy getStrategy()
-
setParentClassLoader
public void setParentClassLoader(ClassLoader parentClassLoader)
-
getParentClassLoader
public ClassLoader getParentClassLoader()
-
setParentRealm
public void setParentRealm(ClassRealm realm)
-
getParentRealm
public ClassRealm getParentRealm()
-
createChildRealm
public ClassRealm createChildRealm(String id) throws DuplicateRealmException
- Throws:
DuplicateRealmException
-
addURL
public void addURL(URL url)
- Overrides:
addURL
in classURLClassLoader
-
loadClass
public Class<?> loadClass(String name) throws ClassNotFoundException
- Overrides:
loadClass
in classClassLoader
- Throws:
ClassNotFoundException
-
loadClass
protected Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException
- Overrides:
loadClass
in classClassLoader
- Throws:
ClassNotFoundException
-
findClass
protected Class<?> findClass(String moduleName, String name)
- Overrides:
findClass
in classClassLoader
-
findClass
protected Class<?> findClass(String name) throws ClassNotFoundException
- Overrides:
findClass
in classURLClassLoader
- Throws:
ClassNotFoundException
-
findClassInternal
protected Class<?> findClassInternal(String name) throws ClassNotFoundException
- Throws:
ClassNotFoundException
-
getResource
public URL getResource(String name)
- Overrides:
getResource
in classClassLoader
-
findResource
public URL findResource(String name)
- Overrides:
findResource
in classURLClassLoader
-
getResources
public Enumeration<URL> getResources(String name) throws IOException
- Overrides:
getResources
in classClassLoader
- Throws:
IOException
-
findResources
public Enumeration<URL> findResources(String name) throws IOException
- Overrides:
findResources
in classURLClassLoader
- Throws:
IOException
-
display
public void display()
-
display
public void display(PrintStream out)
-
getClassLoadingLock
protected Object getClassLoadingLock(String name)
- Overrides:
getClassLoadingLock
in classClassLoader
-
loadResourcesFromImport
public Enumeration<URL> loadResourcesFromImport(String name)
-
loadResourcesFromSelf
public Enumeration<URL> loadResourcesFromSelf(String name)
-
loadResourcesFromParent
public Enumeration<URL> loadResourcesFromParent(String name)
-
-