Interface PluginRegistry

  • All Known Implementing Classes:
    NonManagedPluginRegistry, OSGiPluginRegistry

    public interface PluginRegistry
    Loader and registry of Extensions and Extension Points. The implementation of this interface must have a public constructor taking the ClassLoaderResolver interface as argument. The plugin registry metadata/bundle resolution is ruled by OSGi specification. The following sections of the OSGi 3.0 specification must be fully supported: 3.5.2, 3.5.3, 3.2.4, 3.2.5. The section 3.6.3 is optional. All other OSGi parts not mentioned above are not likely to be supported.

    See https://dzone.com/articles/extensionserviceplugin-mechanisms-in-java for a comparison of some different plugin mechanisms in Java. The one we use is based around Eclipse extensions/extension points.

    • Method Detail

      • getExtensionPoint

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

        ExtensionPoint[] getExtensionPoints()
        Acessor for the currently registed ExtensionPoints
        Returns:
        array of ExtensionPoints
      • registerExtensionPoints

        void registerExtensionPoints()
        Look for Bundles/Plugins and register them. Register also ExtensionPoints and Extensions declared in /plugin.xml files
      • registerExtensions

        void registerExtensions()
        Look for Bundles/Plugins and register them. Register also ExtensionPoints and Extensions declared in /plugin.xml files
      • resolveURLAsFileURL

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

        void resolveConstraints()
        Resolve constraints declared in bundle manifest.mf files. This must be invoked after registering all bundles. Should log errors if bundles are not resolvable, or raise runtime exceptions.
      • getBundles

        Bundle[] getBundles()
        Accessor for all registered bundles
        Returns:
        the bundles
        Throws:
        UnsupportedOperationException - if this operation is not supported by the implementation