diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java index 5ab78c73c..af8aebc43 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ContactListFragment.java @@ -36,7 +36,6 @@ import org.briarproject.briar.android.fragment.BaseFragment; import org.briarproject.briar.android.keyagreement.ContactExchangeActivity; import org.briarproject.briar.android.view.BriarRecyclerView; import org.briarproject.briar.api.android.AndroidNotificationManager; -import org.briarproject.briar.api.client.BaseMessageHeader; import org.briarproject.briar.api.client.MessageTracker.GroupCount; import org.briarproject.briar.api.introduction.IntroductionRequest; import org.briarproject.briar.api.introduction.IntroductionResponse; @@ -283,7 +282,7 @@ public class ContactListFragment extends BaseFragment implements EventListener { } } - private void updateItem(ContactId c, BaseMessageHeader h) { + private void updateItem(ContactId c, PrivateMessageHeader h) { runOnUiThreadUnlessDestroyed(() -> { adapter.incrementRevision(); int position = adapter.findItemPosition(c); 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 9070c738f..4d96f88d4 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 @@ -11,7 +11,6 @@ import org.briarproject.briar.R; import org.briarproject.briar.android.contact.ConversationRequestItem.RequestType; import org.briarproject.briar.api.blog.BlogInvitationRequest; import org.briarproject.briar.api.blog.BlogInvitationResponse; -import org.briarproject.briar.api.client.BaseMessageHeader; import org.briarproject.briar.api.forum.ForumInvitationRequest; import org.briarproject.briar.api.forum.ForumInvitationResponse; import org.briarproject.briar.api.introduction.IntroductionRequest; @@ -92,7 +91,7 @@ abstract class ConversationItem { if (ir.isLocal()) { String text = ctx.getString(R.string.introduction_request_sent, contactName, ir.getName()); - return new ConversationNoticeOutItem(ir.getMessageId(), + return new ConversationNoticeOutItem(ir.getId(), ir.getGroupId(), text, ir.getMessage(), ir.getTimestamp(), ir.isSent(), ir.isSeen()); } else { @@ -109,7 +108,7 @@ abstract class ConversationItem { text = ctx.getString(R.string.introduction_request_received, contactName, ir.getName()); } - return new ConversationRequestItem(ir.getMessageId(), + return new ConversationRequestItem(ir.getId(), ir.getGroupId(), INTRODUCTION, ir.getSessionId(), text, ir.getMessage(), ir.getTimestamp(), ir.isRead(), null, ir.wasAnswered(), false); @@ -132,9 +131,8 @@ abstract class ConversationItem { R.string.introduction_response_declined_sent, ir.getName()); } - return new ConversationNoticeOutItem(ir.getMessageId(), - ir.getGroupId(), text, null, ir.getTimestamp(), ir.isSent(), - ir.isSeen()); + return new ConversationNoticeOutItem(ir.getId(), ir.getGroupId(), + text, null, ir.getTimestamp(), ir.isSent(), ir.isSeen()); } else { String text; if (ir.wasAccepted()) { @@ -152,9 +150,8 @@ abstract class ConversationItem { contactName, ir.getName()); } } - return new ConversationNoticeInItem(ir.getMessageId(), - ir.getGroupId(), text, null, ir.getTimestamp(), - ir.isRead()); + return new ConversationNoticeInItem(ir.getId(), ir.getGroupId(), + text, null, ir.getTimestamp(), ir.isRead()); } } @@ -272,12 +269,10 @@ abstract class ConversationItem { /** * This method should not be used to display the resulting ConversationItem * in the UI, but only to update list information based on the - * BaseMessageHeader. + * PrivateMessageHeader. **/ - static ConversationItem from(Context ctx, BaseMessageHeader h) { - if (h instanceof PrivateMessageHeader) { - return from((PrivateMessageHeader) h); - } else if(h instanceof IntroductionRequest) { + static ConversationItem from(Context ctx, PrivateMessageHeader h) { + if(h instanceof IntroductionRequest) { return from(ctx, "", (IntroductionRequest) h); } else if(h instanceof IntroductionResponse) { return from(ctx, "", (IntroductionResponse) h); @@ -286,7 +281,7 @@ abstract class ConversationItem { } else if(h instanceof InvitationResponse) { return from(ctx, "", (InvitationResponse) h); } else { - throw new IllegalArgumentException("Unknown message header"); + return from(h); } } diff --git a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumControllerImpl.java index bd28b4864..91d0cf596 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumControllerImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/forum/ForumControllerImpl.java @@ -88,7 +88,7 @@ class ForumControllerImpl extends (ForumInvitationResponse) f.getResponse(); if (r.getShareableId().equals(getGroupId()) && r.wasAccepted()) { LOG.info("Forum invitation was accepted"); - onForumInvitationAccepted(r.getContactId()); + onForumInvitationAccepted(f.getContactId()); } } else if (e instanceof ContactLeftShareableEvent) { ContactLeftShareableEvent c = (ContactLeftShareableEvent) e; diff --git a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupControllerImpl.java b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupControllerImpl.java index 97a64c1a7..cc825d3b1 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupControllerImpl.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/privategroup/conversation/GroupControllerImpl.java @@ -103,7 +103,7 @@ class GroupControllerImpl extends (GroupInvitationResponse) g.getResponse(); if (getGroupId().equals(r.getShareableId()) && r.wasAccepted()) { listener.runOnUiThreadUnlessDestroyed( - () -> listener.onInvitationAccepted(r.getContactId())); + () -> listener.onInvitationAccepted(g.getContactId())); } } else if (e instanceof GroupDissolvedEvent) { GroupDissolvedEvent g = (GroupDissolvedEvent) e; diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationRequest.java index 77dddbbe0..bdf3f1e6c 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationRequest.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationRequest.java @@ -17,7 +17,7 @@ public class BlogInvitationRequest extends InvitationRequest { SessionId sessionId, Blog blog, ContactId contactId, @Nullable String message, boolean available, boolean canBeOpened) { super(id, groupId, time, local, sent, seen, read, sessionId, blog, - contactId, message, available, canBeOpened); + message, available, canBeOpened); } public String getBlogAuthorName() { diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationResponse.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationResponse.java index e49142300..3183a37b0 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationResponse.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/BlogInvitationResponse.java @@ -1,6 +1,5 @@ package org.briarproject.briar.api.blog; -import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; @@ -12,10 +11,9 @@ public class BlogInvitationResponse extends InvitationResponse { public BlogInvitationResponse(MessageId id, GroupId groupId, long time, boolean local, boolean sent, boolean seen, boolean read, - SessionId sessionId, GroupId blogId, ContactId contactId, - boolean accept) { + SessionId sessionId, GroupId blogId, boolean accept) { super(id, groupId, time, local, sent, seen, read, sessionId, blogId, - contactId, accept); + accept); } } diff --git a/briar-api/src/main/java/org/briarproject/briar/api/client/BaseMessageHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/client/BaseMessageHeader.java deleted file mode 100644 index 8cbbceb32..000000000 --- a/briar-api/src/main/java/org/briarproject/briar/api/client/BaseMessageHeader.java +++ /dev/null @@ -1,58 +0,0 @@ -package org.briarproject.briar.api.client; - -import org.briarproject.bramble.api.nullsafety.NotNullByDefault; -import org.briarproject.bramble.api.sync.GroupId; -import org.briarproject.bramble.api.sync.MessageId; - -import javax.annotation.concurrent.Immutable; - -@Immutable -@NotNullByDefault -public abstract class BaseMessageHeader { - - private final MessageId id; - private final GroupId groupId; - private final long timestamp; - private final boolean local, sent, seen, read; - - public BaseMessageHeader(MessageId id, GroupId groupId, long timestamp, - boolean local, boolean sent, boolean seen, boolean read) { - - this.id = id; - this.groupId = groupId; - this.timestamp = timestamp; - this.local = local; - this.sent = sent; - this.seen = seen; - this.read = read; - } - - public MessageId getId() { - return id; - } - - public GroupId getGroupId() { - return groupId; - } - - public long getTimestamp() { - return timestamp; - } - - public boolean isLocal() { - return local; - } - - public boolean isSent() { - return sent; - } - - public boolean isSeen() { - return seen; - } - - public boolean isRead() { - return read; - } - -} diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationRequest.java index 2d23ab0e8..adf68302e 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationRequest.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationRequest.java @@ -19,7 +19,7 @@ public class ForumInvitationRequest extends InvitationRequest { SessionId sessionId, Forum forum, ContactId contactId, @Nullable String message, boolean available, boolean canBeOpened) { super(id, groupId, time, local, sent, seen, read, sessionId, forum, - contactId, message, available, canBeOpened); + message, available, canBeOpened); } public String getForumName() { diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationResponse.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationResponse.java index 48f03ce85..9c44bba71 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationResponse.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/ForumInvitationResponse.java @@ -1,6 +1,5 @@ package org.briarproject.briar.api.forum; -import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; @@ -15,10 +14,9 @@ public class ForumInvitationResponse extends InvitationResponse { public ForumInvitationResponse(MessageId id, GroupId groupId, long time, boolean local, boolean sent, boolean seen, boolean read, - SessionId sessionId, GroupId forumId, ContactId contactId, - boolean accept) { + SessionId sessionId, GroupId forumId, boolean accept) { super(id, groupId, time, local, sent, seen, read, sessionId, forumId, - contactId, accept); + accept); } } diff --git a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionMessage.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionMessage.java index 009487fa2..31cc5ac44 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionMessage.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionMessage.java @@ -3,41 +3,26 @@ package org.briarproject.briar.api.introduction; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; -import org.briarproject.briar.api.client.BaseMessageHeader; import org.briarproject.briar.api.client.SessionId; +import org.briarproject.briar.api.messaging.PrivateMessageHeader; import javax.annotation.concurrent.Immutable; -import static org.briarproject.briar.api.introduction.Role.INTRODUCER; - @Immutable @NotNullByDefault -public class IntroductionMessage extends BaseMessageHeader { +public abstract class IntroductionMessage extends PrivateMessageHeader { private final SessionId sessionId; - private final MessageId messageId; - private final Role role; IntroductionMessage(SessionId sessionId, MessageId messageId, - GroupId groupId, Role role, long time, boolean local, boolean sent, + GroupId groupId, long time, boolean local, boolean sent, boolean seen, boolean read) { - super(messageId, groupId, time, local, sent, seen, read); this.sessionId = sessionId; - this.messageId = messageId; - this.role = role; } public SessionId getSessionId() { return sessionId; } - public MessageId getMessageId() { - return messageId; - } - - public boolean isIntroducer() { - return role == 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 b2a804bd8..718864c89 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; @@ -10,25 +11,28 @@ import javax.annotation.concurrent.Immutable; @Immutable @NotNullByDefault -public class IntroductionRequest extends IntroductionResponse { +public class IntroductionRequest extends IntroductionMessage { + private final Author introducedAuthor; @Nullable private final String message; private final boolean answered, exists; public IntroductionRequest(SessionId sessionId, MessageId messageId, - GroupId groupId, Role role, long time, boolean local, boolean sent, - boolean seen, boolean read, String name, boolean accepted, + GroupId groupId, long time, boolean local, boolean sent, + boolean seen, boolean read, Author introducedAuthor, @Nullable String message, boolean answered, boolean exists) { - - super(sessionId, messageId, groupId, role, time, local, sent, seen, - read, name, accepted); - + super(sessionId, messageId, groupId, time, local, sent, seen, read); + this.introducedAuthor = introducedAuthor; this.message = message; this.answered = answered; this.exists = exists; } + public String getName() { + return introducedAuthor.getName(); + } + @Nullable public String getMessage() { return message; 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 816135d43..812d548c7 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 @@ -7,20 +7,22 @@ import org.briarproject.briar.api.client.SessionId; import javax.annotation.concurrent.Immutable; +import static org.briarproject.briar.api.introduction.Role.INTRODUCER; + @Immutable @NotNullByDefault public class IntroductionResponse extends IntroductionMessage { private final String name; + private final Role role; private final boolean accepted; public IntroductionResponse(SessionId sessionId, MessageId messageId, GroupId groupId, Role role, long time, boolean local, boolean sent, boolean seen, boolean read, String name, boolean accepted) { - super(sessionId, messageId, groupId, role, time, local, sent, seen, - read); - + super(sessionId, messageId, groupId, time, local, sent, seen, read); this.name = name; + this.role = role; this.accepted = accepted; } @@ -28,6 +30,10 @@ public class IntroductionResponse extends IntroductionMessage { return name; } + public boolean isIntroducer() { + return role == INTRODUCER; + } + public boolean wasAccepted() { return accepted; } diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageHeader.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageHeader.java index 9caf3bd56..619f0303b 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageHeader.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateMessageHeader.java @@ -3,18 +3,55 @@ package org.briarproject.briar.api.messaging; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; -import org.briarproject.briar.api.client.BaseMessageHeader; import javax.annotation.concurrent.Immutable; @Immutable @NotNullByDefault -public class PrivateMessageHeader extends BaseMessageHeader { +public class PrivateMessageHeader { + + private final MessageId id; + private final GroupId groupId; + private final long timestamp; + private final boolean local, sent, seen, read; public PrivateMessageHeader(MessageId id, GroupId groupId, long timestamp, boolean local, boolean read, boolean sent, boolean seen) { + this.id = id; + this.groupId = groupId; + this.timestamp = timestamp; + this.local = local; + this.sent = sent; + this.seen = seen; + this.read = read; + } - super(id, groupId, timestamp, local, sent, seen, read); + public MessageId getId() { + return id; + } + + public GroupId getGroupId() { + return groupId; + } + + public long getTimestamp() { + return timestamp; + } + + public boolean isLocal() { + return local; + } + + public boolean isSent() { + return sent; + } + + public boolean isSeen() { + return seen; + } + + public boolean isRead() { + return read; } } diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationRequest.java index d447ae8ef..e69ab0c3d 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationRequest.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationRequest.java @@ -20,7 +20,7 @@ public class GroupInvitationRequest extends InvitationRequest { SessionId sessionId, PrivateGroup shareable, ContactId contactId, @Nullable String message, boolean available, boolean canBeOpened) { super(id, groupId, time, local, sent, seen, read, sessionId, shareable, - contactId, message, available, canBeOpened); + message, available, canBeOpened); } } diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationResponse.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationResponse.java index b2e7d54b5..8531f502d 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationResponse.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationResponse.java @@ -1,6 +1,5 @@ package org.briarproject.briar.api.privategroup.invitation; -import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; @@ -15,10 +14,9 @@ public class GroupInvitationResponse extends InvitationResponse { public GroupInvitationResponse(MessageId id, GroupId groupId, long time, boolean local, boolean sent, boolean seen, boolean read, - SessionId sessionId, GroupId shareableId, ContactId contactId, - boolean accept) { + SessionId sessionId, GroupId shareableId, boolean accept) { super(id, groupId, time, local, sent, seen, read, sessionId, - shareableId, contactId, accept); + shareableId, accept); } } diff --git a/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationMessage.java b/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationMessage.java index df93ebdfa..0af27b35b 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationMessage.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationMessage.java @@ -1,36 +1,28 @@ package org.briarproject.briar.api.sharing; -import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; -import org.briarproject.briar.api.client.BaseMessageHeader; import org.briarproject.briar.api.client.SessionId; +import org.briarproject.briar.api.messaging.PrivateMessageHeader; import javax.annotation.concurrent.Immutable; @Immutable @NotNullByDefault -public class InvitationMessage extends BaseMessageHeader { +public abstract class InvitationMessage extends PrivateMessageHeader { private final SessionId sessionId; - private final ContactId contactId; public InvitationMessage(MessageId id, GroupId groupId, long time, boolean local, boolean sent, boolean seen, boolean read, - SessionId sessionId, ContactId contactId) { - + SessionId sessionId) { super(id, groupId, time, local, sent, seen, read); this.sessionId = sessionId; - this.contactId = contactId; } public SessionId getSessionId() { return sessionId; } - public ContactId getContactId() { - return contactId; - } - } diff --git a/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationRequest.java b/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationRequest.java index c5239310d..cb32a619e 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationRequest.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationRequest.java @@ -1,6 +1,5 @@ package org.briarproject.briar.api.sharing; -import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; @@ -11,7 +10,8 @@ import javax.annotation.concurrent.Immutable; @Immutable @NotNullByDefault -public class InvitationRequest extends InvitationMessage { +public abstract class InvitationRequest + extends InvitationMessage { private final S shareable; @Nullable @@ -20,9 +20,9 @@ public class InvitationRequest extends InvitationMessage { public InvitationRequest(MessageId id, GroupId groupId, long time, boolean local, boolean sent, boolean seen, boolean read, - SessionId sessionId, S shareable, ContactId contactId, + SessionId sessionId, S shareable, @Nullable String message, boolean available, boolean canBeOpened) { - super(id, groupId, time, local, sent, seen, read, sessionId, contactId); + super(id, groupId, time, local, sent, seen, read, sessionId); this.shareable = shareable; this.message = message; this.available = available; diff --git a/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationResponse.java b/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationResponse.java index 517b6068e..58b7d5390 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationResponse.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationResponse.java @@ -1,6 +1,5 @@ package org.briarproject.briar.api.sharing; -import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; @@ -10,7 +9,7 @@ import javax.annotation.concurrent.Immutable; @Immutable @NotNullByDefault -public class InvitationResponse extends InvitationMessage { +public abstract class InvitationResponse extends InvitationMessage { private final GroupId shareableId; private final boolean accept; @@ -18,8 +17,8 @@ public class InvitationResponse extends InvitationMessage { public InvitationResponse(MessageId id, GroupId groupId, long time, boolean local, boolean sent, boolean seen, boolean read, SessionId sessionId, GroupId shareableId, - ContactId contactId, boolean accept) { - super(id, groupId, time, local, sent, seen, read, sessionId, contactId); + boolean accept) { + super(id, groupId, time, local, sent, seen, read, sessionId); this.shareableId = shareableId; this.accept = accept; } 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 409e4ba21..dad36908d 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 @@ -1,7 +1,6 @@ package org.briarproject.briar.api.sharing; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; -import org.briarproject.bramble.api.sync.Group; import org.briarproject.bramble.api.sync.GroupId; @NotNullByDefault @@ -9,8 +8,6 @@ public interface Shareable { GroupId getId(); - Group getGroup(); - String getName(); } 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 6bdaea9d2..80fc87e8b 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 @@ -41,7 +41,6 @@ import javax.inject.Inject; import static java.util.logging.Level.WARNING; import static org.briarproject.bramble.util.LogUtils.logException; -import static org.briarproject.briar.api.introduction.Role.INTRODUCEE; import static org.briarproject.briar.introduction.IntroduceeState.AWAIT_AUTH; import static org.briarproject.briar.introduction.IntroduceeState.AWAIT_RESPONSES; import static org.briarproject.briar.introduction.IntroduceeState.LOCAL_ACCEPTED; @@ -255,11 +254,10 @@ class IntroduceeProtocolEngine localAuthor.getId()); boolean contactExists = contactManager .contactExists(txn, m.getAuthor().getId(), localAuthor.getId()); - IntroductionRequest request = - new IntroductionRequest(s.getSessionId(), m.getMessageId(), - m.getGroupId(), INTRODUCEE, m.getTimestamp(), false, - false, false, false, m.getAuthor().getName(), false, - m.getMessage(), false, contactExists); + IntroductionRequest request = new IntroductionRequest(s.getSessionId(), + m.getMessageId(), m.getGroupId(), m.getTimestamp(), false, + false, false, false, m.getAuthor(), m.getMessage(), false, + contactExists); IntroductionRequestReceivedEvent e = new IntroductionRequestReceivedEvent(c.getId(), request); txn.attach(e); 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 b6a56f709..268efb2b1 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 @@ -472,10 +472,9 @@ class IntroductionManagerImpl extends ConversationClientImpl localAuthor.getId()); return new IntroductionRequest(sessionId, m, contactGroupId, - role, meta.getTimestamp(), meta.isLocal(), - status.isSent(), status.isSeen(), meta.isRead(), - author.getName(), false, message, !meta.isAvailableToAnswer(), - contactExists); + meta.getTimestamp(), meta.isLocal(), status.isSent(), + status.isSeen(), meta.isRead(), author, message, + !meta.isAvailableToAnswer(), contactExists); } private IntroductionResponse parseInvitationResponse(GroupId contactGroupId, diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngine.java index d043fbad2..057c3420f 100644 --- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngine.java +++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/CreatorProtocolEngine.java @@ -258,6 +258,6 @@ class CreatorProtocolEngine extends AbstractProtocolEngine { SessionId sessionId = new SessionId(m.getPrivateGroupId().getBytes()); return new GroupInvitationResponse(m.getId(), m.getContactGroupId(), m.getTimestamp(), false, false, true, false, sessionId, - m.getPrivateGroupId(), c, accept); + m.getPrivateGroupId(), accept); } } diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java index a4aef1eca..16d85f6bd 100644 --- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImpl.java @@ -434,7 +434,7 @@ class GroupInvitationManagerImpl extends ConversationClientImpl return new GroupInvitationResponse(m, contactGroupId, meta.getTimestamp(), meta.isLocal(), status.isSent(), status.isSeen(), meta.isRead(), sessionId, - meta.getPrivateGroupId(), c, accept); + meta.getPrivateGroupId(), accept); } @Override diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogInvitationFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogInvitationFactoryImpl.java index 0162f08de..c7472a145 100644 --- a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogInvitationFactoryImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogInvitationFactoryImpl.java @@ -30,11 +30,10 @@ public class BlogInvitationFactoryImpl @Override public BlogInvitationResponse createInvitationResponse(MessageId id, GroupId contactGroupId, long time, boolean local, boolean sent, - boolean seen, boolean read, GroupId shareableId, - ContactId contactId, boolean accept) { + boolean seen, boolean read, GroupId shareableId, boolean accept) { SessionId sessionId = new SessionId(shareableId.getBytes()); return new BlogInvitationResponse(id, contactGroupId, time, local, - sent, seen, read, sessionId, shareableId, contactId, accept); + sent, seen, read, sessionId, shareableId, accept); } } diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogProtocolEngineImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogProtocolEngineImpl.java index 25e0d0e8e..72a356193 100644 --- a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogProtocolEngineImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogProtocolEngineImpl.java @@ -63,7 +63,7 @@ class BlogProtocolEngineImpl extends ProtocolEngineImpl { BlogInvitationResponse response = invitationFactory .createInvitationResponse(m.getId(), m.getContactGroupId(), m.getTimestamp(), false, false, true, false, - m.getShareableId(), contactId, true); + m.getShareableId(), true); return new BlogInvitationResponseReceivedEvent(contactId, response); } @@ -73,7 +73,7 @@ class BlogProtocolEngineImpl extends ProtocolEngineImpl { BlogInvitationResponse response = invitationFactory .createInvitationResponse(m.getId(), m.getContactGroupId(), m.getTimestamp(), false, false, true, false, - m.getShareableId(), contactId, true); + m.getShareableId(), true); return new BlogInvitationResponseReceivedEvent(contactId, response); } diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java index 5c77c7be9..26852845d 100644 --- a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java @@ -80,8 +80,8 @@ class BlogSharingManagerImpl extends SharingManagerImpl // Pre-share both blogs, if they have not been shared already try { - preShareShareable(txn, c, ourBlog); - preShareShareable(txn, c, theirBlog); + preShareGroup(txn, c, ourBlog.getGroup()); + preShareGroup(txn, c, theirBlog.getGroup()); } catch (FormatException e) { throw new DbException(e); } diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumInvitationFactoryImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumInvitationFactoryImpl.java index c59acfd00..b71083524 100644 --- a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumInvitationFactoryImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumInvitationFactoryImpl.java @@ -31,10 +31,10 @@ public class ForumInvitationFactoryImpl public ForumInvitationResponse createInvitationResponse(MessageId id, GroupId contactGroupId, long time, boolean local, boolean sent, boolean seen, boolean read, GroupId shareableId, - ContactId contactId, boolean accept) { + boolean accept) { SessionId sessionId = new SessionId(shareableId.getBytes()); return new ForumInvitationResponse(id, contactGroupId, time, local, - sent, seen, read, sessionId, shareableId, contactId, accept); + sent, seen, read, sessionId, shareableId, accept); } } diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumProtocolEngineImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumProtocolEngineImpl.java index 7b2a1c785..1b17e2f24 100644 --- a/briar-core/src/main/java/org/briarproject/briar/sharing/ForumProtocolEngineImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/sharing/ForumProtocolEngineImpl.java @@ -65,7 +65,7 @@ class ForumProtocolEngineImpl extends ProtocolEngineImpl { ForumInvitationResponse response = invitationFactory .createInvitationResponse(m.getId(), m.getContactGroupId(), m.getTimestamp(), false, false, true, false, - m.getShareableId(), contactId, true); + m.getShareableId(), true); return new ForumInvitationResponseReceivedEvent(contactId, response); } @@ -75,7 +75,7 @@ class ForumProtocolEngineImpl extends ProtocolEngineImpl { ForumInvitationResponse response = invitationFactory .createInvitationResponse(m.getId(), m.getContactGroupId(), m.getTimestamp(), false, false, true, false, - m.getShareableId(), contactId, true); + m.getShareableId(), true); return new ForumInvitationResponseReceivedEvent(contactId, response); } diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/InvitationFactory.java b/briar-core/src/main/java/org/briarproject/briar/sharing/InvitationFactory.java index ef473ca7b..3b990b247 100644 --- a/briar-core/src/main/java/org/briarproject/briar/sharing/InvitationFactory.java +++ b/briar-core/src/main/java/org/briarproject/briar/sharing/InvitationFactory.java @@ -16,6 +16,6 @@ public interface InvitationFactory } /** - * Adds the given Shareable and initializes a session between us + * Adds the given Group and initializes a session between us * and the Contact c in state SHARING. * If a session already exists, this does nothing. */ - void preShareShareable(Transaction txn, Contact c, S shareable) + void preShareGroup(Transaction txn, Contact c, Group g) throws DbException, FormatException { // Return if a session already exists with the contact GroupId contactGroupId = getContactGroup(c).getId(); StoredSession existingSession = getSession(txn, contactGroupId, - getSessionId(shareable.getId())); + getSessionId(g.getId())); if (existingSession != null) return; - // Add the shareable - db.addGroup(txn, shareable.getGroup()); + // Add the shareable's group + db.addGroup(txn, g); // Apply the client's visibility Visibility client = clientVersioningManager.getClientVisibility(txn, c.getId(), getShareableClientId(), getShareableMajorVersion()); - db.setGroupVisibility(txn, c.getId(), shareable.getId(), client); + db.setGroupVisibility(txn, c.getId(), g.getId(), client); // Initialize session in sharing state - Session session = new Session(SHARING, contactGroupId, - shareable.getId(), null, null, 0, 0); + Session session = new Session(SHARING, contactGroupId, g.getId(), + null, null, 0, 0); MessageId storageId = createStorageId(txn, contactGroupId); storeSession(txn, storageId, session); } @@ -343,11 +343,11 @@ abstract class SharingManagerImpl parseInvitationRequest(txn, c, m, meta, status)); } else if (type == ACCEPT) { messages.add( - parseInvitationResponse(c, contactGroupId, m, meta, + parseInvitationResponse(contactGroupId, m, meta, status, true)); } else if (type == DECLINE) { messages.add( - parseInvitationResponse(c, contactGroupId, m, meta, + parseInvitationResponse(contactGroupId, m, meta, status, false)); } } @@ -374,13 +374,12 @@ abstract class SharingManagerImpl meta.isAvailableToAnswer(), canBeOpened); } - private InvitationResponse parseInvitationResponse(ContactId c, - GroupId contactGroupId, MessageId m, MessageMetadata meta, - MessageStatus status, boolean accept) - throws DbException, FormatException { + private InvitationResponse parseInvitationResponse(GroupId contactGroupId, + MessageId m, MessageMetadata meta, MessageStatus status, + boolean accept) { return invitationFactory.createInvitationResponse(m, contactGroupId, meta.getTimestamp(), meta.isLocal(), status.isSent(), - status.isSeen(), meta.isRead(), meta.getShareableId(), c, + status.isSeen(), meta.isRead(), meta.getShareableId(), accept); } diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationIntegrationTest.java index 66a0bdb03..ffdb8e836 100644 --- a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationIntegrationTest.java +++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationIntegrationTest.java @@ -100,7 +100,6 @@ public class GroupInvitationIntegrationTest assertEquals(msg, request.getMessage()); assertEquals(author0, request.getShareable().getCreator()); assertEquals(timestamp, request.getTimestamp()); - assertEquals(contactId0From1, request.getContactId()); assertEquals(privateGroup0.getName(), request.getShareable().getName()); assertFalse(request.isLocal()); assertFalse(request.isRead()); @@ -126,7 +125,6 @@ public class GroupInvitationIntegrationTest if (m instanceof GroupInvitationResponse) { foundResponse = true; InvitationResponse response = (GroupInvitationResponse) m; - assertEquals(contactId0From1, response.getContactId()); assertTrue(response.isLocal()); assertFalse(response.wasAccepted()); } @@ -143,7 +141,6 @@ public class GroupInvitationIntegrationTest if (m instanceof GroupInvitationResponse) { foundResponse = true; InvitationResponse response = (GroupInvitationResponse) m; - assertEquals(contactId0From1, response.getContactId()); assertFalse(response.isLocal()); assertFalse(response.wasAccepted()); } diff --git a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImplTest.java b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImplTest.java index 328347b4d..79217f566 100644 --- a/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImplTest.java +++ b/briar-core/src/test/java/org/briarproject/briar/privategroup/invitation/GroupInvitationManagerImplTest.java @@ -706,7 +706,6 @@ public class GroupInvitationManagerImplTest extends BrambleMockTestCase { assertEquals(2, messages.size()); for (InvitationMessage m : messages) { assertEquals(contactGroup.getId(), m.getGroupId()); - assertEquals(contactId, m.getContactId()); if (m.getId().equals(message.getId())) { assertTrue(m instanceof GroupInvitationRequest); assertEquals(time1, m.getTimestamp()); diff --git a/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java index 1fbc64387..48992747f 100644 --- a/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java +++ b/briar-core/src/test/java/org/briarproject/briar/sharing/BlogSharingIntegrationTest.java @@ -153,18 +153,14 @@ public class BlogSharingIntegrationTest // check other things are alright with the message for (InvitationMessage m : list) { if (m instanceof BlogInvitationRequest) { - BlogInvitationRequest invitation = - (BlogInvitationRequest) m; + BlogInvitationRequest invitation = (BlogInvitationRequest) m; assertFalse(invitation.isAvailable()); assertEquals(blog2.getAuthor().getName(), invitation.getBlogAuthorName()); assertFalse(invitation.getShareable().isRssFeed()); - assertEquals(contactId1From0, invitation.getContactId()); assertEquals("Hi!", invitation.getMessage()); } else { - BlogInvitationResponse response = - (BlogInvitationResponse) m; - assertEquals(contactId0From1, response.getContactId()); + BlogInvitationResponse response = (BlogInvitationResponse) m; assertTrue(response.wasAccepted()); assertTrue(response.isLocal()); } @@ -228,18 +224,14 @@ public class BlogSharingIntegrationTest // check other things are alright with the message for (InvitationMessage m : list) { if (m instanceof BlogInvitationRequest) { - BlogInvitationRequest invitation = - (BlogInvitationRequest) m; + BlogInvitationRequest invitation = (BlogInvitationRequest) m; assertFalse(invitation.isAvailable()); assertEquals(rssBlog.getAuthor().getName(), invitation.getBlogAuthorName()); assertTrue(invitation.getShareable().isRssFeed()); - assertEquals(contactId1From0, invitation.getContactId()); assertEquals("Hi!", invitation.getMessage()); } else { - BlogInvitationResponse response = - (BlogInvitationResponse) m; - assertEquals(contactId0From1, response.getContactId()); + BlogInvitationResponse response = (BlogInvitationResponse) m; assertTrue(response.wasAccepted()); assertTrue(response.isLocal()); } @@ -291,17 +283,13 @@ public class BlogSharingIntegrationTest // check things are alright with the message for (InvitationMessage m : list) { if (m instanceof BlogInvitationRequest) { - BlogInvitationRequest invitation = - (BlogInvitationRequest) m; + BlogInvitationRequest invitation = (BlogInvitationRequest) m; assertFalse(invitation.isAvailable()); assertEquals(blog2.getAuthor().getName(), invitation.getBlogAuthorName()); - assertEquals(contactId1From0, invitation.getContactId()); assertEquals(null, invitation.getMessage()); } else { - BlogInvitationResponse response = - (BlogInvitationResponse) m; - assertEquals(contactId0From1, response.getContactId()); + BlogInvitationResponse response = (BlogInvitationResponse) m; assertFalse(response.wasAccepted()); assertTrue(response.isLocal()); } diff --git a/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java b/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java index 2683ea715..7cb6d0bc6 100644 --- a/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java +++ b/briar-core/src/test/java/org/briarproject/briar/sharing/ForumSharingIntegrationTest.java @@ -141,13 +141,11 @@ public class ForumSharingIntegrationTest (ForumInvitationRequest) m; assertFalse(invitation.isAvailable()); assertEquals(forum0.getName(), invitation.getForumName()); - assertEquals(contactId1From0, invitation.getContactId()); assertEquals("Hi!", invitation.getMessage()); assertTrue(invitation.canBeOpened()); } else { ForumInvitationResponse response = (ForumInvitationResponse) m; - assertEquals(contactId0From1, response.getContactId()); assertTrue(response.wasAccepted()); assertTrue(response.isLocal()); } @@ -196,17 +194,13 @@ public class ForumSharingIntegrationTest // check things are alright with the forum message for (InvitationMessage m : list) { if (m instanceof ForumInvitationRequest) { - ForumInvitationRequest invitation = - (ForumInvitationRequest) m; + ForumInvitationRequest invitation = (ForumInvitationRequest) m; assertFalse(invitation.isAvailable()); assertEquals(forum0.getName(), invitation.getForumName()); - assertEquals(contactId1From0, invitation.getContactId()); assertEquals(null, invitation.getMessage()); assertFalse(invitation.canBeOpened()); } else { - ForumInvitationResponse response = - (ForumInvitationResponse) m; - assertEquals(contactId0From1, response.getContactId()); + ForumInvitationResponse response = (ForumInvitationResponse) m; assertFalse(response.wasAccepted()); assertTrue(response.isLocal()); }