From 284e3a2e86db834d8753a315b54b2317d866db8f Mon Sep 17 00:00:00 2001 From: akwizgran <michael@briarproject.org> Date: Tue, 17 Apr 2018 16:20:16 +0100 Subject: [PATCH] Merge add/remove contact hooks. --- .../bramble/api/contact/ContactManager.java | 17 +++++------- .../bramble/contact/ContactManagerImpl.java | 26 ++++++------------- .../bramble/properties/PropertiesModule.java | 3 +-- .../TransportPropertyManagerImpl.java | 5 ++-- .../briar/blog/BlogManagerImpl.java | 8 ++++-- .../briarproject/briar/blog/BlogModule.java | 2 +- .../introduction/IntroductionManagerImpl.java | 6 ++--- .../introduction/IntroductionModule.java | 3 +-- .../briar/messaging/MessagingManagerImpl.java | 5 ++-- .../briar/messaging/MessagingModule.java | 3 +-- .../GroupInvitationManagerImpl.java | 7 +++-- .../invitation/GroupInvitationModule.java | 3 +-- .../briar/sharing/SharingManagerImpl.java | 6 ++--- .../briar/sharing/SharingModule.java | 6 ++--- 14 files changed, 39 insertions(+), 61 deletions(-) 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 dd3db05038..cbfe86f382 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 025a6d38d0..afa68c1800 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 b9d9e57889..7f7da60cec 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 541224ecd4..4736bd13ed 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 f4b8132266..c7b119ef0c 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 d07fbf7c40..af39a8fcd9 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 51ffb23d5c..9ccf06b679 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 a4c3b8e293..e0122faa9d 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 859658a7d9..c81766492f 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 87aed0765b..492d3c4fac 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 446c4b6a47..3c02de9f46 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 ba921f6129..fbd5efbc13 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 1c7bcd0dd0..f26996438d 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 5d5910bc6c..64d4d0d37d 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); -- GitLab