Skip to content

Commit

Permalink
Add utility methods to Version class for easier version comparisons (#…
Browse files Browse the repository at this point in the history
  • Loading branch information
nastra authored Mar 2, 2022
1 parent 85266b7 commit 9db5d6f
Show file tree
Hide file tree
Showing 4 changed files with 52 additions and 3 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -80,6 +80,26 @@ private static int parsePart(String part) {
return val;
}

public boolean isGreaterThan(Version version) {
return this.compareTo(version) > 0;
}

public boolean isGreaterThanOrEqual(Version version) {
return this.compareTo(version) >= 0;
}

public boolean isLessThan(Version version) {
return this.compareTo(version) < 0;
}

public boolean isLessThanOrEqual(Version version) {
return this.compareTo(version) <= 0;
}

public boolean isSame(Version version) {
return this.compareTo(version) == 0;
}

@Override
public int compareTo(Version o) {
for (int i = 0; i < tuple.length || i < o.tuple.length; i++) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -101,14 +101,14 @@ static ConditionEvaluationResult conditionCheck(Version version, AnnotatedElemen
if (cond.isPresent()) {
VersionCondition versionCondition = cond.get();
if (!versionCondition.minVersion().isEmpty()
&& parseVersion(versionCondition.minVersion()).compareTo(version) > 0) {
&& parseVersion(versionCondition.minVersion()).isGreaterThan(version)) {
return disabled(
String.format(
"%s requires minimum Nessie version '%s', but current Nessie version is '%s'",
annotated, versionCondition.minVersion(), version));
}
if (!versionCondition.maxVersion().isEmpty()
&& parseVersion(versionCondition.maxVersion()).compareTo(version) < 0) {
&& parseVersion(versionCondition.maxVersion()).isLessThan(version)) {
return disabled(
String.format(
"%s requires maximum Nessie version '%s', but current Nessie version is '%s'",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -76,4 +76,33 @@ void compare() {
.isGreaterThan(Version.parseVersion("0.99999"))
.isGreaterThan(Version.parseVersion("0.1.0"));
}

@Test
public void isGreaterThan() {
assertThat(Version.parseVersion("1.0.0").isGreaterThanOrEqual(Version.parseVersion("1.0.0")))
.isTrue();
assertThat(Version.parseVersion("1.0.0").isGreaterThan(Version.parseVersion("0.9.9"))).isTrue();
assertThat(Version.parseVersion("1.0.0").isGreaterThan(Version.parseVersion("0.9999")))
.isTrue();
assertThat(Version.parseVersion("1.0.0").isGreaterThan(Version.parseVersion("1.0.0")))
.isFalse();
}

@Test
public void isLessThan() {
assertThat(Version.parseVersion("1.0.0").isLessThanOrEqual(Version.parseVersion("1.0.0")))
.isTrue();
assertThat(Version.parseVersion("1.0.0").isLessThan(Version.parseVersion("1.0.1"))).isTrue();
assertThat(Version.parseVersion("1.0.0").isLessThan(Version.parseVersion("1.1"))).isTrue();
assertThat(Version.parseVersion("1.0.0").isLessThan(Version.parseVersion("1.0.1"))).isTrue();
assertThat(Version.parseVersion("1.0.0").isLessThan(Version.parseVersion("1.0.0"))).isFalse();
}

@Test
public void isSame() {
assertThat(Version.parseVersion("1.0").isSame(Version.parseVersion("1.0.0"))).isTrue();
assertThat(Version.parseVersion("1.0.0").isSame(Version.parseVersion("1.0.0"))).isTrue();
assertThat(Version.parseVersion("1.0.0").isSame(Version.parseVersion("1.0.1"))).isFalse();
assertThat(Version.parseVersion("1.0.0").isSame(Version.parseVersion("0.9.9"))).isFalse();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -144,7 +144,7 @@ private Branch commitMaybeRetry(CommitMultipleOperationsBuilder commitBuilder)
return commitBuilder.commit();
} catch (NessieReferenceConflictException e) {
if (!"Hash collision detected".equals(e.getMessage())
|| Version.parseVersion("0.20.1").compareTo(version) < 0) {
|| Version.parseVersion("0.20.1").isLessThan(version)) {
throw e;
}
}
Expand Down

0 comments on commit 9db5d6f

Please sign in to comment.