org.apache.commons.discovery.resource
Class ClassLoaders
java.lang.Object
|
+--org.apache.commons.discovery.resource.ClassLoaders
- public class ClassLoaders
- extends java.lang.Object
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...
- Author:
- Richard A. Sitze, Craig R. McClanahan, Costin Manolache
Constructor Summary |
ClassLoaders()
Construct a new class loader set |
Method Summary |
java.lang.ClassLoader |
get(int idx)
|
static ClassLoaders |
getAppLoaders(java.lang.Class spi,
java.lang.Class factory,
boolean prune)
Utility method. |
static ClassLoaders |
getLibLoaders(java.lang.Class spi,
java.lang.Class factory,
boolean prune)
Utility method. |
boolean |
isAncestor(java.lang.ClassLoader classLoader)
Check to see if classLoader is an
ancestor of any contained class loader. |
void |
put(java.lang.ClassLoader classLoader)
Specify a new class loader to be used in searching. |
void |
put(java.lang.ClassLoader classLoader,
boolean prune)
Specify a new class loader to be used in searching. |
int |
size()
|
Methods inherited from class java.lang.Object |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
classLoaders
protected java.util.Vector classLoaders
ClassLoaders
public ClassLoaders()
- Construct a new class loader set
size
public int size()
get
public java.lang.ClassLoader get(int idx)
put
public void put(java.lang.ClassLoader classLoader)
- 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.
put
public void put(java.lang.ClassLoader classLoader,
boolean prune)
- 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.
- Parameters:
prune
- if true, verify that the class loader is
not an Ancestor (@see isAncestor) before
adding it to our list.
isAncestor
public boolean isAncestor(java.lang.ClassLoader classLoader)
- Check to see if
classLoader
is 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.
getLibLoaders
public static ClassLoaders getLibLoaders(java.lang.Class spi,
java.lang.Class factory,
boolean prune)
- Utility method. Returns a preloaded ClassLoaders instance
containing the following class loaders, in order:
- spi.getClassLoader
- seeker.getClassLoader
- System Class Loader
Note that the thread context class loader is NOT present.
This is a reasonable set of loaders to try if the resource to be found
should be restricted to a libraries containing the SPI and Factory.
- 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.
getAppLoaders
public static ClassLoaders getAppLoaders(java.lang.Class spi,
java.lang.Class factory,
boolean prune)
- 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
Note that the thread context class loader IS present.
This is a reasonable set of loaders to try if the resource to be found
may be provided by an application.
- 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.
Copyright (c) 2002 - Apache Software Foundation