Class PluginManager

java.lang.Object
org.datanucleus.plugin.PluginManager

public class PluginManager extends Object
Manages the registry of Extensions and Extension Points for the plugin mechanism.
  • Field Details

  • Constructor Details

    • PluginManager

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

    • getRegistryClassName

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

      public ExtensionPoint getExtensionPoint(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(String extensionPointName, String discrimAttrName, 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(String extensionPointName, String discrimAttrName, 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(String extensionPointName, String[] discrimAttrName, 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 List<ConfigurationElement> getConfigurationElementsForExtension(String extensionPointName, String[] discrimAttrName, 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 String getAttributeValueForExtension(String extensionPoint, String discrimAttrName, String discrimAttrValue, 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 String[] getAttributeValuesForExtension(String extensionPoint, String discrimAttrName, String discrimAttrValue, 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 String getAttributeValueForExtension(String extensionPoint, String[] discrimAttrName, String[] discrimAttrValue, 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 Object createExecutableExtension(String extensionPoint, String discrimAttrName, String discrimAttrValue, String attributeName, Class[] argsClass, Object[] args) throws ClassNotFoundException, NoSuchMethodException, InstantiationException, IllegalAccessException, 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:
      ClassNotFoundException - if an error occurs
      NoSuchMethodException - if an error occurs
      InstantiationException - if an error occurs
      IllegalAccessException - if an error occurs
      InvocationTargetException - if an error occurs
    • createExecutableExtension

      public Object createExecutableExtension(String extensionPoint, String[] discrimAttrName, String[] discrimAttrValue, String attributeName, Class[] argsClass, Object[] args) throws ClassNotFoundException, NoSuchMethodException, InstantiationException, IllegalAccessException, 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:
      ClassNotFoundException - if an error occurs
      NoSuchMethodException - if an error occurs
      InstantiationException - if an error occurs
      IllegalAccessException - if an error occurs
      InvocationTargetException - if an error occurs
    • loadClass

      public Class loadClass(String pluginId, 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 URL resolveURLAsFileURL(URL url) throws 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:
      IOException - if an error occurs
    • getVersionForBundle

      public String getVersionForBundle(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(Map props, 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