public final class ConflictResolver extends Object implements DependencyGraphTransformer
ConflictResolver.VersionSelector, ConflictResolver.ScopeSelector, ConflictResolver.OptionalitySelector and
ConflictResolver.ScopeDeriver.
By default, this graph transformer will turn the dependency graph into a tree without duplicate artifacts. Using the
configuration property CONFIG_PROP_VERBOSE, a verbose mode can be enabled where the graph is still turned
into a tree but all nodes participating in a conflict are retained. The nodes that were rejected during conflict
resolution have no children and link back to the winner node via the NODE_DATA_WINNER key in their custom
data. Additionally, the keys NODE_DATA_ORIGINAL_SCOPE and NODE_DATA_ORIGINAL_OPTIONALITY are used
to store the original scope and optionality of each node. Obviously, the resulting dependency tree is not suitable
for artifact resolution unless a filter is employed to exclude the duplicate dependencies.
This transformer will query the keys TransformationContextKeys.CONFLICT_IDS,
TransformationContextKeys.SORTED_CONFLICT_IDS, TransformationContextKeys.CYCLIC_CONFLICT_IDS for
existing information about conflict ids. In absence of this information, it will automatically invoke the
ConflictIdSorter to calculate it.
| Modifier and Type | Class and Description |
|---|---|
static class |
ConflictResolver.ConflictContext
A context used to hold information that is relevant for resolving version and scope conflicts.
|
static class |
ConflictResolver.ConflictItem
A conflicting dependency.
|
static class |
ConflictResolver.OptionalitySelector
An extension point of
ConflictResolver that determines the effective optional flag of a dependency from a
potentially conflicting set of derived optionalities. |
static class |
ConflictResolver.ScopeContext
A context used to hold information that is relevant for deriving the scope of a child dependency.
|
static class |
ConflictResolver.ScopeDeriver
An extension point of
ConflictResolver that determines the scope of a dependency in relation to the scope
of its parent. |
static class |
ConflictResolver.ScopeSelector
An extension point of
ConflictResolver that determines the effective scope of a dependency from a
potentially conflicting set of derived scopes. |
static class |
ConflictResolver.VersionSelector
An extension point of
ConflictResolver that determines the winner among conflicting dependencies. |
| Modifier and Type | Field and Description |
|---|---|
static String |
CONFIG_PROP_VERBOSE
The key in the repository session's
configuration
properties used to store a Boolean flag controlling the transformer's verbose mode. |
static String |
NODE_DATA_ORIGINAL_OPTIONALITY
The key in the dependency node's
custom data under which the optional flag of
the dependency before derivation and conflict resolution is stored. |
static String |
NODE_DATA_ORIGINAL_SCOPE
The key in the dependency node's
custom data under which the scope of the
dependency before scope derivation and conflict resolution is stored. |
static String |
NODE_DATA_WINNER
The key in the dependency node's
custom data under which a reference to the
DependencyNode which has won the conflict is stored. |
| Constructor and Description |
|---|
ConflictResolver(ConflictResolver.VersionSelector versionSelector,
ConflictResolver.ScopeSelector scopeSelector,
ConflictResolver.OptionalitySelector optionalitySelector,
ConflictResolver.ScopeDeriver scopeDeriver)
Creates a new conflict resolver instance with the specified hooks.
|
| Modifier and Type | Method and Description |
|---|---|
DependencyNode |
transformGraph(DependencyNode node,
DependencyGraphTransformationContext context)
Transforms the dependency graph denoted by the specified root node.
|
public static final String CONFIG_PROP_VERBOSE
configuration
properties used to store a Boolean flag controlling the transformer's verbose mode.public static final String NODE_DATA_WINNER
custom data under which a reference to the
DependencyNode which has won the conflict is stored.public static final String NODE_DATA_ORIGINAL_SCOPE
custom data under which the scope of the
dependency before scope derivation and conflict resolution is stored.public static final String NODE_DATA_ORIGINAL_OPTIONALITY
custom data under which the optional flag of
the dependency before derivation and conflict resolution is stored.public ConflictResolver(ConflictResolver.VersionSelector versionSelector, ConflictResolver.ScopeSelector scopeSelector, ConflictResolver.OptionalitySelector optionalitySelector, ConflictResolver.ScopeDeriver scopeDeriver)
versionSelector - The version selector to use, must not be null.scopeSelector - The scope selector to use, must not be null.optionalitySelector - The optionality selector ot use, must not be null.scopeDeriver - The scope deriver to use, must not be null.public DependencyNode transformGraph(DependencyNode node, DependencyGraphTransformationContext context) throws RepositoryException
DependencyGraphTransformertransformGraph in interface DependencyGraphTransformernode - The root node of the (possibly cyclic!) graph to transform, must not be null.context - The graph transformation context, must not be null.null.RepositoryException - If the transformation failed.Copyright © 2010-2014 The Eclipse Foundation. All Rights Reserved.