diff --git a/bramble-android/src/main/res/raw/tor b/bramble-android/src/main/res/raw/tor new file mode 100755 index 0000000000000000000000000000000000000000..c4490cdd52b97d4cc46f48d999eb574a001da32d Binary files /dev/null and b/bramble-android/src/main/res/raw/tor differ diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactFactory.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactFactory.java index 73174b5f8e07c954bfa33b80937c4daa9d6cdfd5..b12c19c9927b4ff4b00668daaa047cde8d0a9e4f 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactFactory.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactFactory.java @@ -5,9 +5,9 @@ import org.briarproject.bramble.api.identity.AuthorId; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; @NotNullByDefault -public class ContactFactory { +public interface ContactFactory { - public static Contact createContact(ContactId c, Author author, + static Contact createContact(ContactId c, Author author, AuthorId localAuthorId, boolean verified, boolean active, ContactType type) { switch (type) { 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 2909c072f51755c1f1bb75761363dd486f4cf865..fe98a6cff95a9ea12f6c1ef00d8f55dd0f9104b9 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 @@ -127,6 +127,8 @@ public interface ContactManager { interface ContactHook { + Collection<ContactType> getApplicableContactTypes(); + void addingContact(Transaction txn, Contact c) throws DbException; void removingContact(Transaction txn, Contact c) throws DbException; diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactType.java b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactType.java index 4fb77e0e2512823be8a60ac0b983fc853780aa5b..c5461dd76f642ec4e5e8c49305425be1e94274b3 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactType.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/contact/ContactType.java @@ -3,7 +3,6 @@ package org.briarproject.bramble.api.contact; import org.briarproject.bramble.api.FormatException; import org.briarproject.bramble.api.nullsafety.NotNullByDefault; -import javax.annotation.Nullable; import javax.annotation.concurrent.Immutable; /** @@ -22,7 +21,7 @@ public enum ContactType { */ PRIVATE_MAILBOX(1), /** - * The {@link ContactType#CONTACT} paired with this mailbox. + * The owner of a mailbox. */ MAILBOX_OWNER(2); @@ -40,10 +39,9 @@ public enum ContactType { } // Use this for values coming from the database - @Nullable - public static ContactType fromLocaleValue(int value) { + public static ContactType fromLocalValue(int value) { for (ContactType type : values()) if (type.value == value) return type; - return null; + throw new IllegalArgumentException(); } public int getValue() { diff --git a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeTaskImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeTaskImpl.java index ec708e1f27891a582175964695132cf6ee57facb..9de67f743031cffe05e41a489f82536c29acda4c 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeTaskImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/contact/ContactExchangeTaskImpl.java @@ -221,7 +221,8 @@ class ContactExchangeTaskImpl extends Thread implements ContactExchangeTask { } // Verify the contact's signature - if (!verify(remoteInfo.getAuthor(), remoteNonce, remoteInfo.getSignature())) { + if (!verify(remoteInfo.getAuthor(), remoteNonce, + remoteInfo.getSignature())) { LOG.warning("Invalid signature"); listener.contactExchangeFailed(); tryToClose(conn); 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 fbeaf4e0c1219bd51060301d62d476aff1a269ce..4067ddfaf8de46cb6dc1c1cb1aabe0a8555a22de 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 @@ -54,7 +54,10 @@ class ContactManagerImpl implements ContactManager { CONTACT); keyManager.addContact(txn, c, master, timestamp, alice, active); Contact contact = db.getContact(txn, c); - for (ContactHook hook : hooks) hook.addingContact(txn, contact); + for (ContactHook hook : hooks) { + if (hook.getApplicableContactTypes().contains(contact.getType())) + hook.addingContact(txn, contact); + } return c; } @@ -64,7 +67,10 @@ class ContactManagerImpl implements ContactManager { ContactId c = db.addContact(txn, remote, local, verified, active, CONTACT); Contact contact = db.getContact(txn, c); - for (ContactHook hook : hooks) hook.addingContact(txn, contact); + for (ContactHook hook : hooks) { + if (hook.getApplicableContactTypes().contains(contact.getType())) + hook.addingContact(txn, contact); + } return c; } @@ -92,7 +98,10 @@ class ContactManagerImpl implements ContactManager { PRIVATE_MAILBOX); keyManager.addContact(txn, c, master, timestamp, alice, true); Contact contact = db.getContact(txn, c); - for (ContactHook hook : hooks) hook.addingContact(txn, contact); + for (ContactHook hook : hooks) { + if (hook.getApplicableContactTypes().contains(contact.getType())) + hook.addingContact(txn, contact); + } return c; } @@ -104,7 +113,10 @@ class ContactManagerImpl implements ContactManager { MAILBOX_OWNER); keyManager.addContact(txn, c, master, timestamp, alice, true); Contact contact = db.getContact(txn, c); - for (ContactHook hook : hooks) hook.addingContact(txn, contact); + for (ContactHook hook : hooks) { + if (hook.getApplicableContactTypes().contains(contact.getType())) + hook.addingContact(txn, contact); + } return c; } @@ -231,7 +243,10 @@ class ContactManagerImpl implements ContactManager { public void removeContact(Transaction txn, ContactId c) throws DbException { Contact contact = db.getContact(txn, c); - for (ContactHook hook : hooks) hook.removingContact(txn, contact); + for (ContactHook hook : hooks) { + if (hook.getApplicableContactTypes().contains(contact.getType())) + hook.removingContact(txn, contact); + } db.removeContact(txn, c); } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/DatabaseComponentImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/db/DatabaseComponentImpl.java index f30b8ce50d8b26c5f03c4f34b9880f938acfc842..2fd9a93b0f0f28b0bc9255a4bab0b5f2337a8ab6 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/db/DatabaseComponentImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/DatabaseComponentImpl.java @@ -70,8 +70,6 @@ import javax.annotation.concurrent.ThreadSafe; import javax.inject.Inject; import static java.util.logging.Level.WARNING; -import static org.briarproject.bramble.api.contact.ContactType.MAILBOX_OWNER; -import static org.briarproject.bramble.api.contact.ContactType.PRIVATE_MAILBOX; import static org.briarproject.bramble.api.sync.Group.Visibility.INVISIBLE; import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED; import static org.briarproject.bramble.api.sync.ValidationManager.State.DELIVERED; @@ -185,20 +183,9 @@ class DatabaseComponentImpl<T> implements DatabaseComponent { throw new ContactExistsException(); if (db.containsContact(txn, remote.getId(), local)) throw new ContactExistsException(); - if (type == PRIVATE_MAILBOX && - !db.getContactsByType(txn, PRIVATE_MAILBOX).isEmpty()) - throw new ContactExistsException(); - if (type == MAILBOX_OWNER && - !db.getContactsByType(txn, MAILBOX_OWNER).isEmpty()) - throw new ContactExistsException(); - ContactId c = - db.addContact(txn, remote, local, verified, active, type); - transaction.attach(new - - ContactAddedEvent(c, active)); - if (active) transaction.attach(new - - ContactStatusChangedEvent(c, true)); + ContactId c = db.addContact(txn, remote, local, verified, active, type); + transaction.attach(new ContactAddedEvent(c, active)); + if (active) transaction.attach(new ContactStatusChangedEvent(c, true)); return c; } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java index e81f2b9648d520b882e9b51094a304e2d706b1f7..fe8c402c160f9c4e49529a2f7727209c62e70721 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/db/JdbcDatabase.java @@ -1214,7 +1214,7 @@ abstract class JdbcDatabase implements Database<Connection> { boolean verified = rs.getBoolean(6); boolean active = rs.getBoolean(7); ContactType type = null; - type = ContactType.fromLocaleValue(rs.getInt(8)); + type = ContactType.fromLocalValue(rs.getInt(8)); rs.close(); ps.close(); Author author = @@ -1252,7 +1252,7 @@ abstract class JdbcDatabase implements Database<Connection> { AuthorId localAuthorId = new AuthorId(rs.getBytes(6)); boolean verified = rs.getBoolean(7); boolean active = rs.getBoolean(8); - ContactType type = ContactType.fromLocaleValue(rs.getInt(9)); + ContactType type = ContactType.fromLocalValue(rs.getInt(9)); contacts.add(ContactFactory .createContact(contactId, author, localAuthorId, verified, active, type)); @@ -1312,7 +1312,7 @@ abstract class JdbcDatabase implements Database<Connection> { AuthorId localAuthorId = new AuthorId(rs.getBytes(5)); boolean verified = rs.getBoolean(6); boolean active = rs.getBoolean(7); - ContactType type = ContactType.fromLocaleValue(rs.getInt(8)); + ContactType type = ContactType.fromLocalValue(rs.getInt(8)); Author author = new Author(remote, formatVersion, name, publicKey); contacts.add(ContactFactory 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 4b4c360dbd4c2a07c02860e9427c17b8a75a9888..e94f28d8b8630e50215f2ea00a6a0b0ad0b46a6d 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 @@ -6,6 +6,7 @@ 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.ContactHook; +import org.briarproject.bramble.api.contact.ContactType; import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.data.BdfList; import org.briarproject.bramble.api.data.MetadataParser; @@ -29,6 +30,8 @@ import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.api.versioning.ClientVersioningManager; import org.briarproject.bramble.api.versioning.ClientVersioningManager.ClientVersioningHook; +import java.util.Arrays; +import java.util.Collection; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; @@ -96,6 +99,11 @@ class TransportPropertyManagerImpl implements TransportPropertyManager, db.removeGroup(txn, getContactGroup(c)); } + @Override + public Collection<ContactType> getApplicableContactTypes() { + return Arrays.asList(ContactType.values()); + } + @Override public void onClientVisibilityChanging(Transaction txn, Contact c, Visibility v) throws DbException { diff --git a/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningManagerImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningManagerImpl.java index 4c73abfe3787137a4a73231d86a27f32379be9d6..2ca444a15672dcf209ed6d99cf645cabc9c04b27 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningManagerImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/versioning/ClientVersioningManagerImpl.java @@ -6,6 +6,7 @@ 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.ContactHook; +import org.briarproject.bramble.api.contact.ContactType; import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.data.BdfList; import org.briarproject.bramble.api.db.DatabaseComponent; @@ -29,6 +30,7 @@ import org.briarproject.bramble.api.versioning.ClientMajorVersion; import org.briarproject.bramble.api.versioning.ClientVersioningManager; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Collections; import java.util.HashMap; @@ -167,6 +169,11 @@ class ClientVersioningManagerImpl implements ClientVersioningManager, Client, db.removeGroup(txn, getContactGroup(c)); } + @Override + public Collection<ContactType> getApplicableContactTypes() { + return Arrays.asList(ContactType.values()); + } + @Override public boolean incomingMessage(Transaction txn, Message m, Metadata meta) throws DbException, InvalidMessageException { 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 c6fcbec0c12d686da89fb3a8c7a22ac75505905a..46f612e376cf05e2ac4b25cbb0489725cc04eb7a 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 @@ -4,6 +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.ContactManager.ContactHook; +import org.briarproject.bramble.api.contact.ContactType; import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.data.BdfEntry; import org.briarproject.bramble.api.data.BdfList; @@ -99,16 +100,16 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager, @Override public void removingContact(Transaction txn, Contact c) throws DbException { - switch (c.getType()) { - case PRIVATE_MAILBOX: - case MAILBOX_OWNER: - return; - } Blog b = blogFactory.createBlog(c.getAuthor()); // TODO we might want to reconsider removing b, if otherwise shared if (db.containsGroup(txn, b.getId())) removeBlog(txn, b); } + @Override + public Collection<ContactType> getApplicableContactTypes() { + return Collections.singletonList(ContactType.CONTACT); + } + @Override protected boolean incomingMessage(Transaction txn, Message m, BdfList list, BdfDictionary meta) throws DbException, FormatException { 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 873527692b7bed6efd7a9748acb9bfa3f13bfdd3..0a330b2faee21529e11b76273c22864444d5a152 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 @@ -7,6 +7,7 @@ import org.briarproject.bramble.api.contact.Contact; import org.briarproject.bramble.api.contact.ContactId; import org.briarproject.bramble.api.contact.ContactManager; import org.briarproject.bramble.api.contact.ContactManager.ContactHook; +import org.briarproject.bramble.api.contact.ContactType; import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.data.BdfList; import org.briarproject.bramble.api.data.MetadataParser; @@ -39,6 +40,7 @@ import org.briarproject.briar.introduction.IntroducerSession.Introducee; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.List; import java.util.Map; import java.util.Map.Entry; @@ -119,11 +121,6 @@ class IntroductionManagerImpl extends ConversationClientImpl @Override public void addingContact(Transaction txn, Contact c) throws DbException { - switch (c.getType()) { - case PRIVATE_MAILBOX: - case MAILBOX_OWNER: - return; - } // Create a group to share with the contact Group g = getContactGroup(c); db.addGroup(txn, g); @@ -143,11 +140,6 @@ class IntroductionManagerImpl extends ConversationClientImpl @Override public void removingContact(Transaction txn, Contact c) throws DbException { - switch (c.getType()) { - case PRIVATE_MAILBOX: - case MAILBOX_OWNER: - return; - } removeSessionWithIntroducer(txn, c); abortOrRemoveSessionWithIntroducee(txn, c); @@ -155,6 +147,11 @@ class IntroductionManagerImpl extends ConversationClientImpl db.removeGroup(txn, getContactGroup(c)); } + @Override + public Collection<ContactType> getApplicableContactTypes() { + return Collections.singletonList(ContactType.CONTACT); + } + @Override public void onClientVisibilityChanging(Transaction txn, Contact c, Visibility v) throws DbException { 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 555a209905a810fd57df4dd4df78691a427d170b..92973288abb7c55cf9e61fdbe31e72f6a8ce4bf0 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 @@ -6,6 +6,7 @@ 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.ContactHook; +import org.briarproject.bramble.api.contact.ContactType; import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.data.BdfList; import org.briarproject.bramble.api.data.MetadataParser; @@ -30,6 +31,7 @@ import org.briarproject.briar.api.messaging.event.PrivateMessageReceivedEvent; import org.briarproject.briar.client.ConversationClientImpl; import java.util.ArrayList; +import java.util.Arrays; import java.util.Collection; import java.util.Map; @@ -97,6 +99,11 @@ class MessagingManagerImpl extends ConversationClientImpl db.removeGroup(txn, getContactGroup(c)); } + @Override + public Collection<ContactType> getApplicableContactTypes() { + return Arrays.asList(ContactType.values()); + } + @Override public void onClientVisibilityChanging(Transaction txn, Contact c, Visibility v) throws DbException { 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 fe0f1016f8e4aa45e17e1ba6d9a8e134068a99ea..b5a771970aef2f5249aa42b0167972cfea2f2d04 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 @@ -6,6 +6,7 @@ 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.ContactHook; +import org.briarproject.bramble.api.contact.ContactType; import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.data.BdfList; import org.briarproject.bramble.api.data.MetadataParser; @@ -39,6 +40,7 @@ import org.briarproject.briar.client.ConversationClientImpl; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -113,11 +115,6 @@ class GroupInvitationManagerImpl extends ConversationClientImpl @Override public void addingContact(Transaction txn, Contact c) throws DbException { - switch (c.getType()) { - case PRIVATE_MAILBOX: - case MAILBOX_OWNER: - return; - } // Create a group to share with the contact Group g = getContactGroup(c); db.addGroup(txn, g); @@ -142,15 +139,15 @@ class GroupInvitationManagerImpl extends ConversationClientImpl @Override public void removingContact(Transaction txn, Contact c) throws DbException { - switch (c.getType()) { - case PRIVATE_MAILBOX: - case MAILBOX_OWNER: - return; - } // Remove the contact group (all messages will be removed with it) db.removeGroup(txn, getContactGroup(c)); } + @Override + public Collection<ContactType> getApplicableContactTypes() { + return Collections.singletonList(ContactType.CONTACT); + } + @Override public Group getContactGroup(Contact c) { return contactGroupFactory.createContactGroup(CLIENT_ID, diff --git a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java index 3d6ce01a674ae8d8ac11e4cc312dff857f9761c8..138be9bbecb49cc9591f84d912614a00b5e31da4 100644 --- a/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java +++ b/briar-core/src/main/java/org/briarproject/briar/sharing/BlogSharingManagerImpl.java @@ -4,6 +4,7 @@ import org.briarproject.bramble.api.FormatException; 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.ContactType; import org.briarproject.bramble.api.data.MetadataParser; import org.briarproject.bramble.api.db.DatabaseComponent; import org.briarproject.bramble.api.db.DbException; @@ -20,6 +21,9 @@ import org.briarproject.briar.api.blog.BlogManager.RemoveBlogHook; import org.briarproject.briar.api.blog.BlogSharingManager; import org.briarproject.briar.api.client.MessageTracker; +import java.util.Collection; +import java.util.Collections; + import javax.annotation.concurrent.Immutable; import javax.inject.Inject; @@ -70,11 +74,6 @@ class BlogSharingManagerImpl extends SharingManagerImpl<Blog> @Override public void addingContact(Transaction txn, Contact c) throws DbException { - switch (c.getType()) { - case PRIVATE_MAILBOX: - case MAILBOX_OWNER: - return; - } // Create a group to share with the contact super.addingContact(txn, c); @@ -92,6 +91,11 @@ class BlogSharingManagerImpl extends SharingManagerImpl<Blog> } } + @Override + public Collection<ContactType> getApplicableContactTypes() { + return Collections.singletonList(ContactType.CONTACT); + } + @Override public void removingBlog(Transaction txn, Blog b) throws DbException { removingShareable(txn, b); 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 ef7f4d77a3a55f077ec6a4931ae4693efe2b9ac9..7b9c81867503c79356b8d12126c9df79270ba862 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 @@ -6,6 +6,7 @@ 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.ContactHook; +import org.briarproject.bramble.api.contact.ContactType; import org.briarproject.bramble.api.data.BdfDictionary; import org.briarproject.bramble.api.data.BdfList; import org.briarproject.bramble.api.data.MetadataParser; @@ -36,6 +37,7 @@ import org.briarproject.briar.client.ConversationClientImpl; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.List; import java.util.Map; @@ -104,10 +106,6 @@ abstract class SharingManagerImpl<S extends Shareable> @Override public void addingContact(Transaction txn, Contact c) throws DbException { - switch (c.getType()) { - case PRIVATE_MAILBOX: - case MAILBOX_OWNER: - } // Create a group to share with the contact Group g = getContactGroup(c); db.addGroup(txn, g); @@ -126,15 +124,15 @@ abstract class SharingManagerImpl<S extends Shareable> @Override public void removingContact(Transaction txn, Contact c) throws DbException { - switch (c.getType()) { - case PRIVATE_MAILBOX: - case MAILBOX_OWNER: - return; - } // Remove the contact group (all messages will be removed with it) db.removeGroup(txn, getContactGroup(c)); } + @Override + public Collection<ContactType> getApplicableContactTypes() { + return Collections.singletonList(ContactType.CONTACT); + } + @Override public Group getContactGroup(Contact c) { return contactGroupFactory.createContactGroup(getClientId(),