GitHub user KoenDG opened a pull request:
https://github.com/apache/kafka/pull/3904
[MINOR] Added equals() method to Stamped
Please don't let analyzing this PR take away from actual working time. I
did this in my spare time, it's not intended to take away from your working
hours. It may well be that this is a non-issue.
As the title states: I added equals() method to Stamped.java because a
class that implements Comparable should always have this.
This was pointed out to me by Intellij's code analysis, which warned that
classes implementing Comparable should always implement both compareTo() and
equals(). This is because an end-user can at some point add objects of that
class to java.util.SortedSet. If the compareTo() and equals() implementations
are not consistent, that would violate the contract of java.util.Set, which is
defined in terms of equals().
findBugs also complained about PunctuationScheduler, a subclass of Stamped,
nothing having equals, so I also implemented that.
The equals() in Stamped.java is written to be consistent with how the
already-existing compareTo() works in that class. The hashCode() is
autogenerated, with only the timestamp field, as that is the only one used by
compareTo() and equals().
findBugs complained about PunctuationSchedule.java, a subclass of
Stamped.java, also needing these methods if Stamped.java had them. So I had
equals() and hashCode() auto-generated for them.
./gradlew test ran fine.
You can merge this pull request into a Git repository by running:
$ git pull https://github.com/KoenDG/kafka stampedEquals
Alternatively you can review and apply these changes as the patch at:
https://github.com/apache/kafka/pull/3904.patch
To close this pull request, make a commit to your master/trunk branch
with (at least) the following in the commit message:
This closes #3904
----
commit aea3d72aa5f6854a845e76eb4359ca456ae7209f
Author: coscale_kdegroot <[email protected]>
Date: 2017-09-19T15:34:32Z
Added equals() method to Stamped, because a class that implements
Comparable should always have this.
findBugs complained about PunctuationSchedula, a subclass of Stamped,
nothing having equals, so also implemented that.
Since the compareTo and equals methods don't take the value field into
account, neither should hashCode.
----
---