Class PluginClassLoader

java.lang.Object
java.lang.ClassLoader
java.security.SecureClassLoader
java.net.URLClassLoader
org.pentaho.platform.plugin.services.pluginmgr.PluginClassLoader
All Implemented Interfaces:
Closeable, AutoCloseable

public class PluginClassLoader extends URLClassLoader
A custom implementation of URLClassLoader for Pentaho Platform Plugins. It is used to load plugin jars and classes and aids in retrieving resources by providing a root directory to search for resources related to plugins.

Note: PluginClassLoader will search for jar files in a 'lib' subdirectory under the pluginDir provided in the constructor. Class and other resources will be visible to this classloader in either the root directory of the plugin or in the lib folder.

Author:
aphillips
  • Constructor Details

    • PluginClassLoader

      public PluginClassLoader(File pluginDir, ClassLoader parent)
      Creates a class loader for loading plugin classes and discovering resources. Jars must be located in [pluginDir]/lib.
      Parameters:
      pluginDir - the root directory of the plugin
      parent - the parent classloader
    • PluginClassLoader

      public PluginClassLoader(File pluginDir, Object o)
      Convenience method that creates a PluginClassLoader with the current classloader as it's parent.
      Parameters:
      pluginDir - the root directory of the plugin
      o - the object from which the parent classloader will be derived
  • Method Details

    • setOverrideLoad

      public void setOverrideLoad(boolean b)
      Controls whether or not this classloader will eagerly load a class requested by loadClass(String, boolean) ahead of the parent classloader. or delegate the load to the parent. If this method is not called, the default behavior will apply which is to *not* override classloading.
      Parameters:
      b - if true, loadClass method will look to this loader first to load a class, otherwise, the parent classloader will be queried first.
    • getPluginUrls

      protected static URL[] getPluginUrls(File pluginDir)
    • addJars

      protected static void addJars(List<URL> urls, File folder)
    • getPluginDir

      public File getPluginDir()
    • loadClass

      public Class<?> loadClass(String name, boolean resolve) throws ClassNotFoundException
      Overrides:
      loadClass in class ClassLoader
      Throws:
      ClassNotFoundException
    • toString

      public String toString()
      Overrides:
      toString in class Object