mirror of
https://code.briarproject.org/briar/briar.git
synced 2026-02-16 20:59:54 +01:00
Rename to Mailbox update
This commit is contained in:
@@ -25,8 +25,8 @@ import org.briarproject.bramble.api.identity.Author;
|
||||
import org.briarproject.bramble.api.identity.AuthorFactory;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxAuthToken;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxFolderId;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxPropertiesUpdate;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxPropertiesUpdateMailbox;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxUpdate;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxUpdateWithMailbox;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxVersion;
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
import org.briarproject.bramble.api.plugin.TransportId;
|
||||
@@ -55,12 +55,12 @@ import static org.briarproject.bramble.api.client.ContactGroupConstants.GROUP_KE
|
||||
import static org.briarproject.bramble.api.identity.Author.FORMAT_VERSION;
|
||||
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH;
|
||||
import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_PUBLIC_KEY_LENGTH;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxPropertyManager.PROP_COUNT;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxPropertyManager.PROP_KEY_AUTHTOKEN;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxPropertyManager.PROP_KEY_INBOXID;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxPropertyManager.PROP_KEY_ONION;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxPropertyManager.PROP_KEY_OUTBOXID;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxPropertyManager.PROP_ONION_LENGTH;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.PROP_COUNT;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.PROP_KEY_AUTHTOKEN;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.PROP_KEY_INBOXID;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.PROP_KEY_ONION;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.PROP_KEY_OUTBOXID;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.PROP_ONION_LENGTH;
|
||||
import static org.briarproject.bramble.api.properties.TransportPropertyConstants.MAX_PROPERTIES_PER_TRANSPORT;
|
||||
import static org.briarproject.bramble.api.properties.TransportPropertyConstants.MAX_PROPERTY_LENGTH;
|
||||
import static org.briarproject.bramble.util.ValidationUtils.checkLength;
|
||||
@@ -415,9 +415,9 @@ class ClientHelperImpl implements ClientHelper {
|
||||
}
|
||||
|
||||
@Override
|
||||
public MailboxPropertiesUpdate parseAndValidateMailboxPropertiesUpdate(
|
||||
BdfList clientSupports, BdfList serverSupports,
|
||||
BdfDictionary properties) throws FormatException {
|
||||
public MailboxUpdate parseAndValidateMailboxUpdate(BdfList clientSupports,
|
||||
BdfList serverSupports, BdfDictionary properties)
|
||||
throws FormatException {
|
||||
List<MailboxVersion> clientSupportsList =
|
||||
getMailboxVersionList(clientSupports);
|
||||
List<MailboxVersion> serverSupportsList =
|
||||
@@ -432,7 +432,7 @@ class ClientHelperImpl implements ClientHelper {
|
||||
if (!serverSupports.isEmpty()) {
|
||||
throw new FormatException();
|
||||
}
|
||||
return new MailboxPropertiesUpdate(clientSupportsList);
|
||||
return new MailboxUpdate(clientSupportsList);
|
||||
}
|
||||
// Mailbox must be accompanied by the Mailbox API version(s) it supports
|
||||
if (serverSupports.isEmpty()) {
|
||||
@@ -455,7 +455,7 @@ class ClientHelperImpl implements ClientHelper {
|
||||
checkLength(inboxId, UniqueId.LENGTH);
|
||||
byte[] outboxId = properties.getRaw(PROP_KEY_OUTBOXID);
|
||||
checkLength(outboxId, UniqueId.LENGTH);
|
||||
return new MailboxPropertiesUpdateMailbox(clientSupportsList,
|
||||
return new MailboxUpdateWithMailbox(clientSupportsList,
|
||||
serverSupportsList, onion, new MailboxAuthToken(authToken),
|
||||
new MailboxFolderId(inboxId), new MailboxFolderId(outboxId));
|
||||
}
|
||||
|
||||
@@ -7,7 +7,7 @@ import org.briarproject.bramble.api.mailbox.MailboxAuthToken;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxFileId;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxFolderId;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxProperties;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxPropertyManager;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxUpdateManager;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxVersion;
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
|
||||
@@ -26,7 +26,7 @@ interface MailboxApi {
|
||||
|
||||
/**
|
||||
* Mailbox API versions that we support as a client. This is reported to our
|
||||
* contacts by {@link MailboxPropertyManager}.
|
||||
* contacts by {@link MailboxUpdateManager}.
|
||||
*/
|
||||
List<MailboxVersion> CLIENT_SUPPORTS = singletonList(
|
||||
new MailboxVersion(1, 0));
|
||||
|
||||
@@ -5,8 +5,8 @@ import org.briarproject.bramble.api.contact.ContactManager;
|
||||
import org.briarproject.bramble.api.data.MetadataEncoder;
|
||||
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxManager;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxPropertyManager;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxSettingsManager;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxUpdateManager;
|
||||
import org.briarproject.bramble.api.sync.validation.ValidationManager;
|
||||
import org.briarproject.bramble.api.system.Clock;
|
||||
import org.briarproject.bramble.api.versioning.ClientVersioningManager;
|
||||
@@ -17,18 +17,18 @@ import javax.inject.Singleton;
|
||||
import dagger.Module;
|
||||
import dagger.Provides;
|
||||
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxPropertyManager.CLIENT_ID;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxPropertyManager.MAJOR_VERSION;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxPropertyManager.MINOR_VERSION;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.CLIENT_ID;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.MAJOR_VERSION;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.MINOR_VERSION;
|
||||
|
||||
@Module
|
||||
public class MailboxModule {
|
||||
|
||||
public static class EagerSingletons {
|
||||
@Inject
|
||||
MailboxPropertyValidator mailboxPropertyValidator;
|
||||
MailboxUpdateValidator mailboxUpdateValidator;
|
||||
@Inject
|
||||
MailboxPropertyManager mailboxPropertyManager;
|
||||
MailboxUpdateManager mailboxUpdateManager;
|
||||
}
|
||||
|
||||
@Provides
|
||||
@@ -56,10 +56,10 @@ public class MailboxModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
MailboxPropertyValidator provideMailboxPropertyValidator(
|
||||
MailboxUpdateValidator provideMailboxUpdateValidator(
|
||||
ValidationManager validationManager, ClientHelper clientHelper,
|
||||
MetadataEncoder metadataEncoder, Clock clock) {
|
||||
MailboxPropertyValidator validator = new MailboxPropertyValidator(
|
||||
MailboxUpdateValidator validator = new MailboxUpdateValidator(
|
||||
clientHelper, metadataEncoder, clock);
|
||||
validationManager.registerMessageValidator(CLIENT_ID, MAJOR_VERSION,
|
||||
validator);
|
||||
@@ -68,19 +68,19 @@ public class MailboxModule {
|
||||
|
||||
@Provides
|
||||
@Singleton
|
||||
MailboxPropertyManager provideMailboxPropertyManager(
|
||||
MailboxUpdateManager provideMailboxUpdateManager(
|
||||
LifecycleManager lifecycleManager,
|
||||
ValidationManager validationManager, ContactManager contactManager,
|
||||
ClientVersioningManager clientVersioningManager,
|
||||
MailboxSettingsManager mailboxSettingsManager,
|
||||
MailboxPropertyManagerImpl mailboxPropertyManager) {
|
||||
lifecycleManager.registerOpenDatabaseHook(mailboxPropertyManager);
|
||||
MailboxUpdateManagerImpl mailboxUpdateManager) {
|
||||
lifecycleManager.registerOpenDatabaseHook(mailboxUpdateManager);
|
||||
validationManager.registerIncomingMessageHook(CLIENT_ID, MAJOR_VERSION,
|
||||
mailboxPropertyManager);
|
||||
contactManager.registerContactHook(mailboxPropertyManager);
|
||||
mailboxUpdateManager);
|
||||
contactManager.registerContactHook(mailboxUpdateManager);
|
||||
clientVersioningManager.registerClient(CLIENT_ID, MAJOR_VERSION,
|
||||
MINOR_VERSION, mailboxPropertyManager);
|
||||
mailboxSettingsManager.registerMailboxHook(mailboxPropertyManager);
|
||||
return mailboxPropertyManager;
|
||||
MINOR_VERSION, mailboxUpdateManager);
|
||||
mailboxSettingsManager.registerMailboxHook(mailboxUpdateManager);
|
||||
return mailboxUpdateManager;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -4,8 +4,8 @@ import org.briarproject.bramble.api.crypto.CryptoComponent;
|
||||
import org.briarproject.bramble.api.db.DatabaseComponent;
|
||||
import org.briarproject.bramble.api.event.EventExecutor;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxPairingTask;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxPropertyManager;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxSettingsManager;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxUpdateManager;
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
import org.briarproject.bramble.api.system.Clock;
|
||||
|
||||
@@ -24,7 +24,7 @@ class MailboxPairingTaskFactoryImpl implements MailboxPairingTaskFactory {
|
||||
private final Clock clock;
|
||||
private final MailboxApi api;
|
||||
private final MailboxSettingsManager mailboxSettingsManager;
|
||||
private final MailboxPropertyManager mailboxPropertyManager;
|
||||
private final MailboxUpdateManager mailboxUpdateManager;
|
||||
|
||||
@Inject
|
||||
MailboxPairingTaskFactoryImpl(
|
||||
@@ -34,20 +34,20 @@ class MailboxPairingTaskFactoryImpl implements MailboxPairingTaskFactory {
|
||||
Clock clock,
|
||||
MailboxApi api,
|
||||
MailboxSettingsManager mailboxSettingsManager,
|
||||
MailboxPropertyManager mailboxPropertyManager) {
|
||||
MailboxUpdateManager mailboxUpdateManager) {
|
||||
this.eventExecutor = eventExecutor;
|
||||
this.db = db;
|
||||
this.crypto = crypto;
|
||||
this.clock = clock;
|
||||
this.api = api;
|
||||
this.mailboxSettingsManager = mailboxSettingsManager;
|
||||
this.mailboxPropertyManager = mailboxPropertyManager;
|
||||
this.mailboxUpdateManager = mailboxUpdateManager;
|
||||
}
|
||||
|
||||
@Override
|
||||
public MailboxPairingTask createPairingTask(String qrCodePayload) {
|
||||
return new MailboxPairingTaskImpl(qrCodePayload, eventExecutor, db,
|
||||
crypto, clock, api, mailboxSettingsManager,
|
||||
mailboxPropertyManager);
|
||||
mailboxUpdateManager);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -11,9 +11,9 @@ import org.briarproject.bramble.api.mailbox.MailboxAuthToken;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxPairingState;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxPairingTask;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxProperties;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxPropertiesUpdate;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxPropertyManager;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxSettingsManager;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxUpdate;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxUpdateManager;
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
import org.briarproject.bramble.api.system.Clock;
|
||||
import org.briarproject.bramble.mailbox.MailboxApi.ApiException;
|
||||
@@ -51,7 +51,7 @@ class MailboxPairingTaskImpl implements MailboxPairingTask {
|
||||
private final Clock clock;
|
||||
private final MailboxApi api;
|
||||
private final MailboxSettingsManager mailboxSettingsManager;
|
||||
private final MailboxPropertyManager mailboxPropertyManager;
|
||||
private final MailboxUpdateManager mailboxUpdateManager;
|
||||
|
||||
private final Object lock = new Object();
|
||||
@GuardedBy("lock")
|
||||
@@ -68,7 +68,7 @@ class MailboxPairingTaskImpl implements MailboxPairingTask {
|
||||
Clock clock,
|
||||
MailboxApi api,
|
||||
MailboxSettingsManager mailboxSettingsManager,
|
||||
MailboxPropertyManager mailboxPropertyManager) {
|
||||
MailboxUpdateManager mailboxUpdateManager) {
|
||||
this.payload = payload;
|
||||
this.eventExecutor = eventExecutor;
|
||||
this.db = db;
|
||||
@@ -76,7 +76,7 @@ class MailboxPairingTaskImpl implements MailboxPairingTask {
|
||||
this.clock = clock;
|
||||
this.api = api;
|
||||
this.mailboxSettingsManager = mailboxSettingsManager;
|
||||
this.mailboxPropertyManager = mailboxPropertyManager;
|
||||
this.mailboxUpdateManager = mailboxUpdateManager;
|
||||
state = new MailboxPairingState.QrCodeReceived();
|
||||
}
|
||||
|
||||
@@ -125,9 +125,9 @@ class MailboxPairingTaskImpl implements MailboxPairingTask {
|
||||
// timers for contacts who doesn't have their own mailbox. This way,
|
||||
// data stranded on our old mailbox will be re-uploaded to our new.
|
||||
for (Contact c : db.getContacts(txn)) {
|
||||
MailboxPropertiesUpdate remoteProps = mailboxPropertyManager
|
||||
.getRemoteProperties(txn, c.getId());
|
||||
if (remoteProps == null || !remoteProps.hasMailbox()) {
|
||||
MailboxUpdate update = mailboxUpdateManager.getRemoteUpdate(
|
||||
txn, c.getId());
|
||||
if (update == null || !update.hasMailbox()) {
|
||||
db.resetUnackedMessagesToSend(txn, c.getId());
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,13 +18,13 @@ import org.briarproject.bramble.api.lifecycle.LifecycleManager.OpenDatabaseHook;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxAuthToken;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxFolderId;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxProperties;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxPropertiesUpdate;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxPropertiesUpdateMailbox;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxPropertyManager;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxSettingsManager;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxSettingsManager.MailboxHook;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxUpdate;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxUpdateManager;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxUpdateWithMailbox;
|
||||
import org.briarproject.bramble.api.mailbox.MailboxVersion;
|
||||
import org.briarproject.bramble.api.mailbox.RemoteMailboxPropertiesUpdateEvent;
|
||||
import org.briarproject.bramble.api.mailbox.RemoteMailboxUpdateEvent;
|
||||
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
|
||||
import org.briarproject.bramble.api.sync.Group;
|
||||
import org.briarproject.bramble.api.sync.Group.Visibility;
|
||||
@@ -48,7 +48,7 @@ import static org.briarproject.bramble.api.sync.validation.IncomingMessageHook.D
|
||||
import static org.briarproject.bramble.mailbox.MailboxApi.CLIENT_SUPPORTS;
|
||||
|
||||
@NotNullByDefault
|
||||
class MailboxPropertyManagerImpl implements MailboxPropertyManager,
|
||||
class MailboxUpdateManagerImpl implements MailboxUpdateManager,
|
||||
OpenDatabaseHook, ContactHook, ClientVersioningHook,
|
||||
IncomingMessageHook, MailboxHook {
|
||||
|
||||
@@ -63,7 +63,7 @@ class MailboxPropertyManagerImpl implements MailboxPropertyManager,
|
||||
private final Group localGroup;
|
||||
|
||||
@Inject
|
||||
MailboxPropertyManagerImpl(DatabaseComponent db, ClientHelper clientHelper,
|
||||
MailboxUpdateManagerImpl(DatabaseComponent db, ClientHelper clientHelper,
|
||||
ClientVersioningManager clientVersioningManager,
|
||||
MetadataParser metadataParser,
|
||||
ContactGroupFactory contactGroupFactory, Clock clock,
|
||||
@@ -108,11 +108,11 @@ class MailboxPropertyManagerImpl implements MailboxPropertyManager,
|
||||
mailboxSettingsManager.getOwnMailboxProperties(txn);
|
||||
if (ownProps != null) {
|
||||
// We are paired, create and send props to the newly added contact
|
||||
createAndSendProperties(txn, c, ownProps.getServerSupports(),
|
||||
createAndSendUpdateWithMailbox(txn, c, ownProps.getServerSupports(),
|
||||
ownProps.getOnion());
|
||||
} else {
|
||||
// Not paired, but we still want to get our clientSupports sent
|
||||
sendEmptyProperties(txn, c);
|
||||
sendUpdateNoMailbox(txn, c);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -126,14 +126,14 @@ class MailboxPropertyManagerImpl implements MailboxPropertyManager,
|
||||
List<MailboxVersion> serverSupports)
|
||||
throws DbException {
|
||||
for (Contact c : db.getContacts(txn)) {
|
||||
createAndSendProperties(txn, c, serverSupports, ownOnion);
|
||||
createAndSendUpdateWithMailbox(txn, c, serverSupports, ownOnion);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void mailboxUnpaired(Transaction txn) throws DbException {
|
||||
for (Contact c : db.getContacts(txn)) {
|
||||
sendEmptyProperties(txn, c);
|
||||
sendUpdateNoMailbox(txn, c);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -165,8 +165,8 @@ class MailboxPropertyManagerImpl implements MailboxPropertyManager,
|
||||
}
|
||||
ContactId c = clientHelper.getContactId(txn, m.getGroupId());
|
||||
BdfList body = clientHelper.getMessageAsList(txn, m.getId());
|
||||
MailboxPropertiesUpdate p = parseProperties(body);
|
||||
txn.attach(new RemoteMailboxPropertiesUpdateEvent(c, p));
|
||||
MailboxUpdate u = parseUpdate(body);
|
||||
txn.attach(new RemoteMailboxUpdateEvent(c, u));
|
||||
// Reset message retransmission timers for the contact. Avoiding
|
||||
// messages getting stranded:
|
||||
// - on our mailbox, if they now have a mailbox but didn't before
|
||||
@@ -180,10 +180,9 @@ class MailboxPropertyManagerImpl implements MailboxPropertyManager,
|
||||
}
|
||||
|
||||
@Override
|
||||
public MailboxPropertiesUpdate getLocalProperties(Transaction txn,
|
||||
ContactId c) throws DbException {
|
||||
MailboxPropertiesUpdate local =
|
||||
getProperties(txn, db.getContact(txn, c), true);
|
||||
public MailboxUpdate getLocalUpdate(Transaction txn, ContactId c)
|
||||
throws DbException {
|
||||
MailboxUpdate local = getUpdate(txn, db.getContact(txn, c), true);
|
||||
// An update (with or without mailbox) is created when contact is added
|
||||
if (local == null) {
|
||||
throw new DbException();
|
||||
@@ -193,9 +192,9 @@ class MailboxPropertyManagerImpl implements MailboxPropertyManager,
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public MailboxPropertiesUpdate getRemoteProperties(Transaction txn,
|
||||
ContactId c) throws DbException {
|
||||
return getProperties(txn, db.getContact(txn, c), false);
|
||||
public MailboxUpdate getRemoteUpdate(Transaction txn, ContactId c) throws
|
||||
DbException {
|
||||
return getUpdate(txn, db.getContact(txn, c), false);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -204,16 +203,16 @@ class MailboxPropertyManagerImpl implements MailboxPropertyManager,
|
||||
* supported Mailbox API version(s). All of which the contact needs to
|
||||
* communicate with our Mailbox.
|
||||
*/
|
||||
private void createAndSendProperties(Transaction txn, Contact c,
|
||||
private void createAndSendUpdateWithMailbox(Transaction txn, Contact c,
|
||||
List<MailboxVersion> serverSupports, String ownOnion)
|
||||
throws DbException {
|
||||
MailboxPropertiesUpdate p = new MailboxPropertiesUpdateMailbox(
|
||||
MailboxUpdate u = new MailboxUpdateWithMailbox(
|
||||
CLIENT_SUPPORTS, serverSupports, ownOnion,
|
||||
new MailboxAuthToken(crypto.generateUniqueId().getBytes()),
|
||||
new MailboxFolderId(crypto.generateUniqueId().getBytes()),
|
||||
new MailboxFolderId(crypto.generateUniqueId().getBytes()));
|
||||
Group g = getContactGroup(c);
|
||||
storeMessageReplaceLatest(txn, g.getId(), p);
|
||||
storeMessageReplaceLatest(txn, g.getId(), u);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -222,39 +221,38 @@ class MailboxPropertyManagerImpl implements MailboxPropertyManager,
|
||||
* Mailbox that they can use. It still includes the list of Mailbox API
|
||||
* version(s) that we support as a client.
|
||||
*/
|
||||
private void sendEmptyProperties(Transaction txn, Contact c)
|
||||
private void sendUpdateNoMailbox(Transaction txn, Contact c)
|
||||
throws DbException {
|
||||
Group g = getContactGroup(c);
|
||||
MailboxPropertiesUpdate p =
|
||||
new MailboxPropertiesUpdate(CLIENT_SUPPORTS);
|
||||
storeMessageReplaceLatest(txn, g.getId(), p);
|
||||
MailboxUpdate u = new MailboxUpdate(CLIENT_SUPPORTS);
|
||||
storeMessageReplaceLatest(txn, g.getId(), u);
|
||||
}
|
||||
|
||||
@Nullable
|
||||
private MailboxPropertiesUpdate getProperties(Transaction txn,
|
||||
Contact c, boolean local) throws DbException {
|
||||
MailboxPropertiesUpdate p = null;
|
||||
private MailboxUpdate getUpdate(Transaction txn, Contact c, boolean local)
|
||||
throws DbException {
|
||||
MailboxUpdate u = null;
|
||||
Group g = getContactGroup(c);
|
||||
try {
|
||||
LatestUpdate latest = findLatest(txn, g.getId(), local);
|
||||
if (latest != null) {
|
||||
BdfList body =
|
||||
clientHelper.getMessageAsList(txn, latest.messageId);
|
||||
p = parseProperties(body);
|
||||
u = parseUpdate(body);
|
||||
}
|
||||
} catch (FormatException e) {
|
||||
throw new DbException(e);
|
||||
}
|
||||
return p;
|
||||
return u;
|
||||
}
|
||||
|
||||
private void storeMessageReplaceLatest(Transaction txn, GroupId g,
|
||||
MailboxPropertiesUpdate p) throws DbException {
|
||||
MailboxUpdate u) throws DbException {
|
||||
try {
|
||||
LatestUpdate latest = findLatest(txn, g, true);
|
||||
long version = latest == null ? 1 : latest.version + 1;
|
||||
Message m = clientHelper.createMessage(g, clock.currentTimeMillis(),
|
||||
encodeProperties(version, p));
|
||||
encodeProperties(version, u));
|
||||
BdfDictionary meta = new BdfDictionary();
|
||||
meta.put(MSG_KEY_VERSION, version);
|
||||
meta.put(MSG_KEY_LOCAL, true);
|
||||
@@ -286,19 +284,18 @@ class MailboxPropertyManagerImpl implements MailboxPropertyManager,
|
||||
return null;
|
||||
}
|
||||
|
||||
private BdfList encodeProperties(long version, MailboxPropertiesUpdate p) {
|
||||
private BdfList encodeProperties(long version, MailboxUpdate u) {
|
||||
BdfDictionary dict = new BdfDictionary();
|
||||
BdfList serverSupports = new BdfList();
|
||||
if (p.hasMailbox()) {
|
||||
MailboxPropertiesUpdateMailbox pm =
|
||||
(MailboxPropertiesUpdateMailbox) p;
|
||||
serverSupports = encodeSupportsList(pm.getServerSupports());
|
||||
dict.put(PROP_KEY_ONION, pm.getOnion());
|
||||
dict.put(PROP_KEY_AUTHTOKEN, pm.getAuthToken().getBytes());
|
||||
dict.put(PROP_KEY_INBOXID, pm.getInboxId().getBytes());
|
||||
dict.put(PROP_KEY_OUTBOXID, pm.getOutboxId().getBytes());
|
||||
if (u.hasMailbox()) {
|
||||
MailboxUpdateWithMailbox um = (MailboxUpdateWithMailbox) u;
|
||||
serverSupports = encodeSupportsList(um.getServerSupports());
|
||||
dict.put(PROP_KEY_ONION, um.getOnion());
|
||||
dict.put(PROP_KEY_AUTHTOKEN, um.getAuthToken().getBytes());
|
||||
dict.put(PROP_KEY_INBOXID, um.getInboxId().getBytes());
|
||||
dict.put(PROP_KEY_OUTBOXID, um.getOutboxId().getBytes());
|
||||
}
|
||||
return BdfList.of(version, encodeSupportsList(p.getClientSupports()),
|
||||
return BdfList.of(version, encodeSupportsList(u.getClientSupports()),
|
||||
serverSupports, dict);
|
||||
}
|
||||
|
||||
@@ -310,14 +307,13 @@ class MailboxPropertyManagerImpl implements MailboxPropertyManager,
|
||||
return supports;
|
||||
}
|
||||
|
||||
private MailboxPropertiesUpdate parseProperties(BdfList body)
|
||||
private MailboxUpdate parseUpdate(BdfList body)
|
||||
throws FormatException {
|
||||
BdfList clientSupports = body.getList(1);
|
||||
BdfList serverSupports = body.getList(2);
|
||||
BdfDictionary dict = body.getDictionary(3);
|
||||
return clientHelper.parseAndValidateMailboxPropertiesUpdate(
|
||||
clientSupports, serverSupports, dict
|
||||
);
|
||||
return clientHelper.parseAndValidateMailboxUpdate(clientSupports,
|
||||
serverSupports, dict);
|
||||
}
|
||||
|
||||
private Group getContactGroup(Contact c) {
|
||||
@@ -15,15 +15,15 @@ import org.briarproject.bramble.api.system.Clock;
|
||||
|
||||
import javax.annotation.concurrent.Immutable;
|
||||
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxPropertyManager.MSG_KEY_LOCAL;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxPropertyManager.MSG_KEY_VERSION;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.MSG_KEY_LOCAL;
|
||||
import static org.briarproject.bramble.api.mailbox.MailboxUpdateManager.MSG_KEY_VERSION;
|
||||
import static org.briarproject.bramble.util.ValidationUtils.checkSize;
|
||||
|
||||
@Immutable
|
||||
@NotNullByDefault
|
||||
class MailboxPropertyValidator extends BdfMessageValidator {
|
||||
class MailboxUpdateValidator extends BdfMessageValidator {
|
||||
|
||||
MailboxPropertyValidator(ClientHelper clientHelper,
|
||||
MailboxUpdateValidator(ClientHelper clientHelper,
|
||||
MetadataEncoder metadataEncoder, Clock clock) {
|
||||
super(clientHelper, metadataEncoder, clock);
|
||||
}
|
||||
@@ -42,9 +42,8 @@ class MailboxPropertyValidator extends BdfMessageValidator {
|
||||
BdfList serverSupports = body.getList(2);
|
||||
// Properties
|
||||
BdfDictionary dictionary = body.getDictionary(3);
|
||||
clientHelper.parseAndValidateMailboxPropertiesUpdate(clientSupports,
|
||||
serverSupports, dictionary
|
||||
);
|
||||
clientHelper.parseAndValidateMailboxUpdate(clientSupports,
|
||||
serverSupports, dictionary);
|
||||
// Return the metadata
|
||||
BdfDictionary meta = new BdfDictionary();
|
||||
meta.put(MSG_KEY_VERSION, version);
|
||||
Reference in New Issue
Block a user