From 15ab5be476a96bf138f9c40110866e6370356537 Mon Sep 17 00:00:00 2001 From: akwizgran <michael@briarproject.org> Date: Sun, 9 Dec 2012 20:29:29 +0000 Subject: [PATCH] Equals method must be symmetric and transitive. --- briar-api/src/net/sf/briar/api/ContactId.java | 10 ++++----- .../net/sf/briar/api/protocol/Transport.java | 21 +++++++++++-------- .../src/net/sf/briar/db/JdbcDatabase.java | 4 ++-- .../src/net/sf/briar/protocol/GroupImpl.java | 8 +++---- .../net/sf/briar/protocol/MessageImpl.java | 8 +++---- .../sf/briar/protocol/ProtocolWriterImpl.java | 2 +- .../src/net/sf/briar/db/TestMessage.java | 8 +++---- .../net/sf/briar/protocol/ConstantsTest.java | 4 +++- 8 files changed, 35 insertions(+), 30 deletions(-) diff --git a/briar-api/src/net/sf/briar/api/ContactId.java b/briar-api/src/net/sf/briar/api/ContactId.java index d8a9f7a388..7875f596d4 100644 --- a/briar-api/src/net/sf/briar/api/ContactId.java +++ b/briar-api/src/net/sf/briar/api/ContactId.java @@ -17,13 +17,13 @@ public class ContactId { } @Override - public boolean equals(Object o) { - if(o instanceof ContactId) return id == ((ContactId) o).id; - return false; + public int hashCode() { + return id; } @Override - public int hashCode() { - return id; + public boolean equals(Object o) { + if(o instanceof ContactId) return id == ((ContactId) o).id; + return false; } } diff --git a/briar-api/src/net/sf/briar/api/protocol/Transport.java b/briar-api/src/net/sf/briar/api/protocol/Transport.java index 707d84fa7e..4ac071160b 100644 --- a/briar-api/src/net/sf/briar/api/protocol/Transport.java +++ b/briar-api/src/net/sf/briar/api/protocol/Transport.java @@ -3,37 +3,40 @@ package net.sf.briar.api.protocol; import java.util.Map; import java.util.TreeMap; -public class Transport extends TreeMap<String, String> { - - private static final long serialVersionUID = 4900420175715429560L; +public class Transport { private final TransportId id; + private final TreeMap<String, String> properties; public Transport(TransportId id, Map<String, String> p) { - super(p); this.id = id; + properties = new TreeMap<String, String>(p); } public Transport(TransportId id) { - super(); this.id = id; + properties = new TreeMap<String, String>(); } public TransportId getId() { return id; } - @Override - public int hashCode() { - return id.hashCode(); + public Map<String, String> getProperties() { + return properties; } @Override public boolean equals(Object o) { if(o instanceof Transport) { Transport t = (Transport) o; - return id.equals(t.id) && super.equals(o); + return id.equals(t.id) && properties.equals(t.properties); } return false; } + + @Override + public int hashCode() { + return id.hashCode(); + } } diff --git a/briar-core/src/net/sf/briar/db/JdbcDatabase.java b/briar-core/src/net/sf/briar/db/JdbcDatabase.java index 49a336cabb..f44accc83a 100644 --- a/briar-core/src/net/sf/briar/db/JdbcDatabase.java +++ b/briar-core/src/net/sf/briar/db/JdbcDatabase.java @@ -1207,7 +1207,7 @@ abstract class JdbcDatabase implements Database<Connection> { t = new Transport(id); transports.add(t); } - t.put(rs.getString(2), rs.getString(3)); + t.getProperties().put(rs.getString(2), rs.getString(3)); lastId = id; } rs.close(); @@ -2763,7 +2763,7 @@ abstract class JdbcDatabase implements Database<Connection> { int batchSize = 0; for(Transport t : transports) { ps.setBytes(2, t.getId().getBytes()); - for(Entry<String, String> e1 : t.entrySet()) { + for(Entry<String, String> e1 : t.getProperties().entrySet()) { ps.setString(3, e1.getKey()); ps.setString(4, e1.getValue()); ps.addBatch(); diff --git a/briar-core/src/net/sf/briar/protocol/GroupImpl.java b/briar-core/src/net/sf/briar/protocol/GroupImpl.java index 88f63622d8..d3a84ba5ac 100644 --- a/briar-core/src/net/sf/briar/protocol/GroupImpl.java +++ b/briar-core/src/net/sf/briar/protocol/GroupImpl.java @@ -28,12 +28,12 @@ class GroupImpl implements Group { } @Override - public boolean equals(Object o) { - return o instanceof Group && id.equals(((Group) o).getId()); + public int hashCode() { + return id.hashCode(); } @Override - public int hashCode() { - return id.hashCode(); + public boolean equals(Object o) { + return o instanceof Group && id.equals(((Group) o).getId()); } } diff --git a/briar-core/src/net/sf/briar/protocol/MessageImpl.java b/briar-core/src/net/sf/briar/protocol/MessageImpl.java index 505f9e6218..3b6c739c23 100644 --- a/briar-core/src/net/sf/briar/protocol/MessageImpl.java +++ b/briar-core/src/net/sf/briar/protocol/MessageImpl.java @@ -72,12 +72,12 @@ class MessageImpl implements Message { } @Override - public boolean equals(Object o) { - return o instanceof Message && id.equals(((Message) o).getId()); + public int hashCode() { + return id.hashCode(); } @Override - public int hashCode() { - return id.hashCode(); + public boolean equals(Object o) { + return o instanceof Message && id.equals(((Message) o).getId()); } } diff --git a/briar-core/src/net/sf/briar/protocol/ProtocolWriterImpl.java b/briar-core/src/net/sf/briar/protocol/ProtocolWriterImpl.java index d7bebf4e2e..fd100d561e 100644 --- a/briar-core/src/net/sf/briar/protocol/ProtocolWriterImpl.java +++ b/briar-core/src/net/sf/briar/protocol/ProtocolWriterImpl.java @@ -148,7 +148,7 @@ class ProtocolWriterImpl implements ProtocolWriter { for(Transport p : t.getTransports()) { w.writeStructId(Types.TRANSPORT); w.writeBytes(p.getId().getBytes()); - w.writeMap(p); + w.writeMap(p.getProperties()); } w.writeListEnd(); w.writeInt64(t.getTimestamp()); diff --git a/briar-tests/src/net/sf/briar/db/TestMessage.java b/briar-tests/src/net/sf/briar/db/TestMessage.java index 4dbe7584a5..bf25200e04 100644 --- a/briar-tests/src/net/sf/briar/db/TestMessage.java +++ b/briar-tests/src/net/sf/briar/db/TestMessage.java @@ -78,12 +78,12 @@ class TestMessage implements Message { } @Override - public boolean equals(Object o) { - return o instanceof Message && id.equals(((Message)o).getId()); + public int hashCode() { + return id.hashCode(); } @Override - public int hashCode() { - return id.hashCode(); + public boolean equals(Object o) { + return o instanceof Message && id.equals(((Message)o).getId()); } } diff --git a/briar-tests/src/net/sf/briar/protocol/ConstantsTest.java b/briar-tests/src/net/sf/briar/protocol/ConstantsTest.java index e4c6af3a1a..5a438af495 100644 --- a/briar-tests/src/net/sf/briar/protocol/ConstantsTest.java +++ b/briar-tests/src/net/sf/briar/protocol/ConstantsTest.java @@ -15,6 +15,7 @@ import java.security.PrivateKey; import java.util.ArrayList; import java.util.Collection; import java.util.Collections; +import java.util.Map; import net.sf.briar.BriarTestCase; import net.sf.briar.TestUtils; @@ -158,10 +159,11 @@ public class ConstantsTest extends BriarTestCase { for(int i = 0; i < MAX_TRANSPORTS; i++) { TransportId id = new TransportId(TestUtils.getRandomId()); Transport t = new Transport(id); + Map<String, String> m = t.getProperties(); for(int j = 0; j < MAX_PROPERTIES_PER_TRANSPORT; j++) { String key = createRandomString(MAX_PROPERTY_LENGTH); String value = createRandomString(MAX_PROPERTY_LENGTH); - t.put(key, value); + m.put(key, value); } transports.add(t); } -- GitLab