Interface ModuleService
-
- All Superinterfaces:
Comparable<Prioritized>,Contextual,Disposable,HasPluginInfo,Identifiable,Initializable,Locatable,Logged,Prioritized,RichPlugin,SciJavaPlugin,SciJavaService,Service,Versioned
- All Known Implementing Classes:
DefaultModuleService
public interface ModuleService extends SciJavaService
Interface for service that tracks and executes available modules.The module service keeps a central index of all modules known to the system. At heart, a module is a
Runnablepiece of code, but with explicit typed input and output parameters.The module service has no innate ability to discover modules, and must be explicitly told about them via the
addModule(org.scijava.module.ModuleInfo)andaddModules(java.util.Collection<? extends org.scijava.module.ModuleInfo>)methods.A module is distinct from a plugin in that plugins extend a program's functionality in some way, taking many forms, whereas modules are always runnable code with typed inputs and outputs. There is a particular type of plugin called a
Commandwhich is also a module, but many plugins (e.g.,Tools andDisplays) are not modules.- Author:
- Curtis Rueden
- See Also:
Module,PluginService
-
-
Method Summary
All Methods Instance Methods Abstract Methods Modifier and Type Method Description voidaddModule(ModuleInfo module)Manually registers a module with the module service.voidaddModules(Collection<? extends ModuleInfo> modules)Manually registers a list of modules with the module service.ModulecreateModule(ModuleInfo info)Creates an instance of the given module.<T> TgetDefaultValue(ModuleItem<T> item)Gets the default value of the givenModuleItem.ModuleIndexgetIndex()Gets the index of available modules.ModuleInfogetModuleById(String id)Gets the module with the given identifier string.ModuleInfogetModuleForAccelerator(Accelerator acc)Gets the module for a given keyboard shortcut.List<ModuleInfo>getModules()Gets the list of available modules.<T> ModuleItem<T>getSingleInput(Module module, Class<T> type)Checks the given module for a solitary unresolved fillable input of the given type, returning the relevantModuleItemif found, or null if not exactly one unresolved fillable input of that type.ModuleItem<?>getSingleInput(Module module, Collection<Class<?>> types)AsgetSingleInput(Module, Class)but will match with a set of potential classes, at the cost of generic parameter safety.<T> ModuleItem<T>getSingleOutput(Module module, Class<T> type)Checks the given module for a solitary unresolved output of the given type, returning the relevantModuleItemif found, or null if not exactly one unresolved output of that type.ModuleItem<?>getSingleOutput(Module module, Collection<Class<?>> types)AsgetSingleOutput(Module, Class)but will match with a set of potential classes, at the cost of generic parameter safety.<T> Tload(ModuleItem<T> item)Returns the value, if any, stored in thePrefServicefor the givenModuleItem.voidloadInputs(Module module)Loads values from persistent storage into the givenModule.voidremoveModule(ModuleInfo module)Manually unregisters a module with the module service.voidremoveModules(Collection<? extends ModuleInfo> modules)Manually unregisters a list of modules with the module service.<M extends Module>
Future<M>run(M module, boolean process, Object... inputs)Executes the given module.<M extends Module>
Future<M>run(M module, boolean process, Map<String,Object> inputMap)Executes the given module.<M extends Module>
Future<M>run(M module, List<? extends ModulePreprocessor> pre, List<? extends ModulePostprocessor> post, Object... inputs)Executes the given module.<M extends Module>
Future<M>run(M module, List<? extends ModulePreprocessor> pre, List<? extends ModulePostprocessor> post, Map<String,Object> inputMap)Executes the given module.Future<Module>run(ModuleInfo info, boolean process, Object... inputs)Executes the given module.Future<Module>run(ModuleInfo info, boolean process, Map<String,Object> inputMap)Executes the given module.Future<Module>run(ModuleInfo info, List<? extends ModulePreprocessor> pre, List<? extends ModulePostprocessor> post, Object... inputs)Executes the given module.Future<Module>run(ModuleInfo info, List<? extends ModulePreprocessor> pre, List<? extends ModulePostprocessor> post, Map<String,Object> inputMap)Executes the given module.<T> voidsave(ModuleItem<T> item, T value)Registers the given value for the givenModuleItemusing thePrefService.voidsaveInputs(Module module)Saves values to persistent storage from the givenModule.<M extends Module>
MwaitFor(Future<M> future)Blocks until the given module is finished executing.-
Methods inherited from interface org.scijava.Contextual
context, getContext, setContext
-
Methods inherited from interface org.scijava.Disposable
dispose
-
Methods inherited from interface org.scijava.plugin.HasPluginInfo
getInfo, setInfo
-
Methods inherited from interface org.scijava.Locatable
getLocation
-
Methods inherited from interface org.scijava.Prioritized
compareTo, getPriority, setPriority
-
Methods inherited from interface org.scijava.plugin.RichPlugin
getIdentifier, log
-
Methods inherited from interface org.scijava.service.Service
initialize, registerEventHandlers
-
Methods inherited from interface org.scijava.Versioned
getVersion
-
-
-
-
Method Detail
-
getIndex
ModuleIndex getIndex()
Gets the index of available modules.
-
addModule
void addModule(ModuleInfo module)
Manually registers a module with the module service.
-
removeModule
void removeModule(ModuleInfo module)
Manually unregisters a module with the module service.
-
addModules
void addModules(Collection<? extends ModuleInfo> modules)
Manually registers a list of modules with the module service.
-
removeModules
void removeModules(Collection<? extends ModuleInfo> modules)
Manually unregisters a list of modules with the module service.
-
getModules
List<ModuleInfo> getModules()
Gets the list of available modules.
-
getModuleById
ModuleInfo getModuleById(String id)
Gets the module with the given identifier string.- Parameters:
id- The identifier string corresponding to the desired module.- Returns:
- The
Identifiablemodule with the given identifier.
-
getModuleForAccelerator
ModuleInfo getModuleForAccelerator(Accelerator acc)
Gets the module for a given keyboard shortcut.- Parameters:
acc- the accelerator for which to search.- Returns:
- the module info for the corresponding module, or null.
-
createModule
Module createModule(ModuleInfo info)
Creates an instance of the given module.If the module implements the
Contextualinterface, the appropriate context is injected. Similarly, if the module implements thePrioritizedinterface, 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.
-
run
Future<Module> run(ModuleInfo info, boolean process, Object... inputs)
Executes the given module.- Parameters:
info- The module to instantiate and run.process- If true, executes the module with pre- and postprocessing steps from all availablePreprocessorPlugins andPostprocessorPlugins in the plugin index; if false, executes the module with no pre- or postprocessing.inputs- List of input parameter names and values. The expected order is in pairs: an input name followed by its value, for each desired input to populate. Leaving some inputs unpopulated is allowed. Passing the name of an input that is not valid for the module, or passing a value of a type incompatible with the associated input parameter, will issue an error and ignore that name/value pair.- Returns:
Futureof the module instance being executed. CallingFuture.get()will block until execution is complete.
-
run
Future<Module> run(ModuleInfo info, boolean process, Map<String,Object> inputMap)
Executes the given module.- Parameters:
info- The module to instantiate and run.process- If true, executes the module with pre- and postprocessing steps from all availablePreprocessorPlugins andPostprocessorPlugins in the plugin index; if false, executes the module with no pre- or postprocessing.inputMap- Table of input parameter values, with keys matching theModuleInfo's input parameter names. Passing a value of a type incompatible with the associated input parameter will issue an error and ignore that value.- Returns:
Futureof the module instance being executed. CallingFuture.get()will block until execution is complete.
-
run
Future<Module> run(ModuleInfo info, List<? extends ModulePreprocessor> pre, List<? extends ModulePostprocessor> post, Object... inputs)
Executes the given module.- Parameters:
info- The module to instantiate and run.pre- List of preprocessing steps to perform.post- List of postprocessing steps to perform.inputs- List of input parameter names and values. The expected order is in pairs: an input name followed by its value, for each desired input to populate. Leaving some inputs unpopulated is allowed. Passing the name of an input that is not valid for the module, or passing a value of a type incompatible with the associated input parameter, will issue an error and ignore that name/value pair.- Returns:
Futureof the module instance being executed. CallingFuture.get()will block until execution is complete.
-
run
Future<Module> run(ModuleInfo info, List<? extends ModulePreprocessor> pre, List<? extends ModulePostprocessor> post, Map<String,Object> inputMap)
Executes the given module.- Parameters:
info- The module to instantiate and run.pre- List of preprocessing steps to perform.post- List of postprocessing steps to perform.inputMap- Table of input parameter values, with keys matching theModuleInfo's input parameter names. Passing a value of a type incompatible with the associated input parameter will issue an error and ignore that value.- Returns:
Futureof the module instance being executed. CallingFuture.get()will block until execution is complete.
-
run
<M extends Module> Future<M> run(M module, boolean process, Object... inputs)
Executes the given module.- Parameters:
module- The module to run.process- If true, executes the module with pre- and postprocessing steps from all availablePreprocessorPlugins andPostprocessorPlugins in the plugin index; if false, executes the module with no pre- or postprocessing.inputs- List of input parameter names and values. The expected order is in pairs: an input name followed by its value, for each desired input to populate. Leaving some inputs unpopulated is allowed. Passing the name of an input that is not valid for the module, or passing a value of a type incompatible with the associated input parameter, will issue an error and ignore that name/value pair.- Returns:
Futureof the module instance being executed. CallingFuture.get()will block until execution is complete.
-
run
<M extends Module> Future<M> run(M module, boolean process, Map<String,Object> inputMap)
Executes the given module.- Parameters:
module- The module to run.process- If true, executes the module with pre- and postprocessing steps from all availablePreprocessorPlugins andPostprocessorPlugins in the plugin index; if false, executes the module with no pre- or postprocessing.inputMap- Table of input parameter values, with keys matching theModuleInfo's input parameter names. Passing a value of a type incompatible with the associated input parameter will issue an error and ignore that value.- Returns:
Futureof the module instance being executed. CallingFuture.get()will block until execution is complete.
-
run
<M extends Module> Future<M> run(M module, List<? extends ModulePreprocessor> pre, List<? extends ModulePostprocessor> post, Object... inputs)
Executes the given module.- Parameters:
module- The module to run.pre- List of preprocessing steps to perform.post- List of postprocessing steps to perform.inputs- List of input parameter names and values. The expected order is in pairs: an input name followed by its value, for each desired input to populate. Leaving some inputs unpopulated is allowed. Passing the name of an input that is not valid for the module, or passing a value of a type incompatible with the associated input parameter, will issue an error and ignore that name/value pair.- Returns:
Futureof the module instance being executed. CallingFuture.get()will block until execution is complete.
-
run
<M extends Module> Future<M> run(M module, List<? extends ModulePreprocessor> pre, List<? extends ModulePostprocessor> post, Map<String,Object> inputMap)
Executes the given module.- Parameters:
module- The module to run.pre- List of preprocessing steps to perform.post- List of postprocessing steps to perform.inputMap- Table of input parameter values, with keys matching the module'sModuleInfo's input parameter names. Passing a value of a type incompatible with the associated input parameter will issue an error and ignore that value.- Returns:
Futureof the module instance being executed. CallingFuture.get()will block until execution is complete.
-
waitFor
<M extends Module> M waitFor(Future<M> future)
Blocks until the given module is finished executing.
-
getSingleInput
<T> ModuleItem<T> getSingleInput(Module module, Class<T> type)
Checks the given module for a solitary unresolved fillable input of the given type, returning the relevantModuleItemif found, or null if not exactly one unresolved fillable input of that type.
-
getSingleOutput
<T> ModuleItem<T> getSingleOutput(Module module, Class<T> type)
Checks the given module for a solitary unresolved output of the given type, returning the relevantModuleItemif found, or null if not exactly one unresolved output of that type.
-
getSingleInput
ModuleItem<?> getSingleInput(Module module, Collection<Class<?>> types)
AsgetSingleInput(Module, Class)but will match with a set of potential classes, at the cost of generic parameter safety.
-
getSingleOutput
ModuleItem<?> getSingleOutput(Module module, Collection<Class<?>> types)
AsgetSingleOutput(Module, Class)but will match with a set of potential classes, at the cost of generic parameter safety.
-
save
<T> void save(ModuleItem<T> item, T value)
Registers the given value for the givenModuleItemusing thePrefService.
-
load
<T> T load(ModuleItem<T> item)
Returns the value, if any, stored in thePrefServicefor the givenModuleItem.
-
getDefaultValue
<T> T getDefaultValue(ModuleItem<T> item)
Gets the default value of the givenModuleItem.
-
saveInputs
void saveInputs(Module module)
Saves values to persistent storage from the givenModule.
-
-