org.scijava.module
Class DefaultModuleService

java.lang.Object
  extended by org.scijava.AbstractContextual
      extended by org.scijava.plugin.AbstractRichPlugin
          extended by org.scijava.service.AbstractService
              extended by org.scijava.module.DefaultModuleService
All Implemented Interfaces:
Comparable<Prioritized>, Contextual, Disposable, ModuleService, HasPluginInfo, RichPlugin, SciJavaPlugin, Prioritized, SciJavaService, Service

public class DefaultModuleService
extends AbstractService
implements ModuleService

Default service for keeping track of and executing available modules.

Author:
Curtis Rueden
See Also:
Module, ModuleInfo

Constructor Summary
DefaultModuleService()
           
 
Method Summary
 void addModule(ModuleInfo module)
          Manually registers a module with the module service.
 void addModules(Collection<? extends ModuleInfo> modules)
          Manually registers a list of modules with the module service.
 Module createModule(ModuleInfo info)
          Creates an instance of the given module.
 ModuleIndex getIndex()
          Gets the index of available modules.
 ModuleInfo getModuleForAccelerator(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 relevant ModuleItem if found, or null if not exactly one unresolved fillable input of that type.
<T> ModuleItem<T>
getSingleOutput(Module module, Class<T> type)
          Checks the given module for a solitary unresolved output of the given type, returning the relevant ModuleItem if found, or null if not exactly one unresolved output of that type.
 void initialize()
          Performs any needed initialization when the service is first loaded.
<T> T
load(ModuleItem<T> item)
          Returns the value, if any, stored in the PrefService for the given ModuleItem.
 void removeModule(ModuleInfo module)
          Manually unregisters a module with the module service.
 void removeModules(Collection<? extends ModuleInfo> modules)
          Manually unregisters a list of modules with the module service.
<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, boolean process, 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.
<M extends Module>
Future<M>
run(M module, List<? extends ModulePreprocessor> pre, List<? extends ModulePostprocessor> post, 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, boolean process, 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.
 Future<Module> run(ModuleInfo info, List<? extends ModulePreprocessor> pre, List<? extends ModulePostprocessor> post, Object... inputs)
          Executes the given module.
<T> void
save(ModuleItem<T> item, T value)
          Registers the given value for the given ModuleItem using the PrefService.
<M extends Module>
M
waitFor(Future<M> future)
          Blocks until the given module is finished executing.
 
Methods inherited from class org.scijava.service.AbstractService
dispose, getContext, registerEventHandlers, setContext, toString
 
Methods inherited from class org.scijava.plugin.AbstractRichPlugin
compareTo, getInfo, getPriority, setInfo, setPriority
 
Methods inherited from class org.scijava.AbstractContextual
context
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface org.scijava.service.Service
registerEventHandlers
 
Methods inherited from interface org.scijava.Contextual
context, getContext, setContext
 
Methods inherited from interface org.scijava.Prioritized
getPriority, setPriority
 
Methods inherited from interface java.lang.Comparable
compareTo
 
Methods inherited from interface org.scijava.plugin.HasPluginInfo
getInfo, setInfo
 
Methods inherited from interface org.scijava.Disposable
dispose
 

Constructor Detail

DefaultModuleService

public DefaultModuleService()
Method Detail

getIndex

public ModuleIndex getIndex()
Description copied from interface: ModuleService
Gets the index of available modules.

Specified by:
getIndex in interface ModuleService

addModule

public void addModule(ModuleInfo module)
Description copied from interface: ModuleService
Manually registers a module with the module service.

Specified by:
addModule in interface ModuleService

removeModule

public void removeModule(ModuleInfo module)
Description copied from interface: ModuleService
Manually unregisters a module with the module service.

Specified by:
removeModule in interface ModuleService

addModules

public void addModules(Collection<? extends ModuleInfo> modules)
Description copied from interface: ModuleService
Manually registers a list of modules with the module service.

Specified by:
addModules in interface ModuleService

removeModules

public void removeModules(Collection<? extends ModuleInfo> modules)
Description copied from interface: ModuleService
Manually unregisters a list of modules with the module service.

Specified by:
removeModules in interface ModuleService

getModules

public List<ModuleInfo> getModules()
Description copied from interface: ModuleService
Gets the list of available modules.

Specified by:
getModules in interface ModuleService

getModuleForAccelerator

public ModuleInfo getModuleForAccelerator(Accelerator acc)
Description copied from interface: ModuleService
Gets the module for a given keyboard shortcut.

Specified by:
getModuleForAccelerator in interface ModuleService
Parameters:
acc - the accelerator for which to search.
Returns:
the module info for the corresponding module, or null.

createModule

public Module createModule(ModuleInfo info)
Description copied from interface: ModuleService
Creates an instance of the given module.

If the module implements the Contextual interface, the appropriate context is injected. Similarly, if the module 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:
createModule in interface ModuleService

run

public Future<Module> run(ModuleInfo info,
                          boolean process,
                          Object... inputs)
Description copied from interface: ModuleService
Executes the given module.

Specified by:
run in interface ModuleService
Parameters:
info - The module to instantiate and run.
process - If true, executes the module with pre- and postprocessing steps from all available PreprocessorPlugins and PostprocessorPlugins 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:
Future of the module instance being executed. Calling Future.get() will block until execution is complete.

run

public Future<Module> run(ModuleInfo info,
                          boolean process,
                          Map<String,Object> inputMap)
Description copied from interface: ModuleService
Executes the given module.

Specified by:
run in interface ModuleService
Parameters:
info - The module to instantiate and run.
process - If true, executes the module with pre- and postprocessing steps from all available PreprocessorPlugins and PostprocessorPlugins in the plugin index; if false, executes the module with no pre- or postprocessing.
inputMap - Table of input parameter values, with keys matching the ModuleInfo'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:
Future of the module instance being executed. Calling Future.get() will block until execution is complete.

run

public Future<Module> run(ModuleInfo info,
                          List<? extends ModulePreprocessor> pre,
                          List<? extends ModulePostprocessor> post,
                          Object... inputs)
Description copied from interface: ModuleService
Executes the given module.

Specified by:
run in interface ModuleService
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:
Future of the module instance being executed. Calling Future.get() will block until execution is complete.

run

public Future<Module> run(ModuleInfo info,
                          List<? extends ModulePreprocessor> pre,
                          List<? extends ModulePostprocessor> post,
                          Map<String,Object> inputMap)
Description copied from interface: ModuleService
Executes the given module.

Specified by:
run in interface ModuleService
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 the ModuleInfo'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:
Future of the module instance being executed. Calling Future.get() will block until execution is complete.

run

public <M extends Module> Future<M> run(M module,
                                        boolean process,
                                        Object... inputs)
Description copied from interface: ModuleService
Executes the given module.

Specified by:
run in interface ModuleService
Parameters:
module - The module to run.
process - If true, executes the module with pre- and postprocessing steps from all available PreprocessorPlugins and PostprocessorPlugins 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:
Future of the module instance being executed. Calling Future.get() will block until execution is complete.

run

public <M extends Module> Future<M> run(M module,
                                        boolean process,
                                        Map<String,Object> inputMap)
Description copied from interface: ModuleService
Executes the given module.

Specified by:
run in interface ModuleService
Parameters:
module - The module to run.
process - If true, executes the module with pre- and postprocessing steps from all available PreprocessorPlugins and PostprocessorPlugins in the plugin index; if false, executes the module with no pre- or postprocessing.
inputMap - Table of input parameter values, with keys matching the ModuleInfo'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:
Future of the module instance being executed. Calling Future.get() will block until execution is complete.

run

public <M extends Module> Future<M> run(M module,
                                        List<? extends ModulePreprocessor> pre,
                                        List<? extends ModulePostprocessor> post,
                                        Object... inputs)
Description copied from interface: ModuleService
Executes the given module.

Specified by:
run in interface ModuleService
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:
Future of the module instance being executed. Calling Future.get() will block until execution is complete.

run

public <M extends Module> Future<M> run(M module,
                                        List<? extends ModulePreprocessor> pre,
                                        List<? extends ModulePostprocessor> post,
                                        Map<String,Object> inputMap)
Description copied from interface: ModuleService
Executes the given module.

Specified by:
run in interface ModuleService
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's ModuleInfo'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:
Future of the module instance being executed. Calling Future.get() will block until execution is complete.

waitFor

public <M extends Module> M waitFor(Future<M> future)
Description copied from interface: ModuleService
Blocks until the given module is finished executing.

Specified by:
waitFor in interface ModuleService

getSingleInput

public <T> ModuleItem<T> getSingleInput(Module module,
                                        Class<T> type)
Description copied from interface: ModuleService
Checks the given module for a solitary unresolved fillable input of the given type, returning the relevant ModuleItem if found, or null if not exactly one unresolved fillable input of that type.

Specified by:
getSingleInput in interface ModuleService

getSingleOutput

public <T> ModuleItem<T> getSingleOutput(Module module,
                                         Class<T> type)
Description copied from interface: ModuleService
Checks the given module for a solitary unresolved output of the given type, returning the relevant ModuleItem if found, or null if not exactly one unresolved output of that type.

Specified by:
getSingleOutput in interface ModuleService

save

public <T> void save(ModuleItem<T> item,
                     T value)
Description copied from interface: ModuleService
Registers the given value for the given ModuleItem using the PrefService.

Specified by:
save in interface ModuleService

load

public <T> T load(ModuleItem<T> item)
Description copied from interface: ModuleService
Returns the value, if any, stored in the PrefService for the given ModuleItem.

Specified by:
load in interface ModuleService

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 Service
Overrides:
initialize in class AbstractService


Copyright © 2009–2014 SciJava. All rights reserved.