From 4f609b855c067c08359306d857fdc24d3b7382d6 Mon Sep 17 00:00:00 2001 From: Florian Schmaus Date: Mon, 13 Apr 2020 20:00:36 +0200 Subject: [PATCH] geoloc: make GeoLocation implement hashCode() and equals(Object) --- .../smackx/geoloc/packet/GeoLocation.java | 66 +++++++++++++++++++ 1 file changed, 66 insertions(+) diff --git a/smack-extensions/src/main/java/org/jivesoftware/smackx/geoloc/packet/GeoLocation.java b/smack-extensions/src/main/java/org/jivesoftware/smackx/geoloc/packet/GeoLocation.java index 61285a11f..79ba84de8 100644 --- a/smack-extensions/src/main/java/org/jivesoftware/smackx/geoloc/packet/GeoLocation.java +++ b/smack-extensions/src/main/java/org/jivesoftware/smackx/geoloc/packet/GeoLocation.java @@ -24,6 +24,8 @@ import javax.xml.namespace.QName; import org.jivesoftware.smack.packet.ExtensionElement; import org.jivesoftware.smack.packet.Message; +import org.jivesoftware.smack.util.EqualsUtil; +import org.jivesoftware.smack.util.HashCode; import org.jivesoftware.smack.util.XmlStringBuilder; import org.jivesoftware.smackx.xdata.FormField; @@ -249,6 +251,70 @@ public final class GeoLocation implements Serializable, ExtensionElement, FormFi return NAMESPACE; } + private final HashCode.Cache hashCodeCache = new HashCode.Cache(); + + @Override + public int hashCode() { + return hashCodeCache.getHashCode(c -> + c + .append(accuracy) + .append(alt) + .append(altAccuracy) + .append(area) + .append(bearing) + .append(building) + .append(country) + .append(countryCode) + .append(datum) + .append(description) + .append(error) + .append(floor) + .append(lat) + .append(locality) + .append(lon) + .append(postalcode) + .append(region) + .append(room) + .append(speed) + .append(street) + .append(text) + .append(timestamp) + .append(tzo) + .append(uri) + ); + } + + @Override + public boolean equals(Object obj) { + return EqualsUtil.equals(this, obj, (e, o) -> { + e + .append(accuracy, o.accuracy) + .append(altAccuracy, o.altAccuracy) + .append(area, o.area) + .append(bearing, o.bearing) + .append(building, o.building) + .append(country, o.country) + .append(countryCode, o.countryCode) + .append(datum, o.datum) + .append(description, o.description) + .append(error, o.error) + .append(floor, o.floor) + .append(lat, o.lat) + .append(locality, o.locality) + .append(lon, o.lon) + .append(postalcode, o.postalcode) + .append(region, o.region) + .append(room, o.room) + .append(speed, o.speed) + .append(street, o.street) + .append(text, o.text) + .append(timestamp, o.timestamp) + .append(tzo, o.tzo) + .append(uri, o.uri) + ; + }); + } + /** * Returns a new instance of {@link Builder}. * @return Builder