public class DefaultModuleService extends AbstractService implements ModuleService
Module
,
ModuleInfo
Constructor and Description |
---|
DefaultModuleService() |
Modifier and Type | Method and Description |
---|---|
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.
|
<T> T |
getDefaultValue(ModuleItem<T> item)
Gets the default value of the given
ModuleItem . |
ModuleIndex |
getIndex()
Gets the index of available modules.
|
ModuleInfo |
getModuleById(String id)
Gets the module with the given identifier string.
|
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. |
ModuleItem<?> |
getSingleInput(Module module,
Collection<Class<?>> types)
As
ModuleService.getSingleInput(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 relevant
ModuleItem if found, or null if not exactly
one unresolved output of that type. |
ModuleItem<?> |
getSingleOutput(Module module,
Collection<Class<?>> types)
As
ModuleService.getSingleOutput(Module, Class) but will match with a set of
potential classes, at the cost of generic parameter safety. |
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 |
loadInputs(Module module)
Loads values from persistent storage into the given
Module . |
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> |
run(M module,
boolean process,
Map<String,Object> inputMap)
Executes the given module.
|
<M extends Module> |
run(M module,
boolean process,
Object... inputs)
Executes the given module.
|
<M extends Module> |
run(M module,
List<? extends ModulePreprocessor> pre,
List<? extends ModulePostprocessor> post,
Map<String,Object> inputMap)
Executes the given module.
|
<M extends Module> |
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 . |
void |
saveInputs(Module module)
Saves values to persistent storage from the given
Module . |
<M extends Module> |
waitFor(Future<M> future)
Blocks until the given module is finished executing.
|
getContext, setContext, toString
getInfo, getPriority, setInfo, setPriority
context
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
registerEventHandlers
getIdentifier, log
context, getContext, setContext
compareTo, getPriority, setPriority
getInfo, setInfo
getLocation
getVersion
dispose
public ModuleIndex getIndex()
ModuleService
getIndex
in interface ModuleService
public void addModule(ModuleInfo module)
ModuleService
addModule
in interface ModuleService
public void removeModule(ModuleInfo module)
ModuleService
removeModule
in interface ModuleService
public void addModules(Collection<? extends ModuleInfo> modules)
ModuleService
addModules
in interface ModuleService
public void removeModules(Collection<? extends ModuleInfo> modules)
ModuleService
removeModules
in interface ModuleService
public List<ModuleInfo> getModules()
ModuleService
getModules
in interface ModuleService
public ModuleInfo getModuleById(String id)
ModuleService
getModuleById
in interface ModuleService
id
- The identifier string corresponding to the desired module.Identifiable
module with the given identifier.public ModuleInfo getModuleForAccelerator(Accelerator acc)
ModuleService
getModuleForAccelerator
in interface ModuleService
acc
- the accelerator for which to search.public Module createModule(ModuleInfo info)
ModuleService
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.
createModule
in interface ModuleService
public Future<Module> run(ModuleInfo info, boolean process, Object... inputs)
ModuleService
run
in interface ModuleService
info
- The module to instantiate and run.process
- If true, executes the module with pre- and postprocessing
steps from all available PreprocessorPlugin
s and
PostprocessorPlugin
s 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.Future
of the module instance being executed. Calling
Future.get()
will block until execution is complete.public Future<Module> run(ModuleInfo info, boolean process, Map<String,Object> inputMap)
ModuleService
run
in interface ModuleService
info
- The module to instantiate and run.process
- If true, executes the module with pre- and postprocessing
steps from all available PreprocessorPlugin
s and
PostprocessorPlugin
s 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.Future
of the module instance being executed. Calling
Future.get()
will block until execution is complete.public Future<Module> run(ModuleInfo info, List<? extends ModulePreprocessor> pre, List<? extends ModulePostprocessor> post, Object... inputs)
ModuleService
run
in interface ModuleService
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.Future
of the module instance being executed. Calling
Future.get()
will block until execution is complete.public Future<Module> run(ModuleInfo info, List<? extends ModulePreprocessor> pre, List<? extends ModulePostprocessor> post, Map<String,Object> inputMap)
ModuleService
run
in interface ModuleService
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.Future
of the module instance being executed. Calling
Future.get()
will block until execution is complete.public <M extends Module> Future<M> run(M module, boolean process, Object... inputs)
ModuleService
run
in interface ModuleService
module
- The module to run.process
- If true, executes the module with pre- and postprocessing
steps from all available PreprocessorPlugin
s and
PostprocessorPlugin
s 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.Future
of the module instance being executed. Calling
Future.get()
will block until execution is complete.public <M extends Module> Future<M> run(M module, boolean process, Map<String,Object> inputMap)
ModuleService
run
in interface ModuleService
module
- The module to run.process
- If true, executes the module with pre- and postprocessing
steps from all available PreprocessorPlugin
s and
PostprocessorPlugin
s 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.Future
of the module instance being executed. Calling
Future.get()
will block until execution is complete.public <M extends Module> Future<M> run(M module, List<? extends ModulePreprocessor> pre, List<? extends ModulePostprocessor> post, Object... inputs)
ModuleService
run
in interface ModuleService
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.Future
of the module instance being executed. Calling
Future.get()
will block until execution is complete.public <M extends Module> Future<M> run(M module, List<? extends ModulePreprocessor> pre, List<? extends ModulePostprocessor> post, Map<String,Object> inputMap)
ModuleService
run
in interface ModuleService
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.Future
of the module instance being executed. Calling
Future.get()
will block until execution is complete.public <M extends Module> M waitFor(Future<M> future)
ModuleService
waitFor
in interface ModuleService
public <T> ModuleItem<T> getSingleInput(Module module, Class<T> type)
ModuleService
ModuleItem
if found, or null if
not exactly one unresolved fillable input of that type.getSingleInput
in interface ModuleService
public <T> ModuleItem<T> getSingleOutput(Module module, Class<T> type)
ModuleService
ModuleItem
if found, or null if not exactly
one unresolved output of that type.getSingleOutput
in interface ModuleService
public ModuleItem<?> getSingleInput(Module module, Collection<Class<?>> types)
ModuleService
ModuleService.getSingleInput(Module, Class)
but will match with a set of
potential classes, at the cost of generic parameter safety.getSingleInput
in interface ModuleService
public ModuleItem<?> getSingleOutput(Module module, Collection<Class<?>> types)
ModuleService
ModuleService.getSingleOutput(Module, Class)
but will match with a set of
potential classes, at the cost of generic parameter safety.getSingleOutput
in interface ModuleService
public <T> void save(ModuleItem<T> item, T value)
ModuleService
ModuleItem
using the
PrefService
.save
in interface ModuleService
public <T> T load(ModuleItem<T> item)
ModuleService
PrefService
for the given
ModuleItem
.load
in interface ModuleService
public <T> T getDefaultValue(ModuleItem<T> item)
ModuleService
ModuleItem
.getDefaultValue
in interface ModuleService
public void saveInputs(Module module)
ModuleService
Module
.saveInputs
in interface ModuleService
public void loadInputs(Module module)
ModuleService
Module
.loadInputs
in interface ModuleService
public void initialize()
Service
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.
initialize
in interface Initializable
initialize
in interface Service
Copyright © 2015–2022 SciJava. All rights reserved.