Package jadex.platform.service.library
Class DelegationURLClassLoader
- java.lang.Object
-
- java.lang.ClassLoader
-
- java.security.SecureClassLoader
-
- java.net.URLClassLoader
-
- jadex.platform.service.library.DelegationURLClassLoader
-
- All Implemented Interfaces:
java.io.Closeable,java.lang.AutoCloseable
public class DelegationURLClassLoader extends java.net.URLClassLoaderThe delegation url classloader is responsible for managing a own resource plus a set of fixed delegate loaders.
-
-
Field Summary
Fields Modifier and Type Field Description protected java.lang.ClassLoaderbaseclThe base class loader.protected java.util.List<DelegationURLClassLoader>delegatesThe delegation classloader.protected java.util.Set<DelegationURLClassLoader>dependenciesThe flattened transitive dependencies without duplicates (created lazy from delegates list).protected java.util.List<DelegationURLClassLoader>parentsThe parent classloaders (i.e.protected IResourceIdentifierridThe resource identifier.
-
Constructor Summary
Constructors Constructor Description DelegationURLClassLoader(IResourceIdentifier rid, java.net.URL url, java.lang.ClassLoader basecl, DelegationURLClassLoader[] delegates)Create a new classloader.DelegationURLClassLoader(java.lang.ClassLoader basecl, DelegationURLClassLoader[] delegates)Create a new classloader.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleanaddDelegateClassLoader(DelegationURLClassLoader classloader)Add a new delegate loader.booleanaddParentClassLoader(DelegationURLClassLoader parent)Add a parent loader.static java.util.Set<DelegationURLClassLoader>computeFlattenedDependencies(java.util.List<DelegationURLClassLoader> deps)Get transitive dependencies as flattened set (without duplicates).protected java.net.URLfindDirectResource(java.lang.String name)Find the resource.protected java.util.Enumeration<java.net.URL>findDirectResources(java.lang.String name)Find the resource.java.net.URLfindResource(java.lang.String name)Find the resource.java.util.Enumeration<java.net.URL>findResources(java.lang.String name)Find the resource.static voidgetAllParentLoaders(java.lang.ClassLoader cl, java.util.Set<java.lang.ClassLoader> cls)java.util.Set<IResourceIdentifier>getAllResourceIdentifiers()Get all managed resource identifiers inlcuding all subdependencies.java.util.Set<java.net.URL>getALLURLs()Get transitive dependencies as flattened set (without duplicates).protected java.lang.ClassLoadergetBaseClassLoader()DelegationURLClassLoader[]getDelegateClassLoaders()Get the delegates.java.util.List<IResourceIdentifier>getDelegateResourceIdentifiers()Get the delegates.java.util.List<DelegationURLClassLoader>getDelegates()Get the delegates.java.util.Set<DelegationURLClassLoader>getFlattenedDependencies()Get transitive dependencies as flattened set (without duplicates).java.util.List<DelegationURLClassLoader>getParentClassLoaders()Get the parent class loaders.IResourceIdentifiergetResourceIdentifier()Get the resource identifier.java.net.URLgetURL()Get the own url.booleanhasParentClassLoader()Test if has parent classloader.booleanisClassLoaderCompatible(java.lang.Class<?> clazz)protected java.lang.Class<?>loadClass(java.lang.String name, boolean resolve)Load class.protected java.lang.Class<?>loadDirectClass(java.lang.String name, boolean resolve)Load a class directly, without delegation to dependencies or base class loaderbooleanremoveDelegateClassLoader(DelegationURLClassLoader classloader)Remove a new delegate loader.booleanremoveParentClassLoader(DelegationURLClassLoader parent)Remove a parent classloader.voidsetResourceIdentifier(IResourceIdentifier rid)Set the rid.java.lang.StringtoString()Get a string representation.-
Methods inherited from class java.net.URLClassLoader
addURL, close, definePackage, findClass, getPermissions, getResourceAsStream, getURLs, newInstance, newInstance
-
Methods inherited from class java.lang.ClassLoader
clearAssertionStatus, defineClass, defineClass, defineClass, defineClass, definePackage, findClass, findLibrary, findLoadedClass, findResource, findSystemClass, getClassLoadingLock, getDefinedPackage, getDefinedPackages, getName, getPackage, getPackages, getParent, getPlatformClassLoader, getResource, getResources, getSystemClassLoader, getSystemResource, getSystemResourceAsStream, getSystemResources, getUnnamedModule, isRegisteredAsParallelCapable, loadClass, registerAsParallelCapable, resolveClass, resources, setClassAssertionStatus, setDefaultAssertionStatus, setPackageAssertionStatus, setSigners
-
-
-
-
Field Detail
-
rid
protected IResourceIdentifier rid
The resource identifier.
-
basecl
protected java.lang.ClassLoader basecl
The base class loader.
-
delegates
protected java.util.List<DelegationURLClassLoader> delegates
The delegation classloader.
-
parents
protected java.util.List<DelegationURLClassLoader> parents
The parent classloaders (i.e. the support).
-
dependencies
protected volatile java.util.Set<DelegationURLClassLoader> dependencies
The flattened transitive dependencies without duplicates (created lazy from delegates list).
-
-
Constructor Detail
-
DelegationURLClassLoader
public DelegationURLClassLoader(java.lang.ClassLoader basecl, DelegationURLClassLoader[] delegates)Create a new classloader.
-
DelegationURLClassLoader
public DelegationURLClassLoader(IResourceIdentifier rid, java.net.URL url, java.lang.ClassLoader basecl, DelegationURLClassLoader[] delegates)
Create a new classloader.
-
-
Method Detail
-
getDelegateResourceIdentifiers
public java.util.List<IResourceIdentifier> getDelegateResourceIdentifiers()
Get the delegates.- Returns:
- The delegates.
-
getDelegateClassLoaders
public DelegationURLClassLoader[] getDelegateClassLoaders()
Get the delegates.- Returns:
- The delegates.
-
addDelegateClassLoader
public boolean addDelegateClassLoader(DelegationURLClassLoader classloader)
Add a new delegate loader.- Parameters:
classloader- The delegate classloader.
-
removeDelegateClassLoader
public boolean removeDelegateClassLoader(DelegationURLClassLoader classloader)
Remove a new delegate loader.- Parameters:
classloader- The delegate classloader.- Returns:
- True, if classloader was removed.
-
addParentClassLoader
public boolean addParentClassLoader(DelegationURLClassLoader parent)
Add a parent loader.- Parameters:
classloader- The parent loader.
-
removeParentClassLoader
public boolean removeParentClassLoader(DelegationURLClassLoader parent)
Remove a parent classloader.
-
hasParentClassLoader
public boolean hasParentClassLoader()
Test if has parent classloader.
-
getParentClassLoaders
public java.util.List<DelegationURLClassLoader> getParentClassLoaders()
Get the parent class loaders.
-
getFlattenedDependencies
public java.util.Set<DelegationURLClassLoader> getFlattenedDependencies()
Get transitive dependencies as flattened set (without duplicates).
-
getALLURLs
public java.util.Set<java.net.URL> getALLURLs()
Get transitive dependencies as flattened set (without duplicates).
-
computeFlattenedDependencies
public static java.util.Set<DelegationURLClassLoader> computeFlattenedDependencies(java.util.List<DelegationURLClassLoader> deps)
Get transitive dependencies as flattened set (without duplicates).
-
getDelegates
public java.util.List<DelegationURLClassLoader> getDelegates()
Get the delegates.
-
getURL
public java.net.URL getURL()
Get the own url.
-
getResourceIdentifier
public IResourceIdentifier getResourceIdentifier()
Get the resource identifier.- Returns:
- The resource identifier.
-
setResourceIdentifier
public void setResourceIdentifier(IResourceIdentifier rid)
Set the rid.- Parameters:
rid- The rid to set.
-
getAllResourceIdentifiers
public java.util.Set<IResourceIdentifier> getAllResourceIdentifiers()
Get all managed resource identifiers inlcuding all subdependencies.- Returns:
- The resource identifiers.
-
loadDirectClass
protected java.lang.Class<?> loadDirectClass(java.lang.String name, boolean resolve) throws java.lang.ClassNotFoundExceptionLoad a class directly, without delegation to dependencies or base class loader- Throws:
java.lang.ClassNotFoundException
-
loadClass
protected java.lang.Class<?> loadClass(java.lang.String name, boolean resolve) throws java.lang.ClassNotFoundExceptionLoad class. Overridden to delegate to dependencies, if not found.- Overrides:
loadClassin classjava.lang.ClassLoader- Throws:
java.lang.ClassNotFoundException
-
findDirectResource
protected java.net.URL findDirectResource(java.lang.String name)
Find the resource.- Parameters:
name- The name.- Returns:
- The url.
-
findResource
public java.net.URL findResource(java.lang.String name)
Find the resource.- Overrides:
findResourcein classjava.net.URLClassLoader- Parameters:
name- The name.- Returns:
- The url.
-
getBaseClassLoader
protected java.lang.ClassLoader getBaseClassLoader()
-
findDirectResources
protected java.util.Enumeration<java.net.URL> findDirectResources(java.lang.String name) throws java.io.IOExceptionFind the resource.- Parameters:
name- The name.- Returns:
- The url.
- Throws:
java.io.IOException
-
findResources
public java.util.Enumeration<java.net.URL> findResources(java.lang.String name) throws java.io.IOExceptionFind the resource.- Overrides:
findResourcesin classjava.net.URLClassLoader- Parameters:
name- The name.- Returns:
- The url.
- Throws:
java.io.IOException
-
isClassLoaderCompatible
public boolean isClassLoaderCompatible(java.lang.Class<?> clazz)
-
getAllParentLoaders
public static void getAllParentLoaders(java.lang.ClassLoader cl, java.util.Set<java.lang.ClassLoader> cls)
-
toString
public java.lang.String toString()
Get a string representation.- Overrides:
toStringin classjava.lang.Object
-
-