Package weka.core

Class PluginManager


  • public class PluginManager
    extends java.lang.Object
    Class that manages a global map of plugins. Provides static methods for registering and instantiating plugins. The package manager looks for, and processes, a PluginManager.props file in the top-level of a package.
    Version:
    $Revision: 12312 $
    Author:
    Mark Hall (mhall{[at]}pentaho{[dot]}com)
    • Constructor Summary

      Constructors 
      Constructor Description
      PluginManager()  
    • Method Summary

      All Methods Static Methods Concrete Methods 
      Modifier and Type Method Description
      static void addFromProperties​(java.io.File propsFile)
      Add all key value pairs from the supplied property file
      static void addFromProperties​(java.io.File propsFile, boolean maintainInsertionOrder)
      Add all key value pairs from the supplied property file
      static void addFromProperties​(java.io.InputStream propsStream)
      Add all key value pairs from the supplied properties stream
      static void addFromProperties​(java.io.InputStream propsStream, boolean maintainInsertionOrder)
      Add all key value pairs from the supplied properties stream
      static void addFromProperties​(java.lang.String packageName, java.io.File propsFile)
      Add all key value pairs from the supplied property file
      static void addFromProperties​(java.lang.String packageName, java.io.File propsFile, boolean maintainInsertionOrder)
      Add all key value pairs from the supplied property file
      static void addFromProperties​(java.lang.String packageName, java.io.InputStream propsStream)
      Add all key value pairs from the supplied properties stream
      static void addFromProperties​(java.lang.String packageName, java.io.InputStream propsStream, boolean maintainInsertionOrder)
      Add all key value pairs from the supplied properties stream
      static void addFromProperties​(java.lang.String packageName, java.util.Properties props)
      Add all key value pairs from the supplied properties object
      static void addFromProperties​(java.lang.String packageName, java.util.Properties props, boolean maintainInsertionOrder)
      Add all key value pairs from the supplied properties object
      static void addFromProperties​(java.util.Properties props)
      Add all key value pairs from the supplied properties object
      static void addFromProperties​(java.util.Properties props, boolean maintainInsertionOrder)
      Add all key value pairs from the supplied properties object
      static void addPlugin​(java.lang.String interfaceName, java.lang.String name, java.lang.String concreteType)
      Add a plugin.
      static void addPlugin​(java.lang.String interfaceName, java.lang.String name, java.lang.String concreteType, boolean maintainInsertionOrder)
      Add a plugin.
      static void addPluginResource​(java.lang.String resourceGroupID, java.lang.String resourceDescription, java.lang.String resourcePath)
      Add a resource.
      static void addPluginResource​(java.lang.String packageName, java.lang.String resourceGroupID, java.lang.String resourceDescription, java.lang.String resourcePath)
      Add a resource.
      static void addPluginResourcesFromProperty​(java.lang.String resourceList)
      Add resources from a list.
      static void addToDisabledList​(java.lang.String classname)
      Add the supplied fully qualified class name to the list of disabled plugins
      static void addToDisabledList​(java.util.List<java.lang.String> classnames)
      Add the supplied list of fully qualified class names to the disabled list
      static java.lang.Object getPluginInstance​(java.lang.String interfaceType, java.lang.String name)
      Get an instance of a concrete implementation of a plugin type
      static java.util.Set<java.lang.String> getPluginNamesOfType​(java.lang.String interfaceName)
      Get a set of names of plugins that implement the supplied interface.
      static java.util.List<java.lang.String> getPluginNamesOfTypeList​(java.lang.String interfaceName)
      Get a sorted list of names of plugins that implement the supplied interface.
      static java.io.InputStream getPluginResourceAsStream​(java.lang.String resourceGroupID, java.lang.String resourceDescription)
      Get an input stream for a named resource under a given resource group ID.
      static java.util.Map<java.lang.String,​java.lang.String> getResourcesWithGroupID​(java.lang.String resourceGroupID)
      Get a map of resources (description,path) registered under a given resource group ID.
      static boolean isInDisabledList​(java.lang.String classname)
      Returns true if the supplied fully qualified class name is in the disabled list
      static int numResourcesForWithGroupID​(java.lang.String resourceGroupID)
      Get the number of resources available under a given resource group ID.
      static boolean pluginRegistered​(java.lang.String interfaceType, java.lang.String name)
      Checks if a named plugin exists in the map of registered plugins
      static void removeFromDisabledList​(java.lang.String classname)
      Remove the supplied fully qualified class name from the list of disabled plugins
      static void removeFromDisabledList​(java.util.List<java.lang.String> classnames)
      Remove the supplied list of fully qualified class names to the disabled list
      static void removePlugin​(java.lang.String interfaceName, java.lang.String name)
      Remove a plugin.
      static void removePlugins​(java.lang.String interfaceName, java.util.List<java.lang.String> names)
      Remove plugins of a specific type.
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • PluginManager

        public PluginManager()
    • Method Detail

      • addToDisabledList

        public static void addToDisabledList​(java.util.List<java.lang.String> classnames)
        Add the supplied list of fully qualified class names to the disabled list
        Parameters:
        classnames - a list of class names to add
      • addToDisabledList

        public static void addToDisabledList​(java.lang.String classname)
        Add the supplied fully qualified class name to the list of disabled plugins
        Parameters:
        classname - the fully qualified name of a class to add
      • removeFromDisabledList

        public static void removeFromDisabledList​(java.util.List<java.lang.String> classnames)
        Remove the supplied list of fully qualified class names to the disabled list
        Parameters:
        classnames - a list of class names to remove
      • removeFromDisabledList

        public static void removeFromDisabledList​(java.lang.String classname)
        Remove the supplied fully qualified class name from the list of disabled plugins
        Parameters:
        classname - the fully qualified name of a class to remove
      • isInDisabledList

        public static boolean isInDisabledList​(java.lang.String classname)
        Returns true if the supplied fully qualified class name is in the disabled list
        Parameters:
        classname - the name of the class to check
        Returns:
        true if the supplied class name is in the disabled list
      • addFromProperties

        public static void addFromProperties​(java.io.File propsFile)
                                      throws java.lang.Exception
        Add all key value pairs from the supplied property file
        Parameters:
        propsFile - the properties file to add
        Throws:
        java.lang.Exception - if a problem occurs
      • addFromProperties

        public static void addFromProperties​(java.lang.String packageName,
                                             java.io.File propsFile)
                                      throws java.lang.Exception
        Add all key value pairs from the supplied property file
        Parameters:
        packageName - the name of the Weka package that owns this properties object. Can be null if not owned by a Weka package
        propsFile - the properties file to add
        Throws:
        java.lang.Exception - if a problem occurs
      • addFromProperties

        public static void addFromProperties​(java.io.File propsFile,
                                             boolean maintainInsertionOrder)
                                      throws java.lang.Exception
        Add all key value pairs from the supplied property file
        Parameters:
        propsFile - the properties file to add
        maintainInsertionOrder - true if the order of insertion of implementations is to be preserved (rather than sorted order)
        Throws:
        java.lang.Exception - if a problem occurs
      • addFromProperties

        public static void addFromProperties​(java.lang.String packageName,
                                             java.io.File propsFile,
                                             boolean maintainInsertionOrder)
                                      throws java.lang.Exception
        Add all key value pairs from the supplied property file
        Parameters:
        packageName - the name of the Weka package that owns this properties object. Can be null if not owned by a Weka package
        propsFile - the properties file to add
        maintainInsertionOrder - true if the order of insertion of implementations is to be preserved (rather than sorted order)
        Throws:
        java.lang.Exception - if a problem occurs
      • addFromProperties

        public static void addFromProperties​(java.io.InputStream propsStream)
                                      throws java.lang.Exception
        Add all key value pairs from the supplied properties stream
        Parameters:
        propsStream - an input stream to a properties file
        Throws:
        java.lang.Exception - if a problem occurs
      • addFromProperties

        public static void addFromProperties​(java.lang.String packageName,
                                             java.io.InputStream propsStream)
                                      throws java.lang.Exception
        Add all key value pairs from the supplied properties stream
        Parameters:
        packageName - the name of the Weka package that owns this properties object. Can be null if not owned by a Weka package
        propsStream - an input stream to a properties file
        Throws:
        java.lang.Exception - if a problem occurs
      • addFromProperties

        public static void addFromProperties​(java.io.InputStream propsStream,
                                             boolean maintainInsertionOrder)
                                      throws java.lang.Exception
        Add all key value pairs from the supplied properties stream
        Parameters:
        propsStream - an input stream to a properties file
        maintainInsertionOrder - true if the order of insertion of implementations is to be preserved (rather than sorted order)
        Throws:
        java.lang.Exception - if a problem occurs
      • addFromProperties

        public static void addFromProperties​(java.lang.String packageName,
                                             java.io.InputStream propsStream,
                                             boolean maintainInsertionOrder)
                                      throws java.lang.Exception
        Add all key value pairs from the supplied properties stream
        Parameters:
        packageName - the name of the Weka package that owns this properties object. Can be null if not owned by a Weka package
        propsStream - an input stream to a properties file
        maintainInsertionOrder - true if the order of insertion of implementations is to be preserved (rather than sorted order)
        Throws:
        java.lang.Exception - if a problem occurs
      • addFromProperties

        public static void addFromProperties​(java.util.Properties props)
                                      throws java.lang.Exception
        Add all key value pairs from the supplied properties object
        Parameters:
        props - a Properties object
        Throws:
        java.lang.Exception - if a problem occurs
      • addFromProperties

        public static void addFromProperties​(java.lang.String packageName,
                                             java.util.Properties props)
                                      throws java.lang.Exception
        Add all key value pairs from the supplied properties object
        Parameters:
        packageName - the name of the Weka package that owns this properties object. Can be null if not owned by a Weka package
        props - a Properties object
        Throws:
        java.lang.Exception - if a problem occurs
      • addFromProperties

        public static void addFromProperties​(java.util.Properties props,
                                             boolean maintainInsertionOrder)
                                      throws java.lang.Exception
        Add all key value pairs from the supplied properties object
        Parameters:
        props - a Properties object
        maintainInsertionOrder - true if the order of insertion of implementations is to be preserved (rather than sorted order)
        Throws:
        java.lang.Exception - if a problem occurs
      • addFromProperties

        public static void addFromProperties​(java.lang.String packageName,
                                             java.util.Properties props,
                                             boolean maintainInsertionOrder)
                                      throws java.lang.Exception
        Add all key value pairs from the supplied properties object
        Parameters:
        packageName - the name of the Weka package that owns this properties object. Can be null if not owned by a Weka package
        props - a Properties object
        maintainInsertionOrder - true if the order of insertion of implementations is to be preserved (rather than sorted order)
        Throws:
        java.lang.Exception - if a problem occurs
      • addPluginResourcesFromProperty

        public static void addPluginResourcesFromProperty​(java.lang.String resourceList)
        Add resources from a list. String format for a list of resources (as might be supplied from a *resources* entry in an property file:

         [groupID|description|path],[groupID|description|path],...
         
        Parameters:
        resourceList - a list of resources to add
      • addPluginResource

        public static void addPluginResource​(java.lang.String resourceGroupID,
                                             java.lang.String resourceDescription,
                                             java.lang.String resourcePath)
        Add a resource.
        Parameters:
        resourceGroupID - the ID of the group under which the resource should be stored
        resourceDescription - the description/ID of the resource
        resourcePath - the path to the resource
      • addPluginResource

        public static void addPluginResource​(java.lang.String packageName,
                                             java.lang.String resourceGroupID,
                                             java.lang.String resourceDescription,
                                             java.lang.String resourcePath)
        Add a resource.
        Parameters:
        packageName - the name of the package that owns this resource. Can be null if not owned by a package, in which case the current classloader will be used to load the resource.
        resourceGroupID - the ID of the group under which the resource should be stored
        resourceDescription - the description/ID of the resource
        resourcePath - the path to the resource
      • getPluginResourceAsStream

        public static java.io.InputStream getPluginResourceAsStream​(java.lang.String resourceGroupID,
                                                                    java.lang.String resourceDescription)
                                                             throws java.io.IOException
        Get an input stream for a named resource under a given resource group ID.
        Parameters:
        resourceGroupID - the group ID that the resource falls under
        resourceDescription - the description/ID of the resource
        Returns:
        an InputStream for the resource
        Throws:
        java.io.IOException - if the group ID or resource description/ID are not known to the PluginManager, or a problem occurs while trying to open an input stream
      • numResourcesForWithGroupID

        public static int numResourcesForWithGroupID​(java.lang.String resourceGroupID)
        Get the number of resources available under a given resource group ID.
        Parameters:
        resourceGroupID - the group ID of the resources
        Returns:
        the number of resources registered under the supplied group ID
      • getResourcesWithGroupID

        public static java.util.Map<java.lang.String,​java.lang.String> getResourcesWithGroupID​(java.lang.String resourceGroupID)
        Get a map of resources (description,path) registered under a given resource group ID.
        Parameters:
        resourceGroupID - the group ID of the resources to get
        Returns:
        a map of resources registered under the supplied group ID, or null if the resourceGroupID is not known to the plugin manager
      • getPluginNamesOfType

        public static java.util.Set<java.lang.String> getPluginNamesOfType​(java.lang.String interfaceName)
        Get a set of names of plugins that implement the supplied interface.
        Parameters:
        interfaceName - the fully qualified name of the interface to list plugins for
        Returns:
        a set of names of plugins
      • getPluginNamesOfTypeList

        public static java.util.List<java.lang.String> getPluginNamesOfTypeList​(java.lang.String interfaceName)
        Get a sorted list of names of plugins that implement the supplied interface.
        Parameters:
        interfaceName - the fully qualified name of the interface to list plugins for
        Returns:
        a set of names of plugins
      • addPlugin

        public static void addPlugin​(java.lang.String interfaceName,
                                     java.lang.String name,
                                     java.lang.String concreteType)
        Add a plugin.
        Parameters:
        interfaceName - the fully qualified interface name that the plugin implements
        name - the name/short description of the plugin
        concreteType - the fully qualified class name of the actual concrete implementation
      • addPlugin

        public static void addPlugin​(java.lang.String interfaceName,
                                     java.lang.String name,
                                     java.lang.String concreteType,
                                     boolean maintainInsertionOrder)
        Add a plugin.
        Parameters:
        interfaceName - the fully qualified interface name that the plugin implements
        name - the name/short description of the plugin
        concreteType - the fully qualified class name of the actual concrete implementation
        maintainInsertionOrder - true if the order of insertion of implementations is to be preserved (rather than sorted order)
      • removePlugins

        public static void removePlugins​(java.lang.String interfaceName,
                                         java.util.List<java.lang.String> names)
        Remove plugins of a specific type.
        Parameters:
        interfaceName - the fully qualified interface name that the plugins to be remove implement
        names - a list of named plugins to remove
      • removePlugin

        public static void removePlugin​(java.lang.String interfaceName,
                                        java.lang.String name)
        Remove a plugin.
        Parameters:
        interfaceName - the fully qualified interface name that the plugin implements
        name - the name/short description of the plugin
      • pluginRegistered

        public static boolean pluginRegistered​(java.lang.String interfaceType,
                                               java.lang.String name)
        Checks if a named plugin exists in the map of registered plugins
        Parameters:
        interfaceType - the fully qualified interface name of the plugin type
        name - the name/short description of the plugin to get
        Returns:
        true if the named plugin exists
      • getPluginInstance

        public static java.lang.Object getPluginInstance​(java.lang.String interfaceType,
                                                         java.lang.String name)
                                                  throws java.lang.Exception
        Get an instance of a concrete implementation of a plugin type
        Parameters:
        interfaceType - the fully qualified interface name of the plugin type
        name - the name/short description of the plugin to get
        Returns:
        the concrete plugin or null if the plugin is disabled
        Throws:
        java.lang.Exception - if the plugin can't be found or instantiated