fix hashCode and equals in account
This commit is contained in:
parent
e971b77539
commit
9a0c2226c1
|
@ -1,7 +1,6 @@
|
||||||
package im.conversations.android.database.model;
|
package im.conversations.android.database.model;
|
||||||
|
|
||||||
import androidx.annotation.NonNull;
|
import androidx.annotation.NonNull;
|
||||||
import com.google.common.base.Objects;
|
|
||||||
import com.google.common.base.Preconditions;
|
import com.google.common.base.Preconditions;
|
||||||
import com.google.common.hash.Hashing;
|
import com.google.common.hash.Hashing;
|
||||||
import com.google.common.io.BaseEncoding;
|
import com.google.common.io.BaseEncoding;
|
||||||
|
@ -10,11 +9,12 @@ import com.google.common.primitives.Ints;
|
||||||
import im.conversations.android.IDs;
|
import im.conversations.android.IDs;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.Objects;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
import org.jxmpp.jid.BareJid;
|
import org.jxmpp.jid.BareJid;
|
||||||
import org.jxmpp.jid.parts.Resourcepart;
|
import org.jxmpp.jid.parts.Resourcepart;
|
||||||
|
|
||||||
public class Account {
|
public final class Account {
|
||||||
|
|
||||||
public final long id;
|
public final long id;
|
||||||
@NonNull public final BareJid address;
|
@NonNull public final BareJid address;
|
||||||
|
@ -30,21 +30,6 @@ public class Account {
|
||||||
this.randomSeed = randomSeed;
|
this.randomSeed = randomSeed;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean equals(Object o) {
|
|
||||||
if (this == o) return true;
|
|
||||||
if (o == null || getClass() != o.getClass()) return false;
|
|
||||||
if (!super.equals(o)) return false;
|
|
||||||
Account account = (Account) o;
|
|
||||||
return Arrays.equals(randomSeed, account.randomSeed);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public int hashCode() {
|
|
||||||
// careful with hashCode and equals for byte arrays
|
|
||||||
return Objects.hashCode(super.hashCode(), Arrays.hashCode(randomSeed));
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isOnion() {
|
public boolean isOnion() {
|
||||||
final String domain = address.getDomain().toString();
|
final String domain = address.getDomain().toString();
|
||||||
return domain.endsWith(".onion");
|
return domain.endsWith(".onion");
|
||||||
|
@ -85,4 +70,21 @@ public class Account {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean equals(Object o) {
|
||||||
|
if (this == o) return true;
|
||||||
|
if (o == null || getClass() != o.getClass()) return false;
|
||||||
|
Account account = (Account) o;
|
||||||
|
return id == account.id
|
||||||
|
&& address.equals(account.address)
|
||||||
|
&& Arrays.equals(randomSeed, account.randomSeed);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public int hashCode() {
|
||||||
|
int result = Objects.hash(id, address);
|
||||||
|
result = 31 * result + Arrays.hashCode(randomSeed);
|
||||||
|
return result;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,22 @@
|
||||||
|
package im.conversations.android.xmpp;
|
||||||
|
|
||||||
|
import im.conversations.android.IDs;
|
||||||
|
import im.conversations.android.database.model.Account;
|
||||||
|
import org.junit.Assert;
|
||||||
|
import org.junit.Test;
|
||||||
|
import org.jxmpp.jid.impl.JidCreate;
|
||||||
|
import org.jxmpp.stringprep.XmppStringprepException;
|
||||||
|
|
||||||
|
public class AccountTest {
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testEquals() throws XmppStringprepException {
|
||||||
|
final var seed = IDs.seed();
|
||||||
|
final var accountOne = new Account(1L, JidCreate.bareFrom("test@example.com"), seed);
|
||||||
|
final var seedCopy = new byte[seed.length];
|
||||||
|
System.arraycopy(seed, 0, seedCopy, 0, seedCopy.length);
|
||||||
|
final var accountTwo = new Account(1L, JidCreate.bareFrom("test@example.com"), seedCopy);
|
||||||
|
Assert.assertEquals(accountOne, accountTwo);
|
||||||
|
Assert.assertEquals(accountOne.hashCode(), accountTwo.hashCode());
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in a new issue