diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java index dd3db0503873264def7f6f8b876c6c06a6497c77..cbfe86f382ef3ccab832ff0a6e6cd1c30c56018a 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactManager.java @@ -5,6 +5,7 @@ import org.briarproject.bramble.api.db.DbException; import org.briarproject.bramble.api.db.Transaction; import org.briarproject.bramble.api.identity.Author; import org.briarproject.bramble.api.identity.AuthorId; +import org.briarproject.bramble.api.lifecycle.LifecycleManager; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; import java.util.Collection; @@ -13,14 +14,11 @@ import java.util.Collection; public interface ContactManager { /** - * Registers a hook to be called whenever a contact is added. + * Registers a hook to be called whenever a contact is added or removed. + * This method should be called before + * {@link LifecycleManager#startServices(String)}. */ - void registerAddContactHook(AddContactHook hook); - - /** - * Registers a hook to be called whenever a contact is removed. - */ - void registerRemoveContactHook(RemoveContactHook hook); + void registerContactHook(ContactHook hook); /** * Stores a contact associated with the given local and remote pseudonyms, @@ -102,11 +100,10 @@ public interface ContactManager { boolean contactExists(AuthorId remoteAuthorId, AuthorId localAuthorId) throws DbException; - interface AddContactHook { + interface ContactHook { + void addingContact(Transaction txn, Contact c) throws DbException; - } - interface RemoveContactHook { void removingContact(Transaction txn, Contact c) throws DbException; } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java index 025a6d38d079a873080ac5cd2acbd20ca2a013ae..afa68c18004a3a0941cfe5cb6c3edd786423371b 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactManagerImpl.java @@ -27,25 +27,18 @@ class ContactManagerImpl implements ContactManager { private final DatabaseComponent db; private final KeyManager keyManager; - private final List<AddContactHook> addHooks; - private final List<RemoveContactHook> removeHooks; + private final List<ContactHook> hooks; @Inject ContactManagerImpl(DatabaseComponent db, KeyManager keyManager) { this.db = db; this.keyManager = keyManager; - addHooks = new CopyOnWriteArrayList<>(); - removeHooks = new CopyOnWriteArrayList<>(); + hooks = new CopyOnWriteArrayList<>(); } @Override - public void registerAddContactHook(AddContactHook hook) { - addHooks.add(hook); - } - - @Override - public void registerRemoveContactHook(RemoveContactHook hook) { - removeHooks.add(hook); + public void registerContactHook(ContactHook hook) { + hooks.add(hook); } @Override @@ -55,8 +48,7 @@ class ContactManagerImpl implements ContactManager { ContactId c = db.addContact(txn, remote, local, verified, active); keyManager.addContact(txn, c, master, timestamp, alice); Contact contact = db.getContact(txn, c); - for (AddContactHook hook : addHooks) - hook.addingContact(txn, contact); + for (ContactHook hook : hooks) hook.addingContact(txn, contact); return c; } @@ -65,8 +57,7 @@ class ContactManagerImpl implements ContactManager { boolean verified, boolean active) throws DbException { ContactId c = db.addContact(txn, remote, local, verified, active); Contact contact = db.getContact(txn, c); - for (AddContactHook hook : addHooks) - hook.addingContact(txn, contact); + for (ContactHook hook : hooks) hook.addingContact(txn, contact); return c; } @@ -166,7 +157,7 @@ class ContactManagerImpl implements ContactManager { @Override public boolean contactExists(AuthorId remoteAuthorId, AuthorId localAuthorId) throws DbException { - boolean exists = false; + boolean exists; Transaction txn = db.startTransaction(true); try { exists = contactExists(txn, remoteAuthorId, localAuthorId); @@ -181,8 +172,7 @@ class ContactManagerImpl implements ContactManager { public void removeContact(Transaction txn, ContactId c) throws DbException { Contact contact = db.getContact(txn, c); - for (RemoveContactHook hook : removeHooks) - hook.removingContact(txn, contact); + for (ContactHook hook : hooks) hook.removingContact(txn, contact); db.removeContact(txn, c); } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/properties/PropertiesModule.java b/bramble-core/src/main/java/org/briarproject/bramble/properties/PropertiesModule.java index b9d9e578897547f78980e24abd560a439e14ebb2..7f7da60cec2b8574786fa8ab63a901b676fdb940 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/properties/PropertiesModule.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/properties/PropertiesModule.java @@ -46,8 +46,7 @@ public class PropertiesModule { lifecycleManager.registerClient(transportPropertyManager); validationManager.registerIncomingMessageHook(CLIENT_ID, transportPropertyManager); - contactManager.registerAddContactHook(transportPropertyManager); - contactManager.registerRemoveContactHook(transportPropertyManager); + contactManager.registerContactHook(transportPropertyManager); return transportPropertyManager; } } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/properties/TransportPropertyManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/properties/TransportPropertyManagerImpl.java index 541224ecd4511092cb41e01cdbf3539b4b231b5c..4736bd13edbf00e684fa6ddbf411c2c9ae4a4197 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/properties/TransportPropertyManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/properties/TransportPropertyManagerImpl.java @@ -5,8 +5,7 @@ import org.briarproject.bramble.api.client.ClientHelper; import org.briarproject.bramble.api.client.ContactGroupFactory; import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.contact.ContactId; -import org.briarproject.bramble.api.contact.ContactManager.AddContactHook; -import org.briarproject.bramble.api.contact.ContactManager.RemoveContactHook; +import org.briarproject.bramble.api.contact.ContactManager.ContactHook; import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.data.BdfList; import org.briarproject.bramble.api.data.MetadataParser; @@ -40,7 +39,7 @@ import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED; @Immutable @NotNullByDefault class TransportPropertyManagerImpl implements TransportPropertyManager, - Client, AddContactHook, RemoveContactHook, IncomingMessageHook { + Client, ContactHook, IncomingMessageHook { private final DatabaseComponent db; private final ClientHelper clientHelper; diff --git a/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java index f4b8132266545ba4a8b8cb54f43be76d3a1ae181..c7b119ef0c220342866992c2b5af710da0e09922 100644 --- a/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/blog/BlogManagerImpl.java @@ -3,6 +3,7 @@ package org.briarproject.briar.blog; import org.briarproject.bramble.api.FormatException; import org.briarproject.bramble.api.client.ClientHelper; import org.briarproject.bramble.api.contact.Contact; +import org.briarproject.bramble.api.contact.ContactManager.ContactHook; import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.data.BdfEntry; import org.briarproject.bramble.api.data.BdfList; @@ -48,7 +49,6 @@ import java.util.concurrent.CopyOnWriteArrayList; import javax.annotation.Nullable; import javax.inject.Inject; -import static org.briarproject.bramble.api.contact.ContactManager.RemoveContactHook; import static org.briarproject.briar.api.blog.BlogConstants.KEY_AUTHOR; import static org.briarproject.briar.api.blog.BlogConstants.KEY_COMMENT; import static org.briarproject.briar.api.blog.BlogConstants.KEY_ORIGINAL_MSG_ID; @@ -66,7 +66,7 @@ import static org.briarproject.briar.api.blog.MessageType.WRAPPED_POST; @NotNullByDefault class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager, - RemoveContactHook, Client { + ContactHook, Client { private final IdentityManager identityManager; private final BlogFactory blogFactory; @@ -93,6 +93,10 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager, db.addGroup(txn, b.getGroup()); // does nothing, if group exists } + @Override + public void addingContact(Transaction txn, Contact c) throws DbException { + } + @Override public void removingContact(Transaction txn, Contact c) throws DbException { Blog b = blogFactory.createBlog(c.getAuthor()); diff --git a/briar-core/src/main/java/org/briarproject/briar/blog/BlogModule.java b/briar-core/src/main/java/org/briarproject/briar/blog/BlogModule.java index d07fbf7c40e6ba3a418cbfe4e7aed3182fa8859b..af39a8fcd9134af40874bae4fa19b977d2aa1689 100644 --- a/briar-core/src/main/java/org/briarproject/briar/blog/BlogModule.java +++ b/briar-core/src/main/java/org/briarproject/briar/blog/BlogModule.java @@ -37,7 +37,7 @@ public class BlogModule { ValidationManager validationManager) { lifecycleManager.registerClient(blogManager); - contactManager.registerRemoveContactHook(blogManager); + contactManager.registerContactHook(blogManager); validationManager.registerIncomingMessageHook(CLIENT_ID, blogManager); return blogManager; } 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 51ffb23d5caae80dddb813b4184d1d3d27ca243c..9ccf06b6796fdf869500d8e7233042950c9a84ec 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 @@ -4,8 +4,7 @@ import org.briarproject.bramble.api.FormatException; import org.briarproject.bramble.api.client.ClientHelper; import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.contact.ContactId; -import org.briarproject.bramble.api.contact.ContactManager.AddContactHook; -import org.briarproject.bramble.api.contact.ContactManager.RemoveContactHook; +import org.briarproject.bramble.api.contact.ContactManager.ContactHook; import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.data.BdfEntry; import org.briarproject.bramble.api.data.BdfList; @@ -81,8 +80,7 @@ import static org.briarproject.briar.client.MessageTrackerConstants.MSG_KEY_READ @Immutable @NotNullByDefault class IntroductionManagerImpl extends ConversationClientImpl - implements IntroductionManager, Client, AddContactHook, - RemoveContactHook { + implements IntroductionManager, Client, ContactHook { private static final Logger LOG = Logger.getLogger(IntroductionManagerImpl.class.getName()); diff --git a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionModule.java b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionModule.java index a4c3b8e2937ad889379e17313e5e9bb47441b79c..e0122faa9d315af728599a43220b89c4afdec756 100644 --- a/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionModule.java +++ b/briar-core/src/main/java/org/briarproject/briar/introduction/IntroductionModule.java @@ -51,8 +51,7 @@ public class IntroductionModule { IntroductionManagerImpl introductionManager) { lifecycleManager.registerClient(introductionManager); - contactManager.registerAddContactHook(introductionManager); - contactManager.registerRemoveContactHook(introductionManager); + contactManager.registerContactHook(introductionManager); messageQueueManager.registerIncomingMessageHook(CLIENT_ID, introductionManager); conversationManager.registerConversationClient(introductionManager); diff --git a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java index 859658a7d9afb1b356e46d549a4de9d7a50c3cc1..c81766492f98ea749ca83b4d38a67f0105fc032b 100644 --- a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingManagerImpl.java @@ -5,8 +5,7 @@ import org.briarproject.bramble.api.client.ClientHelper; import org.briarproject.bramble.api.client.ContactGroupFactory; import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.contact.ContactId; -import org.briarproject.bramble.api.contact.ContactManager.AddContactHook; -import org.briarproject.bramble.api.contact.ContactManager.RemoveContactHook; +import org.briarproject.bramble.api.contact.ContactManager.ContactHook; import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.data.BdfList; import org.briarproject.bramble.api.data.MetadataParser; @@ -40,7 +39,7 @@ import static org.briarproject.briar.client.MessageTrackerConstants.MSG_KEY_READ @Immutable @NotNullByDefault class MessagingManagerImpl extends ConversationClientImpl - implements MessagingManager, Client, AddContactHook, RemoveContactHook { + implements MessagingManager, Client, ContactHook { private final ContactGroupFactory contactGroupFactory; diff --git a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingModule.java b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingModule.java index 87aed0765b51880fd816de075907e04429b0086e..492d3c4fac7e4c9ddde40f8843a5ae79054d26d7 100644 --- a/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingModule.java +++ b/briar-core/src/main/java/org/briarproject/briar/messaging/MessagingModule.java @@ -54,8 +54,7 @@ public class MessagingModule { ConversationManager conversationManager, MessagingManagerImpl messagingManager) { lifecycleManager.registerClient(messagingManager); - contactManager.registerAddContactHook(messagingManager); - contactManager.registerRemoveContactHook(messagingManager); + contactManager.registerContactHook(messagingManager); validationManager .registerIncomingMessageHook(CLIENT_ID, messagingManager); conversationManager.registerConversationClient(messagingManager); 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 446c4b6a4790ffa4a19d88554403c86de61b74cd..3c02de9f4653064f98fbb943b104bb961b21ef9d 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 @@ -5,8 +5,7 @@ import org.briarproject.bramble.api.client.ClientHelper; import org.briarproject.bramble.api.client.ContactGroupFactory; import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.contact.ContactId; -import org.briarproject.bramble.api.contact.ContactManager.AddContactHook; -import org.briarproject.bramble.api.contact.ContactManager.RemoveContactHook; +import org.briarproject.bramble.api.contact.ContactManager.ContactHook; import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.data.BdfList; import org.briarproject.bramble.api.data.MetadataParser; @@ -59,8 +58,8 @@ import static org.briarproject.briar.privategroup.invitation.Role.PEER; @Immutable @NotNullByDefault class GroupInvitationManagerImpl extends ConversationClientImpl - implements GroupInvitationManager, Client, AddContactHook, - RemoveContactHook, PrivateGroupHook { + implements GroupInvitationManager, Client, ContactHook, + PrivateGroupHook { private final ContactGroupFactory contactGroupFactory; private final PrivateGroupFactory privateGroupFactory; diff --git a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationModule.java b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationModule.java index ba921f6129d4defc7c910c3bd4702fabafbb93b2..fbd5efbc132ff187344f5cc07a897a60a1e07ad0 100644 --- a/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationModule.java +++ b/briar-core/src/main/java/org/briarproject/briar/privategroup/invitation/GroupInvitationModule.java @@ -41,8 +41,7 @@ public class GroupInvitationModule { lifecycleManager.registerClient(groupInvitationManager); validationManager.registerIncomingMessageHook(CLIENT_ID, groupInvitationManager); - contactManager.registerAddContactHook(groupInvitationManager); - contactManager.registerRemoveContactHook(groupInvitationManager); + contactManager.registerContactHook(groupInvitationManager); privateGroupManager.registerPrivateGroupHook(groupInvitationManager); conversationManager.registerConversationClient(groupInvitationManager); return groupInvitationManager; 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 1c7bcd0dd0aa80dc74555c1d75abee60a9624491..f26996438d7bce6a75e2e276f90f8020d4668c3c 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 @@ -5,8 +5,7 @@ import org.briarproject.bramble.api.client.ClientHelper; import org.briarproject.bramble.api.client.ContactGroupFactory; import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.contact.ContactId; -import org.briarproject.bramble.api.contact.ContactManager.AddContactHook; -import org.briarproject.bramble.api.contact.ContactManager.RemoveContactHook; +import org.briarproject.bramble.api.contact.ContactManager.ContactHook; import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.data.BdfList; import org.briarproject.bramble.api.data.MetadataParser; @@ -53,8 +52,7 @@ import static org.briarproject.briar.sharing.State.SHARING; @NotNullByDefault abstract class SharingManagerImpl<S extends Shareable> extends ConversationClientImpl - implements SharingManager<S>, Client, AddContactHook, - RemoveContactHook { + implements SharingManager<S>, Client, ContactHook { private final MessageParser<S> messageParser; private final SessionEncoder sessionEncoder; diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingModule.java b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingModule.java index 5d5910bc6c3b665bd99e8c52f26deb18c5f00b5a..64d4d0d37d6fdeb10feb672c9bbe59b6ae2ad4dd 100644 --- a/briar-core/src/main/java/org/briarproject/briar/sharing/SharingModule.java +++ b/briar-core/src/main/java/org/briarproject/briar/sharing/SharingModule.java @@ -75,8 +75,7 @@ public class SharingModule { ConversationManager conversationManager, BlogManager blogManager, BlogSharingManagerImpl blogSharingManager) { lifecycleManager.registerClient(blogSharingManager); - contactManager.registerAddContactHook(blogSharingManager); - contactManager.registerRemoveContactHook(blogSharingManager); + contactManager.registerContactHook(blogSharingManager); validationManager.registerIncomingMessageHook( BlogSharingManager.CLIENT_ID, blogSharingManager); conversationManager.registerConversationClient(blogSharingManager); @@ -127,8 +126,7 @@ public class SharingModule { ForumSharingManagerImpl forumSharingManager) { lifecycleManager.registerClient(forumSharingManager); - contactManager.registerAddContactHook(forumSharingManager); - contactManager.registerRemoveContactHook(forumSharingManager); + contactManager.registerContactHook(forumSharingManager); validationManager.registerIncomingMessageHook( ForumSharingManager.CLIENT_ID, forumSharingManager); conversationManager.registerConversationClient(forumSharingManager);