Package org.apache.ivy.plugins.version
Interface VersionMatcher
- All Known Implementing Classes:
AbstractVersionMatcher
,ChainVersionMatcher
,ExactVersionMatcher
,LatestVersionMatcher
,MavenTimedSnapshotVersionMatcher
,PatternVersionMatcher
,SubVersionMatcher
,VersionRangeMatcher
public interface VersionMatcher
This interface defines a version matcher, i.e. a class able to tell if the revision asked by a
module for a dependency is dynamic (i.e. need to find all revisions to find the good one among
them) and if a found revision matches the asked one.
Two ways of matching are possible:
- based on the module revision only (known as ModuleRevisionId)
- based on the parsed module descriptor
needModuleDescriptor(ModuleRevisionId, ModuleRevisionId)
method. Anyway, the first way
is always used, and if a revision is not accepted using the first method, the module descriptor
won't be parsed. Therefore if a version matcher uses only module descriptors to accept a revision
or not it should always return true to
needModuleDescriptor(ModuleRevisionId, ModuleRevisionId)
and
accept(ModuleRevisionId, ModuleDescriptor)
.-
Method Summary
Modifier and TypeMethodDescriptionboolean
accept
(ModuleRevisionId askedMrid, ModuleDescriptor foundMD) Indicates if this version matcher considers that the module found matches the asked one.boolean
accept
(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid) Indicates if this version matcher considers that the module revision found matches the asked one.int
compare
(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid, Comparator<ModuleRevisionId> staticComparator) Compares a dynamic revision (askedMrid) with a static one (foundMrid) to indicate which one should be considered the greater.getName()
Returns the version matcher name identifying this version matcherboolean
isDynamic
(ModuleRevisionId askedMrid) Indicates if the given asked ModuleRevisionId should be considered as dynamic for the current VersionMatcher or not.boolean
needModuleDescriptor
(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid) Indicates if this VersionMatcher needs module descriptors to determine if a module revision matches the asked one.
-
Method Details
-
isDynamic
Indicates if the given asked ModuleRevisionId should be considered as dynamic for the current VersionMatcher or not.- Parameters:
askedMrid
- the dependency module revision id as asked by a module- Returns:
- true if this revision is considered as a dynamic one, false otherwise
-
accept
Indicates if this version matcher considers that the module revision found matches the asked one.- Parameters:
askedMrid
- ModuleRevisionIdfoundMrid
- ModuleRevisionId- Returns:
- boolean
-
needModuleDescriptor
Indicates if this VersionMatcher needs module descriptors to determine if a module revision matches the asked one. Note that returning true in this method may imply big performance issues.- Parameters:
askedMrid
- ModuleRevisionIdfoundMrid
- ModuleRevisionId- Returns:
- boolean
-
accept
Indicates if this version matcher considers that the module found matches the asked one. This method can be called even needModuleDescriptor(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid) returns false, so it is required to implement it in any case, a usual default implementation being: return accept(askedMrid, foundMD.getResolvedModuleRevisionId());- Parameters:
askedMrid
- ModuleRevisionIdfoundMD
- ModuleDescriptor- Returns:
- boolean
-
compare
int compare(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid, Comparator<ModuleRevisionId> staticComparator) Compares a dynamic revision (askedMrid) with a static one (foundMrid) to indicate which one should be considered the greater. If there is not enough information to know which one is the greater, the dynamic one should be considered greater and this method should return 0. This method should never be called with a askedMrid for which isDynamic returns false.- Parameters:
askedMrid
- the dynamic revision to comparefoundMrid
- the static revision to comparestaticComparator
- a comparator which can be used to compare static revisions- Returns:
- 0 if it's not possible to know which one is greater, greater than 0 if askedMrid should be considered greater, lower than 0 if it can't be consider greater
-
getName
String getName()Returns the version matcher name identifying this version matcher- Returns:
- the version matcher name identifying this version matcher
-