org.apache.ivy.plugins.version

Interface VersionMatcher

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:

The second being much more time consuming than the first, the version matcher should tell if it needs such parsing or not using the VersionMatcher 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 VersionMatcher and VersionMatcher.
Method Summary
booleanaccept(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid)
Indicates if this version matcher considers that the module revision found matches the asked one.
booleanaccept(ModuleRevisionId askedMrid, ModuleDescriptor foundMD)
Indicates if this version matcher considers that the module found matches the asked one.
intcompare(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid, Comparator staticComparator)
Compares a dynamic revision (askedMrid) with a static one (foundMrid) to indicate which one should be considered the greater.
StringgetName()
Returns the version matcher name identifying this version matcher
booleanisDynamic(ModuleRevisionId askedMrid)
Indicates if the given asked ModuleRevisionId should be considered as dynamic for the current VersionMatcher or not.
booleanneedModuleDescriptor(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid)
Indicates if this VersionMatcher needs module descriptors to determine if a module revision matches the asked one.

Method Detail

accept

public boolean accept(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid)
Indicates if this version matcher considers that the module revision found matches the asked one.

Parameters: askedMrid foundMrid

Returns:

accept

public boolean accept(ModuleRevisionId askedMrid, ModuleDescriptor foundMD)
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 foundMD

Returns:

compare

public int compare(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid, Comparator 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 askdeMrid for which isDynamic returns false.

Parameters: askedMrid the dynamic revision to compare foundMrid the static revision to compare staticComparator 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

public String getName()
Returns the version matcher name identifying this version matcher

Returns: the version matcher name identifying this version matcher

isDynamic

public boolean isDynamic(ModuleRevisionId askedMrid)
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

needModuleDescriptor

public boolean needModuleDescriptor(ModuleRevisionId askedMrid, ModuleRevisionId foundMrid)
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.

Returns: