Class PluginManager


  • public class PluginManager
    extends java.lang.Object
    Manages the registry of Extensions and Extension Points for the plugin mechanism.
    • Constructor Summary

      Constructors 
      Constructor Description
      PluginManager​(java.lang.String registryClassName, ClassLoaderResolver clr, java.util.Properties props)
      Constructor.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      java.lang.Object createExecutableExtension​(java.lang.String extensionPoint, java.lang.String[] discrimAttrName, java.lang.String[] discrimAttrValue, java.lang.String attributeName, java.lang.Class[] argsClass, java.lang.Object[] args)
      Convenience accessor for getting the Class of an attribute for an extension (of an extension point).
      java.lang.Object createExecutableExtension​(java.lang.String extensionPoint, java.lang.String discrimAttrName, java.lang.String discrimAttrValue, java.lang.String attributeName, java.lang.Class[] argsClass, java.lang.Object[] args)
      Convenience accessor for getting the Class of an attribute for an extension (of an extension point).
      static PluginManager createPluginManager​(java.util.Map props, java.lang.ClassLoader loader)
      Convenience method that will create and return a PluginManager using any passed in properties.
      java.lang.String getAttributeValueForExtension​(java.lang.String extensionPoint, java.lang.String[] discrimAttrName, java.lang.String[] discrimAttrValue, java.lang.String attributeName)
      Convenience accessor for getting the value of an attribute for an extension (of an extension point).
      java.lang.String getAttributeValueForExtension​(java.lang.String extensionPoint, java.lang.String discrimAttrName, java.lang.String discrimAttrValue, java.lang.String attributeName)
      Convenience accessor for getting the value of an attribute for an extension (of an extension point).
      java.lang.String[] getAttributeValuesForExtension​(java.lang.String extensionPoint, java.lang.String discrimAttrName, java.lang.String discrimAttrValue, java.lang.String attributeName)
      Convenience accessor for getting the value of an attribute for an extension (of an extension point).
      ConfigurationElement getConfigurationElementForExtension​(java.lang.String extensionPointName, java.lang.String[] discrimAttrName, java.lang.String[] discrimAttrValue)
      Convenience accessor for getting the ConfigurationElement for an extension (of an extension point).
      ConfigurationElement getConfigurationElementForExtension​(java.lang.String extensionPointName, java.lang.String discrimAttrName, java.lang.String discrimAttrValue)
      Convenience accessor for getting the (first) ConfigurationElement for an extension (of an extension point).
      private java.util.List<ConfigurationElement> getConfigurationElementsForExtension​(java.lang.String extensionPointName, java.lang.String[] discrimAttrName, java.lang.String[] discrimAttrValue)
      Internal accessor for getting getting the ConfigurationElement(s) for an extension (of an extension point), sorted by their priority attribute (if defined).
      ConfigurationElement[] getConfigurationElementsForExtension​(java.lang.String extensionPointName, java.lang.String discrimAttrName, java.lang.String discrimAttrValue)
      Convenience accessor for getting the ConfigurationElement(s) for an extension (of an extension point).
      ExtensionPoint getExtensionPoint​(java.lang.String id)
      Acessor for the ExtensionPoint
      java.lang.String getRegistryClassName()
      Accessor for the PluginRegistry class name.
      java.lang.String getVersionForBundle​(java.lang.String bundleName)
      Accessor for the version of a particular bundle (or null if not registered).
      java.lang.Class loadClass​(java.lang.String pluginId, java.lang.String className)
      Loads a class (do not initialize)
      java.net.URL resolveURLAsFileURL​(java.net.URL url)
      Converts a URL that uses a user-defined protocol into a URL that uses the file protocol.
      • Methods inherited from class java.lang.Object

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

      • PluginManager

        public PluginManager​(java.lang.String registryClassName,
                             ClassLoaderResolver clr,
                             java.util.Properties props)
        Constructor.
        Parameters:
        registryClassName - Name of the registry
        clr - the ClassLoaderResolver
        props - Configuration properties for the plugin system
    • Method Detail

      • getRegistryClassName

        public java.lang.String getRegistryClassName()
        Accessor for the PluginRegistry class name.
        Returns:
        Name of the plugin registry
      • getExtensionPoint

        public ExtensionPoint getExtensionPoint​(java.lang.String id)
        Acessor for the ExtensionPoint
        Parameters:
        id - the unique id of the extension point
        Returns:
        null if the ExtensionPoint is not registered
      • getConfigurationElementForExtension

        public ConfigurationElement getConfigurationElementForExtension​(java.lang.String extensionPointName,
                                                                        java.lang.String discrimAttrName,
                                                                        java.lang.String discrimAttrValue)
        Convenience accessor for getting the (first) ConfigurationElement for an extension (of an extension point).
        Parameters:
        extensionPointName - The extension point
        discrimAttrName - Attribute on the extension to use as discriminator
        discrimAttrValue - Value for discriminator attribute
        Returns:
        The configuration element
      • getConfigurationElementsForExtension

        public ConfigurationElement[] getConfigurationElementsForExtension​(java.lang.String extensionPointName,
                                                                           java.lang.String discrimAttrName,
                                                                           java.lang.String discrimAttrValue)
        Convenience accessor for getting the ConfigurationElement(s) for an extension (of an extension point).
        Parameters:
        extensionPointName - The extension point
        discrimAttrName - Attribute on the extension to use as discriminator
        discrimAttrValue - Value for discriminator attribute
        Returns:
        Configuration elements
      • getConfigurationElementForExtension

        public ConfigurationElement getConfigurationElementForExtension​(java.lang.String extensionPointName,
                                                                        java.lang.String[] discrimAttrName,
                                                                        java.lang.String[] discrimAttrValue)
        Convenience accessor for getting the ConfigurationElement for an extension (of an extension point).
        Parameters:
        extensionPointName - The extension point
        discrimAttrName - Attribute on the extension to use as discriminator1
        discrimAttrValue - Value for discriminator1 attribute
        Returns:
        Configuration Element
      • getConfigurationElementsForExtension

        private java.util.List<ConfigurationElement> getConfigurationElementsForExtension​(java.lang.String extensionPointName,
                                                                                          java.lang.String[] discrimAttrName,
                                                                                          java.lang.String[] discrimAttrValue)
        Internal accessor for getting getting the ConfigurationElement(s) for an extension (of an extension point), sorted by their priority attribute (if defined).
        Parameters:
        extensionPointName - The extension point
        discrimAttrName - Attributes on the exension to use as discriminator
        discrimAttrValue - Values for discriminator attributes
        Returns:
        Configuration elements
      • getAttributeValueForExtension

        public java.lang.String getAttributeValueForExtension​(java.lang.String extensionPoint,
                                                              java.lang.String discrimAttrName,
                                                              java.lang.String discrimAttrValue,
                                                              java.lang.String attributeName)
        Convenience accessor for getting the value of an attribute for an extension (of an extension point).
        Parameters:
        extensionPoint - The extension point
        discrimAttrName - Attribute on the extension to use as discriminator
        discrimAttrValue - Value for discriminator attribute
        attributeName - Name of the attribute whose value we want
        Returns:
        The value of the attribute
      • getAttributeValuesForExtension

        public java.lang.String[] getAttributeValuesForExtension​(java.lang.String extensionPoint,
                                                                 java.lang.String discrimAttrName,
                                                                 java.lang.String discrimAttrValue,
                                                                 java.lang.String attributeName)
        Convenience accessor for getting the value of an attribute for an extension (of an extension point).
        Parameters:
        extensionPoint - The extension point
        discrimAttrName - Attribute on the extension to use as discriminator
        discrimAttrValue - Value for discriminator attribute
        attributeName - Name of the attribute whose value we want
        Returns:
        The value(s) of the attribute
      • getAttributeValueForExtension

        public java.lang.String getAttributeValueForExtension​(java.lang.String extensionPoint,
                                                              java.lang.String[] discrimAttrName,
                                                              java.lang.String[] discrimAttrValue,
                                                              java.lang.String attributeName)
        Convenience accessor for getting the value of an attribute for an extension (of an extension point).
        Parameters:
        extensionPoint - The extension point
        discrimAttrName - Attribute on the extension to use as discriminator1
        discrimAttrValue - Value for discriminator1 attribute
        attributeName - Name of the attribute whose value we want
        Returns:
        The value of the attribute
      • createExecutableExtension

        public java.lang.Object createExecutableExtension​(java.lang.String extensionPoint,
                                                          java.lang.String discrimAttrName,
                                                          java.lang.String discrimAttrValue,
                                                          java.lang.String attributeName,
                                                          java.lang.Class[] argsClass,
                                                          java.lang.Object[] args)
                                                   throws java.lang.ClassNotFoundException,
                                                          java.lang.NoSuchMethodException,
                                                          java.lang.InstantiationException,
                                                          java.lang.IllegalAccessException,
                                                          java.lang.reflect.InvocationTargetException
        Convenience accessor for getting the Class of an attribute for an extension (of an extension point).
        Parameters:
        extensionPoint - The extension point
        discrimAttrName - Attribute on the extension to use as discriminator
        discrimAttrValue - Value for discriminator attribute
        attributeName - Name of the attribute whose value we want
        argsClass - Classes of the arguments
        args - The arguments
        Returns:
        The value of the attribute
        Throws:
        java.lang.ClassNotFoundException - if an error occurs
        java.lang.NoSuchMethodException - if an error occurs
        java.lang.InstantiationException - if an error occurs
        java.lang.IllegalAccessException - if an error occurs
        java.lang.reflect.InvocationTargetException - if an error occurs
      • createExecutableExtension

        public java.lang.Object createExecutableExtension​(java.lang.String extensionPoint,
                                                          java.lang.String[] discrimAttrName,
                                                          java.lang.String[] discrimAttrValue,
                                                          java.lang.String attributeName,
                                                          java.lang.Class[] argsClass,
                                                          java.lang.Object[] args)
                                                   throws java.lang.ClassNotFoundException,
                                                          java.lang.NoSuchMethodException,
                                                          java.lang.InstantiationException,
                                                          java.lang.IllegalAccessException,
                                                          java.lang.reflect.InvocationTargetException
        Convenience accessor for getting the Class of an attribute for an extension (of an extension point).
        Parameters:
        extensionPoint - The extension point
        discrimAttrName - First attribute on the extension to use as discriminator
        discrimAttrValue - Value for first discriminator attribute
        attributeName - Name of the attribute whose value we want
        argsClass - Classes of the arguments
        args - The arguments
        Returns:
        The value of the attribute
        Throws:
        java.lang.ClassNotFoundException - if an error occurs
        java.lang.NoSuchMethodException - if an error occurs
        java.lang.InstantiationException - if an error occurs
        java.lang.IllegalAccessException - if an error occurs
        java.lang.reflect.InvocationTargetException - if an error occurs
      • loadClass

        public java.lang.Class loadClass​(java.lang.String pluginId,
                                         java.lang.String className)
                                  throws ClassNotResolvedException
        Loads a class (do not initialize)
        Parameters:
        pluginId - the plugin id
        className - the class name
        Returns:
        the Class
        Throws:
        ClassNotResolvedException - if an error occurs
      • resolveURLAsFileURL

        public java.net.URL resolveURLAsFileURL​(java.net.URL url)
                                         throws java.io.IOException
        Converts a URL that uses a user-defined protocol into a URL that uses the file protocol.
        Parameters:
        url - the url to be converted
        Returns:
        the converted URL
        Throws:
        java.io.IOException - if an error occurs
      • getVersionForBundle

        public java.lang.String getVersionForBundle​(java.lang.String bundleName)
        Accessor for the version of a particular bundle (or null if not registered).
        Parameters:
        bundleName - Name of the bundle
        Returns:
        The version
      • createPluginManager

        public static PluginManager createPluginManager​(java.util.Map props,
                                                        java.lang.ClassLoader loader)
        Convenience method that will create and return a PluginManager using any passed in properties. Supports the following properties
        • datanucleus.primaryClassLoader
        • datanucleus.plugin.pluginRegistryClassName
        • datanucleus.plugin.pluginRegistryBundleCheck
        • datanucleus.plugin.allowUserBundles
        • datanucleus.plugin.validatePlugins
        Parameters:
        props - Any properties defining the plugin manager capabilities
        loader - Any class loader to make use of when loading
        Returns:
        The PluginManager