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
DependencyGraphTransformer
transformGraph
in interface DependencyGraphTransformer
node
- 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–2022 The Apache Software Foundation. All rights reserved.