@Override <T> T visit(MaximumVersionVisitor<T> visitor) { return visitor.visitVersion(version); } }
/** * Returns true iff the given string is a valid "orderable" or "non-orderable" SLS version. */ public static boolean isValidVersion(String version) { // Note: Technically this condition is redundant this isOrderableVersion ==> isNonOrderableVersion. // Will check both for maintainability and legibility. return isOrderableVersion(version) || isNonOrderableVersion(version); } }
@Override public Integer visitVersion(OrderableSlsVersion version) { // o1 is smaller if it satisfies the max constraint of o2 return o2.isSatisfiedBy(version) ? -1 : 1; }
public final void productDependency( String dependencyGroup, String dependencyName, String minVersion, String maxVersion, String recommendedVersion) { productDependencies.add(new ProductDependency( dependencyGroup, dependencyName, minVersion, maxVersion == null ? generateMaxVersion(minVersion) : maxVersion, recommendedVersion)); }
@Override public final String toString() { return visit(new MaximumVersionVisitor<String>() { @Override public String visitVersion(OrderableSlsVersion version) { return version.toString(); } @Override public String visitMatcher(SlsVersionMatcher matcher) { return matcher.toString(); } }); }
@Override <T> T visit(MaximumVersionVisitor<T> visitor) { return visitor.visitMatcher(matcher); } }
@Override public final int compareTo(MaximumVersion other) { return MaximumVersionComparator.INSTANCE.compare(this, other); }
public final void productDependency(String mavenCoordVersionRange) { productDependency(mavenCoordVersionRange, null); } public final void productDependency(String mavenCoordVersionRange, String recommendedVersion) {
static Builder builder() { return new Builder(); }
static Builder builder() { return new Builder(); }
@Override public final String toString() { return visit(new MaximumVersionVisitor<String>() { @Override public String visitVersion(OrderableSlsVersion version) { return version.toString(); } @Override public String visitMatcher(SlsVersionMatcher matcher) { return matcher.toString(); } }); }
@Override public Integer visitVersion(OrderableSlsVersion version) { // o1 is smaller if it satisfies the max constraint of o2 return o2.isSatisfiedBy(version) ? -1 : 1; }
@Override <T> T visit(MaximumVersionVisitor<T> visitor) { return visitor.visitVersion(version); } }
@Override <T> T visit(MaximumVersionVisitor<T> visitor) { return visitor.visitMatcher(matcher); } }
@Override public final int compareTo(MaximumVersion other) { return MaximumVersionComparator.INSTANCE.compare(this, other); }
public final void productDependency(String dependencyGroup, String dependencyName, String minVersion) { productDependency(dependencyGroup, dependencyName, minVersion, null, null); }
static Builder builder() { return new Builder(); }
@Override public Integer visitMatcher(SlsVersionMatcher thisMatcher) { return o2.visit(new MaximumVersionVisitor<Integer>() { @Override public Integer visitVersion(OrderableSlsVersion version) { // We're going for 'which is more restrictive as a max' // outcome of 0 means that version is accepted by matcher return thisMatcher.compare(version) >= 0 ? 1 : -1; } @Override public Integer visitMatcher(SlsVersionMatcher matcher) { return SlsVersionMatcher.MATCHER_COMPARATOR.compare(thisMatcher, matcher); } }); } });
private static boolean satisfiesMaxVersion(Optional<MaximumVersion> maximumVersion, OrderableSlsVersion version) { // If maximumVersion is 1.5.x we should still accept e.g. 1.3.0 so we use '>= 0' // (comparison result is from the point of view of the matcher) return maximumVersion.map(maxVer -> maxVer.isSatisfiedBy(version)).orElse(true); }
@Override public Integer visitMatcher(SlsVersionMatcher thisMatcher) { return o2.visit(new MaximumVersionVisitor<Integer>() { @Override public Integer visitVersion(OrderableSlsVersion version) { // We're going for 'which is more restrictive as a max' // outcome of 0 means that version is accepted by matcher return thisMatcher.compare(version) >= 0 ? 1 : -1; } @Override public Integer visitMatcher(SlsVersionMatcher matcher) { return SlsVersionMatcher.MATCHER_COMPARATOR.compare(thisMatcher, matcher); } }); } });