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 af8aebc43..95e8c3067 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 @@ -43,8 +43,8 @@ import org.briarproject.briar.api.introduction.event.IntroductionRequestReceived import org.briarproject.briar.api.introduction.event.IntroductionResponseReceivedEvent; import org.briarproject.briar.api.messaging.ConversationManager; import org.briarproject.briar.api.messaging.PrivateMessageHeader; +import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent; -import org.briarproject.briar.api.sharing.InvitationRequest; import org.briarproject.briar.api.sharing.InvitationResponse; import org.briarproject.briar.api.sharing.event.InvitationRequestReceivedEvent; import org.briarproject.briar.api.sharing.event.InvitationResponseReceivedEvent; @@ -271,7 +271,7 @@ public class ContactListFragment extends BaseFragment implements EventListener { LOG.info("Invitation Request received, update item"); InvitationRequestReceivedEvent m = (InvitationRequestReceivedEvent) e; - InvitationRequest ir = m.getRequest(); + PrivateRequest ir = m.getRequest(); updateItem(m.getContactId(), ir); } else if (e instanceof InvitationResponseReceivedEvent) { LOG.info("Invitation response received, updating item"); diff --git a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java index 38ed62ea7..e881c82d8 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/contact/ConversationActivity.java @@ -62,7 +62,6 @@ import org.briarproject.briar.api.client.ProtocolStateException; import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.forum.ForumSharingManager; import org.briarproject.briar.api.introduction.IntroductionManager; -import org.briarproject.briar.api.introduction.IntroductionMessage; import org.briarproject.briar.api.introduction.IntroductionRequest; import org.briarproject.briar.api.introduction.IntroductionResponse; import org.briarproject.briar.api.introduction.event.IntroductionRequestReceivedEvent; @@ -71,10 +70,9 @@ import org.briarproject.briar.api.messaging.MessagingManager; import org.briarproject.briar.api.messaging.PrivateMessage; import org.briarproject.briar.api.messaging.PrivateMessageFactory; import org.briarproject.briar.api.messaging.PrivateMessageHeader; +import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager; -import org.briarproject.briar.api.sharing.InvitationMessage; -import org.briarproject.briar.api.sharing.InvitationRequest; import org.briarproject.briar.api.sharing.InvitationResponse; import org.briarproject.briar.api.sharing.event.InvitationRequestReceivedEvent; import org.briarproject.briar.api.sharing.event.InvitationResponseReceivedEvent; @@ -344,15 +342,15 @@ public class ConversationActivity extends BriarActivity long start = now(); Collection headers = messagingManager.getMessageHeaders(contactId); - Collection introductions = + Collection introductions = introductionManager.getIntroductionMessages(contactId); - Collection forumInvitations = + Collection forumInvitations = forumSharingManager.getInvitationMessages(contactId); - Collection blogInvitations = + Collection blogInvitations = blogSharingManager.getInvitationMessages(contactId); - Collection groupInvitations = + Collection groupInvitations = groupInvitationManager.getInvitationMessages(contactId); - List invitations = new ArrayList<>( + List invitations = new ArrayList<>( forumInvitations.size() + blogInvitations.size() + groupInvitations.size()); invitations.addAll(forumInvitations); @@ -370,8 +368,8 @@ public class ConversationActivity extends BriarActivity private void displayMessages(int revision, Collection headers, - Collection introductions, - Collection invitations) { + Collection introductions, + Collection invitations) { runOnUiThreadUnlessDestroyed(() -> { if (revision == adapter.getRevision()) { adapter.incrementRevision(); @@ -397,8 +395,8 @@ public class ConversationActivity extends BriarActivity @SuppressWarnings("ConstantConditions") private List createItems( Collection headers, - Collection introductions, - Collection invitations) { + Collection introductions, + Collection invitations) { int size = headers.size() + introductions.size() + invitations.size(); List items = new ArrayList<>(size); @@ -409,7 +407,7 @@ public class ConversationActivity extends BriarActivity else item.setBody(body); items.add(item); } - for (IntroductionMessage m : introductions) { + for (PrivateMessageHeader m : introductions) { ConversationItem item; if (m instanceof IntroductionRequest) { IntroductionRequest i = (IntroductionRequest) m; @@ -420,11 +418,11 @@ public class ConversationActivity extends BriarActivity } items.add(item); } - for (InvitationMessage i : invitations) { + for (PrivateMessageHeader i : invitations) { ConversationItem item; - if (i instanceof InvitationRequest) { - InvitationRequest r = (InvitationRequest) i; - item = ConversationItem.from(this, contactName, r); + if (i instanceof PrivateRequest) { + item = ConversationItem + .from(this, contactName, (PrivateRequest) i); } else { InvitationResponse r = (InvitationResponse) i; item = ConversationItem.from(this, contactName, r); @@ -525,7 +523,7 @@ public class ConversationActivity extends BriarActivity (InvitationRequestReceivedEvent) e; if (event.getContactId().equals(contactId)) { LOG.info("Invitation received, adding..."); - InvitationRequest ir = event.getRequest(); + PrivateRequest ir = event.getRequest(); handleInvitationRequest(ir); } } else if (e instanceof InvitationResponseReceivedEvent) { @@ -586,7 +584,7 @@ public class ConversationActivity extends BriarActivity }); } - private void handleInvitationRequest(InvitationRequest m) { + private void handleInvitationRequest(PrivateRequest m) { getContactNameTask().addListener(new FutureTaskListener() { @Override public void onSuccess(String contactName) { 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 4d96f88d4..6ee0505d4 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 @@ -16,10 +16,11 @@ import org.briarproject.briar.api.forum.ForumInvitationResponse; import org.briarproject.briar.api.introduction.IntroductionRequest; import org.briarproject.briar.api.introduction.IntroductionResponse; import org.briarproject.briar.api.messaging.PrivateMessageHeader; +import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse; -import org.briarproject.briar.api.sharing.InvitationRequest; import org.briarproject.briar.api.sharing.InvitationResponse; +import org.briarproject.briar.api.sharing.Shareable; import javax.annotation.Nullable; import javax.annotation.concurrent.NotThreadSafe; @@ -86,35 +87,6 @@ abstract class ConversationItem { } } - static ConversationItem from(Context ctx, String contactName, - IntroductionRequest ir) { - if (ir.isLocal()) { - String text = ctx.getString(R.string.introduction_request_sent, - contactName, ir.getName()); - return new ConversationNoticeOutItem(ir.getId(), - ir.getGroupId(), text, ir.getMessage(), ir.getTimestamp(), - ir.isSent(), ir.isSeen()); - } else { - String text; - if (ir.wasAnswered()) { - text = ctx.getString( - R.string.introduction_request_answered_received, - contactName, ir.getName()); - } else if (ir.contactExists()){ - text = ctx.getString( - R.string.introduction_request_exists_received, - contactName, ir.getName()); - } else { - text = ctx.getString(R.string.introduction_request_received, - contactName, ir.getName()); - } - return new ConversationRequestItem(ir.getId(), - ir.getGroupId(), INTRODUCTION, ir.getSessionId(), text, - ir.getMessage(), ir.getTimestamp(), ir.isRead(), null, - ir.wasAnswered(), false); - } - } - static ConversationItem from(Context ctx, String contactName, IntroductionResponse ir) { if (ir.isLocal()) { @@ -156,21 +128,22 @@ abstract class ConversationItem { } static ConversationItem from(Context ctx, String contactName, - InvitationRequest ir) { + PrivateRequest ir) { if (ir.isLocal()) { String text; - if (ir instanceof ForumInvitationRequest) { + if (ir instanceof IntroductionRequest) { + text = ctx.getString(R.string.introduction_request_sent, + contactName, ir.getName()); + } else if (ir instanceof ForumInvitationRequest) { text = ctx.getString(R.string.forum_invitation_sent, - ((ForumInvitationRequest) ir).getForumName(), - contactName); + ir.getName(), contactName); } else if (ir instanceof BlogInvitationRequest) { text = ctx.getString(R.string.blogs_sharing_invitation_sent, - ((BlogInvitationRequest) ir).getBlogAuthorName(), - contactName); + ir.getName(), contactName); } else if (ir instanceof GroupInvitationRequest) { text = ctx.getString( R.string.groups_invitations_invitation_sent, - contactName, ir.getShareable().getName()); + contactName, ir.getName()); } else { throw new IllegalArgumentException("Unknown InvitationRequest"); } @@ -180,20 +153,36 @@ abstract class ConversationItem { } else { String text; RequestType type; - if (ir instanceof ForumInvitationRequest) { + if (ir instanceof IntroductionRequest) { + type = INTRODUCTION; + if (ir.wasAnswered()) { + text = ctx.getString( + R.string.introduction_request_answered_received, + contactName, ir.getName()); + } else if (ir.doesExist()) { + text = ctx.getString( + R.string.introduction_request_exists_received, + contactName, ir.getName()); + } else { + text = ctx.getString(R.string.introduction_request_received, + contactName, ir.getName()); + } + return new ConversationRequestItem(ir.getId(), + ir.getGroupId(), type, ir.getSessionId(), text, + ir.getMessage(), ir.getTimestamp(), ir.isRead(), null, + ir.wasAnswered(), false); + } else if (ir instanceof ForumInvitationRequest) { text = ctx.getString(R.string.forum_invitation_received, - contactName, - ((ForumInvitationRequest) ir).getForumName()); + contactName, ir.getName()); type = FORUM; } else if (ir instanceof BlogInvitationRequest) { text = ctx.getString(R.string.blogs_sharing_invitation_received, - contactName, - ((BlogInvitationRequest) ir).getBlogAuthorName()); + contactName, ir.getName()); type = BLOG; } else if (ir instanceof GroupInvitationRequest) { text = ctx.getString( R.string.groups_invitations_invitation_received, - contactName, ir.getShareable().getName()); + contactName, ir.getName()); type = GROUP; } else { throw new IllegalArgumentException("Unknown InvitationRequest"); @@ -201,8 +190,8 @@ abstract class ConversationItem { return new ConversationRequestItem(ir.getId(), ir.getGroupId(), type, ir.getSessionId(), text, ir.getMessage(), ir.getTimestamp(), ir.isRead(), - ir.getShareable().getId(), !ir.isAvailable(), - ir.canBeOpened()); + ((Shareable) ir.getObject()).getId(), !ir.wasAnswered(), + ir.doesExist()); } } @@ -276,8 +265,8 @@ abstract class ConversationItem { return from(ctx, "", (IntroductionRequest) h); } else if(h instanceof IntroductionResponse) { return from(ctx, "", (IntroductionResponse) h); - } else if(h instanceof InvitationRequest) { - return from(ctx, "", (InvitationRequest) h); + } else if(h instanceof PrivateRequest) { + return from(ctx, "", (PrivateRequest) h); } else if(h instanceof InvitationResponse) { return from(ctx, "", (InvitationResponse) h); } else { 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 bdf3f1e6c..439a5b7c7 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 @@ -1,27 +1,22 @@ 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; import org.briarproject.briar.api.client.SessionId; -import org.briarproject.briar.api.sharing.InvitationRequest; +import org.briarproject.briar.api.messaging.PrivateRequest; import javax.annotation.Nullable; @NotNullByDefault -public class BlogInvitationRequest extends InvitationRequest { +public class BlogInvitationRequest extends PrivateRequest { public BlogInvitationRequest(MessageId id, GroupId groupId, long time, boolean local, boolean sent, boolean seen, boolean read, - SessionId sessionId, Blog blog, ContactId contactId, + SessionId sessionId, Blog blog, @Nullable String message, boolean available, boolean canBeOpened) { super(id, groupId, time, local, sent, seen, read, sessionId, blog, message, available, canBeOpened); } - public String getBlogAuthorName() { - return getShareable().getName(); - } - } diff --git a/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationRequestReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationRequestReceivedEvent.java index cbb5381ca..ee90a2e12 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationRequestReceivedEvent.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/blog/event/BlogInvitationRequestReceivedEvent.java @@ -3,7 +3,7 @@ package org.briarproject.briar.api.blog.event; import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.briar.api.blog.Blog; -import org.briarproject.briar.api.sharing.InvitationRequest; +import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.sharing.event.InvitationRequestReceivedEvent; import javax.annotation.concurrent.Immutable; @@ -14,7 +14,7 @@ public class BlogInvitationRequestReceivedEvent extends InvitationRequestReceivedEvent { public BlogInvitationRequestReceivedEvent(Blog blog, ContactId contactId, - InvitationRequest request) { + PrivateRequest request) { super(blog, contactId, request); } 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 adf68302e..7721fd8b9 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 @@ -1,29 +1,24 @@ 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; import org.briarproject.briar.api.client.SessionId; -import org.briarproject.briar.api.sharing.InvitationRequest; +import org.briarproject.briar.api.messaging.PrivateRequest; import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; @Immutable @NotNullByDefault -public class ForumInvitationRequest extends InvitationRequest { +public class ForumInvitationRequest extends PrivateRequest { public ForumInvitationRequest(MessageId id, GroupId groupId, long time, boolean local, boolean sent, boolean seen, boolean read, - SessionId sessionId, Forum forum, ContactId contactId, + SessionId sessionId, Forum forum, @Nullable String message, boolean available, boolean canBeOpened) { super(id, groupId, time, local, sent, seen, read, sessionId, forum, message, available, canBeOpened); } - public String getForumName() { - return getShareable().getName(); - } - } diff --git a/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationRequestReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationRequestReceivedEvent.java index 8d1b0ea39..7fe834892 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationRequestReceivedEvent.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/forum/event/ForumInvitationRequestReceivedEvent.java @@ -3,7 +3,7 @@ package org.briarproject.briar.api.forum.event; import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.briar.api.forum.Forum; -import org.briarproject.briar.api.sharing.InvitationRequest; +import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.sharing.event.InvitationRequestReceivedEvent; import javax.annotation.concurrent.Immutable; @@ -14,7 +14,7 @@ public class ForumInvitationRequestReceivedEvent extends InvitationRequestReceivedEvent { public ForumInvitationRequestReceivedEvent(Forum forum, ContactId contactId, - InvitationRequest request) { + PrivateRequest request) { super(forum, contactId, request); } 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 new file mode 100644 index 000000000..0384d1971 --- /dev/null +++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/Introduction.java @@ -0,0 +1,32 @@ +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/IntroductionManager.java b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionManager.java index 532d63353..384dbb1ce 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionManager.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionManager.java @@ -7,6 +7,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.ClientId; import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.messaging.ConversationManager.ConversationClient; +import org.briarproject.briar.api.messaging.PrivateMessageHeader; import java.util.Collection; @@ -50,7 +51,7 @@ public interface IntroductionManager extends ConversationClient { /** * Returns all introduction messages for the given contact. */ - Collection getIntroductionMessages(ContactId contactId) + Collection getIntroductionMessages(ContactId contactId) throws DbException; } 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 deleted file mode 100644 index 31cc5ac44..000000000 --- a/briar-api/src/main/java/org/briarproject/briar/api/introduction/IntroductionMessage.java +++ /dev/null @@ -1,28 +0,0 @@ -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.SessionId; -import org.briarproject.briar.api.messaging.PrivateMessageHeader; - -import javax.annotation.concurrent.Immutable; - -@Immutable -@NotNullByDefault -public abstract class IntroductionMessage extends PrivateMessageHeader { - - private final SessionId sessionId; - - IntroductionMessage(SessionId sessionId, MessageId messageId, - GroupId groupId, long time, boolean local, boolean sent, - boolean seen, boolean read) { - super(messageId, groupId, time, local, sent, seen, read); - this.sessionId = sessionId; - } - - public SessionId getSessionId() { - return sessionId; - } - -} 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 718864c89..6d67dec89 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,48 +1,24 @@ 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; import org.briarproject.briar.api.client.SessionId; +import org.briarproject.briar.api.messaging.PrivateRequest; import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; @Immutable @NotNullByDefault -public class IntroductionRequest extends IntroductionMessage { +public class IntroductionRequest extends PrivateRequest { - private final Author introducedAuthor; - @Nullable - private final String message; - private final boolean answered, exists; - - public IntroductionRequest(SessionId sessionId, MessageId messageId, - GroupId groupId, long time, boolean local, boolean sent, - boolean seen, boolean read, Author introducedAuthor, + 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 exists) { - super(sessionId, messageId, groupId, time, local, sent, seen, read); - this.introducedAuthor = introducedAuthor; - this.message = message; - this.answered = answered; - this.exists = exists; + super(messageId, groupId, time, local, sent, seen, read, sessionId, + introduction, message, answered, exists); } - public String getName() { - return introducedAuthor.getName(); - } - - @Nullable - public String getMessage() { - return message; - } - - public boolean wasAnswered() { - return answered; - } - - public boolean contactExists() { - return exists; - } } 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 812d548c7..5ac474d57 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 @@ -4,6 +4,7 @@ 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.SessionId; +import org.briarproject.briar.api.messaging.PrivateMessageHeader; import javax.annotation.concurrent.Immutable; @@ -11,8 +12,9 @@ import static org.briarproject.briar.api.introduction.Role.INTRODUCER; @Immutable @NotNullByDefault -public class IntroductionResponse extends IntroductionMessage { +public class IntroductionResponse extends PrivateMessageHeader { + private final SessionId sessionId; private final String name; private final Role role; private final boolean accepted; @@ -20,12 +22,17 @@ public class IntroductionResponse extends IntroductionMessage { 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, time, local, sent, seen, read); + super(messageId, groupId, time, local, sent, seen, read); + this.sessionId = sessionId; this.name = name; this.role = role; this.accepted = accepted; } + public SessionId getSessionId() { + return sessionId; + } + public String getName() { return name; } diff --git a/briar-api/src/main/java/org/briarproject/briar/api/messaging/Nameable.java b/briar-api/src/main/java/org/briarproject/briar/api/messaging/Nameable.java new file mode 100644 index 000000000..e61c676f5 --- /dev/null +++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/Nameable.java @@ -0,0 +1,10 @@ +package org.briarproject.briar.api.messaging; + +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; + +@NotNullByDefault +public interface Nameable { + + String getName(); + +} 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 new file mode 100644 index 000000000..3fa593242 --- /dev/null +++ b/briar-api/src/main/java/org/briarproject/briar/api/messaging/PrivateRequest.java @@ -0,0 +1,57 @@ +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.SessionId; + +import javax.annotation.Nullable; +import javax.annotation.concurrent.Immutable; + +@Immutable +@NotNullByDefault +public class PrivateRequest extends PrivateMessageHeader { + + private final SessionId sessionId; + private final O object; + @Nullable + private final String message; + private final boolean answered, exists; + + public PrivateRequest(MessageId messageId, GroupId groupId, long time, + boolean local, boolean sent, boolean seen, boolean read, + SessionId sessionId, O object, @Nullable String message, + boolean answered, boolean exists) { + super(messageId, groupId, time, local, sent, seen, read); + this.sessionId = sessionId; + this.object = object; + this.message = message; + this.answered = answered; + this.exists = exists; + } + + public SessionId getSessionId() { + return sessionId; + } + + public O getObject() { + return object; + } + + public String getName() { + return object.getName(); + } + + @Nullable + public String getMessage() { + return message; + } + + public boolean wasAnswered() { + return answered; + } + + public boolean doesExist() { + return exists; + } +} diff --git a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationManager.java b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationManager.java index 1062d0ce1..f65903614 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationManager.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/privategroup/invitation/GroupInvitationManager.java @@ -9,8 +9,8 @@ import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.briar.api.client.ProtocolStateException; import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.messaging.ConversationManager.ConversationClient; +import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.privategroup.PrivateGroup; -import org.briarproject.briar.api.sharing.InvitationMessage; import java.util.Collection; @@ -77,7 +77,7 @@ public interface GroupInvitationManager extends ConversationClient { * Returns all private group invitation messages related to the given * contact. */ - Collection getInvitationMessages(ContactId c) + Collection getInvitationMessages(ContactId c) throws DbException; /** 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 e69ab0c3d..f7831f268 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 @@ -1,23 +1,22 @@ 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; import org.briarproject.briar.api.client.SessionId; +import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.privategroup.PrivateGroup; -import org.briarproject.briar.api.sharing.InvitationRequest; import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; @Immutable @NotNullByDefault -public class GroupInvitationRequest extends InvitationRequest { +public class GroupInvitationRequest extends PrivateRequest { public GroupInvitationRequest(MessageId id, GroupId groupId, long time, boolean local, boolean sent, boolean seen, boolean read, - SessionId sessionId, PrivateGroup shareable, ContactId contactId, + SessionId sessionId, PrivateGroup shareable, @Nullable String message, boolean available, boolean canBeOpened) { super(id, groupId, time, local, sent, seen, read, sessionId, shareable, message, available, canBeOpened); 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 deleted file mode 100644 index 0af27b35b..000000000 --- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationMessage.java +++ /dev/null @@ -1,28 +0,0 @@ -package org.briarproject.briar.api.sharing; - -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.SessionId; -import org.briarproject.briar.api.messaging.PrivateMessageHeader; - -import javax.annotation.concurrent.Immutable; - -@Immutable -@NotNullByDefault -public abstract class InvitationMessage extends PrivateMessageHeader { - - private final SessionId sessionId; - - public InvitationMessage(MessageId id, GroupId groupId, long time, - boolean local, boolean sent, boolean seen, boolean read, - SessionId sessionId) { - super(id, groupId, time, local, sent, seen, read); - this.sessionId = sessionId; - } - - public SessionId getSessionId() { - return sessionId; - } - -} 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 deleted file mode 100644 index cb32a619e..000000000 --- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/InvitationRequest.java +++ /dev/null @@ -1,49 +0,0 @@ -package org.briarproject.briar.api.sharing; - -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.SessionId; - -import javax.annotation.Nullable; -import javax.annotation.concurrent.Immutable; - -@Immutable -@NotNullByDefault -public abstract class InvitationRequest - extends InvitationMessage { - - private final S shareable; - @Nullable - private final String message; - private final boolean available, canBeOpened; - - public InvitationRequest(MessageId id, GroupId groupId, long time, - boolean local, boolean sent, boolean seen, boolean read, - SessionId sessionId, S shareable, - @Nullable String message, boolean available, boolean canBeOpened) { - super(id, groupId, time, local, sent, seen, read, sessionId); - this.shareable = shareable; - this.message = message; - this.available = available; - this.canBeOpened = canBeOpened; - } - - @Nullable - public String getMessage() { - return message; - } - - public boolean isAvailable() { - return available; - } - - public boolean canBeOpened() { - return canBeOpened; - } - - public S getShareable() { - return shareable; - } - -} 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 58b7d5390..f7afc699e 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 @@ -4,13 +4,15 @@ 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.SessionId; +import org.briarproject.briar.api.messaging.PrivateMessageHeader; import javax.annotation.concurrent.Immutable; @Immutable @NotNullByDefault -public abstract class InvitationResponse extends InvitationMessage { +public abstract class InvitationResponse extends PrivateMessageHeader { + private final SessionId sessionId; private final GroupId shareableId; private final boolean accept; @@ -18,11 +20,16 @@ public abstract class InvitationResponse extends InvitationMessage { long time, boolean local, boolean sent, boolean seen, boolean read, SessionId sessionId, GroupId shareableId, boolean accept) { - super(id, groupId, time, local, sent, seen, read, sessionId); + super(id, groupId, time, local, sent, seen, read); + this.sessionId = sessionId; this.shareableId = shareableId; this.accept = accept; } + public SessionId getSessionId() { + return sessionId; + } + public boolean wasAccepted() { return 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 dad36908d..a8287df20 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,12 +2,11 @@ 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; @NotNullByDefault -public interface Shareable { +public interface Shareable extends Nameable { GroupId getId(); - String getName(); - } diff --git a/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java b/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java index b593d2fdf..6fefa49ad 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/sharing/SharingManager.java @@ -7,6 +7,7 @@ import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.briar.api.client.SessionId; import org.briarproject.briar.api.messaging.ConversationManager.ConversationClient; +import org.briarproject.briar.api.messaging.PrivateMessageHeader; import java.util.Collection; @@ -39,7 +40,7 @@ public interface SharingManager * Returns all group sharing messages sent by the Contact * identified by contactId. */ - Collection getInvitationMessages( + Collection getInvitationMessages( ContactId contactId) throws DbException; /** diff --git a/briar-api/src/main/java/org/briarproject/briar/api/sharing/event/InvitationRequestReceivedEvent.java b/briar-api/src/main/java/org/briarproject/briar/api/sharing/event/InvitationRequestReceivedEvent.java index 149124013..a7aeb9336 100644 --- a/briar-api/src/main/java/org/briarproject/briar/api/sharing/event/InvitationRequestReceivedEvent.java +++ b/briar-api/src/main/java/org/briarproject/briar/api/sharing/event/InvitationRequestReceivedEvent.java @@ -3,7 +3,7 @@ package org.briarproject.briar.api.sharing.event; import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.event.Event; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; -import org.briarproject.briar.api.sharing.InvitationRequest; +import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.sharing.Shareable; import javax.annotation.concurrent.Immutable; @@ -15,10 +15,10 @@ public abstract class InvitationRequestReceivedEvent private final S shareable; private final ContactId contactId; - private final InvitationRequest request; + private final PrivateRequest request; protected InvitationRequestReceivedEvent(S shareable, ContactId contactId, - InvitationRequest request) { + PrivateRequest request) { this.shareable = shareable; this.contactId = contactId; this.request = request; @@ -28,7 +28,7 @@ public abstract class InvitationRequestReceivedEvent return contactId; } - public InvitationRequest getRequest() { + public PrivateRequest getRequest() { return request; } 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 80fc87e8b..248882cea 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,6 +26,7 @@ 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; @@ -254,9 +255,11 @@ class IntroduceeProtocolEngine localAuthor.getId()); boolean contactExists = contactManager .contactExists(txn, m.getAuthor().getId(), localAuthor.getId()); - IntroductionRequest request = new IntroductionRequest(s.getSessionId(), - m.getMessageId(), m.getGroupId(), m.getTimestamp(), false, - false, false, false, m.getAuthor(), m.getMessage(), false, + 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, contactExists); IntroductionRequestReceivedEvent e = new IntroductionRequestReceivedEvent(c.getId(), request); 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 268efb2b1..2dba9ab10 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,11 +29,12 @@ 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.IntroductionMessage; import org.briarproject.briar.api.introduction.IntroductionRequest; import org.briarproject.briar.api.introduction.IntroductionResponse; import org.briarproject.briar.api.introduction.Role; +import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.client.ConversationClientImpl; import org.briarproject.briar.introduction.IntroducerSession.Introducee; @@ -398,9 +399,9 @@ class IntroductionManagerImpl extends ConversationClientImpl } @Override - public Collection getIntroductionMessages(ContactId c) + public Collection getIntroductionMessages(ContactId c) throws DbException { - List messages; + List messages; Transaction txn = db.startTransaction(true); try { Contact contact = db.getContact(txn, c); @@ -470,11 +471,11 @@ class IntroductionManagerImpl extends ConversationClientImpl boolean contactExists = contactManager .contactExists(txn, rm.getAuthor().getId(), localAuthor.getId()); - - return new IntroductionRequest(sessionId, m, contactGroupId, - meta.getTimestamp(), meta.isLocal(), status.isSent(), - status.isSeen(), meta.isRead(), author, message, - !meta.isAvailableToAnswer(), contactExists); + 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(), + contactExists); } private IntroductionResponse parseInvitationResponse(GroupId contactGroupId, 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 16d85f6bd..bcc7d8993 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 @@ -26,6 +26,7 @@ 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.messaging.PrivateMessageHeader; import org.briarproject.briar.api.privategroup.PrivateGroup; import org.briarproject.briar.api.privategroup.PrivateGroupFactory; import org.briarproject.briar.api.privategroup.PrivateGroupManager; @@ -34,7 +35,6 @@ import org.briarproject.briar.api.privategroup.invitation.GroupInvitationItem; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse; -import org.briarproject.briar.api.sharing.InvitationMessage; import org.briarproject.briar.client.ConversationClientImpl; import java.util.ArrayList; @@ -368,9 +368,9 @@ class GroupInvitationManagerImpl extends ConversationClientImpl } @Override - public Collection getInvitationMessages(ContactId c) + public Collection getInvitationMessages(ContactId c) throws DbException { - List messages; + List messages; Transaction txn = db.startTransaction(true); try { Contact contact = db.getContact(txn, c); @@ -422,7 +422,7 @@ class GroupInvitationManagerImpl extends ConversationClientImpl db.containsGroup(txn, invite.getPrivateGroupId()); return new GroupInvitationRequest(m, contactGroupId, meta.getTimestamp(), meta.isLocal(), status.isSent(), - status.isSeen(), meta.isRead(), sessionId, pg, c, + status.isSeen(), meta.isRead(), sessionId, pg, invite.getMessage(), meta.isAvailableToAnswer(), canBeOpened); } diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngine.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngine.java index a0e73d9b0..67690c80c 100644 --- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngine.java +++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/InviteeProtocolEngine.java @@ -331,7 +331,7 @@ class InviteeProtocolEngine extends AbstractProtocolEngine { PrivateGroup pg, ContactId c) { SessionId sessionId = new SessionId(m.getPrivateGroupId().getBytes()); return new GroupInvitationRequest(m.getId(), m.getContactGroupId(), - m.getTimestamp(), false, false, true, false, sessionId, pg, c, + m.getTimestamp(), false, false, true, false, sessionId, pg, m.getMessage(), true, false); } 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 c7472a145..9063ebcbc 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 @@ -24,7 +24,7 @@ public class BlogInvitationFactoryImpl SessionId sessionId = new SessionId(m.getShareableId().getBytes()); return new BlogInvitationRequest(m.getId(), m.getContactGroupId(), m.getTimestamp(), local, sent, seen, read, sessionId, - m.getShareable(), c, m.getMessage(), available, canBeOpened); + m.getShareable(), m.getMessage(), available, canBeOpened); } @Override 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 72a356193..696ce5143 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 @@ -18,7 +18,7 @@ import org.briarproject.briar.api.blog.BlogManager; import org.briarproject.briar.api.blog.event.BlogInvitationRequestReceivedEvent; import org.briarproject.briar.api.blog.event.BlogInvitationResponseReceivedEvent; import org.briarproject.briar.api.client.MessageTracker; -import org.briarproject.briar.api.sharing.InvitationRequest; +import org.briarproject.briar.api.messaging.PrivateRequest; import javax.annotation.concurrent.Immutable; import javax.inject.Inject; @@ -50,7 +50,7 @@ class BlogProtocolEngineImpl extends ProtocolEngineImpl { @Override Event getInvitationRequestReceivedEvent(InviteMessage m, ContactId contactId, boolean available, boolean canBeOpened) { - InvitationRequest request = invitationFactory + PrivateRequest request = invitationFactory .createInvitationRequest(false, false, true, false, m, contactId, available, canBeOpened); return new BlogInvitationRequestReceivedEvent(m.getShareable(), 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 b71083524..758082933 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 @@ -24,7 +24,7 @@ public class ForumInvitationFactoryImpl SessionId sessionId = new SessionId(m.getShareableId().getBytes()); return new ForumInvitationRequest(m.getId(), m.getContactGroupId(), m.getTimestamp(), local, sent, seen, read, sessionId, - m.getShareable(), c, m.getMessage(), available, canBeOpened); + m.getShareable(), m.getMessage(), available, canBeOpened); } @Override 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 1b17e2f24..6ffad99d1 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 @@ -18,7 +18,7 @@ import org.briarproject.briar.api.forum.ForumInvitationResponse; import org.briarproject.briar.api.forum.ForumManager; import org.briarproject.briar.api.forum.event.ForumInvitationRequestReceivedEvent; import org.briarproject.briar.api.forum.event.ForumInvitationResponseReceivedEvent; -import org.briarproject.briar.api.sharing.InvitationRequest; +import org.briarproject.briar.api.messaging.PrivateRequest; import javax.annotation.concurrent.Immutable; import javax.inject.Inject; @@ -52,7 +52,7 @@ class ForumProtocolEngineImpl extends ProtocolEngineImpl { @Override Event getInvitationRequestReceivedEvent(InviteMessage m, ContactId contactId, boolean available, boolean canBeOpened) { - InvitationRequest request = invitationFactory + PrivateRequest request = invitationFactory .createInvitationRequest(false, false, true, false, m, contactId, available, canBeOpened); return new ForumInvitationRequestReceivedEvent(m.getShareable(), 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 3b990b247..361ab532f 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 @@ -3,13 +3,13 @@ package org.briarproject.briar.sharing; import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.sync.GroupId; import org.briarproject.bramble.api.sync.MessageId; -import org.briarproject.briar.api.sharing.InvitationRequest; +import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.sharing.InvitationResponse; import org.briarproject.briar.api.sharing.Shareable; public interface InvitationFactory { - InvitationRequest createInvitationRequest(boolean local, boolean sent, + PrivateRequest createInvitationRequest(boolean local, boolean sent, boolean seen, boolean read, InviteMessage m, ContactId c, boolean available, boolean canBeOpened); diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java index 885422275..e15e37c17 100644 --- a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingManagerImpl.java @@ -26,8 +26,8 @@ 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.sharing.InvitationMessage; -import org.briarproject.briar.api.sharing.InvitationRequest; +import org.briarproject.briar.api.messaging.PrivateMessageHeader; +import org.briarproject.briar.api.messaging.PrivateRequest; import org.briarproject.briar.api.sharing.InvitationResponse; import org.briarproject.briar.api.sharing.Shareable; import org.briarproject.briar.api.sharing.SharingInvitationItem; @@ -321,9 +321,9 @@ abstract class SharingManagerImpl } @Override - public Collection getInvitationMessages(ContactId c) + public Collection getInvitationMessages(ContactId c) throws DbException { - List messages; + List messages; Transaction txn = db.startTransaction(true); try { Contact contact = db.getContact(txn, c); @@ -360,7 +360,7 @@ abstract class SharingManagerImpl return messages; } - private InvitationRequest parseInvitationRequest(Transaction txn, + private PrivateRequest parseInvitationRequest(Transaction txn, ContactId c, MessageId m, MessageMetadata meta, MessageStatus status) throws DbException, FormatException { // Look up the invite message to get the details of the private group 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 b3161af64..0d6eaa27f 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 @@ -25,13 +25,13 @@ 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.IntroductionManager; -import org.briarproject.briar.api.introduction.IntroductionMessage; 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.test.BriarIntegrationTest; import org.junit.Before; import org.junit.Test; @@ -608,10 +608,10 @@ public class IntroductionIntegrationTest // assert that introducees get notified about the existing contact IntroductionRequest ir1 = getIntroductionRequest(introductionManager1, contactId0From1); - assertTrue(ir1.contactExists()); + assertTrue(ir1.doesExist()); IntroductionRequest ir2 = getIntroductionRequest(introductionManager2, contactId0From2); - assertTrue(ir2.contactExists()); + assertTrue(ir2.doesExist()); // sync ACCEPT messages back to introducer sync1To0(1, true); @@ -1100,7 +1100,7 @@ public class IntroductionIntegrationTest } private void assertDefaultUiMessages() throws DbException { - Collection messages = + Collection messages = introductionManager0.getIntroductionMessages(contactId1From0); assertEquals(2, messages.size()); assertMessagesAreAcked(messages); @@ -1122,8 +1122,8 @@ public class IntroductionIntegrationTest } private void assertMessagesAreAcked( - Collection messages) { - for (IntroductionMessage msg : messages) { + Collection messages) { + for (PrivateMessageHeader msg : messages) { if (msg.isLocal()) assertTrue(msg.isSeen()); } } @@ -1299,7 +1299,7 @@ public class IntroductionIntegrationTest private IntroductionRequest getIntroductionRequest( IntroductionManager manager, ContactId contactId) throws DbException { - for (IntroductionMessage im : manager + for (PrivateMessageHeader im : manager .getIntroductionMessages(contactId)) { if (im instanceof IntroductionRequest) { return (IntroductionRequest) im; 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 ffdb8e836..4f1e512d9 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 @@ -4,6 +4,7 @@ import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.sync.Group; import org.briarproject.bramble.test.TestDatabaseModule; import org.briarproject.briar.api.client.ProtocolStateException; +import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.privategroup.GroupMessage; import org.briarproject.briar.api.privategroup.PrivateGroup; import org.briarproject.briar.api.privategroup.PrivateGroupManager; @@ -11,7 +12,6 @@ import org.briarproject.briar.api.privategroup.invitation.GroupInvitationItem; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationManager; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse; -import org.briarproject.briar.api.sharing.InvitationMessage; import org.briarproject.briar.api.sharing.InvitationResponse; import org.briarproject.briar.test.BriarIntegrationTest; import org.briarproject.briar.test.BriarIntegrationTestComponent; @@ -92,18 +92,18 @@ public class GroupInvitationIntegrationTest assertEquals(privateGroup0.getName(), item.getName()); assertFalse(item.isSubscribed()); - Collection messages = + Collection messages = groupInvitationManager1.getInvitationMessages(contactId0From1); assertEquals(1, messages.size()); GroupInvitationRequest request = (GroupInvitationRequest) messages.iterator().next(); assertEquals(msg, request.getMessage()); - assertEquals(author0, request.getShareable().getCreator()); + assertEquals(author0, request.getObject().getCreator()); assertEquals(timestamp, request.getTimestamp()); - assertEquals(privateGroup0.getName(), request.getShareable().getName()); + assertEquals(privateGroup0.getName(), request.getObject().getName()); assertFalse(request.isLocal()); assertFalse(request.isRead()); - assertFalse(request.canBeOpened()); + assertFalse(request.doesExist()); } @Test @@ -117,11 +117,11 @@ public class GroupInvitationIntegrationTest groupInvitationManager1 .respondToInvitation(contactId0From1, privateGroup0, false); - Collection messages = + Collection messages = groupInvitationManager1.getInvitationMessages(contactId0From1); assertEquals(2, messages.size()); boolean foundResponse = false; - for (InvitationMessage m : messages) { + for (PrivateMessageHeader m : messages) { if (m instanceof GroupInvitationResponse) { foundResponse = true; InvitationResponse response = (GroupInvitationResponse) m; @@ -137,7 +137,7 @@ public class GroupInvitationIntegrationTest groupInvitationManager0.getInvitationMessages(contactId1From0); assertEquals(2, messages.size()); foundResponse = false; - for (InvitationMessage m : messages) { + for (PrivateMessageHeader m : messages) { if (m instanceof GroupInvitationResponse) { foundResponse = true; InvitationResponse response = (GroupInvitationResponse) m; @@ -164,17 +164,17 @@ public class GroupInvitationIntegrationTest groupInvitationManager1 .respondToInvitation(contactId0From1, privateGroup0, true); - Collection messages = + Collection messages = groupInvitationManager1.getInvitationMessages(contactId0From1); assertEquals(2, messages.size()); boolean foundResponse = false; - for (InvitationMessage m : messages) { + for (PrivateMessageHeader m : messages) { if (m instanceof GroupInvitationResponse) { foundResponse = true; InvitationResponse response = (GroupInvitationResponse) m; assertTrue(response.wasAccepted()); } else { - assertTrue(((GroupInvitationRequest) m).canBeOpened()); + assertTrue(((GroupInvitationRequest) m).doesExist()); } } assertTrue(foundResponse); @@ -185,7 +185,7 @@ public class GroupInvitationIntegrationTest groupInvitationManager0.getInvitationMessages(contactId1From0); assertEquals(2, messages.size()); foundResponse = false; - for (InvitationMessage m : messages) { + for (PrivateMessageHeader m : messages) { if (m instanceof GroupInvitationResponse) { foundResponse = true; InvitationResponse response = (GroupInvitationResponse) m; @@ -216,7 +216,7 @@ public class GroupInvitationIntegrationTest // 1 has one unread message Group g0 = groupInvitationManager1.getContactGroup(contact0From1); assertGroupCount(messageTracker1, g0.getId(), 1, 1, timestamp); - InvitationMessage m = + PrivateMessageHeader m = groupInvitationManager1.getInvitationMessages(contactId0From1) .iterator().next(); 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 79217f566..b24f62c7e 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 @@ -24,13 +24,13 @@ import org.briarproject.bramble.test.BrambleMockTestCase; import org.briarproject.bramble.test.TestUtils; import org.briarproject.briar.api.client.MessageTracker; import org.briarproject.briar.api.client.SessionId; +import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.privategroup.PrivateGroup; import org.briarproject.briar.api.privategroup.PrivateGroupFactory; import org.briarproject.briar.api.privategroup.PrivateGroupManager; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationItem; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationRequest; import org.briarproject.briar.api.privategroup.invitation.GroupInvitationResponse; -import org.briarproject.briar.api.sharing.InvitationMessage; import org.jmock.AbstractExpectations; import org.jmock.Expectations; import org.jmock.lib.legacy.ClassImposteriser; @@ -701,10 +701,10 @@ public class GroupInvitationManagerImplTest extends BrambleMockTestCase { oneOf(db).endTransaction(txn); }}); - Collection messages = + Collection messages = groupInvitationManager.getInvitationMessages(contactId); assertEquals(2, messages.size()); - for (InvitationMessage m : messages) { + for (PrivateMessageHeader m : messages) { assertEquals(contactGroup.getId(), m.getGroupId()); if (m.getId().equals(message.getId())) { assertTrue(m instanceof GroupInvitationRequest); 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 48992747f..7251ec2c7 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 @@ -18,7 +18,7 @@ import org.briarproject.briar.api.blog.BlogManager; import org.briarproject.briar.api.blog.BlogSharingManager; import org.briarproject.briar.api.blog.event.BlogInvitationRequestReceivedEvent; import org.briarproject.briar.api.blog.event.BlogInvitationResponseReceivedEvent; -import org.briarproject.briar.api.sharing.InvitationMessage; +import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.test.BriarIntegrationTest; import org.briarproject.briar.test.BriarIntegrationTestComponent; import org.briarproject.briar.test.DaggerBriarIntegrationTestComponent; @@ -147,17 +147,17 @@ public class BlogSharingIntegrationTest assertTrue(blogManager1.getBlogs().contains(blog2)); // invitee has one invitation message from sharer - List list = new ArrayList<>( + List list = new ArrayList<>( blogSharingManager1.getInvitationMessages(contactId0From1)); assertEquals(2, list.size()); // check other things are alright with the message - for (InvitationMessage m : list) { + for (PrivateMessageHeader m : list) { if (m instanceof BlogInvitationRequest) { BlogInvitationRequest invitation = (BlogInvitationRequest) m; - assertFalse(invitation.isAvailable()); + assertFalse(invitation.wasAnswered()); assertEquals(blog2.getAuthor().getName(), - invitation.getBlogAuthorName()); - assertFalse(invitation.getShareable().isRssFeed()); + invitation.getName()); + assertFalse(invitation.getObject().isRssFeed()); assertEquals("Hi!", invitation.getMessage()); } else { BlogInvitationResponse response = (BlogInvitationResponse) m; @@ -218,17 +218,17 @@ public class BlogSharingIntegrationTest assertTrue(blogManager1.getBlogs().contains(rssBlog)); // invitee has one invitation message from sharer - List list = new ArrayList<>( + List list = new ArrayList<>( blogSharingManager1.getInvitationMessages(contactId0From1)); assertEquals(2, list.size()); // check other things are alright with the message - for (InvitationMessage m : list) { + for (PrivateMessageHeader m : list) { if (m instanceof BlogInvitationRequest) { BlogInvitationRequest invitation = (BlogInvitationRequest) m; - assertFalse(invitation.isAvailable()); + assertFalse(invitation.wasAnswered()); assertEquals(rssBlog.getAuthor().getName(), - invitation.getBlogAuthorName()); - assertTrue(invitation.getShareable().isRssFeed()); + invitation.getName()); + assertTrue(invitation.getObject().isRssFeed()); assertEquals("Hi!", invitation.getMessage()); } else { BlogInvitationResponse response = (BlogInvitationResponse) m; @@ -277,16 +277,16 @@ public class BlogSharingIntegrationTest assertEquals(0, blogSharingManager1.getInvitations().size()); // invitee has one invitation message from sharer and one response - List list = new ArrayList<>( + List list = new ArrayList<>( blogSharingManager1.getInvitationMessages(contactId0From1)); assertEquals(2, list.size()); // check things are alright with the message - for (InvitationMessage m : list) { + for (PrivateMessageHeader m : list) { if (m instanceof BlogInvitationRequest) { BlogInvitationRequest invitation = (BlogInvitationRequest) m; - assertFalse(invitation.isAvailable()); + assertFalse(invitation.wasAnswered()); assertEquals(blog2.getAuthor().getName(), - invitation.getBlogAuthorName()); + invitation.getName()); assertEquals(null, invitation.getMessage()); } else { BlogInvitationResponse response = (BlogInvitationResponse) m; @@ -382,7 +382,7 @@ public class BlogSharingIntegrationTest assertTrue(contacts.contains(contact0From1)); // make sure 1 knows that they have blog2 already - Collection messages = + Collection messages = blogSharingManager1.getInvitationMessages(contactId0From1); assertEquals(2, messages.size()); assertEquals(blog2, blogManager1.getBlog(blog2.getId())); 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 7cb6d0bc6..acae3fb4c 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 @@ -22,7 +22,7 @@ import org.briarproject.briar.api.forum.ForumPostHeader; import org.briarproject.briar.api.forum.ForumSharingManager; import org.briarproject.briar.api.forum.event.ForumInvitationRequestReceivedEvent; import org.briarproject.briar.api.forum.event.ForumInvitationResponseReceivedEvent; -import org.briarproject.briar.api.sharing.InvitationMessage; +import org.briarproject.briar.api.messaging.PrivateMessageHeader; import org.briarproject.briar.api.sharing.SharingInvitationItem; import org.briarproject.briar.test.BriarIntegrationTest; import org.briarproject.briar.test.BriarIntegrationTestComponent; @@ -131,18 +131,18 @@ public class ForumSharingIntegrationTest assertEquals(1, forumManager1.getForums().size()); // invitee has one invitation message from sharer - List list = new ArrayList<>( + List list = new ArrayList<>( forumSharingManager1.getInvitationMessages(contactId0From1)); assertEquals(2, list.size()); // check other things are alright with the forum message - for (InvitationMessage m : list) { + for (PrivateMessageHeader m : list) { if (m instanceof ForumInvitationRequest) { ForumInvitationRequest invitation = (ForumInvitationRequest) m; - assertFalse(invitation.isAvailable()); - assertEquals(forum0.getName(), invitation.getForumName()); + assertFalse(invitation.wasAnswered()); + assertEquals(forum0.getName(), invitation.getName()); assertEquals("Hi!", invitation.getMessage()); - assertTrue(invitation.canBeOpened()); + assertTrue(invitation.doesExist()); } else { ForumInvitationResponse response = (ForumInvitationResponse) m; @@ -188,17 +188,17 @@ public class ForumSharingIntegrationTest assertEquals(0, forumSharingManager1.getInvitations().size()); // invitee has one invitation message from sharer and one response - List list = new ArrayList<>( + List list = new ArrayList<>( forumSharingManager1.getInvitationMessages(contactId0From1)); assertEquals(2, list.size()); // check things are alright with the forum message - for (InvitationMessage m : list) { + for (PrivateMessageHeader m : list) { if (m instanceof ForumInvitationRequest) { ForumInvitationRequest invitation = (ForumInvitationRequest) m; - assertFalse(invitation.isAvailable()); - assertEquals(forum0.getName(), invitation.getForumName()); + assertFalse(invitation.wasAnswered()); + assertEquals(forum0.getName(), invitation.getName()); assertEquals(null, invitation.getMessage()); - assertFalse(invitation.canBeOpened()); + assertFalse(invitation.doesExist()); } else { ForumInvitationResponse response = (ForumInvitationResponse) m; assertFalse(response.wasAccepted()); @@ -742,7 +742,7 @@ public class ForumSharingIntegrationTest // get invitation MessageId for later MessageId invitationId = null; - for (InvitationMessage m : forumSharingManager1 + for (PrivateMessageHeader m : forumSharingManager1 .getInvitationMessages(contactId0From1)) { if (m instanceof ForumInvitationRequest) { invitationId = m.getId();