Include mailbox API version in local and remote mailbox properties

This changes the format of the mailbox properties update message, so
the major version of the client is bumped.
This commit is contained in:
Daniel Lublin
2022-05-13 11:45:42 +02:00
parent 5d5d8d206c
commit a42d9eec1c
17 changed files with 473 additions and 171 deletions

View File

@@ -21,8 +21,6 @@ import java.security.GeneralSecurityException;
import java.util.Collection;
import java.util.Map;
import javax.annotation.Nullable;
@NotNullByDefault
public interface ClientHelper {
@@ -127,15 +125,13 @@ public interface ClientHelper {
BdfDictionary properties) throws FormatException;
/**
* Parse and validate the property dictionary of a Mailbox property update
* message.
* Parse and validate the elements of a Mailbox property update message.
*
* @return the properties for using the Mailbox, or null if there is no
* Mailbox available
* @throws FormatException if the properties are not valid
* @return the parsed update message
* @throws FormatException if the message elements are invalid
*/
@Nullable
MailboxPropertiesUpdate parseAndValidateMailboxPropertiesUpdate(
BdfList clientSupports, BdfList serverSupports,
BdfDictionary properties) throws FormatException;
/**

View File

@@ -2,40 +2,27 @@ package org.briarproject.bramble.api.mailbox;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import java.util.List;
import javax.annotation.concurrent.Immutable;
@Immutable
@NotNullByDefault
public class MailboxPropertiesUpdate {
private final String onion;
private final MailboxAuthToken authToken;
private final MailboxFolderId inboxId;
private final MailboxFolderId outboxId;
boolean hasMailbox;
private final List<MailboxVersion> clientSupports;
public MailboxPropertiesUpdate(String onion,
MailboxAuthToken authToken, MailboxFolderId inboxId,
MailboxFolderId outboxId) {
this.onion = onion;
this.authToken = authToken;
this.inboxId = inboxId;
this.outboxId = outboxId;
public MailboxPropertiesUpdate(List<MailboxVersion> clientSupports) {
this.hasMailbox = false;
this.clientSupports = clientSupports;
}
public String getOnion() {
return onion;
public List<MailboxVersion> getClientSupports() {
return clientSupports;
}
public MailboxAuthToken getAuthToken() {
return authToken;
public boolean hasMailbox() {
return hasMailbox;
}
public MailboxFolderId getInboxId() {
return inboxId;
}
public MailboxFolderId getOutboxId() {
return outboxId;
}
}

View File

@@ -0,0 +1,51 @@
package org.briarproject.bramble.api.mailbox;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import java.util.List;
import javax.annotation.concurrent.Immutable;
@Immutable
@NotNullByDefault
public class MailboxPropertiesUpdateMailbox extends MailboxPropertiesUpdate {
private final List<MailboxVersion> serverSupports;
private final String onion;
private final MailboxAuthToken authToken;
private final MailboxFolderId inboxId;
private final MailboxFolderId outboxId;
public MailboxPropertiesUpdateMailbox(List<MailboxVersion> clientSupports,
List<MailboxVersion> serverSupports, String onion,
MailboxAuthToken authToken, MailboxFolderId inboxId,
MailboxFolderId outboxId
) {
super(clientSupports);
this.hasMailbox = true;
this.serverSupports = serverSupports;
this.onion = onion;
this.authToken = authToken;
this.inboxId = inboxId;
this.outboxId = outboxId;
}
public String getOnion() {
return onion;
}
public MailboxAuthToken getAuthToken() {
return authToken;
}
public MailboxFolderId getInboxId() {
return inboxId;
}
public MailboxFolderId getOutboxId() {
return outboxId;
}
public List<MailboxVersion> getServerSupports() {
return serverSupports;
}
}

View File

@@ -20,7 +20,7 @@ public interface MailboxPropertyManager {
/**
* The current major version of the mailbox property client.
*/
int MAJOR_VERSION = 0;
int MAJOR_VERSION = 1;
/**
* The current minor version of the mailbox property client.

View File

@@ -7,6 +7,8 @@ import org.briarproject.bramble.api.db.Transaction;
import org.briarproject.bramble.api.lifecycle.LifecycleManager;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import java.util.List;
import javax.annotation.Nullable;
@NotNullByDefault
@@ -49,7 +51,8 @@ public interface MailboxSettingsManager {
* @param txn A read-write transaction
* @param ownOnion Our new mailbox's onion (56 base32 chars)
*/
void mailboxPaired(Transaction txn, String ownOnion)
void mailboxPaired(Transaction txn, String ownOnion,
List<MailboxVersion> serverSupports)
throws DbException;
/**

View File

@@ -4,7 +4,6 @@ import org.briarproject.bramble.api.contact.ContactId;
import org.briarproject.bramble.api.event.Event;
import org.briarproject.bramble.api.nullsafety.NotNullByDefault;
import javax.annotation.Nullable;
import javax.annotation.concurrent.Immutable;
/**
@@ -16,11 +15,10 @@ import javax.annotation.concurrent.Immutable;
public class RemoteMailboxPropertiesUpdateEvent extends Event {
private final ContactId contactId;
@Nullable
private final MailboxPropertiesUpdate mailboxPropertiesUpdate;
public RemoteMailboxPropertiesUpdateEvent(ContactId contactId,
@Nullable MailboxPropertiesUpdate mailboxPropertiesUpdate) {
MailboxPropertiesUpdate mailboxPropertiesUpdate) {
this.contactId = contactId;
this.mailboxPropertiesUpdate = mailboxPropertiesUpdate;
}
@@ -29,7 +27,6 @@ public class RemoteMailboxPropertiesUpdateEvent extends Event {
return contactId;
}
@Nullable
public MailboxPropertiesUpdate getMailboxPropertiesUpdate() {
return mailboxPropertiesUpdate;
}