diff --git a/briar-api/src/org/briarproject/api/contact/ContactManager.java b/briar-api/src/org/briarproject/api/contact/ContactManager.java index 08c9dc46a1509fa5efca37571502e49898af6830..3b311d66d58146de84e2d7dc9932d7047483c6aa 100644 --- a/briar-api/src/org/briarproject/api/contact/ContactManager.java +++ b/briar-api/src/org/briarproject/api/contact/ContactManager.java @@ -30,10 +30,10 @@ public interface ContactManager { void removeContact(ContactId c) throws DbException; interface AddContactHook { - void addingContact(ContactId c); + void addingContact(Contact c); } interface RemoveContactHook { - void removingContact(ContactId c); + void removingContact(Contact c); } } diff --git a/briar-api/src/org/briarproject/api/identity/IdentityManager.java b/briar-api/src/org/briarproject/api/identity/IdentityManager.java index 9a5a030abdeab1d485ee7a22fd6f8d3a78ac1ea5..e872d845edbfb7ce3b21397791ff13bf74fa5c02 100644 --- a/briar-api/src/org/briarproject/api/identity/IdentityManager.java +++ b/briar-api/src/org/briarproject/api/identity/IdentityManager.java @@ -25,10 +25,10 @@ public interface IdentityManager { void removeLocalAuthor(AuthorId a) throws DbException; interface AddIdentityHook { - void addingIdentity(AuthorId a); + void addingIdentity(LocalAuthor a); } interface RemoveIdentityHook { - void removingIdentity(AuthorId a); + void removingIdentity(LocalAuthor a); } } diff --git a/briar-core/src/org/briarproject/contact/ContactManagerImpl.java b/briar-core/src/org/briarproject/contact/ContactManagerImpl.java index fa1c096219f35df6889f892839273b8806af4b94..b8f9553c84e62362acbfcec5b59f370015769c54 100644 --- a/briar-core/src/org/briarproject/contact/ContactManagerImpl.java +++ b/briar-core/src/org/briarproject/contact/ContactManagerImpl.java @@ -14,6 +14,7 @@ import org.briarproject.api.event.EventBus; import org.briarproject.api.identity.Author; import org.briarproject.api.identity.AuthorId; import org.briarproject.api.identity.IdentityManager.RemoveIdentityHook; +import org.briarproject.api.identity.LocalAuthor; import org.briarproject.api.lifecycle.Service; import java.util.ArrayList; @@ -54,12 +55,12 @@ class ContactManagerImpl implements ContactManager, Service, for (Contact c : db.getContacts()) { if (c.getStatus().equals(ADDING)) { for (AddContactHook hook : addHooks) - hook.addingContact(c.getId()); + hook.addingContact(c); db.setContactStatus(c.getId(), ACTIVE); eventBus.broadcast(new ContactAddedEvent(c.getId())); } else if (c.getStatus().equals(REMOVING)) { for (RemoveContactHook hook : removeHooks) - hook.removingContact(c.getId()); + hook.removingContact(c); db.removeContact(c.getId()); eventBus.broadcast(new ContactRemovedEvent(c.getId())); } @@ -90,7 +91,8 @@ class ContactManagerImpl implements ContactManager, Service, public ContactId addContact(Author remote, AuthorId local) throws DbException { ContactId c = db.addContact(remote, local); - for (AddContactHook hook : addHooks) hook.addingContact(c); + Contact contact = db.getContact(c); + for (AddContactHook hook : addHooks) hook.addingContact(contact); db.setContactStatus(c, ACTIVE); eventBus.broadcast(new ContactAddedEvent(c)); return c; @@ -115,17 +117,19 @@ class ContactManagerImpl implements ContactManager, Service, @Override public void removeContact(ContactId c) throws DbException { + Contact contact = db.getContact(c); db.setContactStatus(c, REMOVING); - for (RemoveContactHook hook : removeHooks) hook.removingContact(c); + for (RemoveContactHook hook : removeHooks) + hook.removingContact(contact); db.removeContact(c); eventBus.broadcast(new ContactRemovedEvent(c)); } @Override - public void removingIdentity(AuthorId a) { + public void removingIdentity(LocalAuthor a) { // Remove any contacts of the local pseudonym that's being removed try { - for (ContactId c : db.getContacts(a)) removeContact(c); + for (ContactId c : db.getContacts(a.getId())) removeContact(c); } catch (DbException e) { if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); } diff --git a/briar-core/src/org/briarproject/forum/ForumManagerImpl.java b/briar-core/src/org/briarproject/forum/ForumManagerImpl.java index 0e2c581c84e293d97fbe61eb8f6ca947ad6cea18..6820afb47e92cac1958dfbf41dc00bae31e18459 100644 --- a/briar-core/src/org/briarproject/forum/ForumManagerImpl.java +++ b/briar-core/src/org/briarproject/forum/ForumManagerImpl.java @@ -19,6 +19,7 @@ import org.briarproject.api.forum.ForumPost; import org.briarproject.api.forum.ForumPostHeader; import org.briarproject.api.identity.Author; import org.briarproject.api.identity.AuthorId; +import org.briarproject.api.identity.IdentityManager; import org.briarproject.api.identity.LocalAuthor; import org.briarproject.api.sync.ClientId; import org.briarproject.api.sync.Group; @@ -59,6 +60,7 @@ class ForumManagerImpl implements ForumManager { private final DatabaseComponent db; private final ContactManager contactManager; + private final IdentityManager identityManager; private final BdfReaderFactory bdfReaderFactory; private final MetadataEncoder metadataEncoder; private final MetadataParser metadataParser; @@ -68,10 +70,11 @@ class ForumManagerImpl implements ForumManager { @Inject ForumManagerImpl(DatabaseComponent db, ContactManager contactManager, - BdfReaderFactory bdfReaderFactory, MetadataEncoder metadataEncoder, - MetadataParser metadataParser) { + IdentityManager identityManager, BdfReaderFactory bdfReaderFactory, + MetadataEncoder metadataEncoder, MetadataParser metadataParser) { this.db = db; this.contactManager = contactManager; + this.identityManager = identityManager; this.bdfReaderFactory = bdfReaderFactory; this.metadataEncoder = metadataEncoder; this.metadataParser = metadataParser; @@ -173,7 +176,7 @@ class ForumManagerImpl implements ForumManager { try { // Load the IDs of the user's identities Set<AuthorId> localAuthorIds = new HashSet<AuthorId>(); - for (LocalAuthor a : db.getLocalAuthors()) + for (LocalAuthor a : identityManager.getLocalAuthors()) localAuthorIds.add(a.getId()); // Load the IDs of contacts' identities Set<AuthorId> contactAuthorIds = new HashSet<AuthorId>(); diff --git a/briar-core/src/org/briarproject/forum/ForumSharingManagerImpl.java b/briar-core/src/org/briarproject/forum/ForumSharingManagerImpl.java index 5218e5388ac8dff27fd39f37621b7dffe0a11b10..abfb7f6c90f8108bce42242ece447e2db26658d9 100644 --- a/briar-core/src/org/briarproject/forum/ForumSharingManagerImpl.java +++ b/briar-core/src/org/briarproject/forum/ForumSharingManagerImpl.java @@ -106,17 +106,17 @@ class ForumSharingManagerImpl implements ForumSharingManager, AddContactHook, } @Override - public void addingContact(ContactId c) { + public void addingContact(Contact c) { lock.writeLock().lock(); try { // Create a group to share with the contact - Group g = getContactGroup(db.getContact(c)); + Group g = getContactGroup(c); // Store the group and share it with the contact db.addGroup(g); - db.setVisibility(g.getId(), Collections.singletonList(c)); + db.setVisibility(g.getId(), Collections.singletonList(c.getId())); // Attach the contact ID to the group BdfDictionary d = new BdfDictionary(); - d.put("contactId", c.getInt()); + d.put("contactId", c.getId().getInt()); db.mergeGroupMetadata(g.getId(), metadataEncoder.encode(d)); // Share any forums that are shared with all contacts List<Forum> shared = getForumsSharedWithAllContacts(); @@ -131,10 +131,10 @@ class ForumSharingManagerImpl implements ForumSharingManager, AddContactHook, } @Override - public void removingContact(ContactId c) { + public void removingContact(Contact c) { lock.writeLock().lock(); try { - db.removeGroup(getContactGroup(db.getContact(c))); + db.removeGroup(getContactGroup(c)); } catch (DbException e) { if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); } finally { diff --git a/briar-core/src/org/briarproject/identity/IdentityManagerImpl.java b/briar-core/src/org/briarproject/identity/IdentityManagerImpl.java index a51ce023880530c5ffc915823a78d2209fe8271c..71b34eac925e31a79d413f9f228b51a43dd7e97a 100644 --- a/briar-core/src/org/briarproject/identity/IdentityManagerImpl.java +++ b/briar-core/src/org/briarproject/identity/IdentityManagerImpl.java @@ -50,12 +50,12 @@ class IdentityManagerImpl implements IdentityManager, Service { for (LocalAuthor a : db.getLocalAuthors()) { if (a.getStatus().equals(ADDING)) { for (AddIdentityHook hook : addHooks) - hook.addingIdentity(a.getId()); + hook.addingIdentity(a); db.setLocalAuthorStatus(a.getId(), ACTIVE); eventBus.broadcast(new LocalAuthorAddedEvent(a.getId())); } else if (a.getStatus().equals(REMOVING)) { for (RemoveIdentityHook hook : removeHooks) - hook.removingIdentity(a.getId()); + hook.removingIdentity(a); db.removeLocalAuthor(a.getId()); eventBus.broadcast(new LocalAuthorRemovedEvent(a.getId())); } @@ -83,11 +83,11 @@ class IdentityManagerImpl implements IdentityManager, Service { } @Override - public void addLocalAuthor(LocalAuthor a) throws DbException { - db.addLocalAuthor(a); - for (AddIdentityHook hook : addHooks) hook.addingIdentity(a.getId()); - db.setLocalAuthorStatus(a.getId(), ACTIVE); - eventBus.broadcast(new LocalAuthorAddedEvent(a.getId())); + public void addLocalAuthor(LocalAuthor localAuthor) throws DbException { + db.addLocalAuthor(localAuthor); + for (AddIdentityHook hook : addHooks) hook.addingIdentity(localAuthor); + db.setLocalAuthorStatus(localAuthor.getId(), ACTIVE); + eventBus.broadcast(new LocalAuthorAddedEvent(localAuthor.getId())); } @Override @@ -109,8 +109,10 @@ class IdentityManagerImpl implements IdentityManager, Service { @Override public void removeLocalAuthor(AuthorId a) throws DbException { + LocalAuthor localAuthor = db.getLocalAuthor(a); db.setLocalAuthorStatus(a, REMOVING); - for (RemoveIdentityHook hook : removeHooks) hook.removingIdentity(a); + for (RemoveIdentityHook hook : removeHooks) + hook.removingIdentity(localAuthor); db.removeLocalAuthor(a); eventBus.broadcast(new LocalAuthorRemovedEvent(a)); } diff --git a/briar-core/src/org/briarproject/messaging/MessagingManagerImpl.java b/briar-core/src/org/briarproject/messaging/MessagingManagerImpl.java index 65f0432893f5d5d54c9806719b8d2be007f92cb6..a5514fc04ae77bcb99e5369edcb8393cb707f0c5 100644 --- a/briar-core/src/org/briarproject/messaging/MessagingManagerImpl.java +++ b/briar-core/src/org/briarproject/messaging/MessagingManagerImpl.java @@ -71,16 +71,16 @@ class MessagingManagerImpl implements MessagingManager, AddContactHook, } @Override - public void addingContact(ContactId c) { + public void addingContact(Contact c) { try { // Create a group to share with the contact - Group g = getContactGroup(db.getContact(c)); + Group g = getContactGroup(c); // Store the group and share it with the contact db.addGroup(g); - db.setVisibility(g.getId(), Collections.singletonList(c)); + db.setVisibility(g.getId(), Collections.singletonList(c.getId())); // Attach the contact ID to the group BdfDictionary d = new BdfDictionary(); - d.put("contactId", c.getInt()); + d.put("contactId", c.getId().getInt()); db.mergeGroupMetadata(g.getId(), metadataEncoder.encode(d)); } catch (DbException e) { if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); @@ -94,9 +94,9 @@ class MessagingManagerImpl implements MessagingManager, AddContactHook, } @Override - public void removingContact(ContactId c) { + public void removingContact(Contact c) { try { - db.removeGroup(getContactGroup(db.getContact(c))); + db.removeGroup(getContactGroup(c)); } catch (DbException e) { if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); } diff --git a/briar-core/src/org/briarproject/properties/TransportPropertyManagerImpl.java b/briar-core/src/org/briarproject/properties/TransportPropertyManagerImpl.java index bbc6cd57d16f68433e7debf2e87977ced7094c3e..e972093d7a03d2abb21edfe0c34140830526f900 100644 --- a/briar-core/src/org/briarproject/properties/TransportPropertyManagerImpl.java +++ b/briar-core/src/org/briarproject/properties/TransportPropertyManagerImpl.java @@ -95,14 +95,14 @@ class TransportPropertyManagerImpl implements TransportPropertyManager, } @Override - public void addingContact(ContactId c) { + public void addingContact(Contact c) { lock.writeLock().lock(); try { // Create a group to share with the contact - Group g = getContactGroup(db.getContact(c)); + Group g = getContactGroup(c); // Store the group and share it with the contact db.addGroup(g); - db.setVisibility(g.getId(), Collections.singletonList(c)); + db.setVisibility(g.getId(), Collections.singletonList(c.getId())); // Copy the latest local properties into the group DeviceId dev = db.getDeviceId(); Map<TransportId, TransportProperties> local = getLocalProperties(); @@ -120,10 +120,10 @@ class TransportPropertyManagerImpl implements TransportPropertyManager, } @Override - public void removingContact(ContactId c) { + public void removingContact(Contact c) { lock.writeLock().lock(); try { - db.removeGroup(getContactGroup(db.getContact(c))); + db.removeGroup(getContactGroup(c)); } catch (DbException e) { if (LOG.isLoggable(WARNING)) LOG.log(WARNING, e.toString(), e); } finally { @@ -136,7 +136,7 @@ class TransportPropertyManagerImpl implements TransportPropertyManager, Map<TransportId, TransportProperties> props) throws DbException { lock.writeLock().lock(); try { - Group g = getContactGroup(db.getContact(c)); + Group g = getContactGroup(contactManager.getContact(c)); for (Entry<TransportId, TransportProperties> e : props.entrySet()) { storeMessage(g.getId(), dev, e.getKey(), e.getValue(), 0, false, false); diff --git a/briar-tests/src/org/briarproject/contact/ContactManagerImplTest.java b/briar-tests/src/org/briarproject/contact/ContactManagerImplTest.java new file mode 100644 index 0000000000000000000000000000000000000000..6cde435e38aa438ca360302eea9989c08b8c10fc --- /dev/null +++ b/briar-tests/src/org/briarproject/contact/ContactManagerImplTest.java @@ -0,0 +1,14 @@ +package org.briarproject.contact; + +import org.briarproject.BriarTestCase; +import org.junit.Test; + +import static org.junit.Assert.fail; + +public class ContactManagerImplTest extends BriarTestCase { + + @Test + public void testUnitTestsExist() { + fail(); // FIXME: Write tests + } +} diff --git a/briar-tests/src/org/briarproject/identity/IdentityManagerImplTest.java b/briar-tests/src/org/briarproject/identity/IdentityManagerImplTest.java new file mode 100644 index 0000000000000000000000000000000000000000..c04567a0a41253fe1b91eb0bf76d41a50d8aed10 --- /dev/null +++ b/briar-tests/src/org/briarproject/identity/IdentityManagerImplTest.java @@ -0,0 +1,14 @@ +package org.briarproject.identity; + +import org.briarproject.BriarTestCase; +import org.junit.Test; + +import static org.junit.Assert.fail; + +public class IdentityManagerImplTest extends BriarTestCase { + + @Test + public void testUnitTestsExist() { + fail(); // FIXME: Write tests + } +}