mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-11 18:29:05 +01:00
Move AuthorInfo from bramble to briar
This commit is contained in:
1
.idea/runConfigurations/All_tests.xml
generated
1
.idea/runConfigurations/All_tests.xml
generated
@@ -13,6 +13,7 @@
|
|||||||
<option name="RunConfigurationTask" enabled="true" run_configuration_name="All tests in bramble-core" run_configuration_type="AndroidJUnit" />
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="All tests in bramble-core" run_configuration_type="AndroidJUnit" />
|
||||||
<option name="RunConfigurationTask" enabled="true" run_configuration_name="All tests in bramble-android" run_configuration_type="AndroidJUnit" />
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="All tests in bramble-android" run_configuration_type="AndroidJUnit" />
|
||||||
<option name="RunConfigurationTask" enabled="true" run_configuration_name="All tests in bramble-java" run_configuration_type="AndroidJUnit" />
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="All tests in bramble-java" run_configuration_type="AndroidJUnit" />
|
||||||
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="All tests in briar-api" run_configuration_type="AndroidJUnit" />
|
||||||
<option name="RunConfigurationTask" enabled="true" run_configuration_name="All tests in briar-core" run_configuration_type="AndroidJUnit" />
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="All tests in briar-core" run_configuration_type="AndroidJUnit" />
|
||||||
<option name="RunConfigurationTask" enabled="true" run_configuration_name="All tests in briar-headless" run_configuration_type="AndroidJUnit" />
|
<option name="RunConfigurationTask" enabled="true" run_configuration_name="All tests in briar-headless" run_configuration_type="AndroidJUnit" />
|
||||||
</method>
|
</method>
|
||||||
|
|||||||
14
.idea/runConfigurations/All_tests_in_briar_api.xml
generated
Normal file
14
.idea/runConfigurations/All_tests_in_briar_api.xml
generated
Normal file
@@ -0,0 +1,14 @@
|
|||||||
|
<component name="ProjectRunConfigurationManager">
|
||||||
|
<configuration default="false" name="All tests in briar-api" type="AndroidJUnit" factoryName="Android JUnit">
|
||||||
|
<module name="briar.briar-api" />
|
||||||
|
<option name="PACKAGE_NAME" value="" />
|
||||||
|
<option name="MAIN_CLASS_NAME" value="" />
|
||||||
|
<option name="METHOD_NAME" value="" />
|
||||||
|
<option name="TEST_OBJECT" value="package" />
|
||||||
|
<option name="PARAMETERS" value="" />
|
||||||
|
<option name="WORKING_DIRECTORY" value="file://$PROJECT_DIR$/briar-api" />
|
||||||
|
<method v="2">
|
||||||
|
<option name="Android.Gradle.BeforeRunTask" enabled="true" />
|
||||||
|
</method>
|
||||||
|
</configuration>
|
||||||
|
</component>
|
||||||
@@ -11,7 +11,6 @@ import org.briarproject.bramble.api.db.PendingContactExistsException;
|
|||||||
import org.briarproject.bramble.api.db.Transaction;
|
import org.briarproject.bramble.api.db.Transaction;
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorId;
|
import org.briarproject.bramble.api.identity.AuthorId;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
|
||||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
|
|
||||||
@@ -220,16 +219,6 @@ public interface ContactManager {
|
|||||||
boolean contactExists(AuthorId remoteAuthorId, AuthorId localAuthorId)
|
boolean contactExists(AuthorId remoteAuthorId, AuthorId localAuthorId)
|
||||||
throws DbException;
|
throws DbException;
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the {@link AuthorInfo} for the given author.
|
|
||||||
*/
|
|
||||||
AuthorInfo getAuthorInfo(AuthorId a) throws DbException;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the {@link AuthorInfo} for the given author.
|
|
||||||
*/
|
|
||||||
AuthorInfo getAuthorInfo(Transaction txn, AuthorId a) throws DbException;
|
|
||||||
|
|
||||||
interface ContactHook {
|
interface ContactHook {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -20,9 +20,7 @@ import org.briarproject.bramble.api.event.Event;
|
|||||||
import org.briarproject.bramble.api.event.EventListener;
|
import org.briarproject.bramble.api.event.EventListener;
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorId;
|
import org.briarproject.bramble.api.identity.AuthorId;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
|
||||||
import org.briarproject.bramble.api.identity.IdentityManager;
|
import org.briarproject.bramble.api.identity.IdentityManager;
|
||||||
import org.briarproject.bramble.api.identity.LocalAuthor;
|
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.bramble.api.transport.KeyManager;
|
import org.briarproject.bramble.api.transport.KeyManager;
|
||||||
|
|
||||||
@@ -40,10 +38,6 @@ import javax.inject.Inject;
|
|||||||
|
|
||||||
import static org.briarproject.bramble.api.contact.PendingContactState.WAITING_FOR_CONNECTION;
|
import static org.briarproject.bramble.api.contact.PendingContactState.WAITING_FOR_CONNECTION;
|
||||||
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
|
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.UNKNOWN;
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.UNVERIFIED;
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED;
|
|
||||||
import static org.briarproject.bramble.util.StringUtils.toUtf8;
|
import static org.briarproject.bramble.util.StringUtils.toUtf8;
|
||||||
|
|
||||||
@ThreadSafe
|
@ThreadSafe
|
||||||
@@ -261,25 +255,6 @@ class ContactManagerImpl implements ContactManager, EventListener {
|
|||||||
db.removeContact(txn, c);
|
db.removeContact(txn, c);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
|
||||||
public AuthorInfo getAuthorInfo(AuthorId a) throws DbException {
|
|
||||||
return db.transactionWithResult(true, txn -> getAuthorInfo(txn, a));
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public AuthorInfo getAuthorInfo(Transaction txn, AuthorId authorId)
|
|
||||||
throws DbException {
|
|
||||||
LocalAuthor localAuthor = identityManager.getLocalAuthor(txn);
|
|
||||||
if (localAuthor.getId().equals(authorId))
|
|
||||||
return new AuthorInfo(OURSELVES);
|
|
||||||
Collection<Contact> contacts = db.getContactsByAuthorId(txn, authorId);
|
|
||||||
if (contacts.isEmpty()) return new AuthorInfo(UNKNOWN);
|
|
||||||
if (contacts.size() > 1) throw new AssertionError();
|
|
||||||
Contact c = contacts.iterator().next();
|
|
||||||
if (c.isVerified()) return new AuthorInfo(VERIFIED, c.getAlias());
|
|
||||||
else return new AuthorInfo(UNVERIFIED, c.getAlias());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void eventOccurred(Event e) {
|
public void eventOccurred(Event e) {
|
||||||
if (e instanceof PendingContactStateChangedEvent) {
|
if (e instanceof PendingContactStateChangedEvent) {
|
||||||
|
|||||||
@@ -8,18 +8,15 @@ import org.briarproject.bramble.api.contact.PendingContactState;
|
|||||||
import org.briarproject.bramble.api.crypto.KeyPair;
|
import org.briarproject.bramble.api.crypto.KeyPair;
|
||||||
import org.briarproject.bramble.api.crypto.SecretKey;
|
import org.briarproject.bramble.api.crypto.SecretKey;
|
||||||
import org.briarproject.bramble.api.db.DatabaseComponent;
|
import org.briarproject.bramble.api.db.DatabaseComponent;
|
||||||
import org.briarproject.bramble.api.db.DbException;
|
|
||||||
import org.briarproject.bramble.api.db.NoSuchContactException;
|
import org.briarproject.bramble.api.db.NoSuchContactException;
|
||||||
import org.briarproject.bramble.api.db.Transaction;
|
import org.briarproject.bramble.api.db.Transaction;
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorId;
|
import org.briarproject.bramble.api.identity.AuthorId;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
|
||||||
import org.briarproject.bramble.api.identity.IdentityManager;
|
import org.briarproject.bramble.api.identity.IdentityManager;
|
||||||
import org.briarproject.bramble.api.identity.LocalAuthor;
|
import org.briarproject.bramble.api.identity.LocalAuthor;
|
||||||
import org.briarproject.bramble.api.transport.KeyManager;
|
import org.briarproject.bramble.api.transport.KeyManager;
|
||||||
import org.briarproject.bramble.test.BrambleMockTestCase;
|
import org.briarproject.bramble.test.BrambleMockTestCase;
|
||||||
import org.briarproject.bramble.test.DbExpectations;
|
import org.briarproject.bramble.test.DbExpectations;
|
||||||
import org.jmock.Expectations;
|
|
||||||
import org.junit.Before;
|
import org.junit.Before;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
@@ -31,10 +28,6 @@ import static java.util.Collections.singletonList;
|
|||||||
import static org.briarproject.bramble.api.contact.HandshakeLinkConstants.BASE32_LINK_BYTES;
|
import static org.briarproject.bramble.api.contact.HandshakeLinkConstants.BASE32_LINK_BYTES;
|
||||||
import static org.briarproject.bramble.api.contact.PendingContactState.WAITING_FOR_CONNECTION;
|
import static org.briarproject.bramble.api.contact.PendingContactState.WAITING_FOR_CONNECTION;
|
||||||
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
|
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.UNKNOWN;
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.UNVERIFIED;
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED;
|
|
||||||
import static org.briarproject.bramble.test.TestUtils.getAgreementPrivateKey;
|
import static org.briarproject.bramble.test.TestUtils.getAgreementPrivateKey;
|
||||||
import static org.briarproject.bramble.test.TestUtils.getAgreementPublicKey;
|
import static org.briarproject.bramble.test.TestUtils.getAgreementPublicKey;
|
||||||
import static org.briarproject.bramble.test.TestUtils.getAuthor;
|
import static org.briarproject.bramble.test.TestUtils.getAuthor;
|
||||||
@@ -46,7 +39,6 @@ import static org.briarproject.bramble.test.TestUtils.getSecretKey;
|
|||||||
import static org.briarproject.bramble.util.StringUtils.getRandomBase32String;
|
import static org.briarproject.bramble.util.StringUtils.getRandomBase32String;
|
||||||
import static org.briarproject.bramble.util.StringUtils.getRandomString;
|
import static org.briarproject.bramble.util.StringUtils.getRandomString;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNull;
|
|
||||||
import static org.junit.Assert.assertTrue;
|
import static org.junit.Assert.assertTrue;
|
||||||
|
|
||||||
public class ContactManagerImplTest extends BrambleMockTestCase {
|
public class ContactManagerImplTest extends BrambleMockTestCase {
|
||||||
@@ -212,75 +204,6 @@ public class ContactManagerImplTest extends BrambleMockTestCase {
|
|||||||
assertTrue(contactManager.contactExists(remote.getId(), local));
|
assertTrue(contactManager.contactExists(remote.getId(), local));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testGetAuthorInfo() throws Exception {
|
|
||||||
Transaction txn = new Transaction(null, true);
|
|
||||||
|
|
||||||
context.checking(new DbExpectations() {{
|
|
||||||
oneOf(identityManager).getLocalAuthor(txn);
|
|
||||||
will(returnValue(localAuthor));
|
|
||||||
oneOf(db).getContactsByAuthorId(txn, remote.getId());
|
|
||||||
will(returnValue(singletonList(contact)));
|
|
||||||
}});
|
|
||||||
|
|
||||||
AuthorInfo authorInfo =
|
|
||||||
contactManager.getAuthorInfo(txn, remote.getId());
|
|
||||||
assertEquals(UNVERIFIED, authorInfo.getStatus());
|
|
||||||
assertEquals(contact.getAlias(), authorInfo.getAlias());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
|
||||||
public void testGetAuthorInfoTransaction() throws DbException {
|
|
||||||
Transaction txn = new Transaction(null, true);
|
|
||||||
|
|
||||||
// check unknown author
|
|
||||||
context.checking(new Expectations() {{
|
|
||||||
oneOf(identityManager).getLocalAuthor(txn);
|
|
||||||
will(returnValue(localAuthor));
|
|
||||||
oneOf(db).getContactsByAuthorId(txn, remote.getId());
|
|
||||||
will(returnValue(emptyList()));
|
|
||||||
}});
|
|
||||||
|
|
||||||
AuthorInfo authorInfo =
|
|
||||||
contactManager.getAuthorInfo(txn, remote.getId());
|
|
||||||
assertEquals(UNKNOWN, authorInfo.getStatus());
|
|
||||||
assertNull(authorInfo.getAlias());
|
|
||||||
|
|
||||||
// check unverified contact
|
|
||||||
checkAuthorInfoContext(txn, remote.getId(), singletonList(contact));
|
|
||||||
authorInfo = contactManager.getAuthorInfo(txn, remote.getId());
|
|
||||||
assertEquals(UNVERIFIED, authorInfo.getStatus());
|
|
||||||
assertEquals(contact.getAlias(), authorInfo.getAlias());
|
|
||||||
|
|
||||||
// check verified contact
|
|
||||||
Contact verified = getContact(remote, local, true);
|
|
||||||
checkAuthorInfoContext(txn, remote.getId(), singletonList(verified));
|
|
||||||
authorInfo = contactManager.getAuthorInfo(txn, remote.getId());
|
|
||||||
assertEquals(VERIFIED, authorInfo.getStatus());
|
|
||||||
assertEquals(verified.getAlias(), authorInfo.getAlias());
|
|
||||||
|
|
||||||
// check ourselves
|
|
||||||
context.checking(new Expectations() {{
|
|
||||||
oneOf(identityManager).getLocalAuthor(txn);
|
|
||||||
will(returnValue(localAuthor));
|
|
||||||
never(db).getContactsByAuthorId(txn, remote.getId());
|
|
||||||
}});
|
|
||||||
|
|
||||||
authorInfo = contactManager.getAuthorInfo(txn, localAuthor.getId());
|
|
||||||
assertEquals(OURSELVES, authorInfo.getStatus());
|
|
||||||
assertNull(authorInfo.getAlias());
|
|
||||||
}
|
|
||||||
|
|
||||||
private void checkAuthorInfoContext(Transaction txn, AuthorId authorId,
|
|
||||||
Collection<Contact> contacts) throws DbException {
|
|
||||||
context.checking(new Expectations() {{
|
|
||||||
oneOf(identityManager).getLocalAuthor(txn);
|
|
||||||
will(returnValue(localAuthor));
|
|
||||||
oneOf(db).getContactsByAuthorId(txn, authorId);
|
|
||||||
will(returnValue(contacts));
|
|
||||||
}});
|
|
||||||
}
|
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
public void testGetHandshakeLink() throws Exception {
|
public void testGetHandshakeLink() throws Exception {
|
||||||
Transaction txn = new Transaction(null, true);
|
Transaction txn = new Transaction(null, true);
|
||||||
|
|||||||
@@ -47,6 +47,7 @@ import org.briarproject.briar.api.conversation.ConversationManager;
|
|||||||
import org.briarproject.briar.api.feed.FeedManager;
|
import org.briarproject.briar.api.feed.FeedManager;
|
||||||
import org.briarproject.briar.api.forum.ForumManager;
|
import org.briarproject.briar.api.forum.ForumManager;
|
||||||
import org.briarproject.briar.api.forum.ForumSharingManager;
|
import org.briarproject.briar.api.forum.ForumSharingManager;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorManager;
|
||||||
import org.briarproject.briar.api.introduction.IntroductionManager;
|
import org.briarproject.briar.api.introduction.IntroductionManager;
|
||||||
import org.briarproject.briar.api.messaging.MessagingManager;
|
import org.briarproject.briar.api.messaging.MessagingManager;
|
||||||
import org.briarproject.briar.api.messaging.PrivateMessageFactory;
|
import org.briarproject.briar.api.messaging.PrivateMessageFactory;
|
||||||
@@ -94,6 +95,8 @@ public interface AndroidComponent
|
|||||||
|
|
||||||
IdentityManager identityManager();
|
IdentityManager identityManager();
|
||||||
|
|
||||||
|
AuthorManager authorManager();
|
||||||
|
|
||||||
PluginManager pluginManager();
|
PluginManager pluginManager();
|
||||||
|
|
||||||
EventBus eventBus();
|
EventBus eventBus();
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package org.briarproject.briar.android.blog;
|
package org.briarproject.briar.android.blog;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.bramble.api.sync.GroupId;
|
import org.briarproject.bramble.api.sync.GroupId;
|
||||||
import org.briarproject.bramble.api.sync.MessageId;
|
import org.briarproject.bramble.api.sync.MessageId;
|
||||||
import org.briarproject.briar.api.blog.BlogPostHeader;
|
import org.briarproject.briar.api.blog.BlogPostHeader;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package org.briarproject.briar.android.forum;
|
package org.briarproject.briar.android.forum;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.bramble.api.sync.MessageId;
|
import org.briarproject.bramble.api.sync.MessageId;
|
||||||
import org.briarproject.briar.android.threaded.ThreadItem;
|
import org.briarproject.briar.android.threaded.ThreadItem;
|
||||||
import org.briarproject.briar.api.forum.ForumPostHeader;
|
import org.briarproject.briar.api.forum.ForumPostHeader;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package org.briarproject.briar.android.privategroup.conversation;
|
package org.briarproject.briar.android.privategroup.conversation;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.bramble.api.sync.GroupId;
|
import org.briarproject.bramble.api.sync.GroupId;
|
||||||
import org.briarproject.bramble.api.sync.MessageId;
|
import org.briarproject.bramble.api.sync.MessageId;
|
||||||
import org.briarproject.briar.R;
|
import org.briarproject.briar.R;
|
||||||
|
|||||||
@@ -10,7 +10,7 @@ import org.briarproject.briar.android.threaded.ThreadItemAdapter.ThreadItemListe
|
|||||||
|
|
||||||
import androidx.annotation.UiThread;
|
import androidx.annotation.UiThread;
|
||||||
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
|
||||||
|
|
||||||
@UiThread
|
@UiThread
|
||||||
@NotNullByDefault
|
@NotNullByDefault
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package org.briarproject.briar.android.privategroup.list;
|
package org.briarproject.briar.android.privategroup.list;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.bramble.api.sync.GroupId;
|
import org.briarproject.bramble.api.sync.GroupId;
|
||||||
import org.briarproject.briar.api.client.MessageTracker.GroupCount;
|
import org.briarproject.briar.api.client.MessageTracker.GroupCount;
|
||||||
|
|||||||
@@ -11,7 +11,6 @@ import org.briarproject.bramble.api.event.Event;
|
|||||||
import org.briarproject.bramble.api.event.EventBus;
|
import org.briarproject.bramble.api.event.EventBus;
|
||||||
import org.briarproject.bramble.api.event.EventListener;
|
import org.briarproject.bramble.api.event.EventListener;
|
||||||
import org.briarproject.bramble.api.identity.AuthorId;
|
import org.briarproject.bramble.api.identity.AuthorId;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
|
||||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
||||||
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.MethodsNotNullByDefault;
|
||||||
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.ParametersNotNullByDefault;
|
||||||
@@ -24,6 +23,8 @@ import org.briarproject.briar.android.viewmodel.DbViewModel;
|
|||||||
import org.briarproject.briar.android.viewmodel.LiveResult;
|
import org.briarproject.briar.android.viewmodel.LiveResult;
|
||||||
import org.briarproject.briar.api.android.AndroidNotificationManager;
|
import org.briarproject.briar.api.android.AndroidNotificationManager;
|
||||||
import org.briarproject.briar.api.client.MessageTracker.GroupCount;
|
import org.briarproject.briar.api.client.MessageTracker.GroupCount;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorManager;
|
||||||
import org.briarproject.briar.api.privategroup.GroupMessageHeader;
|
import org.briarproject.briar.api.privategroup.GroupMessageHeader;
|
||||||
import org.briarproject.briar.api.privategroup.PrivateGroup;
|
import org.briarproject.briar.api.privategroup.PrivateGroup;
|
||||||
import org.briarproject.briar.api.privategroup.PrivateGroupManager;
|
import org.briarproject.briar.api.privategroup.PrivateGroupManager;
|
||||||
@@ -64,7 +65,7 @@ class GroupListViewModel extends DbViewModel implements EventListener {
|
|||||||
|
|
||||||
private final PrivateGroupManager groupManager;
|
private final PrivateGroupManager groupManager;
|
||||||
private final GroupInvitationManager groupInvitationManager;
|
private final GroupInvitationManager groupInvitationManager;
|
||||||
private final ContactManager contactManager;
|
private final AuthorManager authorManager;
|
||||||
private final AndroidNotificationManager notificationManager;
|
private final AndroidNotificationManager notificationManager;
|
||||||
private final EventBus eventBus;
|
private final EventBus eventBus;
|
||||||
|
|
||||||
@@ -81,12 +82,12 @@ class GroupListViewModel extends DbViewModel implements EventListener {
|
|||||||
AndroidExecutor androidExecutor,
|
AndroidExecutor androidExecutor,
|
||||||
PrivateGroupManager groupManager,
|
PrivateGroupManager groupManager,
|
||||||
GroupInvitationManager groupInvitationManager,
|
GroupInvitationManager groupInvitationManager,
|
||||||
ContactManager contactManager,
|
AuthorManager authorManager,
|
||||||
AndroidNotificationManager notificationManager, EventBus eventBus) {
|
AndroidNotificationManager notificationManager, EventBus eventBus) {
|
||||||
super(application, dbExecutor, lifecycleManager, db, androidExecutor);
|
super(application, dbExecutor, lifecycleManager, db, androidExecutor);
|
||||||
this.groupManager = groupManager;
|
this.groupManager = groupManager;
|
||||||
this.groupInvitationManager = groupInvitationManager;
|
this.groupInvitationManager = groupInvitationManager;
|
||||||
this.contactManager = contactManager;
|
this.authorManager = authorManager;
|
||||||
this.notificationManager = notificationManager;
|
this.notificationManager = notificationManager;
|
||||||
this.eventBus = eventBus;
|
this.eventBus = eventBus;
|
||||||
this.eventBus.addListener(this);
|
this.eventBus.addListener(this);
|
||||||
@@ -157,7 +158,7 @@ class GroupListViewModel extends DbViewModel implements EventListener {
|
|||||||
if (authorInfos.containsKey(authorId)) {
|
if (authorInfos.containsKey(authorId)) {
|
||||||
authorInfo = requireNonNull(authorInfos.get(authorId));
|
authorInfo = requireNonNull(authorInfos.get(authorId));
|
||||||
} else {
|
} else {
|
||||||
authorInfo = contactManager.getAuthorInfo(txn, authorId);
|
authorInfo = authorManager.getAuthorInfo(txn, authorId);
|
||||||
authorInfos.put(authorId, authorInfo);
|
authorInfos.put(authorId, authorInfo);
|
||||||
}
|
}
|
||||||
GroupCount count = groupManager.getGroupCount(txn, id);
|
GroupCount count = groupManager.getGroupCount(txn, id);
|
||||||
|
|||||||
@@ -2,8 +2,8 @@ package org.briarproject.briar.android.privategroup.memberlist;
|
|||||||
|
|
||||||
import org.briarproject.bramble.api.contact.ContactId;
|
import org.briarproject.bramble.api.contact.ContactId;
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo.Status;
|
import org.briarproject.briar.api.identity.AuthorInfo.Status;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.briar.api.privategroup.GroupMember;
|
import org.briarproject.briar.api.privategroup.GroupMember;
|
||||||
|
|
||||||
|
|||||||
@@ -13,7 +13,7 @@ import androidx.recyclerview.widget.RecyclerView;
|
|||||||
|
|
||||||
import static android.view.View.GONE;
|
import static android.view.View.GONE;
|
||||||
import static android.view.View.VISIBLE;
|
import static android.view.View.VISIBLE;
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
|
||||||
import static org.briarproject.briar.android.util.UiUtils.getContactDisplayName;
|
import static org.briarproject.briar.android.util.UiUtils.getContactDisplayName;
|
||||||
|
|
||||||
@UiThread
|
@UiThread
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package org.briarproject.briar.android.threaded;
|
package org.briarproject.briar.android.threaded;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.bramble.api.sync.MessageId;
|
import org.briarproject.bramble.api.sync.MessageId;
|
||||||
import org.briarproject.briar.api.client.MessageTree.MessageNode;
|
import org.briarproject.briar.api.client.MessageTree.MessageNode;
|
||||||
|
|||||||
@@ -9,7 +9,7 @@ import android.widget.ImageView;
|
|||||||
import android.widget.TextView;
|
import android.widget.TextView;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.briar.R;
|
import org.briarproject.briar.R;
|
||||||
import org.briarproject.briar.android.util.UiUtils;
|
import org.briarproject.briar.android.util.UiUtils;
|
||||||
|
|
||||||
@@ -24,8 +24,8 @@ import im.delight.android.identicons.IdenticonDrawable;
|
|||||||
import static android.content.Context.LAYOUT_INFLATER_SERVICE;
|
import static android.content.Context.LAYOUT_INFLATER_SERVICE;
|
||||||
import static android.graphics.Typeface.BOLD;
|
import static android.graphics.Typeface.BOLD;
|
||||||
import static android.util.TypedValue.COMPLEX_UNIT_PX;
|
import static android.util.TypedValue.COMPLEX_UNIT_PX;
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.NONE;
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.NONE;
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
|
||||||
import static org.briarproject.briar.android.util.UiUtils.getContactDisplayName;
|
import static org.briarproject.briar.android.util.UiUtils.getContactDisplayName;
|
||||||
import static org.briarproject.briar.android.util.UiUtils.resolveAttribute;
|
import static org.briarproject.briar.android.util.UiUtils.resolveAttribute;
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ package org.briarproject.briar.android.view;
|
|||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo.Status;
|
import org.briarproject.briar.api.identity.AuthorInfo.Status;
|
||||||
import org.briarproject.briar.R;
|
import org.briarproject.briar.R;
|
||||||
|
|
||||||
import androidx.annotation.UiThread;
|
import androidx.annotation.UiThread;
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ import junit.framework.Assert;
|
|||||||
|
|
||||||
import org.briarproject.bramble.api.db.DbException;
|
import org.briarproject.bramble.api.db.DbException;
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.bramble.api.sync.MessageId;
|
import org.briarproject.bramble.api.sync.MessageId;
|
||||||
import org.briarproject.briar.android.controller.handler.UiResultExceptionHandler;
|
import org.briarproject.briar.android.controller.handler.UiResultExceptionHandler;
|
||||||
import org.briarproject.briar.android.threaded.ThreadItemAdapter;
|
import org.briarproject.briar.android.threaded.ThreadItemAdapter;
|
||||||
@@ -25,7 +25,7 @@ import org.robolectric.annotation.Config;
|
|||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
|
||||||
import static junit.framework.Assert.assertEquals;
|
import static junit.framework.Assert.assertEquals;
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.UNKNOWN;
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.UNKNOWN;
|
||||||
import static org.briarproject.bramble.test.TestUtils.getAuthor;
|
import static org.briarproject.bramble.test.TestUtils.getAuthor;
|
||||||
import static org.briarproject.bramble.test.TestUtils.getRandomId;
|
import static org.briarproject.bramble.test.TestUtils.getRandomId;
|
||||||
import static org.briarproject.bramble.util.StringUtils.getRandomString;
|
import static org.briarproject.bramble.util.StringUtils.getRandomString;
|
||||||
|
|||||||
@@ -3,14 +3,12 @@ package org.briarproject.briar.android.privategroup.list;
|
|||||||
import android.app.Application;
|
import android.app.Application;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.contact.Contact;
|
import org.briarproject.bramble.api.contact.Contact;
|
||||||
import org.briarproject.bramble.api.contact.ContactManager;
|
|
||||||
import org.briarproject.bramble.api.db.DbException;
|
import org.briarproject.bramble.api.db.DbException;
|
||||||
import org.briarproject.bramble.api.db.Transaction;
|
import org.briarproject.bramble.api.db.Transaction;
|
||||||
import org.briarproject.bramble.api.db.TransactionManager;
|
import org.briarproject.bramble.api.db.TransactionManager;
|
||||||
import org.briarproject.bramble.api.event.Event;
|
import org.briarproject.bramble.api.event.Event;
|
||||||
import org.briarproject.bramble.api.event.EventBus;
|
import org.briarproject.bramble.api.event.EventBus;
|
||||||
import org.briarproject.bramble.api.event.EventListener;
|
import org.briarproject.bramble.api.event.EventListener;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
|
||||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
||||||
import org.briarproject.bramble.api.sync.Group;
|
import org.briarproject.bramble.api.sync.Group;
|
||||||
import org.briarproject.bramble.api.system.AndroidExecutor;
|
import org.briarproject.bramble.api.system.AndroidExecutor;
|
||||||
@@ -20,6 +18,8 @@ import org.briarproject.bramble.test.ImmediateExecutor;
|
|||||||
import org.briarproject.briar.android.AndroidExecutorTestImpl;
|
import org.briarproject.briar.android.AndroidExecutorTestImpl;
|
||||||
import org.briarproject.briar.android.viewmodel.LiveResult;
|
import org.briarproject.briar.android.viewmodel.LiveResult;
|
||||||
import org.briarproject.briar.api.android.AndroidNotificationManager;
|
import org.briarproject.briar.api.android.AndroidNotificationManager;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorManager;
|
||||||
import org.briarproject.briar.api.privategroup.PrivateGroup;
|
import org.briarproject.briar.api.privategroup.PrivateGroup;
|
||||||
import org.briarproject.briar.api.privategroup.PrivateGroupManager;
|
import org.briarproject.briar.api.privategroup.PrivateGroupManager;
|
||||||
import org.briarproject.briar.api.privategroup.event.GroupDissolvedEvent;
|
import org.briarproject.briar.api.privategroup.event.GroupDissolvedEvent;
|
||||||
@@ -67,8 +67,8 @@ public class GroupListViewModelTest extends BrambleMockTestCase {
|
|||||||
context.mock(PrivateGroupManager.class);
|
context.mock(PrivateGroupManager.class);
|
||||||
private final GroupInvitationManager groupInvitationManager =
|
private final GroupInvitationManager groupInvitationManager =
|
||||||
context.mock(GroupInvitationManager.class);
|
context.mock(GroupInvitationManager.class);
|
||||||
private final ContactManager contactManager =
|
private final AuthorManager authorManager =
|
||||||
context.mock(ContactManager.class);
|
context.mock(AuthorManager.class);
|
||||||
private final AndroidNotificationManager notificationManager =
|
private final AndroidNotificationManager notificationManager =
|
||||||
context.mock(AndroidNotificationManager.class);
|
context.mock(AndroidNotificationManager.class);
|
||||||
private final EventBus eventBus = context.mock(EventBus.class);
|
private final EventBus eventBus = context.mock(EventBus.class);
|
||||||
@@ -105,7 +105,7 @@ public class GroupListViewModelTest extends BrambleMockTestCase {
|
|||||||
new AndroidExecutorTestImpl(dbExecutor);
|
new AndroidExecutorTestImpl(dbExecutor);
|
||||||
viewModel = new GroupListViewModel(app, dbExecutor, lifecycleManager,
|
viewModel = new GroupListViewModel(app, dbExecutor, lifecycleManager,
|
||||||
db, androidExecutor, groupManager, groupInvitationManager,
|
db, androidExecutor, groupManager, groupInvitationManager,
|
||||||
contactManager, notificationManager, eventBus);
|
authorManager, notificationManager, eventBus);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
@@ -199,7 +199,7 @@ public class GroupListViewModelTest extends BrambleMockTestCase {
|
|||||||
AuthorInfo authorInfo, GroupCount groupCount, boolean dissolved)
|
AuthorInfo authorInfo, GroupCount groupCount, boolean dissolved)
|
||||||
throws DbException {
|
throws DbException {
|
||||||
context.checking(new DbExpectations() {{
|
context.checking(new DbExpectations() {{
|
||||||
oneOf(contactManager)
|
oneOf(authorManager)
|
||||||
.getAuthorInfo(txn, privateGroup.getCreator().getId());
|
.getAuthorInfo(txn, privateGroup.getCreator().getId());
|
||||||
will(returnValue(authorInfo));
|
will(returnValue(authorInfo));
|
||||||
oneOf(groupManager).getGroupCount(txn, privateGroup.getId());
|
oneOf(groupManager).getGroupCount(txn, privateGroup.getId());
|
||||||
|
|||||||
@@ -10,4 +10,7 @@ dependencies {
|
|||||||
implementation project(path: ':bramble-api', configuration: 'default')
|
implementation project(path: ':bramble-api', configuration: 'default')
|
||||||
|
|
||||||
signature 'org.codehaus.mojo.signature:java16:1.1@signature'
|
signature 'org.codehaus.mojo.signature:java16:1.1@signature'
|
||||||
|
|
||||||
|
testImplementation project(path: ':bramble-api', configuration: 'testOutput')
|
||||||
|
testImplementation 'junit:junit:4.13.1'
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package org.briarproject.briar.api.blog;
|
package org.briarproject.briar.api.blog;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.bramble.api.sync.GroupId;
|
import org.briarproject.bramble.api.sync.GroupId;
|
||||||
import org.briarproject.bramble.api.sync.MessageId;
|
import org.briarproject.bramble.api.sync.MessageId;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package org.briarproject.briar.api.blog;
|
package org.briarproject.briar.api.blog;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.bramble.api.sync.GroupId;
|
import org.briarproject.bramble.api.sync.GroupId;
|
||||||
import org.briarproject.bramble.api.sync.MessageId;
|
import org.briarproject.bramble.api.sync.MessageId;
|
||||||
|
|||||||
@@ -1,8 +1,8 @@
|
|||||||
package org.briarproject.briar.api.client;
|
package org.briarproject.briar.api.client;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo.Status;
|
import org.briarproject.briar.api.identity.AuthorInfo.Status;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.bramble.api.sync.MessageId;
|
import org.briarproject.bramble.api.sync.MessageId;
|
||||||
|
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package org.briarproject.briar.api.forum;
|
package org.briarproject.briar.api.forum;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.bramble.api.sync.MessageId;
|
import org.briarproject.bramble.api.sync.MessageId;
|
||||||
import org.briarproject.briar.api.client.PostHeader;
|
import org.briarproject.briar.api.client.PostHeader;
|
||||||
|
|||||||
@@ -1,4 +1,4 @@
|
|||||||
package org.briarproject.bramble.api.identity;
|
package org.briarproject.briar.api.identity;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
|
|
||||||
@@ -50,6 +50,7 @@ public class AuthorInfo {
|
|||||||
public boolean equals(Object o) {
|
public boolean equals(Object o) {
|
||||||
if (!(o instanceof AuthorInfo)) return false;
|
if (!(o instanceof AuthorInfo)) return false;
|
||||||
AuthorInfo info = (AuthorInfo) o;
|
AuthorInfo info = (AuthorInfo) o;
|
||||||
|
//noinspection EqualsReplaceableByObjectsCall
|
||||||
return status == info.status &&
|
return status == info.status &&
|
||||||
(alias == null ? info.alias == null : alias.equals(info.alias));
|
(alias == null ? info.alias == null : alias.equals(info.alias));
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,21 @@
|
|||||||
|
package org.briarproject.briar.api.identity;
|
||||||
|
|
||||||
|
import org.briarproject.bramble.api.db.DbException;
|
||||||
|
import org.briarproject.bramble.api.db.Transaction;
|
||||||
|
import org.briarproject.bramble.api.identity.AuthorId;
|
||||||
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
|
|
||||||
|
@NotNullByDefault
|
||||||
|
public interface AuthorManager {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the {@link AuthorInfo} for the given author.
|
||||||
|
*/
|
||||||
|
AuthorInfo getAuthorInfo(AuthorId a) throws DbException;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the {@link AuthorInfo} for the given author.
|
||||||
|
*/
|
||||||
|
AuthorInfo getAuthorInfo(Transaction txn, AuthorId a) throws DbException;
|
||||||
|
|
||||||
|
}
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
package org.briarproject.briar.api.introduction;
|
package org.briarproject.briar.api.introduction;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.bramble.api.sync.GroupId;
|
import org.briarproject.bramble.api.sync.GroupId;
|
||||||
import org.briarproject.bramble.api.sync.MessageId;
|
import org.briarproject.bramble.api.sync.MessageId;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package org.briarproject.briar.api.introduction;
|
package org.briarproject.briar.api.introduction;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.bramble.api.sync.GroupId;
|
import org.briarproject.bramble.api.sync.GroupId;
|
||||||
import org.briarproject.bramble.api.sync.MessageId;
|
import org.briarproject.bramble.api.sync.MessageId;
|
||||||
|
|||||||
@@ -2,7 +2,7 @@ package org.briarproject.briar.api.privategroup;
|
|||||||
|
|
||||||
import org.briarproject.bramble.api.contact.ContactId;
|
import org.briarproject.bramble.api.contact.ContactId;
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package org.briarproject.briar.api.privategroup;
|
package org.briarproject.briar.api.privategroup;
|
||||||
|
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.bramble.api.sync.GroupId;
|
import org.briarproject.bramble.api.sync.GroupId;
|
||||||
import org.briarproject.bramble.api.sync.MessageId;
|
import org.briarproject.bramble.api.sync.MessageId;
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
package org.briarproject.bramble.api.identity;
|
package org.briarproject.briar.api.identity;
|
||||||
|
|
||||||
import org.briarproject.bramble.test.BrambleTestCase;
|
import org.briarproject.bramble.test.BrambleTestCase;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.NONE;
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.NONE;
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED;
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertNotEquals;
|
import static org.junit.Assert.assertNotEquals;
|
||||||
|
|
||||||
@@ -3,6 +3,7 @@ package org.briarproject.briar;
|
|||||||
import org.briarproject.briar.blog.BlogModule;
|
import org.briarproject.briar.blog.BlogModule;
|
||||||
import org.briarproject.briar.feed.FeedModule;
|
import org.briarproject.briar.feed.FeedModule;
|
||||||
import org.briarproject.briar.forum.ForumModule;
|
import org.briarproject.briar.forum.ForumModule;
|
||||||
|
import org.briarproject.briar.identity.IdentityModule;
|
||||||
import org.briarproject.briar.introduction.IntroductionModule;
|
import org.briarproject.briar.introduction.IntroductionModule;
|
||||||
import org.briarproject.briar.messaging.MessagingModule;
|
import org.briarproject.briar.messaging.MessagingModule;
|
||||||
import org.briarproject.briar.privategroup.PrivateGroupModule;
|
import org.briarproject.briar.privategroup.PrivateGroupModule;
|
||||||
@@ -19,6 +20,8 @@ public interface BriarCoreEagerSingletons {
|
|||||||
|
|
||||||
void inject(GroupInvitationModule.EagerSingletons init);
|
void inject(GroupInvitationModule.EagerSingletons init);
|
||||||
|
|
||||||
|
void inject(IdentityModule.EagerSingletons init);
|
||||||
|
|
||||||
void inject(IntroductionModule.EagerSingletons init);
|
void inject(IntroductionModule.EagerSingletons init);
|
||||||
|
|
||||||
void inject(MessagingModule.EagerSingletons init);
|
void inject(MessagingModule.EagerSingletons init);
|
||||||
@@ -37,6 +40,7 @@ public interface BriarCoreEagerSingletons {
|
|||||||
c.inject(new MessagingModule.EagerSingletons());
|
c.inject(new MessagingModule.EagerSingletons());
|
||||||
c.inject(new PrivateGroupModule.EagerSingletons());
|
c.inject(new PrivateGroupModule.EagerSingletons());
|
||||||
c.inject(new SharingModule.EagerSingletons());
|
c.inject(new SharingModule.EagerSingletons());
|
||||||
|
c.inject(new IdentityModule.EagerSingletons());
|
||||||
c.inject(new IntroductionModule.EagerSingletons());
|
c.inject(new IntroductionModule.EagerSingletons());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import org.briarproject.briar.client.BriarClientModule;
|
|||||||
import org.briarproject.briar.feed.DnsModule;
|
import org.briarproject.briar.feed.DnsModule;
|
||||||
import org.briarproject.briar.feed.FeedModule;
|
import org.briarproject.briar.feed.FeedModule;
|
||||||
import org.briarproject.briar.forum.ForumModule;
|
import org.briarproject.briar.forum.ForumModule;
|
||||||
|
import org.briarproject.briar.identity.IdentityModule;
|
||||||
import org.briarproject.briar.introduction.IntroductionModule;
|
import org.briarproject.briar.introduction.IntroductionModule;
|
||||||
import org.briarproject.briar.messaging.MessagingModule;
|
import org.briarproject.briar.messaging.MessagingModule;
|
||||||
import org.briarproject.briar.privategroup.PrivateGroupModule;
|
import org.briarproject.briar.privategroup.PrivateGroupModule;
|
||||||
@@ -21,6 +22,7 @@ import dagger.Module;
|
|||||||
DnsModule.class,
|
DnsModule.class,
|
||||||
ForumModule.class,
|
ForumModule.class,
|
||||||
GroupInvitationModule.class,
|
GroupInvitationModule.class,
|
||||||
|
IdentityModule.class,
|
||||||
IntroductionModule.class,
|
IntroductionModule.class,
|
||||||
MessagingModule.class,
|
MessagingModule.class,
|
||||||
PrivateGroupModule.class,
|
PrivateGroupModule.class,
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import org.briarproject.bramble.api.FormatException;
|
|||||||
import org.briarproject.bramble.api.client.BdfIncomingMessageHook;
|
import org.briarproject.bramble.api.client.BdfIncomingMessageHook;
|
||||||
import org.briarproject.bramble.api.client.ClientHelper;
|
import org.briarproject.bramble.api.client.ClientHelper;
|
||||||
import org.briarproject.bramble.api.contact.Contact;
|
import org.briarproject.bramble.api.contact.Contact;
|
||||||
import org.briarproject.bramble.api.contact.ContactManager;
|
|
||||||
import org.briarproject.bramble.api.contact.ContactManager.ContactHook;
|
import org.briarproject.bramble.api.contact.ContactManager.ContactHook;
|
||||||
import org.briarproject.bramble.api.data.BdfDictionary;
|
import org.briarproject.bramble.api.data.BdfDictionary;
|
||||||
import org.briarproject.bramble.api.data.BdfEntry;
|
import org.briarproject.bramble.api.data.BdfEntry;
|
||||||
@@ -15,7 +14,6 @@ import org.briarproject.bramble.api.db.DbException;
|
|||||||
import org.briarproject.bramble.api.db.Transaction;
|
import org.briarproject.bramble.api.db.Transaction;
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorId;
|
import org.briarproject.bramble.api.identity.AuthorId;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
|
||||||
import org.briarproject.bramble.api.identity.IdentityManager;
|
import org.briarproject.bramble.api.identity.IdentityManager;
|
||||||
import org.briarproject.bramble.api.identity.LocalAuthor;
|
import org.briarproject.bramble.api.identity.LocalAuthor;
|
||||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
|
import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
|
||||||
@@ -33,6 +31,8 @@ import org.briarproject.briar.api.blog.BlogPostFactory;
|
|||||||
import org.briarproject.briar.api.blog.BlogPostHeader;
|
import org.briarproject.briar.api.blog.BlogPostHeader;
|
||||||
import org.briarproject.briar.api.blog.MessageType;
|
import org.briarproject.briar.api.blog.MessageType;
|
||||||
import org.briarproject.briar.api.blog.event.BlogPostAddedEvent;
|
import org.briarproject.briar.api.blog.event.BlogPostAddedEvent;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorManager;
|
||||||
|
|
||||||
import java.security.GeneralSecurityException;
|
import java.security.GeneralSecurityException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -50,7 +50,6 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
|||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.NONE;
|
|
||||||
import static org.briarproject.briar.api.blog.BlogConstants.KEY_AUTHOR;
|
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_COMMENT;
|
||||||
import static org.briarproject.briar.api.blog.BlogConstants.KEY_ORIGINAL_MSG_ID;
|
import static org.briarproject.briar.api.blog.BlogConstants.KEY_ORIGINAL_MSG_ID;
|
||||||
@@ -65,25 +64,26 @@ import static org.briarproject.briar.api.blog.MessageType.COMMENT;
|
|||||||
import static org.briarproject.briar.api.blog.MessageType.POST;
|
import static org.briarproject.briar.api.blog.MessageType.POST;
|
||||||
import static org.briarproject.briar.api.blog.MessageType.WRAPPED_COMMENT;
|
import static org.briarproject.briar.api.blog.MessageType.WRAPPED_COMMENT;
|
||||||
import static org.briarproject.briar.api.blog.MessageType.WRAPPED_POST;
|
import static org.briarproject.briar.api.blog.MessageType.WRAPPED_POST;
|
||||||
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.NONE;
|
||||||
|
|
||||||
@NotNullByDefault
|
@NotNullByDefault
|
||||||
class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager,
|
class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager,
|
||||||
OpenDatabaseHook, ContactHook {
|
OpenDatabaseHook, ContactHook {
|
||||||
|
|
||||||
private final ContactManager contactManager;
|
|
||||||
private final IdentityManager identityManager;
|
private final IdentityManager identityManager;
|
||||||
|
private final AuthorManager authorManager;
|
||||||
private final BlogFactory blogFactory;
|
private final BlogFactory blogFactory;
|
||||||
private final BlogPostFactory blogPostFactory;
|
private final BlogPostFactory blogPostFactory;
|
||||||
private final List<RemoveBlogHook> removeHooks;
|
private final List<RemoveBlogHook> removeHooks;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
BlogManagerImpl(DatabaseComponent db, ContactManager contactManager,
|
BlogManagerImpl(DatabaseComponent db, IdentityManager identityManager,
|
||||||
IdentityManager identityManager, ClientHelper clientHelper,
|
AuthorManager authorManager, ClientHelper clientHelper,
|
||||||
MetadataParser metadataParser, BlogFactory blogFactory,
|
MetadataParser metadataParser, BlogFactory blogFactory,
|
||||||
BlogPostFactory blogPostFactory) {
|
BlogPostFactory blogPostFactory) {
|
||||||
super(db, clientHelper, metadataParser);
|
super(db, clientHelper, metadataParser);
|
||||||
this.contactManager = contactManager;
|
|
||||||
this.identityManager = identityManager;
|
this.identityManager = identityManager;
|
||||||
|
this.authorManager = authorManager;
|
||||||
this.blogFactory = blogFactory;
|
this.blogFactory = blogFactory;
|
||||||
this.blogPostFactory = blogPostFactory;
|
this.blogPostFactory = blogPostFactory;
|
||||||
removeHooks = new CopyOnWriteArrayList<>();
|
removeHooks = new CopyOnWriteArrayList<>();
|
||||||
@@ -519,7 +519,7 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager,
|
|||||||
Map<AuthorId, AuthorInfo> authorInfos = new HashMap<>();
|
Map<AuthorId, AuthorInfo> authorInfos = new HashMap<>();
|
||||||
for (AuthorId authorId : authors) {
|
for (AuthorId authorId : authors) {
|
||||||
authorInfos.put(authorId,
|
authorInfos.put(authorId,
|
||||||
contactManager.getAuthorInfo(txn, authorId));
|
authorManager.getAuthorInfo(txn, authorId));
|
||||||
}
|
}
|
||||||
// get post headers
|
// get post headers
|
||||||
for (Entry<MessageId, BdfDictionary> entry : metadata.entrySet()) {
|
for (Entry<MessageId, BdfDictionary> entry : metadata.entrySet()) {
|
||||||
@@ -586,7 +586,7 @@ class BlogManagerImpl extends BdfIncomingMessageHook implements BlogManager,
|
|||||||
} else if (authorInfos.containsKey(author.getId())) {
|
} else if (authorInfos.containsKey(author.getId())) {
|
||||||
authorInfo = authorInfos.get(author.getId());
|
authorInfo = authorInfos.get(author.getId());
|
||||||
} else {
|
} else {
|
||||||
authorInfo = contactManager.getAuthorInfo(txn, author.getId());
|
authorInfo = authorManager.getAuthorInfo(txn, author.getId());
|
||||||
}
|
}
|
||||||
|
|
||||||
boolean read = meta.getBoolean(KEY_READ, false);
|
boolean read = meta.getBoolean(KEY_READ, false);
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package org.briarproject.briar.forum;
|
|||||||
import org.briarproject.bramble.api.FormatException;
|
import org.briarproject.bramble.api.FormatException;
|
||||||
import org.briarproject.bramble.api.client.BdfIncomingMessageHook;
|
import org.briarproject.bramble.api.client.BdfIncomingMessageHook;
|
||||||
import org.briarproject.bramble.api.client.ClientHelper;
|
import org.briarproject.bramble.api.client.ClientHelper;
|
||||||
import org.briarproject.bramble.api.contact.ContactManager;
|
|
||||||
import org.briarproject.bramble.api.data.BdfDictionary;
|
import org.briarproject.bramble.api.data.BdfDictionary;
|
||||||
import org.briarproject.bramble.api.data.BdfList;
|
import org.briarproject.bramble.api.data.BdfList;
|
||||||
import org.briarproject.bramble.api.data.MetadataParser;
|
import org.briarproject.bramble.api.data.MetadataParser;
|
||||||
@@ -12,7 +11,6 @@ import org.briarproject.bramble.api.db.DbException;
|
|||||||
import org.briarproject.bramble.api.db.Transaction;
|
import org.briarproject.bramble.api.db.Transaction;
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorId;
|
import org.briarproject.bramble.api.identity.AuthorId;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
|
||||||
import org.briarproject.bramble.api.identity.LocalAuthor;
|
import org.briarproject.bramble.api.identity.LocalAuthor;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.bramble.api.sync.Group;
|
import org.briarproject.bramble.api.sync.Group;
|
||||||
@@ -28,6 +26,8 @@ import org.briarproject.briar.api.forum.ForumPost;
|
|||||||
import org.briarproject.briar.api.forum.ForumPostFactory;
|
import org.briarproject.briar.api.forum.ForumPostFactory;
|
||||||
import org.briarproject.briar.api.forum.ForumPostHeader;
|
import org.briarproject.briar.api.forum.ForumPostHeader;
|
||||||
import org.briarproject.briar.api.forum.event.ForumPostReceivedEvent;
|
import org.briarproject.briar.api.forum.event.ForumPostReceivedEvent;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorManager;
|
||||||
|
|
||||||
import java.security.GeneralSecurityException;
|
import java.security.GeneralSecurityException;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
@@ -45,30 +45,30 @@ import javax.annotation.Nullable;
|
|||||||
import javax.annotation.concurrent.ThreadSafe;
|
import javax.annotation.concurrent.ThreadSafe;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
|
|
||||||
import static org.briarproject.briar.api.forum.ForumConstants.KEY_AUTHOR;
|
import static org.briarproject.briar.api.forum.ForumConstants.KEY_AUTHOR;
|
||||||
import static org.briarproject.briar.api.forum.ForumConstants.KEY_LOCAL;
|
import static org.briarproject.briar.api.forum.ForumConstants.KEY_LOCAL;
|
||||||
import static org.briarproject.briar.api.forum.ForumConstants.KEY_PARENT;
|
import static org.briarproject.briar.api.forum.ForumConstants.KEY_PARENT;
|
||||||
import static org.briarproject.briar.api.forum.ForumConstants.KEY_TIMESTAMP;
|
import static org.briarproject.briar.api.forum.ForumConstants.KEY_TIMESTAMP;
|
||||||
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
|
||||||
import static org.briarproject.briar.client.MessageTrackerConstants.MSG_KEY_READ;
|
import static org.briarproject.briar.client.MessageTrackerConstants.MSG_KEY_READ;
|
||||||
|
|
||||||
@ThreadSafe
|
@ThreadSafe
|
||||||
@NotNullByDefault
|
@NotNullByDefault
|
||||||
class ForumManagerImpl extends BdfIncomingMessageHook implements ForumManager {
|
class ForumManagerImpl extends BdfIncomingMessageHook implements ForumManager {
|
||||||
|
|
||||||
private final ContactManager contactManager;
|
private final AuthorManager authorManager;
|
||||||
private final ForumFactory forumFactory;
|
private final ForumFactory forumFactory;
|
||||||
private final ForumPostFactory forumPostFactory;
|
private final ForumPostFactory forumPostFactory;
|
||||||
private final MessageTracker messageTracker;
|
private final MessageTracker messageTracker;
|
||||||
private final List<RemoveForumHook> removeHooks;
|
private final List<RemoveForumHook> removeHooks;
|
||||||
|
|
||||||
@Inject
|
@Inject
|
||||||
ForumManagerImpl(DatabaseComponent db, ContactManager contactManager,
|
ForumManagerImpl(DatabaseComponent db, ClientHelper clientHelper,
|
||||||
ClientHelper clientHelper, MetadataParser metadataParser,
|
MetadataParser metadataParser, AuthorManager authorManager,
|
||||||
ForumFactory forumFactory, ForumPostFactory forumPostFactory,
|
ForumFactory forumFactory, ForumPostFactory forumPostFactory,
|
||||||
MessageTracker messageTracker) {
|
MessageTracker messageTracker) {
|
||||||
super(db, clientHelper, metadataParser);
|
super(db, clientHelper, metadataParser);
|
||||||
this.contactManager = contactManager;
|
this.authorManager = authorManager;
|
||||||
this.forumFactory = forumFactory;
|
this.forumFactory = forumFactory;
|
||||||
this.forumPostFactory = forumPostFactory;
|
this.forumPostFactory = forumPostFactory;
|
||||||
this.messageTracker = messageTracker;
|
this.messageTracker = messageTracker;
|
||||||
@@ -213,7 +213,7 @@ class ForumManagerImpl extends BdfIncomingMessageHook implements ForumManager {
|
|||||||
// get information for all authors
|
// get information for all authors
|
||||||
Map<AuthorId, AuthorInfo> authorInfos = new HashMap<>();
|
Map<AuthorId, AuthorInfo> authorInfos = new HashMap<>();
|
||||||
for (AuthorId id : authors) {
|
for (AuthorId id : authors) {
|
||||||
authorInfos.put(id, contactManager.getAuthorInfo(txn, id));
|
authorInfos.put(id, authorManager.getAuthorInfo(txn, id));
|
||||||
}
|
}
|
||||||
// Parse the metadata
|
// Parse the metadata
|
||||||
for (Entry<MessageId, BdfDictionary> entry :
|
for (Entry<MessageId, BdfDictionary> entry :
|
||||||
@@ -275,7 +275,7 @@ class ForumManagerImpl extends BdfIncomingMessageHook implements ForumManager {
|
|||||||
Author author = clientHelper.parseAndValidateAuthor(authorList);
|
Author author = clientHelper.parseAndValidateAuthor(authorList);
|
||||||
AuthorInfo authorInfo = authorInfos.get(author.getId());
|
AuthorInfo authorInfo = authorInfos.get(author.getId());
|
||||||
if (authorInfo == null)
|
if (authorInfo == null)
|
||||||
authorInfo = contactManager.getAuthorInfo(txn, author.getId());
|
authorInfo = authorManager.getAuthorInfo(txn, author.getId());
|
||||||
boolean read = meta.getBoolean(MSG_KEY_READ);
|
boolean read = meta.getBoolean(MSG_KEY_READ);
|
||||||
|
|
||||||
return new ForumPostHeader(id, parentId, timestamp, author, authorInfo,
|
return new ForumPostHeader(id, parentId, timestamp, author, authorInfo,
|
||||||
|
|||||||
@@ -0,0 +1,56 @@
|
|||||||
|
package org.briarproject.briar.identity;
|
||||||
|
|
||||||
|
import org.briarproject.bramble.api.contact.Contact;
|
||||||
|
import org.briarproject.bramble.api.db.DatabaseComponent;
|
||||||
|
import org.briarproject.bramble.api.db.DbException;
|
||||||
|
import org.briarproject.bramble.api.db.Transaction;
|
||||||
|
import org.briarproject.bramble.api.identity.AuthorId;
|
||||||
|
import org.briarproject.bramble.api.identity.IdentityManager;
|
||||||
|
import org.briarproject.bramble.api.identity.LocalAuthor;
|
||||||
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorManager;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import javax.annotation.concurrent.ThreadSafe;
|
||||||
|
import javax.inject.Inject;
|
||||||
|
|
||||||
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
|
||||||
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.UNKNOWN;
|
||||||
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.UNVERIFIED;
|
||||||
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED;
|
||||||
|
|
||||||
|
@ThreadSafe
|
||||||
|
@NotNullByDefault
|
||||||
|
class AuthorManagerImpl implements AuthorManager {
|
||||||
|
|
||||||
|
private final DatabaseComponent db;
|
||||||
|
private final IdentityManager identityManager;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
AuthorManagerImpl(DatabaseComponent db, IdentityManager identityManager) {
|
||||||
|
this.db = db;
|
||||||
|
this.identityManager = identityManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AuthorInfo getAuthorInfo(AuthorId a) throws DbException {
|
||||||
|
return db.transactionWithResult(true, txn -> getAuthorInfo(txn, a));
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public AuthorInfo getAuthorInfo(Transaction txn, AuthorId authorId)
|
||||||
|
throws DbException {
|
||||||
|
LocalAuthor localAuthor = identityManager.getLocalAuthor(txn);
|
||||||
|
if (localAuthor.getId().equals(authorId))
|
||||||
|
return new AuthorInfo(OURSELVES);
|
||||||
|
Collection<Contact> contacts = db.getContactsByAuthorId(txn, authorId);
|
||||||
|
if (contacts.isEmpty()) return new AuthorInfo(UNKNOWN);
|
||||||
|
if (contacts.size() > 1) throw new AssertionError();
|
||||||
|
Contact c = contacts.iterator().next();
|
||||||
|
if (c.isVerified()) return new AuthorInfo(VERIFIED, c.getAlias());
|
||||||
|
else return new AuthorInfo(UNVERIFIED, c.getAlias());
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,25 @@
|
|||||||
|
package org.briarproject.briar.identity;
|
||||||
|
|
||||||
|
import org.briarproject.briar.api.identity.AuthorManager;
|
||||||
|
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
|
import dagger.Module;
|
||||||
|
import dagger.Provides;
|
||||||
|
|
||||||
|
@Module
|
||||||
|
public class IdentityModule {
|
||||||
|
|
||||||
|
public static class EagerSingletons {
|
||||||
|
@Inject
|
||||||
|
AuthorManager authorManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Provides
|
||||||
|
@Singleton
|
||||||
|
AuthorManager provideAuthorManager(AuthorManagerImpl authorManager) {
|
||||||
|
return authorManager;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -12,7 +12,6 @@ import org.briarproject.bramble.api.db.DbException;
|
|||||||
import org.briarproject.bramble.api.db.Transaction;
|
import org.briarproject.bramble.api.db.Transaction;
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorId;
|
import org.briarproject.bramble.api.identity.AuthorId;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
|
||||||
import org.briarproject.bramble.api.identity.IdentityManager;
|
import org.briarproject.bramble.api.identity.IdentityManager;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
import org.briarproject.bramble.api.plugin.TransportId;
|
import org.briarproject.bramble.api.plugin.TransportId;
|
||||||
@@ -22,6 +21,8 @@ import org.briarproject.bramble.api.sync.MessageId;
|
|||||||
import org.briarproject.bramble.api.system.Clock;
|
import org.briarproject.bramble.api.system.Clock;
|
||||||
import org.briarproject.briar.api.client.MessageTracker;
|
import org.briarproject.briar.api.client.MessageTracker;
|
||||||
import org.briarproject.briar.api.client.SessionId;
|
import org.briarproject.briar.api.client.SessionId;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorManager;
|
||||||
import org.briarproject.briar.api.introduction.IntroductionResponse;
|
import org.briarproject.briar.api.introduction.IntroductionResponse;
|
||||||
import org.briarproject.briar.api.introduction.event.IntroductionResponseReceivedEvent;
|
import org.briarproject.briar.api.introduction.event.IntroductionResponseReceivedEvent;
|
||||||
|
|
||||||
@@ -48,6 +49,7 @@ abstract class AbstractProtocolEngine<S extends Session>
|
|||||||
protected final ContactGroupFactory contactGroupFactory;
|
protected final ContactGroupFactory contactGroupFactory;
|
||||||
protected final MessageTracker messageTracker;
|
protected final MessageTracker messageTracker;
|
||||||
protected final IdentityManager identityManager;
|
protected final IdentityManager identityManager;
|
||||||
|
protected final AuthorManager authorManager;
|
||||||
protected final MessageParser messageParser;
|
protected final MessageParser messageParser;
|
||||||
protected final MessageEncoder messageEncoder;
|
protected final MessageEncoder messageEncoder;
|
||||||
protected final Clock clock;
|
protected final Clock clock;
|
||||||
@@ -59,6 +61,7 @@ abstract class AbstractProtocolEngine<S extends Session>
|
|||||||
ContactGroupFactory contactGroupFactory,
|
ContactGroupFactory contactGroupFactory,
|
||||||
MessageTracker messageTracker,
|
MessageTracker messageTracker,
|
||||||
IdentityManager identityManager,
|
IdentityManager identityManager,
|
||||||
|
AuthorManager authorManager,
|
||||||
MessageParser messageParser,
|
MessageParser messageParser,
|
||||||
MessageEncoder messageEncoder,
|
MessageEncoder messageEncoder,
|
||||||
Clock clock) {
|
Clock clock) {
|
||||||
@@ -68,6 +71,7 @@ abstract class AbstractProtocolEngine<S extends Session>
|
|||||||
this.contactGroupFactory = contactGroupFactory;
|
this.contactGroupFactory = contactGroupFactory;
|
||||||
this.messageTracker = messageTracker;
|
this.messageTracker = messageTracker;
|
||||||
this.identityManager = identityManager;
|
this.identityManager = identityManager;
|
||||||
|
this.authorManager = authorManager;
|
||||||
this.messageParser = messageParser;
|
this.messageParser = messageParser;
|
||||||
this.messageEncoder = messageEncoder;
|
this.messageEncoder = messageEncoder;
|
||||||
this.clock = clock;
|
this.clock = clock;
|
||||||
@@ -152,7 +156,7 @@ abstract class AbstractProtocolEngine<S extends Session>
|
|||||||
AuthorId localAuthorId = identityManager.getLocalAuthor(txn).getId();
|
AuthorId localAuthorId = identityManager.getLocalAuthor(txn).getId();
|
||||||
Contact c = contactManager.getContact(txn, sender, localAuthorId);
|
Contact c = contactManager.getContact(txn, sender, localAuthorId);
|
||||||
AuthorInfo otherAuthorInfo =
|
AuthorInfo otherAuthorInfo =
|
||||||
contactManager.getAuthorInfo(txn, otherAuthor.getId());
|
authorManager.getAuthorInfo(txn, otherAuthor.getId());
|
||||||
IntroductionResponse response =
|
IntroductionResponse response =
|
||||||
new IntroductionResponse(m.getMessageId(), m.getGroupId(),
|
new IntroductionResponse(m.getMessageId(), m.getGroupId(),
|
||||||
m.getTimestamp(), false, false, false, false,
|
m.getTimestamp(), false, false, false, false,
|
||||||
|
|||||||
@@ -14,7 +14,6 @@ import org.briarproject.bramble.api.db.ContactExistsException;
|
|||||||
import org.briarproject.bramble.api.db.DatabaseComponent;
|
import org.briarproject.bramble.api.db.DatabaseComponent;
|
||||||
import org.briarproject.bramble.api.db.DbException;
|
import org.briarproject.bramble.api.db.DbException;
|
||||||
import org.briarproject.bramble.api.db.Transaction;
|
import org.briarproject.bramble.api.db.Transaction;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
|
||||||
import org.briarproject.bramble.api.identity.IdentityManager;
|
import org.briarproject.bramble.api.identity.IdentityManager;
|
||||||
import org.briarproject.bramble.api.identity.LocalAuthor;
|
import org.briarproject.bramble.api.identity.LocalAuthor;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
@@ -29,6 +28,8 @@ import org.briarproject.bramble.api.transport.KeySetId;
|
|||||||
import org.briarproject.briar.api.client.MessageTracker;
|
import org.briarproject.briar.api.client.MessageTracker;
|
||||||
import org.briarproject.briar.api.client.ProtocolStateException;
|
import org.briarproject.briar.api.client.ProtocolStateException;
|
||||||
import org.briarproject.briar.api.client.SessionId;
|
import org.briarproject.briar.api.client.SessionId;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorManager;
|
||||||
import org.briarproject.briar.api.introduction.IntroductionRequest;
|
import org.briarproject.briar.api.introduction.IntroductionRequest;
|
||||||
import org.briarproject.briar.api.introduction.event.IntroductionAbortedEvent;
|
import org.briarproject.briar.api.introduction.event.IntroductionAbortedEvent;
|
||||||
import org.briarproject.briar.api.introduction.event.IntroductionRequestReceivedEvent;
|
import org.briarproject.briar.api.introduction.event.IntroductionRequestReceivedEvent;
|
||||||
@@ -71,6 +72,7 @@ class IntroduceeProtocolEngine
|
|||||||
ContactGroupFactory contactGroupFactory,
|
ContactGroupFactory contactGroupFactory,
|
||||||
MessageTracker messageTracker,
|
MessageTracker messageTracker,
|
||||||
IdentityManager identityManager,
|
IdentityManager identityManager,
|
||||||
|
AuthorManager authorManager,
|
||||||
MessageParser messageParser,
|
MessageParser messageParser,
|
||||||
MessageEncoder messageEncoder,
|
MessageEncoder messageEncoder,
|
||||||
Clock clock,
|
Clock clock,
|
||||||
@@ -78,8 +80,8 @@ class IntroduceeProtocolEngine
|
|||||||
KeyManager keyManager,
|
KeyManager keyManager,
|
||||||
TransportPropertyManager transportPropertyManager) {
|
TransportPropertyManager transportPropertyManager) {
|
||||||
super(db, clientHelper, contactManager, contactGroupFactory,
|
super(db, clientHelper, contactManager, contactGroupFactory,
|
||||||
messageTracker, identityManager, messageParser, messageEncoder,
|
messageTracker, identityManager, authorManager, messageParser,
|
||||||
clock);
|
messageEncoder, clock);
|
||||||
this.crypto = crypto;
|
this.crypto = crypto;
|
||||||
this.keyManager = keyManager;
|
this.keyManager = keyManager;
|
||||||
this.transportPropertyManager = transportPropertyManager;
|
this.transportPropertyManager = transportPropertyManager;
|
||||||
@@ -254,7 +256,7 @@ class IntroduceeProtocolEngine
|
|||||||
Contact c = contactManager.getContact(txn, s.getIntroducer().getId(),
|
Contact c = contactManager.getContact(txn, s.getIntroducer().getId(),
|
||||||
localAuthor.getId());
|
localAuthor.getId());
|
||||||
AuthorInfo authorInfo =
|
AuthorInfo authorInfo =
|
||||||
contactManager.getAuthorInfo(txn, m.getAuthor().getId());
|
authorManager.getAuthorInfo(txn, m.getAuthor().getId());
|
||||||
IntroductionRequest request = new IntroductionRequest(m.getMessageId(),
|
IntroductionRequest request = new IntroductionRequest(m.getMessageId(),
|
||||||
m.getGroupId(), m.getTimestamp(), false, false, false, false,
|
m.getGroupId(), m.getTimestamp(), false, false, false, false,
|
||||||
s.getSessionId(), m.getAuthor(), m.getText(), false,
|
s.getSessionId(), m.getAuthor(), m.getText(), false,
|
||||||
@@ -443,13 +445,11 @@ class IntroduceeProtocolEngine
|
|||||||
s.getRemote().author.getId(), localAuthor.getId());
|
s.getRemote().author.getId(), localAuthor.getId());
|
||||||
|
|
||||||
// add the keys to the new contact
|
// add the keys to the new contact
|
||||||
//noinspection ConstantConditions
|
|
||||||
keys = keyManager.addRotationKeys(txn, c.getId(),
|
keys = keyManager.addRotationKeys(txn, c.getId(),
|
||||||
new SecretKey(s.getMasterKey()), timestamp,
|
new SecretKey(s.getMasterKey()), timestamp,
|
||||||
s.getLocal().alice, false);
|
s.getLocal().alice, false);
|
||||||
|
|
||||||
// add signed transport properties for the contact
|
// add signed transport properties for the contact
|
||||||
//noinspection ConstantConditions
|
|
||||||
transportPropertyManager.addRemoteProperties(txn, c.getId(),
|
transportPropertyManager.addRemoteProperties(txn, c.getId(),
|
||||||
s.getRemote().transportProperties);
|
s.getRemote().transportProperties);
|
||||||
} catch (ContactExistsException e) {
|
} catch (ContactExistsException e) {
|
||||||
|
|||||||
@@ -15,6 +15,7 @@ import org.briarproject.bramble.api.sync.MessageId;
|
|||||||
import org.briarproject.bramble.api.system.Clock;
|
import org.briarproject.bramble.api.system.Clock;
|
||||||
import org.briarproject.briar.api.client.MessageTracker;
|
import org.briarproject.briar.api.client.MessageTracker;
|
||||||
import org.briarproject.briar.api.client.ProtocolStateException;
|
import org.briarproject.briar.api.client.ProtocolStateException;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorManager;
|
||||||
import org.briarproject.briar.api.introduction.event.IntroductionAbortedEvent;
|
import org.briarproject.briar.api.introduction.event.IntroductionAbortedEvent;
|
||||||
import org.briarproject.briar.introduction.IntroducerSession.Introducee;
|
import org.briarproject.briar.introduction.IntroducerSession.Introducee;
|
||||||
|
|
||||||
@@ -48,12 +49,13 @@ class IntroducerProtocolEngine
|
|||||||
ContactGroupFactory contactGroupFactory,
|
ContactGroupFactory contactGroupFactory,
|
||||||
MessageTracker messageTracker,
|
MessageTracker messageTracker,
|
||||||
IdentityManager identityManager,
|
IdentityManager identityManager,
|
||||||
|
AuthorManager authorManager,
|
||||||
MessageParser messageParser,
|
MessageParser messageParser,
|
||||||
MessageEncoder messageEncoder,
|
MessageEncoder messageEncoder,
|
||||||
Clock clock) {
|
Clock clock) {
|
||||||
super(db, clientHelper, contactManager, contactGroupFactory,
|
super(db, clientHelper, contactManager, contactGroupFactory,
|
||||||
messageTracker, identityManager, messageParser, messageEncoder,
|
messageTracker, identityManager, authorManager, messageParser,
|
||||||
clock);
|
messageEncoder, clock);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|||||||
@@ -16,7 +16,6 @@ import org.briarproject.bramble.api.db.Metadata;
|
|||||||
import org.briarproject.bramble.api.db.Transaction;
|
import org.briarproject.bramble.api.db.Transaction;
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorId;
|
import org.briarproject.bramble.api.identity.AuthorId;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
|
||||||
import org.briarproject.bramble.api.identity.IdentityManager;
|
import org.briarproject.bramble.api.identity.IdentityManager;
|
||||||
import org.briarproject.bramble.api.identity.LocalAuthor;
|
import org.briarproject.bramble.api.identity.LocalAuthor;
|
||||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
|
import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
|
||||||
@@ -33,6 +32,8 @@ import org.briarproject.briar.api.client.MessageTracker;
|
|||||||
import org.briarproject.briar.api.client.SessionId;
|
import org.briarproject.briar.api.client.SessionId;
|
||||||
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
|
import org.briarproject.briar.api.conversation.ConversationMessageHeader;
|
||||||
import org.briarproject.briar.api.conversation.DeletionResult;
|
import org.briarproject.briar.api.conversation.DeletionResult;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorManager;
|
||||||
import org.briarproject.briar.api.introduction.IntroductionManager;
|
import org.briarproject.briar.api.introduction.IntroductionManager;
|
||||||
import org.briarproject.briar.api.introduction.IntroductionRequest;
|
import org.briarproject.briar.api.introduction.IntroductionRequest;
|
||||||
import org.briarproject.briar.api.introduction.IntroductionResponse;
|
import org.briarproject.briar.api.introduction.IntroductionResponse;
|
||||||
@@ -83,6 +84,7 @@ class IntroductionManagerImpl extends ConversationClientImpl
|
|||||||
private final IntroduceeProtocolEngine introduceeEngine;
|
private final IntroduceeProtocolEngine introduceeEngine;
|
||||||
private final IntroductionCrypto crypto;
|
private final IntroductionCrypto crypto;
|
||||||
private final IdentityManager identityManager;
|
private final IdentityManager identityManager;
|
||||||
|
private final AuthorManager authorManager;
|
||||||
|
|
||||||
private final Group localGroup;
|
private final Group localGroup;
|
||||||
|
|
||||||
@@ -101,7 +103,8 @@ class IntroductionManagerImpl extends ConversationClientImpl
|
|||||||
IntroducerProtocolEngine introducerEngine,
|
IntroducerProtocolEngine introducerEngine,
|
||||||
IntroduceeProtocolEngine introduceeEngine,
|
IntroduceeProtocolEngine introduceeEngine,
|
||||||
IntroductionCrypto crypto,
|
IntroductionCrypto crypto,
|
||||||
IdentityManager identityManager) {
|
IdentityManager identityManager,
|
||||||
|
AuthorManager authorManager) {
|
||||||
super(db, clientHelper, metadataParser, messageTracker);
|
super(db, clientHelper, metadataParser, messageTracker);
|
||||||
this.clientVersioningManager = clientVersioningManager;
|
this.clientVersioningManager = clientVersioningManager;
|
||||||
this.contactGroupFactory = contactGroupFactory;
|
this.contactGroupFactory = contactGroupFactory;
|
||||||
@@ -113,6 +116,7 @@ class IntroductionManagerImpl extends ConversationClientImpl
|
|||||||
this.introduceeEngine = introduceeEngine;
|
this.introduceeEngine = introduceeEngine;
|
||||||
this.crypto = crypto;
|
this.crypto = crypto;
|
||||||
this.identityManager = identityManager;
|
this.identityManager = identityManager;
|
||||||
|
this.authorManager = authorManager;
|
||||||
this.localGroup =
|
this.localGroup =
|
||||||
contactGroupFactory.createLocalGroup(CLIENT_ID, MAJOR_VERSION);
|
contactGroupFactory.createLocalGroup(CLIENT_ID, MAJOR_VERSION);
|
||||||
}
|
}
|
||||||
@@ -455,7 +459,7 @@ class IntroductionManagerImpl extends ConversationClientImpl
|
|||||||
Author author = rm.getAuthor();
|
Author author = rm.getAuthor();
|
||||||
AuthorInfo authorInfo = authorInfos.get(author.getId());
|
AuthorInfo authorInfo = authorInfos.get(author.getId());
|
||||||
if (authorInfo == null) {
|
if (authorInfo == null) {
|
||||||
authorInfo = contactManager.getAuthorInfo(txn, author.getId());
|
authorInfo = authorManager.getAuthorInfo(txn, author.getId());
|
||||||
authorInfos.put(author.getId(), authorInfo);
|
authorInfos.put(author.getId(), authorInfo);
|
||||||
}
|
}
|
||||||
return new IntroductionRequest(m, contactGroupId, meta.getTimestamp(),
|
return new IntroductionRequest(m, contactGroupId, meta.getTimestamp(),
|
||||||
@@ -494,7 +498,7 @@ class IntroductionManagerImpl extends ConversationClientImpl
|
|||||||
} else throw new AssertionError();
|
} else throw new AssertionError();
|
||||||
AuthorInfo authorInfo = authorInfos.get(author.getId());
|
AuthorInfo authorInfo = authorInfos.get(author.getId());
|
||||||
if (authorInfo == null) {
|
if (authorInfo == null) {
|
||||||
authorInfo = contactManager.getAuthorInfo(txn, author.getId());
|
authorInfo = authorManager.getAuthorInfo(txn, author.getId());
|
||||||
authorInfos.put(author.getId(), authorInfo);
|
authorInfos.put(author.getId(), authorInfo);
|
||||||
}
|
}
|
||||||
return new IntroductionResponse(m, contactGroupId, meta.getTimestamp(),
|
return new IntroductionResponse(m, contactGroupId, meta.getTimestamp(),
|
||||||
|
|||||||
@@ -15,8 +15,6 @@ import org.briarproject.bramble.api.db.Transaction;
|
|||||||
import org.briarproject.bramble.api.event.Event;
|
import org.briarproject.bramble.api.event.Event;
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorId;
|
import org.briarproject.bramble.api.identity.AuthorId;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo.Status;
|
|
||||||
import org.briarproject.bramble.api.identity.IdentityManager;
|
import org.briarproject.bramble.api.identity.IdentityManager;
|
||||||
import org.briarproject.bramble.api.identity.LocalAuthor;
|
import org.briarproject.bramble.api.identity.LocalAuthor;
|
||||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||||
@@ -27,6 +25,9 @@ import org.briarproject.bramble.api.sync.MessageId;
|
|||||||
import org.briarproject.briar.api.client.MessageTracker;
|
import org.briarproject.briar.api.client.MessageTracker;
|
||||||
import org.briarproject.briar.api.client.MessageTracker.GroupCount;
|
import org.briarproject.briar.api.client.MessageTracker.GroupCount;
|
||||||
import org.briarproject.briar.api.client.ProtocolStateException;
|
import org.briarproject.briar.api.client.ProtocolStateException;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorInfo.Status;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorManager;
|
||||||
import org.briarproject.briar.api.privategroup.GroupMember;
|
import org.briarproject.briar.api.privategroup.GroupMember;
|
||||||
import org.briarproject.briar.api.privategroup.GroupMessage;
|
import org.briarproject.briar.api.privategroup.GroupMessage;
|
||||||
import org.briarproject.briar.api.privategroup.GroupMessageHeader;
|
import org.briarproject.briar.api.privategroup.GroupMessageHeader;
|
||||||
@@ -54,9 +55,9 @@ import java.util.concurrent.CopyOnWriteArrayList;
|
|||||||
import javax.annotation.concurrent.ThreadSafe;
|
import javax.annotation.concurrent.ThreadSafe;
|
||||||
import javax.inject.Inject;
|
import javax.inject.Inject;
|
||||||
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.UNVERIFIED;
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.UNVERIFIED;
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED;
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED;
|
||||||
import static org.briarproject.briar.api.privategroup.MessageType.JOIN;
|
import static org.briarproject.briar.api.privategroup.MessageType.JOIN;
|
||||||
import static org.briarproject.briar.api.privategroup.MessageType.POST;
|
import static org.briarproject.briar.api.privategroup.MessageType.POST;
|
||||||
import static org.briarproject.briar.api.privategroup.Visibility.INVISIBLE;
|
import static org.briarproject.briar.api.privategroup.Visibility.INVISIBLE;
|
||||||
@@ -84,6 +85,7 @@ class PrivateGroupManagerImpl extends BdfIncomingMessageHook
|
|||||||
private final PrivateGroupFactory privateGroupFactory;
|
private final PrivateGroupFactory privateGroupFactory;
|
||||||
private final ContactManager contactManager;
|
private final ContactManager contactManager;
|
||||||
private final IdentityManager identityManager;
|
private final IdentityManager identityManager;
|
||||||
|
private final AuthorManager authorManager;
|
||||||
private final MessageTracker messageTracker;
|
private final MessageTracker messageTracker;
|
||||||
private final List<PrivateGroupHook> hooks;
|
private final List<PrivateGroupHook> hooks;
|
||||||
|
|
||||||
@@ -92,11 +94,12 @@ class PrivateGroupManagerImpl extends BdfIncomingMessageHook
|
|||||||
MetadataParser metadataParser, DatabaseComponent db,
|
MetadataParser metadataParser, DatabaseComponent db,
|
||||||
PrivateGroupFactory privateGroupFactory,
|
PrivateGroupFactory privateGroupFactory,
|
||||||
ContactManager contactManager, IdentityManager identityManager,
|
ContactManager contactManager, IdentityManager identityManager,
|
||||||
MessageTracker messageTracker) {
|
AuthorManager authorManager, MessageTracker messageTracker) {
|
||||||
super(db, clientHelper, metadataParser);
|
super(db, clientHelper, metadataParser);
|
||||||
this.privateGroupFactory = privateGroupFactory;
|
this.privateGroupFactory = privateGroupFactory;
|
||||||
this.contactManager = contactManager;
|
this.contactManager = contactManager;
|
||||||
this.identityManager = identityManager;
|
this.identityManager = identityManager;
|
||||||
|
this.authorManager = authorManager;
|
||||||
this.messageTracker = messageTracker;
|
this.messageTracker = messageTracker;
|
||||||
hooks = new CopyOnWriteArrayList<>();
|
hooks = new CopyOnWriteArrayList<>();
|
||||||
}
|
}
|
||||||
@@ -336,7 +339,7 @@ class PrivateGroupManagerImpl extends BdfIncomingMessageHook
|
|||||||
// get information for all authors
|
// get information for all authors
|
||||||
Map<AuthorId, AuthorInfo> authorInfos = new HashMap<>();
|
Map<AuthorId, AuthorInfo> authorInfos = new HashMap<>();
|
||||||
for (AuthorId id : authors) {
|
for (AuthorId id : authors) {
|
||||||
authorInfos.put(id, contactManager.getAuthorInfo(txn, id));
|
authorInfos.put(id, authorManager.getAuthorInfo(txn, id));
|
||||||
}
|
}
|
||||||
// get current visibilities for join messages
|
// get current visibilities for join messages
|
||||||
Map<Author, Visibility> visibilities = getMembers(txn, g);
|
Map<Author, Visibility> visibilities = getMembers(txn, g);
|
||||||
@@ -378,7 +381,7 @@ class PrivateGroupManagerImpl extends BdfIncomingMessageHook
|
|||||||
if (authorInfos.containsKey(member.getId())) {
|
if (authorInfos.containsKey(member.getId())) {
|
||||||
authorInfo = authorInfos.get(member.getId());
|
authorInfo = authorInfos.get(member.getId());
|
||||||
} else {
|
} else {
|
||||||
authorInfo = contactManager.getAuthorInfo(txn, member.getId());
|
authorInfo = authorManager.getAuthorInfo(txn, member.getId());
|
||||||
}
|
}
|
||||||
boolean read = meta.getBoolean(KEY_READ);
|
boolean read = meta.getBoolean(KEY_READ);
|
||||||
|
|
||||||
@@ -408,7 +411,7 @@ class PrivateGroupManagerImpl extends BdfIncomingMessageHook
|
|||||||
for (Entry<Author, Visibility> m : authors.entrySet()) {
|
for (Entry<Author, Visibility> m : authors.entrySet()) {
|
||||||
Author a = m.getKey();
|
Author a = m.getKey();
|
||||||
AuthorInfo authorInfo =
|
AuthorInfo authorInfo =
|
||||||
contactManager.getAuthorInfo(txn, a.getId());
|
authorManager.getAuthorInfo(txn, a.getId());
|
||||||
Status status = authorInfo.getStatus();
|
Status status = authorInfo.getStatus();
|
||||||
Visibility v = m.getValue();
|
Visibility v = m.getValue();
|
||||||
ContactId c = null;
|
ContactId c = null;
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ package org.briarproject.briar.blog;
|
|||||||
import org.briarproject.bramble.api.FormatException;
|
import org.briarproject.bramble.api.FormatException;
|
||||||
import org.briarproject.bramble.api.client.ClientHelper;
|
import org.briarproject.bramble.api.client.ClientHelper;
|
||||||
import org.briarproject.bramble.api.contact.Contact;
|
import org.briarproject.bramble.api.contact.Contact;
|
||||||
import org.briarproject.bramble.api.contact.ContactManager;
|
|
||||||
import org.briarproject.bramble.api.data.BdfDictionary;
|
import org.briarproject.bramble.api.data.BdfDictionary;
|
||||||
import org.briarproject.bramble.api.data.BdfEntry;
|
import org.briarproject.bramble.api.data.BdfEntry;
|
||||||
import org.briarproject.bramble.api.data.BdfList;
|
import org.briarproject.bramble.api.data.BdfList;
|
||||||
@@ -15,7 +14,6 @@ import org.briarproject.bramble.api.db.EventAction;
|
|||||||
import org.briarproject.bramble.api.db.Transaction;
|
import org.briarproject.bramble.api.db.Transaction;
|
||||||
import org.briarproject.bramble.api.event.Event;
|
import org.briarproject.bramble.api.event.Event;
|
||||||
import org.briarproject.bramble.api.identity.Author;
|
import org.briarproject.bramble.api.identity.Author;
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo;
|
|
||||||
import org.briarproject.bramble.api.identity.IdentityManager;
|
import org.briarproject.bramble.api.identity.IdentityManager;
|
||||||
import org.briarproject.bramble.api.identity.LocalAuthor;
|
import org.briarproject.bramble.api.identity.LocalAuthor;
|
||||||
import org.briarproject.bramble.api.sync.Group;
|
import org.briarproject.bramble.api.sync.Group;
|
||||||
@@ -28,14 +26,13 @@ import org.briarproject.briar.api.blog.BlogPost;
|
|||||||
import org.briarproject.briar.api.blog.BlogPostFactory;
|
import org.briarproject.briar.api.blog.BlogPostFactory;
|
||||||
import org.briarproject.briar.api.blog.BlogPostHeader;
|
import org.briarproject.briar.api.blog.BlogPostHeader;
|
||||||
import org.briarproject.briar.api.blog.event.BlogPostAddedEvent;
|
import org.briarproject.briar.api.blog.event.BlogPostAddedEvent;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorManager;
|
||||||
import org.briarproject.briar.test.BriarTestCase;
|
import org.briarproject.briar.test.BriarTestCase;
|
||||||
import org.jmock.Expectations;
|
import org.jmock.Expectations;
|
||||||
import org.jmock.Mockery;
|
import org.jmock.Mockery;
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.NONE;
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED;
|
|
||||||
import static org.briarproject.bramble.test.TestUtils.getContact;
|
import static org.briarproject.bramble.test.TestUtils.getContact;
|
||||||
import static org.briarproject.bramble.test.TestUtils.getGroup;
|
import static org.briarproject.bramble.test.TestUtils.getGroup;
|
||||||
import static org.briarproject.bramble.test.TestUtils.getLocalAuthor;
|
import static org.briarproject.bramble.test.TestUtils.getLocalAuthor;
|
||||||
@@ -59,6 +56,9 @@ import static org.briarproject.briar.api.blog.MessageType.COMMENT;
|
|||||||
import static org.briarproject.briar.api.blog.MessageType.POST;
|
import static org.briarproject.briar.api.blog.MessageType.POST;
|
||||||
import static org.briarproject.briar.api.blog.MessageType.WRAPPED_COMMENT;
|
import static org.briarproject.briar.api.blog.MessageType.WRAPPED_COMMENT;
|
||||||
import static org.briarproject.briar.api.blog.MessageType.WRAPPED_POST;
|
import static org.briarproject.briar.api.blog.MessageType.WRAPPED_POST;
|
||||||
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.NONE;
|
||||||
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
|
||||||
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED;
|
||||||
import static org.junit.Assert.assertEquals;
|
import static org.junit.Assert.assertEquals;
|
||||||
import static org.junit.Assert.assertFalse;
|
import static org.junit.Assert.assertFalse;
|
||||||
import static org.junit.Assert.assertNull;
|
import static org.junit.Assert.assertNull;
|
||||||
@@ -69,8 +69,8 @@ public class BlogManagerImplTest extends BriarTestCase {
|
|||||||
private final Mockery context = new Mockery();
|
private final Mockery context = new Mockery();
|
||||||
private final BlogManagerImpl blogManager;
|
private final BlogManagerImpl blogManager;
|
||||||
private final DatabaseComponent db = context.mock(DatabaseComponent.class);
|
private final DatabaseComponent db = context.mock(DatabaseComponent.class);
|
||||||
private final ContactManager contactManager =
|
private final AuthorManager authorManager =
|
||||||
context.mock(ContactManager.class);
|
context.mock(AuthorManager.class);
|
||||||
private final IdentityManager identityManager =
|
private final IdentityManager identityManager =
|
||||||
context.mock(IdentityManager.class);
|
context.mock(IdentityManager.class);
|
||||||
private final ClientHelper clientHelper = context.mock(ClientHelper.class);
|
private final ClientHelper clientHelper = context.mock(ClientHelper.class);
|
||||||
@@ -90,7 +90,7 @@ public class BlogManagerImplTest extends BriarTestCase {
|
|||||||
|
|
||||||
public BlogManagerImplTest() {
|
public BlogManagerImplTest() {
|
||||||
MetadataParser metadataParser = context.mock(MetadataParser.class);
|
MetadataParser metadataParser = context.mock(MetadataParser.class);
|
||||||
blogManager = new BlogManagerImpl(db, contactManager, identityManager,
|
blogManager = new BlogManagerImpl(db, identityManager, authorManager,
|
||||||
clientHelper, metadataParser, blogFactory, blogPostFactory);
|
clientHelper, metadataParser, blogFactory, blogPostFactory);
|
||||||
|
|
||||||
localAuthor1 = getLocalAuthor();
|
localAuthor1 = getLocalAuthor();
|
||||||
@@ -180,7 +180,7 @@ public class BlogManagerImplTest extends BriarTestCase {
|
|||||||
context.checking(new Expectations() {{
|
context.checking(new Expectations() {{
|
||||||
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
|
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
|
||||||
will(returnValue(localAuthor1));
|
will(returnValue(localAuthor1));
|
||||||
oneOf(contactManager).getAuthorInfo(txn, localAuthor1.getId());
|
oneOf(authorManager).getAuthorInfo(txn, localAuthor1.getId());
|
||||||
will(returnValue(verifiedInfo));
|
will(returnValue(verifiedInfo));
|
||||||
}});
|
}});
|
||||||
|
|
||||||
@@ -291,7 +291,7 @@ public class BlogManagerImplTest extends BriarTestCase {
|
|||||||
false);
|
false);
|
||||||
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
|
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
|
||||||
will(returnValue(localAuthor1));
|
will(returnValue(localAuthor1));
|
||||||
oneOf(contactManager).getAuthorInfo(txn, localAuthor1.getId());
|
oneOf(authorManager).getAuthorInfo(txn, localAuthor1.getId());
|
||||||
will(returnValue(ourselvesInfo));
|
will(returnValue(ourselvesInfo));
|
||||||
oneOf(db).commitTransaction(txn);
|
oneOf(db).commitTransaction(txn);
|
||||||
oneOf(db).endTransaction(txn);
|
oneOf(db).endTransaction(txn);
|
||||||
@@ -413,13 +413,13 @@ public class BlogManagerImplTest extends BriarTestCase {
|
|||||||
// Create the headers for the comment and its parent
|
// Create the headers for the comment and its parent
|
||||||
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
|
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
|
||||||
will(returnValue(localAuthor1));
|
will(returnValue(localAuthor1));
|
||||||
oneOf(contactManager).getAuthorInfo(txn, localAuthor1.getId());
|
oneOf(authorManager).getAuthorInfo(txn, localAuthor1.getId());
|
||||||
will(returnValue(ourselvesInfo));
|
will(returnValue(ourselvesInfo));
|
||||||
oneOf(clientHelper).getMessageMetadataAsDictionary(txn, messageId);
|
oneOf(clientHelper).getMessageMetadataAsDictionary(txn, messageId);
|
||||||
will(returnValue(postMeta));
|
will(returnValue(postMeta));
|
||||||
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
|
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
|
||||||
will(returnValue(localAuthor1));
|
will(returnValue(localAuthor1));
|
||||||
oneOf(contactManager).getAuthorInfo(txn, localAuthor1.getId());
|
oneOf(authorManager).getAuthorInfo(txn, localAuthor1.getId());
|
||||||
will(returnValue(ourselvesInfo));
|
will(returnValue(ourselvesInfo));
|
||||||
oneOf(db).commitTransaction(txn);
|
oneOf(db).commitTransaction(txn);
|
||||||
oneOf(db).endTransaction(txn);
|
oneOf(db).endTransaction(txn);
|
||||||
@@ -523,14 +523,14 @@ public class BlogManagerImplTest extends BriarTestCase {
|
|||||||
// Create the headers for the comment and the wrapped post
|
// Create the headers for the comment and the wrapped post
|
||||||
oneOf(clientHelper).parseAndValidateAuthor(authorList2);
|
oneOf(clientHelper).parseAndValidateAuthor(authorList2);
|
||||||
will(returnValue(localAuthor2));
|
will(returnValue(localAuthor2));
|
||||||
oneOf(contactManager).getAuthorInfo(txn, localAuthor2.getId());
|
oneOf(authorManager).getAuthorInfo(txn, localAuthor2.getId());
|
||||||
will(returnValue(ourselvesInfo));
|
will(returnValue(ourselvesInfo));
|
||||||
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
|
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
|
||||||
wrappedPostId);
|
wrappedPostId);
|
||||||
will(returnValue(wrappedPostMeta));
|
will(returnValue(wrappedPostMeta));
|
||||||
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
|
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
|
||||||
will(returnValue(localAuthor1));
|
will(returnValue(localAuthor1));
|
||||||
oneOf(contactManager).getAuthorInfo(txn, localAuthor1.getId());
|
oneOf(authorManager).getAuthorInfo(txn, localAuthor1.getId());
|
||||||
will(returnValue(verifiedInfo));
|
will(returnValue(verifiedInfo));
|
||||||
oneOf(db).commitTransaction(txn);
|
oneOf(db).commitTransaction(txn);
|
||||||
oneOf(db).endTransaction(txn);
|
oneOf(db).endTransaction(txn);
|
||||||
@@ -634,7 +634,7 @@ public class BlogManagerImplTest extends BriarTestCase {
|
|||||||
// Create the headers for the comment and the wrapped post
|
// Create the headers for the comment and the wrapped post
|
||||||
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
|
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
|
||||||
will(returnValue(localAuthor1));
|
will(returnValue(localAuthor1));
|
||||||
oneOf(contactManager).getAuthorInfo(txn, localAuthor1.getId());
|
oneOf(authorManager).getAuthorInfo(txn, localAuthor1.getId());
|
||||||
will(returnValue(ourselvesInfo));
|
will(returnValue(ourselvesInfo));
|
||||||
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
|
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
|
||||||
wrappedPostId);
|
wrappedPostId);
|
||||||
@@ -775,14 +775,14 @@ public class BlogManagerImplTest extends BriarTestCase {
|
|||||||
// the rewrapped post
|
// the rewrapped post
|
||||||
oneOf(clientHelper).parseAndValidateAuthor(authorList2);
|
oneOf(clientHelper).parseAndValidateAuthor(authorList2);
|
||||||
will(returnValue(localAuthor2));
|
will(returnValue(localAuthor2));
|
||||||
oneOf(contactManager).getAuthorInfo(txn, localAuthor2.getId());
|
oneOf(authorManager).getAuthorInfo(txn, localAuthor2.getId());
|
||||||
will(returnValue(ourselvesInfo));
|
will(returnValue(ourselvesInfo));
|
||||||
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
|
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
|
||||||
wrappedCommentId);
|
wrappedCommentId);
|
||||||
will(returnValue(wrappedCommentMeta));
|
will(returnValue(wrappedCommentMeta));
|
||||||
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
|
oneOf(clientHelper).parseAndValidateAuthor(authorList1);
|
||||||
will(returnValue(localAuthor1));
|
will(returnValue(localAuthor1));
|
||||||
oneOf(contactManager).getAuthorInfo(txn, localAuthor1.getId());
|
oneOf(authorManager).getAuthorInfo(txn, localAuthor1.getId());
|
||||||
will(returnValue(verifiedInfo));
|
will(returnValue(verifiedInfo));
|
||||||
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
|
oneOf(clientHelper).getMessageMetadataAsDictionary(txn,
|
||||||
rewrappedPostId);
|
rewrappedPostId);
|
||||||
|
|||||||
@@ -21,7 +21,7 @@ import java.util.Iterator;
|
|||||||
|
|
||||||
import static junit.framework.Assert.assertNotNull;
|
import static junit.framework.Assert.assertNotNull;
|
||||||
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
|
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.NONE;
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.NONE;
|
||||||
import static org.briarproject.bramble.util.StringUtils.getRandomString;
|
import static org.briarproject.bramble.util.StringUtils.getRandomString;
|
||||||
import static org.briarproject.briar.api.blog.MessageType.COMMENT;
|
import static org.briarproject.briar.api.blog.MessageType.COMMENT;
|
||||||
import static org.briarproject.briar.api.blog.MessageType.POST;
|
import static org.briarproject.briar.api.blog.MessageType.POST;
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ import org.briarproject.briar.api.blog.BlogManager;
|
|||||||
import org.briarproject.briar.api.feed.FeedManager;
|
import org.briarproject.briar.api.feed.FeedManager;
|
||||||
import org.briarproject.briar.blog.BlogModule;
|
import org.briarproject.briar.blog.BlogModule;
|
||||||
import org.briarproject.briar.client.BriarClientModule;
|
import org.briarproject.briar.client.BriarClientModule;
|
||||||
|
import org.briarproject.briar.identity.IdentityModule;
|
||||||
import org.briarproject.briar.test.TestDnsModule;
|
import org.briarproject.briar.test.TestDnsModule;
|
||||||
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
@@ -23,6 +24,7 @@ import dagger.Component;
|
|||||||
BlogModule.class,
|
BlogModule.class,
|
||||||
BriarClientModule.class,
|
BriarClientModule.class,
|
||||||
FeedModule.class,
|
FeedModule.class,
|
||||||
|
IdentityModule.class,
|
||||||
TestDnsModule.class,
|
TestDnsModule.class,
|
||||||
TestSocksModule.class,
|
TestSocksModule.class,
|
||||||
})
|
})
|
||||||
|
|||||||
@@ -0,0 +1,115 @@
|
|||||||
|
package org.briarproject.briar.identity;
|
||||||
|
|
||||||
|
import org.briarproject.bramble.api.contact.Contact;
|
||||||
|
import org.briarproject.bramble.api.db.DatabaseComponent;
|
||||||
|
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.identity.IdentityManager;
|
||||||
|
import org.briarproject.bramble.api.identity.LocalAuthor;
|
||||||
|
import org.briarproject.bramble.test.BrambleMockTestCase;
|
||||||
|
import org.briarproject.bramble.test.DbExpectations;
|
||||||
|
import org.briarproject.briar.api.identity.AuthorInfo;
|
||||||
|
import org.jmock.Expectations;
|
||||||
|
import org.junit.Test;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import static java.util.Collections.emptyList;
|
||||||
|
import static java.util.Collections.singletonList;
|
||||||
|
import static org.briarproject.bramble.test.TestUtils.getAuthor;
|
||||||
|
import static org.briarproject.bramble.test.TestUtils.getContact;
|
||||||
|
import static org.briarproject.bramble.test.TestUtils.getLocalAuthor;
|
||||||
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
|
||||||
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.UNKNOWN;
|
||||||
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.UNVERIFIED;
|
||||||
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED;
|
||||||
|
import static org.junit.Assert.assertEquals;
|
||||||
|
import static org.junit.Assert.assertNull;
|
||||||
|
|
||||||
|
public class AuthorManagerImplTest extends BrambleMockTestCase {
|
||||||
|
|
||||||
|
private final DatabaseComponent db = context.mock(DatabaseComponent.class);
|
||||||
|
private final IdentityManager identityManager =
|
||||||
|
context.mock(IdentityManager.class);
|
||||||
|
|
||||||
|
private final Author remote = getAuthor();
|
||||||
|
private final LocalAuthor localAuthor = getLocalAuthor();
|
||||||
|
private final AuthorId local = localAuthor.getId();
|
||||||
|
private final boolean verified = false;
|
||||||
|
private final Contact contact = getContact(remote, local, verified);
|
||||||
|
|
||||||
|
private final AuthorManagerImpl authorManager =
|
||||||
|
new AuthorManagerImpl(db, identityManager);
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetAuthorInfo() throws Exception {
|
||||||
|
Transaction txn = new Transaction(null, true);
|
||||||
|
|
||||||
|
context.checking(new DbExpectations() {{
|
||||||
|
oneOf(identityManager).getLocalAuthor(txn);
|
||||||
|
will(returnValue(localAuthor));
|
||||||
|
oneOf(db).getContactsByAuthorId(txn, remote.getId());
|
||||||
|
will(returnValue(singletonList(contact)));
|
||||||
|
}});
|
||||||
|
|
||||||
|
AuthorInfo authorInfo =
|
||||||
|
authorManager.getAuthorInfo(txn, remote.getId());
|
||||||
|
assertEquals(UNVERIFIED, authorInfo.getStatus());
|
||||||
|
assertEquals(contact.getAlias(), authorInfo.getAlias());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void testGetAuthorInfoTransaction() throws DbException {
|
||||||
|
Transaction txn = new Transaction(null, true);
|
||||||
|
|
||||||
|
// check unknown author
|
||||||
|
context.checking(new Expectations() {{
|
||||||
|
oneOf(identityManager).getLocalAuthor(txn);
|
||||||
|
will(returnValue(localAuthor));
|
||||||
|
oneOf(db).getContactsByAuthorId(txn, remote.getId());
|
||||||
|
will(returnValue(emptyList()));
|
||||||
|
}});
|
||||||
|
|
||||||
|
AuthorInfo authorInfo =
|
||||||
|
authorManager.getAuthorInfo(txn, remote.getId());
|
||||||
|
assertEquals(UNKNOWN, authorInfo.getStatus());
|
||||||
|
assertNull(authorInfo.getAlias());
|
||||||
|
|
||||||
|
// check unverified contact
|
||||||
|
checkAuthorInfoContext(txn, remote.getId(), singletonList(contact));
|
||||||
|
authorInfo = authorManager.getAuthorInfo(txn, remote.getId());
|
||||||
|
assertEquals(UNVERIFIED, authorInfo.getStatus());
|
||||||
|
assertEquals(contact.getAlias(), authorInfo.getAlias());
|
||||||
|
|
||||||
|
// check verified contact
|
||||||
|
Contact verified = getContact(remote, local, true);
|
||||||
|
checkAuthorInfoContext(txn, remote.getId(), singletonList(verified));
|
||||||
|
authorInfo = authorManager.getAuthorInfo(txn, remote.getId());
|
||||||
|
assertEquals(VERIFIED, authorInfo.getStatus());
|
||||||
|
assertEquals(verified.getAlias(), authorInfo.getAlias());
|
||||||
|
|
||||||
|
// check ourselves
|
||||||
|
context.checking(new Expectations() {{
|
||||||
|
oneOf(identityManager).getLocalAuthor(txn);
|
||||||
|
will(returnValue(localAuthor));
|
||||||
|
never(db).getContactsByAuthorId(txn, remote.getId());
|
||||||
|
}});
|
||||||
|
|
||||||
|
authorInfo = authorManager.getAuthorInfo(txn, localAuthor.getId());
|
||||||
|
assertEquals(OURSELVES, authorInfo.getStatus());
|
||||||
|
assertNull(authorInfo.getAlias());
|
||||||
|
}
|
||||||
|
|
||||||
|
private void checkAuthorInfoContext(Transaction txn, AuthorId authorId,
|
||||||
|
Collection<Contact> contacts) throws DbException {
|
||||||
|
context.checking(new Expectations() {{
|
||||||
|
oneOf(identityManager).getLocalAuthor(txn);
|
||||||
|
will(returnValue(localAuthor));
|
||||||
|
oneOf(db).getContactsByAuthorId(txn, authorId);
|
||||||
|
will(returnValue(contacts));
|
||||||
|
}});
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
@@ -6,6 +6,7 @@ import org.briarproject.briar.avatar.AvatarModule;
|
|||||||
import org.briarproject.briar.blog.BlogModule;
|
import org.briarproject.briar.blog.BlogModule;
|
||||||
import org.briarproject.briar.client.BriarClientModule;
|
import org.briarproject.briar.client.BriarClientModule;
|
||||||
import org.briarproject.briar.forum.ForumModule;
|
import org.briarproject.briar.forum.ForumModule;
|
||||||
|
import org.briarproject.briar.identity.IdentityModule;
|
||||||
import org.briarproject.briar.messaging.MessagingModule;
|
import org.briarproject.briar.messaging.MessagingModule;
|
||||||
import org.briarproject.briar.privategroup.PrivateGroupModule;
|
import org.briarproject.briar.privategroup.PrivateGroupModule;
|
||||||
import org.briarproject.briar.privategroup.invitation.GroupInvitationModule;
|
import org.briarproject.briar.privategroup.invitation.GroupInvitationModule;
|
||||||
@@ -25,6 +26,7 @@ import dagger.Component;
|
|||||||
BriarClientModule.class,
|
BriarClientModule.class,
|
||||||
ForumModule.class,
|
ForumModule.class,
|
||||||
GroupInvitationModule.class,
|
GroupInvitationModule.class,
|
||||||
|
IdentityModule.class,
|
||||||
IntroductionModule.class,
|
IntroductionModule.class,
|
||||||
MessagingModule.class,
|
MessagingModule.class,
|
||||||
PrivateGroupModule.class,
|
PrivateGroupModule.class,
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import org.briarproject.bramble.BrambleCoreModule;
|
|||||||
import org.briarproject.bramble.test.BrambleCoreIntegrationTestModule;
|
import org.briarproject.bramble.test.BrambleCoreIntegrationTestModule;
|
||||||
import org.briarproject.briar.client.BriarClientModule;
|
import org.briarproject.briar.client.BriarClientModule;
|
||||||
import org.briarproject.briar.forum.ForumModule;
|
import org.briarproject.briar.forum.ForumModule;
|
||||||
|
import org.briarproject.briar.identity.IdentityModule;
|
||||||
|
|
||||||
import javax.inject.Singleton;
|
import javax.inject.Singleton;
|
||||||
|
|
||||||
@@ -16,6 +17,7 @@ import dagger.Component;
|
|||||||
BrambleCoreModule.class,
|
BrambleCoreModule.class,
|
||||||
BriarClientModule.class,
|
BriarClientModule.class,
|
||||||
ForumModule.class,
|
ForumModule.class,
|
||||||
|
IdentityModule.class,
|
||||||
MessagingModule.class
|
MessagingModule.class
|
||||||
})
|
})
|
||||||
interface MessageSizeIntegrationTestComponent
|
interface MessageSizeIntegrationTestComponent
|
||||||
|
|||||||
@@ -24,7 +24,7 @@ import java.util.Collection;
|
|||||||
|
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES;
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES;
|
||||||
import static org.briarproject.briar.api.privategroup.Visibility.INVISIBLE;
|
import static org.briarproject.briar.api.privategroup.Visibility.INVISIBLE;
|
||||||
import static org.briarproject.briar.api.privategroup.Visibility.REVEALED_BY_CONTACT;
|
import static org.briarproject.briar.api.privategroup.Visibility.REVEALED_BY_CONTACT;
|
||||||
import static org.briarproject.briar.api.privategroup.Visibility.REVEALED_BY_US;
|
import static org.briarproject.briar.api.privategroup.Visibility.REVEALED_BY_US;
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ import org.junit.Test;
|
|||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
|
|
||||||
import static org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED;
|
import static org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED;
|
||||||
import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED;
|
import static org.briarproject.bramble.api.sync.Group.Visibility.SHARED;
|
||||||
import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
|
import static org.briarproject.bramble.test.TestUtils.getRandomBytes;
|
||||||
import static org.briarproject.bramble.test.TestUtils.getRandomId;
|
import static org.briarproject.bramble.test.TestUtils.getRandomId;
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import org.briarproject.briar.avatar.AvatarModule;
|
|||||||
import org.briarproject.briar.blog.BlogModule;
|
import org.briarproject.briar.blog.BlogModule;
|
||||||
import org.briarproject.briar.client.BriarClientModule;
|
import org.briarproject.briar.client.BriarClientModule;
|
||||||
import org.briarproject.briar.forum.ForumModule;
|
import org.briarproject.briar.forum.ForumModule;
|
||||||
|
import org.briarproject.briar.identity.IdentityModule;
|
||||||
import org.briarproject.briar.introduction.IntroductionModule;
|
import org.briarproject.briar.introduction.IntroductionModule;
|
||||||
import org.briarproject.briar.messaging.MessagingModule;
|
import org.briarproject.briar.messaging.MessagingModule;
|
||||||
import org.briarproject.briar.privategroup.PrivateGroupModule;
|
import org.briarproject.briar.privategroup.PrivateGroupModule;
|
||||||
@@ -48,6 +49,7 @@ import dagger.Component;
|
|||||||
BriarClientModule.class,
|
BriarClientModule.class,
|
||||||
ForumModule.class,
|
ForumModule.class,
|
||||||
GroupInvitationModule.class,
|
GroupInvitationModule.class,
|
||||||
|
IdentityModule.class,
|
||||||
IntroductionModule.class,
|
IntroductionModule.class,
|
||||||
MessagingModule.class,
|
MessagingModule.class,
|
||||||
PrivateGroupModule.class,
|
PrivateGroupModule.class,
|
||||||
@@ -66,6 +68,8 @@ public interface BriarIntegrationTestComponent
|
|||||||
|
|
||||||
void inject(GroupInvitationModule.EagerSingletons init);
|
void inject(GroupInvitationModule.EagerSingletons init);
|
||||||
|
|
||||||
|
void inject(IdentityModule.EagerSingletons init);
|
||||||
|
|
||||||
void inject(IntroductionModule.EagerSingletons init);
|
void inject(IntroductionModule.EagerSingletons init);
|
||||||
|
|
||||||
void inject(MessagingModule.EagerSingletons init);
|
void inject(MessagingModule.EagerSingletons init);
|
||||||
@@ -128,6 +132,7 @@ public interface BriarIntegrationTestComponent
|
|||||||
c.inject(new BlogModule.EagerSingletons());
|
c.inject(new BlogModule.EagerSingletons());
|
||||||
c.inject(new ForumModule.EagerSingletons());
|
c.inject(new ForumModule.EagerSingletons());
|
||||||
c.inject(new GroupInvitationModule.EagerSingletons());
|
c.inject(new GroupInvitationModule.EagerSingletons());
|
||||||
|
c.inject(new IdentityModule.EagerSingletons());
|
||||||
c.inject(new IntroductionModule.EagerSingletons());
|
c.inject(new IntroductionModule.EagerSingletons());
|
||||||
c.inject(new MessagingModule.EagerSingletons());
|
c.inject(new MessagingModule.EagerSingletons());
|
||||||
c.inject(new PrivateGroupModule.EagerSingletons());
|
c.inject(new PrivateGroupModule.EagerSingletons());
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
package org.briarproject.bramble.identity
|
package org.briarproject.bramble.identity
|
||||||
|
|
||||||
import org.briarproject.bramble.api.identity.Author
|
import org.briarproject.bramble.api.identity.Author
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo
|
import org.briarproject.briar.api.identity.AuthorInfo
|
||||||
import org.briarproject.briar.headless.json.JsonDict
|
import org.briarproject.briar.headless.json.JsonDict
|
||||||
|
|
||||||
fun Author.output() = JsonDict(
|
fun Author.output() = JsonDict(
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import io.mockk.Runs
|
|||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.just
|
import io.mockk.just
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo
|
import org.briarproject.briar.api.identity.AuthorInfo
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo.Status.OURSELVES
|
import org.briarproject.briar.api.identity.AuthorInfo.Status.OURSELVES
|
||||||
import org.briarproject.bramble.api.sync.MessageId
|
import org.briarproject.bramble.api.sync.MessageId
|
||||||
import org.briarproject.bramble.identity.output
|
import org.briarproject.bramble.identity.output
|
||||||
import org.briarproject.bramble.util.StringUtils.getRandomString
|
import org.briarproject.bramble.util.StringUtils.getRandomString
|
||||||
|
|||||||
@@ -6,8 +6,8 @@ import io.mockk.CapturingSlot
|
|||||||
import io.mockk.every
|
import io.mockk.every
|
||||||
import io.mockk.mockk
|
import io.mockk.mockk
|
||||||
import io.mockk.verify
|
import io.mockk.verify
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo
|
import org.briarproject.briar.api.identity.AuthorInfo
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED
|
import org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED
|
||||||
import org.briarproject.bramble.test.ImmediateExecutor
|
import org.briarproject.bramble.test.ImmediateExecutor
|
||||||
import org.briarproject.bramble.test.TestUtils.getRandomId
|
import org.briarproject.bramble.test.TestUtils.getRandomId
|
||||||
import org.briarproject.briar.api.client.SessionId
|
import org.briarproject.briar.api.client.SessionId
|
||||||
|
|||||||
@@ -7,9 +7,9 @@ import io.javalin.plugin.json.JavalinJson.toJson
|
|||||||
import io.mockk.*
|
import io.mockk.*
|
||||||
import org.briarproject.bramble.api.contact.ContactId
|
import org.briarproject.bramble.api.contact.ContactId
|
||||||
import org.briarproject.bramble.api.db.NoSuchContactException
|
import org.briarproject.bramble.api.db.NoSuchContactException
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo
|
import org.briarproject.briar.api.identity.AuthorInfo
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo.Status.UNVERIFIED
|
import org.briarproject.briar.api.identity.AuthorInfo.Status.UNVERIFIED
|
||||||
import org.briarproject.bramble.api.identity.AuthorInfo.Status.VERIFIED
|
import org.briarproject.briar.api.identity.AuthorInfo.Status.VERIFIED
|
||||||
import org.briarproject.bramble.api.sync.MessageId
|
import org.briarproject.bramble.api.sync.MessageId
|
||||||
import org.briarproject.bramble.api.sync.event.MessagesAckedEvent
|
import org.briarproject.bramble.api.sync.event.MessagesAckedEvent
|
||||||
import org.briarproject.bramble.api.sync.event.MessagesSentEvent
|
import org.briarproject.bramble.api.sync.event.MessagesSentEvent
|
||||||
|
|||||||
Reference in New Issue
Block a user