Class 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
    • Field Summary

      Fields 
      Modifier and Type Field Description
      protected java.util.Vector classLoaders  
    • Constructor Summary

      Constructors 
      Constructor Description
      ClassLoaders()
      Construct a new class loader set
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      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
    • Field Detail

      • classLoaders

        protected java.util.Vector classLoaders
    • Constructor Detail

      • ClassLoaders

        public ClassLoaders()
        Construct a new class loader set
    • Method Detail

      • 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.