Class ClassLoaders
java.lang.Object
org.apache.commons.discovery.resource.ClassLoaders
There are many different contexts in which
loaders can be used. This provides a holder
for a set of class loaders, so that they
don't have to be build back up everytime...
-
Field Summary
Fields -
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionget(int idx) Returns the class loader positioned at the given index.static ClassLoadersgetAppLoaders(Class<?> spi, Class<?> factory, boolean prune) Utility method.static ClassLoadersgetLibLoaders(Class<?> spi, Class<?> factory, boolean prune) Utility method.booleanisAncestor(ClassLoader classLoader) Check to see ifclassLoaderis an ancestor of any contained class loader.voidput(ClassLoader classLoader) Specify a new class loader to be used in searching.voidput(ClassLoader classLoader, boolean prune) Specify a new class loader to be used in searching.intsize()Returns the size of class loaders set.
-
Field Details
-
classLoaders
-
-
Constructor Details
-
ClassLoaders
public ClassLoaders()Construct a new class loader set.
-
-
Method Details
-
size
Returns the size of class loaders set.- Returns:
- The size of class loaders set
-
get
Returns the class loader positioned at the given index.- Parameters:
idx- The index the class loader has to be retrieved from- Returns:
- The class loader positioned at the given index
-
put
Specify a new class loader to be used in searching. The order of loaders determines the order of the result. It is recommended to add the most specific loaders first;nullclass loaders are discarded.- Parameters:
classLoader- The class loader has to added in the set
-
put
Specify a new class loader to be used in searching. The order of loaders determines the order of the result. It is recommended to add the most specific loaders first;nullclass loaders are discarded.- Parameters:
classLoader- The class loader has to added in the setprune- if true, verify that the class loader is not an Ancestor (@see isAncestor) before adding it to our list.
-
isAncestor
Check to see ifclassLoaderis an ancestor of any contained class loader. This can be used to eliminate redundant class loaders IF all class loaders defer to parent class loaders before resolving a class. It may be that this is not always true. Therefore, this check is not done internally to eliminate redundant class loaders, but left to the discretion of the user.- Parameters:
classLoader- The class loader under test- Returns:
- true, if the class loader under test is an ancestor of any contained class loader, false otherwise
-
getLibLoaders
Utility method. Returns a preloaded ClassLoaders instance containing the following class loaders, in order:- spi.getClassLoader
- seeker.getClassLoader
- System Class Loader
- Parameters:
spi- WHAT is being looked for (an implementation of this class, a default property file related to this class).factory- WHO is performing the lookup.prune- Determines if ancestors are allowed to be loaded or not.- Returns:
- The class loaders holder
-
getAppLoaders
Utility method. Returns a preloaded ClassLoaders instance containing the following class loaders, in order:- Thread Context Class Loader
- spi.getClassLoader
- seeker.getClassLoader
- System Class Loader
- Parameters:
spi- WHAT is being looked for (an implementation of this class, a default property file related to this class).factory- WHO is performing the lookup (factory).prune- Determines if ancestors are allowed to be loaded or not.- Returns:
- The class loaders holder
-