org.apache.commons.discovery.resource
Class ClassLoaders

java.lang.Object
  extended by org.apache.commons.discovery.resource.ClassLoaders

public class ClassLoaders
extends 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...


Field Summary
protected  List<ClassLoader> classLoaders
           
 
Constructor Summary
ClassLoaders()
          Construct a new class loader set.
 
Method Summary
 ClassLoader get(int idx)
          Returns the class loader positioned at the given index.
static ClassLoaders getAppLoaders(Class<?> spi, Class<?> factory, boolean prune)
          Utility method.
static ClassLoaders getLibLoaders(Class<?> spi, Class<?> factory, boolean prune)
          Utility method.
 boolean isAncestor(ClassLoader classLoader)
          Check to see if classLoader is an ancestor of any contained class loader.
 void put(ClassLoader classLoader)
          Specify a new class loader to be used in searching.
 void put(ClassLoader classLoader, boolean prune)
          Specify a new class loader to be used in searching.
 int size()
          Returns the size of class loaders set.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

classLoaders

protected List<ClassLoader> classLoaders
Constructor Detail

ClassLoaders

public ClassLoaders()
Construct a new class loader set.

Method Detail

size

public int size()
Returns the size of class loaders set.

Returns:
The size of class loaders set

get

public ClassLoader get(int idx)
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

public void put(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; null class loaders are discarded.

Parameters:
classLoader - The class loader has to added in the set

put

public void put(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; null class loaders are discarded.

Parameters:
classLoader - The class loader has to added in the set
prune - if true, verify that the class loader is not an Ancestor (@see isAncestor) before adding it to our list.

isAncestor

public boolean isAncestor(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.

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

public static ClassLoaders getLibLoaders(Class<?> spi,
                                         Class<?> factory,
                                         boolean prune)
Utility method. Returns a preloaded ClassLoaders instance containing the following class loaders, in order: 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.
Returns:
The class loaders holder

getAppLoaders

public static ClassLoaders getAppLoaders(Class<?> spi,
                                         Class<?> factory,
                                         boolean prune)
Utility method. Returns a preloaded ClassLoaders instance containing the following class loaders, in order: 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.
Returns:
The class loaders holder


Copyright © 2002-2011 The Apache Software Foundation. All Rights Reserved.