From ab29aacce03efbfd170b66d7de56e3fd97dad17f Mon Sep 17 00:00:00 2001 From: akwizgran Date: Tue, 19 Jul 2022 12:50:50 +0100 Subject: [PATCH] Add MailboxClientFactory. --- .../ContactMailboxConnectivityChecker.java | 2 + .../bramble/mailbox/MailboxClientFactory.java | 21 ++++++++++ .../mailbox/MailboxClientFactoryImpl.java | 42 +++++++++++++++++++ .../OwnMailboxConnectivityChecker.java | 2 + 4 files changed, 67 insertions(+) create mode 100644 bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactory.java create mode 100644 bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactoryImpl.java diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxConnectivityChecker.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxConnectivityChecker.java index 8922948c6..240f2c718 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxConnectivityChecker.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/ContactMailboxConnectivityChecker.java @@ -6,6 +6,7 @@ import org.briarproject.bramble.api.system.Clock; import org.briarproject.bramble.mailbox.MailboxApi.ApiException; import javax.annotation.concurrent.ThreadSafe; +import javax.inject.Inject; @ThreadSafe @NotNullByDefault @@ -13,6 +14,7 @@ class ContactMailboxConnectivityChecker extends ConnectivityCheckerImpl { private final MailboxApi mailboxApi; + @Inject ContactMailboxConnectivityChecker(Clock clock, MailboxApiCaller mailboxApiCaller, MailboxApi mailboxApi) { super(clock, mailboxApiCaller); diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactory.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactory.java new file mode 100644 index 000000000..f147a206d --- /dev/null +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactory.java @@ -0,0 +1,21 @@ +package org.briarproject.bramble.mailbox; + +import org.briarproject.bramble.api.mailbox.MailboxProperties; +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; + +@NotNullByDefault +interface MailboxClientFactory { + + /** + * Creates a client for communicating with a contact's mailbox. + */ + MailboxClient createContactMailboxClient( + TorReachabilityMonitor reachabilityMonitor); + + /** + * Creates a client for communicating with our own mailbox. + */ + MailboxClient createOwnMailboxClient( + TorReachabilityMonitor reachabilityMonitor, + MailboxProperties properties); +} diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactoryImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactoryImpl.java new file mode 100644 index 000000000..3e8ab1930 --- /dev/null +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxClientFactoryImpl.java @@ -0,0 +1,42 @@ +package org.briarproject.bramble.mailbox; + +import org.briarproject.bramble.api.mailbox.MailboxProperties; +import org.briarproject.bramble.api.nullsafety.NotNullByDefault; + +import javax.inject.Inject; +import javax.inject.Provider; + +@NotNullByDefault +class MailboxClientFactoryImpl implements MailboxClientFactory { + + private final MailboxWorkerFactory workerFactory; + private final Provider + contactCheckerProvider; + private final Provider ownCheckerProvider; + + @Inject + MailboxClientFactoryImpl(MailboxWorkerFactory workerFactory, + Provider contactCheckerProvider, + Provider ownCheckerProvider) { + this.workerFactory = workerFactory; + this.contactCheckerProvider = contactCheckerProvider; + this.ownCheckerProvider = ownCheckerProvider; + } + + @Override + public MailboxClient createContactMailboxClient( + TorReachabilityMonitor reachabilityMonitor) { + ConnectivityChecker connectivityChecker = contactCheckerProvider.get(); + return new ContactMailboxClient(workerFactory, connectivityChecker, + reachabilityMonitor); + } + + @Override + public MailboxClient createOwnMailboxClient( + TorReachabilityMonitor reachabilityMonitor, + MailboxProperties properties) { + ConnectivityChecker connectivityChecker = ownCheckerProvider.get(); + return new OwnMailboxClient(workerFactory, connectivityChecker, + reachabilityMonitor, properties); + } +} diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxConnectivityChecker.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxConnectivityChecker.java index 54fcbfea3..ddf73b1b5 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxConnectivityChecker.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/OwnMailboxConnectivityChecker.java @@ -14,6 +14,7 @@ import java.util.List; import java.util.logging.Logger; import javax.annotation.concurrent.ThreadSafe; +import javax.inject.Inject; import static java.util.logging.Level.WARNING; import static java.util.logging.Logger.getLogger; @@ -30,6 +31,7 @@ class OwnMailboxConnectivityChecker extends ConnectivityCheckerImpl { private final TransactionManager db; private final MailboxSettingsManager mailboxSettingsManager; + @Inject OwnMailboxConnectivityChecker(Clock clock, MailboxApiCaller mailboxApiCaller, MailboxApi mailboxApi,