Class DefaultPluginService

    • Constructor Detail

      • DefaultPluginService

        public DefaultPluginService()
    • Method Detail

      • reloadPlugins

        public void reloadPlugins()
        Description copied from interface: PluginService
        Rediscovers all plugins available on the classpath. Note that this will clear any individual plugins added programmatically.
        Specified by:
        reloadPlugins in interface PluginService
      • getPlugin

        public <PT extends SciJavaPlugin,​P extends PT> PluginInfo<PT> getPlugin​(Class<P> pluginClass,
                                                                                      Class<PT> type)
        Description copied from interface: PluginService
        Gets the first available plugin of the given class, or null if none.
        Specified by:
        getPlugin in interface PluginService
        Type Parameters:
        PT - The type of the plugin to look up; e.g., Service.class.
        P - The class of the plugin to look up.
      • getPluginsOfClass

        public <P extends SciJavaPluginList<PluginInfo<SciJavaPlugin>> getPluginsOfClass​(Class<P> pluginClass)
        Description copied from interface: PluginService
        Gets the list of plugins of the given class.

        Most classes will have only a single match, but some special classes (such as ImageJ's LegacyCommand) may match many entries.

        Note that this method will result in PluginInfos with matching class names to load their plugin Classes so that they can be compared with the given one.

        NB: Classes are matched by strict equality, not assignability; subtypes of the specified class will not match. For this behavior, use PluginService.getPluginsOfType(Class) on a common parent interface.

        Specified by:
        getPluginsOfClass in interface PluginService
        Type Parameters:
        P - The class of plugins to look up.
        Parameters:
        pluginClass - The class for which to obtain the list of matching plugins.
      • getPluginsOfClass

        public <PT extends SciJavaPlugin,​P extends PT> List<PluginInfo<PT>> getPluginsOfClass​(Class<P> pluginClass,
                                                                                                    Class<PT> type)
        Description copied from interface: PluginService
        Gets the list of plugins of the given class.

        Most classes will have only a single match, but some special classes (such as ImageJ's LegacyCommand) may match many entries.

        Note that this method will result in PluginInfos with matching class names and types to load their plugin Classes so that they can be compared with the given one.

        NB: Classes are matched by strict equality, not assignability; subtypes of the specified class will not match. For this behavior, use PluginService.getPluginsOfType(Class) on a common parent interface.

        Specified by:
        getPluginsOfClass in interface PluginService
        Type Parameters:
        PT - The type of plugins to look up; e.g., Service.class.
        P - The class of plugins to look up.
        Parameters:
        pluginClass - The class for which to obtain the list of matching plugins.
        type - The type of plugins to which the search should be limited.
      • getPluginsOfClass

        public List<PluginInfo<SciJavaPlugin>> getPluginsOfClass​(String className)
        Description copied from interface: PluginService
        Gets the list of plugins with the given class name.

        Most classes will have only a single match, but some special classes (such as ImageJ's LegacyCommand) may match many entries.

        NB: Classes are matched by strict equality, not assignability; subtypes of the specified class will not match. For this behavior, use PluginService.getPluginsOfType(Class) on a common parent interface.

        Specified by:
        getPluginsOfClass in interface PluginService
        Parameters:
        className - The class name for which to obtain the list of matching plugins.
      • getPluginsOfClass

        public <PT extends SciJavaPluginList<PluginInfo<SciJavaPlugin>> getPluginsOfClass​(String className,
                                                                                            Class<PT> type)
        Description copied from interface: PluginService
        Gets the list of plugins with the given class name.

        Most classes will have only a single match, but some special classes (such as ImageJ's LegacyCommand) may match many entries.

        NB: Classes are matched by strict equality, not assignability; subtypes of the specified class will not match. For this behavior, use PluginService.getPluginsOfType(Class) on a common parent interface.

        Specified by:
        getPluginsOfClass in interface PluginService
        Type Parameters:
        PT - The type of plugins to look up; e.g., Service.class.
        Parameters:
        className - The class name for which to obtain the list of matching plugins.
        type - The type of plugins to which the search should be limited.
      • createInstancesOfType

        public <PT extends SciJavaPluginList<PT> createInstancesOfType​(Class<PT> type)
        Description copied from interface: PluginService
        Creates one instance each of the available plugins of the given type.

        Note that in the case of commands, this method does not do any preprocessing on the command instances, so parameters will not be auto-populated, initializers will not be executed, etc.

        Specified by:
        createInstancesOfType in interface PluginService
        Type Parameters:
        PT - The type of plugins to instantiate; e.g., Service.class.
      • createInstances

        public <PT extends SciJavaPluginList<PT> createInstances​(List<PluginInfo<PT>> infos)
        Description copied from interface: PluginService
        Creates an instance of each of the plugins on the given list.

        If the plugin implements the Contextual interface, the appropriate context is injected. Similarly, if the plugin implements the Prioritized interface, the appropriate priority is injected.

        Note that in the case of commands, this method does not do any preprocessing on the command instances, so parameters will not be auto-populated, initializers will not be executed, etc.

        Specified by:
        createInstances in interface PluginService
        Type Parameters:
        PT - The type of plugins to instantiate; e.g., Service.class.
      • createInstance

        public <PT extends SciJavaPlugin> PT createInstance​(PluginInfo<PT> info)
        Description copied from interface: PluginService
        Creates an instance of the given plugin.

        If the plugin implements the Contextual interface, the appropriate context is injected. Similarly, if the plugin implements the Prioritized interface, the appropriate priority is injected.

        Note that in the case of commands, this method does not do any preprocessing on the command instances, so parameters will not be auto-populated, initializers will not be executed, etc.

        Specified by:
        createInstance in interface PluginService
        Type Parameters:
        PT - The type of plugin to instantiate; e.g., Service.class.
      • initialize

        public void initialize()
        Description copied from interface: Service
        Performs any needed initialization when the service is first loaded.

        NB: This method is not intended to be called directly. It is called by the service framework itself (specifically by the ServiceHelper) when initializing the service. It should not be called a second time.

        Specified by:
        initialize in interface Initializable
        Specified by:
        initialize in interface Service
      • findPluginsOfClass

        public static <T extends PluginInfo<?>> void findPluginsOfClass​(String className,
                                                                        List<? extends PluginInfo<?>> srcList,
                                                                        List<T> destList)
        Transfers plugins of the given class from the source list to the destination list. Note that because this method compares class name strings, it does not need to actually load the class in question.
        Parameters:
        className - The class name of the desired plugins.
        srcList - The list to scan for matching plugins.
        destList - The list to which matching plugins are added.
      • getPluginType

        public static <PT extends SciJavaPlugin,​P extends PT> Class<PT> getPluginType​(Class<P> pluginClass)
        Gets the plugin type of the given plugin class, as declared by its @Plugin annotation (i.e., Plugin.type()).
        Parameters:
        pluginClass - The plugin class whose plugin type is needed.
        Returns:
        The plugin type, or null if no Plugin annotation exists for the given class.