public final class NearestVersionSelector extends ConflictResolver.VersionSelector
ConflictResolver
that resolves version conflicts using a nearest-wins
strategy. If there is no single node that satisfies all encountered version ranges, the selector will fail.Modifier and Type | Class and Description |
---|---|
(package private) static class |
NearestVersionSelector.ConflictGroup |
Constructor and Description |
---|
NearestVersionSelector()
Creates a new instance of this version selector.
|
Modifier and Type | Method and Description |
---|---|
private void |
backtrack(NearestVersionSelector.ConflictGroup group,
ConflictResolver.ConflictContext context) |
private boolean |
isAcceptable(NearestVersionSelector.ConflictGroup group,
Version version) |
private boolean |
isNearer(ConflictResolver.ConflictItem item1,
ConflictResolver.ConflictItem item2) |
private UnsolvableVersionConflictException |
newFailure(ConflictResolver.ConflictContext context) |
void |
selectVersion(ConflictResolver.ConflictContext context)
Determines the winning node among conflicting dependencies.
|
getInstance
public NearestVersionSelector()
public void selectVersion(ConflictResolver.ConflictContext context) throws RepositoryException
ConflictResolver.VersionSelector
ConflictResolver.ConflictContext.getItems()
, inspect ConflictResolver.ConflictItem.getNode()
and eventually call
ConflictResolver.ConflictContext.setWinner(ConflictResolver.ConflictItem)
to deliver the winner. Failure to select a
winner will automatically fail the entire conflict resolution.selectVersion
in class ConflictResolver.VersionSelector
context
- The conflict context, must not be null
.RepositoryException
- If the version selection failed.private void backtrack(NearestVersionSelector.ConflictGroup group, ConflictResolver.ConflictContext context) throws UnsolvableVersionConflictException
private boolean isAcceptable(NearestVersionSelector.ConflictGroup group, Version version)
private boolean isNearer(ConflictResolver.ConflictItem item1, ConflictResolver.ConflictItem item2)
private UnsolvableVersionConflictException newFailure(ConflictResolver.ConflictContext context)