Skip to content

Commit 69cf23b

Browse files
emolssontolbertam
authored andcommitted
JAVA-1639: VersionNumber does not fullfill equals/hashcode contract (apache#898)
1 parent 021bf5d commit 69cf23b

File tree

3 files changed

+11
-1
lines changed

3 files changed

+11
-1
lines changed

changelog/README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
- [new feature] JAVA-1377: Add support for TWCS in SchemaBuilder.
1616
- [improvement] JAVA-1631: Publish a sources jar for driver-core-tests.
1717
- [improvement] JAVA-1632: Add a withIpPrefix(String) method to CCMBridge.Builder.
18+
- [bug] JAVA-1639: VersionNumber does not fullfill equals/hashcode contract.
1819

1920

2021
### 3.3.0

driver-core/src/main/java/com/datastax/driver/core/VersionNumber.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -233,7 +233,7 @@ public boolean equals(Object other) {
233233

234234
@Override
235235
public int hashCode() {
236-
return MoreObjects.hashCode(major, minor, patch, dsePatch, preReleases, build);
236+
return MoreObjects.hashCode(major, minor, patch, dsePatch, Arrays.hashCode(preReleases), build);
237237
}
238238

239239
@Override

driver-core/src/test/java/com/datastax/driver/core/VersionNumberTest.java

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,15 @@ public void should_order_versions() {
9898
assertOrder("2.0.0+build01", "2.0.0+build02", 0);
9999
}
100100

101+
@Test(groups = "unit")
102+
public void should_treat_same_prerelease_equal() {
103+
VersionNumber version1 = VersionNumber.parse("3.0.15-SNAPSHOT");
104+
VersionNumber version2 = VersionNumber.parse("3.0.15-SNAPSHOT");
105+
106+
assertThat(version1).isEqualTo(version2);
107+
assertThat(version1.hashCode()).isEqualTo(version2.hashCode());
108+
}
109+
101110
private void assertOrder(String version1, String version2, int expected) {
102111
assertThat(VersionNumber.parse(version1).compareTo(VersionNumber.parse(version2))).isEqualTo(expected);
103112
}

0 commit comments

Comments
 (0)