diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/Nameable.java b/bramble-api/src/main/java/org/briarproject/bramble/api/Nameable.java similarity index 74% rename from briar-api/src/main/java/org/briarproject/briar/api/messaging/Nameable.java rename to bramble-api/src/main/java/org/briarproject/bramble/api/Nameable.java index e61c676f5..8e6ad4981 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/Nameable.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/Nameable.java @@ -1,4 +1,4 @@ -package org.briarproject.briar.api.messaging; +package org.briarproject.bramble.api; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/Author.java b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/Author.java index 8a3682e6c..0df402c28 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/identity/Author.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/identity/Author.java @@ -1,5 +1,6 @@ package org.briarproject.bramble.api.identity; +import org.briarproject.bramble.api.Nameable; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.util.StringUtils; @@ -13,7 +14,7 @@ import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_PUBLIC_K */ @Immutable @NotNullByDefault -public class Author { +public class Author implements Nameable { public enum Status { NONE, ANONYMOUS, UNKNOWN, UNVERIFIED, VERIFIED, OURSELVES diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItem.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItem.java index f650ac029..69ad16bd2 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItem.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationItem.java @@ -183,7 +183,7 @@ abstract class ConversationItem { if (ir.wasAccepted()) { res = R.string.introduction_response_accepted_received; } else { - if (ir.getNameable().isIntroducer()) { + if (ir.isIntroducer()) { res = R.string.introduction_response_declined_received; } else { res = diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/Introduction.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/Introduction.java deleted file mode 100644 index 0384d1971..000000000 --- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/Introduction.java +++ /dev/null @@ -1,32 +0,0 @@ -package org.briarproject.briar.api.introduction; - -import org.briarproject.bramble.api.identity.Author; -import org.briarproject.bramble.api.nullsafety.NotNullByDefault; -import org.briarproject.briar.api.messaging.Nameable; - -import javax.annotation.concurrent.Immutable; - -import static org.briarproject.briar.api.introduction.Role.INTRODUCER; - -@Immutable -@NotNullByDefault -public class Introduction implements Nameable { - - private final Author introducedAuthor; - private final Role ourRole; - - public Introduction(Author introducedAuthor, Role ourRole) { - this.introducedAuthor = introducedAuthor; - this.ourRole = ourRole; - } - - @Override - public String getName() { - return introducedAuthor.getName(); - } - - public boolean isIntroducer() { - return ourRole == INTRODUCER; - } - -} diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java index a0ef758ab..91d52c255 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionRequest.java @@ -1,5 +1,6 @@ package org.briarproject.briar.api.introduction; +import org.briarproject.bramble.api.identity.Author; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; @@ -11,16 +12,16 @@ import javax.annotation.concurrent.Immutable; @Immutable @NotNullByDefault -public class IntroductionRequest extends PrivateRequest { +public class IntroductionRequest extends PrivateRequest { private final boolean contact; public IntroductionRequest(MessageId messageId, GroupId groupId, long time, boolean local, boolean sent, boolean seen, boolean read, - SessionId sessionId, Introduction introduction, - @Nullable String message, boolean answered, boolean contact) { + SessionId sessionId, Author author, @Nullable String message, + boolean answered, boolean contact) { super(messageId, groupId, time, local, sent, seen, read, sessionId, - introduction, message, answered); + author, message, answered); this.contact = contact; } diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionResponse.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionResponse.java index f52fbe38b..4a2c1eaa8 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionResponse.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionResponse.java @@ -1,5 +1,6 @@ package org.briarproject.briar.api.introduction; +import org.briarproject.bramble.api.identity.Author; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; @@ -8,15 +9,24 @@ import org.briarproject.briar.api.messaging.PrivateResponse; import javax.annotation.concurrent.Immutable; +import static org.briarproject.briar.api.introduction.Role.INTRODUCER; + @Immutable @NotNullByDefault -public class IntroductionResponse extends PrivateResponse { +public class IntroductionResponse extends PrivateResponse { + + private final Role ourRole; public IntroductionResponse(MessageId messageId, GroupId groupId, long time, boolean local, boolean sent, boolean seen, boolean read, - SessionId sessionId, Introduction introduction, boolean accepted) { + SessionId sessionId, Author author, boolean accepted, Role role) { super(messageId, groupId, time, local, sent, seen, read, sessionId, - introduction, accepted); + author, accepted); + this.ourRole = role; + } + + public boolean isIntroducer() { + return ourRole == INTRODUCER; } } diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateRequest.java index e8a98d91f..b980cea30 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateRequest.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateRequest.java @@ -1,5 +1,6 @@ package org.briarproject.briar.api.messaging; +import org.briarproject.bramble.api.Nameable; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateResponse.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateResponse.java index 60837e59c..6de25a43e 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateResponse.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateResponse.java @@ -1,5 +1,6 @@ package org.briarproject.briar.api.messaging; +import org.briarproject.bramble.api.Nameable; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; diff --git a/briar-api/src/main/java/org/briarproject/briar/api/sharing/Shareable.java b/briar-api/src/main/java/org/briarproject/briar/api/sharing/Shareable.java index a8287df20..4d43715f5 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/Shareable.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/sharing/Shareable.java @@ -2,7 +2,7 @@ package org.briarproject.briar.api.sharing; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; -import org.briarproject.briar.api.messaging.Nameable; +import org.briarproject.bramble.api.Nameable; @NotNullByDefault public interface Shareable extends Nameable { diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java index bb944f6be..cb652122c 100644 --- a/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java +++ b/briar-core/src/main/java/org/briarproject/briar/introduction/AbstractProtocolEngine.java @@ -20,7 +20,6 @@ import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.api.system.Clock; import org.briarproject.briar.api.client.MessageTracker; import org.briarproject.briar.api.client.SessionId; -import org.briarproject.briar.api.introduction.Introduction; import org.briarproject.briar.api.introduction.IntroductionResponse; import org.briarproject.briar.api.introduction.event.IntroductionResponseReceivedEvent; @@ -148,14 +147,13 @@ abstract class AbstractProtocolEngine void broadcastIntroductionResponseReceivedEvent(Transaction txn, Session s, AuthorId sender, Author otherAuthor, AbstractIntroductionMessage m) throws DbException { - Introduction introduction = new Introduction(otherAuthor, s.getRole()); AuthorId localAuthorId = identityManager.getLocalAuthor(txn).getId(); Contact c = contactManager.getContact(txn, sender, localAuthorId); IntroductionResponse response = new IntroductionResponse(m.getMessageId(), m.getGroupId(), m.getTimestamp(), false, false, false, false, - s.getSessionId(), introduction, - m instanceof AcceptMessage); + s.getSessionId(), otherAuthor, + m instanceof AcceptMessage, s.getRole()); IntroductionResponseReceivedEvent e = new IntroductionResponseReceivedEvent(response, c.getId()); txn.attach(e); diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java index 4f9997de9..a0a871ac8 100644 --- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java +++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroduceeProtocolEngine.java @@ -26,7 +26,6 @@ import org.briarproject.bramble.api.transport.KeySetId; import org.briarproject.briar.api.client.MessageTracker; import org.briarproject.briar.api.client.ProtocolStateException; import org.briarproject.briar.api.client.SessionId; -import org.briarproject.briar.api.introduction.Introduction; import org.briarproject.briar.api.introduction.IntroductionRequest; import org.briarproject.briar.api.introduction.event.IntroductionAbortedEvent; import org.briarproject.briar.api.introduction.event.IntroductionRequestReceivedEvent; @@ -255,11 +254,9 @@ class IntroduceeProtocolEngine localAuthor.getId()); boolean contactExists = contactManager .contactExists(txn, m.getAuthor().getId(), localAuthor.getId()); - Introduction introduction = - new Introduction(m.getAuthor(), s.getRole()); IntroductionRequest request = new IntroductionRequest(m.getMessageId(), m.getGroupId(), m.getTimestamp(), false, false, false, false, - s.getSessionId(), introduction, m.getMessage(), false, + s.getSessionId(), m.getAuthor(), m.getMessage(), false, contactExists); IntroductionRequestReceivedEvent e = new IntroductionRequestReceivedEvent(request, c.getId()); diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java index 5b3c0d6d2..7b27091fb 100644 --- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionManagerImpl.java @@ -29,7 +29,6 @@ import org.briarproject.bramble.api.versioning.ClientVersioningManager; import org.briarproject.bramble.api.versioning.ClientVersioningManager.ClientVersioningHook; import org.briarproject.briar.api.client.MessageTracker; import org.briarproject.briar.api.client.SessionId; -import org.briarproject.briar.api.introduction.Introduction; import org.briarproject.briar.api.introduction.IntroductionManager; import org.briarproject.briar.api.introduction.IntroductionRequest; import org.briarproject.briar.api.introduction.IntroductionResponse; @@ -467,10 +466,9 @@ class IntroductionManagerImpl extends ConversationClientImpl boolean contactExists = contactManager .contactExists(txn, rm.getAuthor().getId(), localAuthor.getId()); - Introduction introduction = new Introduction(author, role); return new IntroductionRequest(m, contactGroupId, meta.getTimestamp(), meta.isLocal(), status.isSent(), status.isSeen(), meta.isRead(), - sessionId, introduction, message, !meta.isAvailableToAnswer(), + sessionId, author, message, !meta.isAvailableToAnswer(), contactExists); } @@ -495,10 +493,9 @@ class IntroductionManagerImpl extends ConversationClientImpl sessionId = session.getSessionId(); author = session.getRemote().author; } else throw new AssertionError(); - Introduction introduction = new Introduction(author, role); return new IntroductionResponse(m, contactGroupId, meta.getTimestamp(), meta.isLocal(), status.isSent(), status.isSeen(), meta.isRead(), - sessionId, introduction, accept); + sessionId, author, accept, role); } private void removeSessionWithIntroducer(Transaction txn, diff --git a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTest.java index c2090e10d..ebb377e25 100644 --- a/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTest.java +++ b/briar-core/src/test/java/org/briarproject/briar/introduction/IntroductionIntegrationTest.java @@ -24,16 +24,14 @@ import org.briarproject.bramble.api.sync.MessageId; import org.briarproject.bramble.test.TestDatabaseModule; import org.briarproject.briar.api.client.ProtocolStateException; import org.briarproject.briar.api.client.SessionId; -import org.briarproject.briar.api.introduction.Introduction; import org.briarproject.briar.api.introduction.IntroductionManager; import org.briarproject.briar.api.introduction.IntroductionRequest; +import org.briarproject.briar.api.introduction.IntroductionResponse; import org.briarproject.briar.api.introduction.event.IntroductionAbortedEvent; import org.briarproject.briar.api.introduction.event.IntroductionRequestReceivedEvent; import org.briarproject.briar.api.introduction.event.IntroductionResponseReceivedEvent; import org.briarproject.briar.api.introduction.event.IntroductionSucceededEvent; import org.briarproject.briar.api.messaging.PrivateMessageHeader; -import org.briarproject.briar.api.messaging.PrivateRequest; -import org.briarproject.briar.api.messaging.PrivateResponse; import org.briarproject.briar.test.BriarIntegrationTest; import org.junit.Before; import org.junit.Test; @@ -1148,7 +1146,7 @@ public class IntroductionIntegrationTest protected volatile Event latestEvent; @SuppressWarnings("WeakerAccess") - PrivateResponse getResponse() { + IntroductionResponse getResponse() { assertTrue( latestEvent instanceof IntroductionResponseReceivedEvent); return ((IntroductionResponseReceivedEvent) latestEvent) @@ -1180,7 +1178,7 @@ public class IntroductionIntegrationTest IntroductionRequestReceivedEvent introEvent = ((IntroductionRequestReceivedEvent) e); requestReceived = true; - PrivateRequest ir = introEvent.getMessageHeader(); + IntroductionRequest ir = introEvent.getMessageHeader(); ContactId contactId = introEvent.getContactId(); sessionId = ir.getSessionId(); long time = clock.currentTimeMillis(); @@ -1217,7 +1215,7 @@ public class IntroductionIntegrationTest } } - private PrivateRequest getRequest() { + private IntroductionRequest getRequest() { assertTrue( latestEvent instanceof IntroductionRequestReceivedEvent); return ((IntroductionRequestReceivedEvent) latestEvent)