pip_services3_commons.refer.DependencyResolver module
pip_services3_commons.refer.DependencyResolver
Dependency resolver component implementation
- copyright
Conceptual Vision Consulting LLC 2018-2019, see AUTHORS for more details.
- license
MIT, see LICENSE for more details.
-
class
pip_services3_commons.refer.DependencyResolver.
DependencyResolver
(config: pip_services3_commons.config.ConfigParams.ConfigParams = None, references: pip_services3_commons.refer.IReferences.IReferences = None) Bases:
pip_services3_commons.config.IReconfigurable.IReconfigurable
,pip_services3_commons.refer.IReferenceable.IReferenceable
Helper class for resolving component dependencies. The resolver is configured to resolve named dependencies by specific locator. During deployment the dependency locator can be changed.
This mechanism can be used to clarify specific dependency among several alternatives. Typically components are configured to retrieve the first dependency that matches logical group, type and version. But if container contains more than one instance and resolution has to be specific about those instances, they can be given a unique name and dependency resolvers can be reconfigured to retrieve dependencies by their name.
### Configuration parameters ### dependencies:
[dependency name 1]: Dependency 1 locator (descriptor)
…
[dependency name N]: Dependency N locator (descriptor)
- References:
References must match configured dependencies.
Example:
class MyComponent(IConfigurable, IReferenceable): _dependencyResolver = None _persistence = None def __init__(self): self._dependencyResolver.put("persistence", new Descriptor("mygroup", "persistence", "*", "*", "1.0")) def configure(self, config): self._dependencyResolver.configure(config) def set_references(self, references): self._dependencyResolver.setReferences(references) self._persistence = self._dependencyResolver.get_one_required("persistence") component = MyComponent() component.configure(ConfigParams.from_tuples( "dependencies.persistence", "mygroup:persistence:*:persistence2:1.0")) component.set_references(References.from_tuples(Descriptor("mygroup","persistence","*","persistence1","1.0"), MyPersistence(), Descriptor("mygroup","persistence","*","persistence2","1.0"), MyPersistence() # This dependency shall be set))
-
configure
(config: pip_services3_commons.config.ConfigParams.ConfigParams) Configures the component with specified parameters.
- Parameters
config – configuration parameters to set.
-
find
(name: str, required: bool) → Optional[List[Any], None] Finds all matching dependencies by their name.
- Parameters
name – the dependency name to locate.
required – true to raise an error when no dependencies are found.
- Returns
a list of found dependencies
-
static
from_tuples
(*tuples: Any) → pip_services3_commons.refer.DependencyResolver.DependencyResolver Creates a new DependencyResolver from a list of key-args pairs called tuples where key is dependency name and args the depedency locator (descriptor).
- Parameters
tuples – a list of values where odd elements are dependency name
and the following even elements are dependency locator (descriptor)
- Returns
a newly created DependencyResolver.
-
get_one_optional
(name: str) → Any Gets one optional dependency by its name.
- Parameters
name – the dependency name to locate.
- Returns
a dependency reference or null of the dependency was not found
-
get_one_required
(name: str) → Any Gets one __required dependency by its name. At least one dependency must present. If the dependency was found it throws a
ReferenceException
- Parameters
name – the dependency name to locate.
- Returns
a dependency reference
-
get_optional
(name: str) → List[Any] Gets all optional dependencies by their name.
- Parameters
name – the dependency name to locate.
- Returns
a list with found dependencies or empty list of no dependencies was found.
-
get_required
(name: str) → List[Any] Gets all __required dependencies by their name. At least one dependency must be present. If no dependencies was found it throws a
ReferenceException
- Parameters
name – the dependency name to locate.
- Returns
a list with found dependencies.
-
put
(name: str, locator: Any) Adds a new dependency into this resolver.
- Parameters
name – the dependency’s name.
locator – the locator to find the dependency by.
-
set_references
(references: pip_services3_commons.refer.IReferences.IReferences) Sets the component references. References must match configured dependencies.
- Parameters
references – references to set.