From 42e2926d614b901c2ce07c842ea03fcea18999e3 Mon Sep 17 00:00:00 2001 From: akwizgran Date: Tue, 2 Aug 2022 17:54:02 +0100 Subject: [PATCH] Always sort lists of API versions for easier comparison. --- .../bramble/api/mailbox/MailboxProperties.java | 3 ++- .../briarproject/bramble/api/mailbox/MailboxStatus.java | 7 +++++++ .../org/briarproject/bramble/client/ClientHelperImpl.java | 3 +++ .../org/briarproject/bramble/mailbox/MailboxApiImpl.java | 6 ++++-- 4 files changed, 16 insertions(+), 3 deletions(-) diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxProperties.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxProperties.java index 4175a5752..d16cba6b8 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxProperties.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxProperties.java @@ -85,7 +85,8 @@ public class MailboxProperties { onion.equals(m.onion) && authToken.equals(m.authToken) && NullSafety.equals(inboxId, m.inboxId) && - NullSafety.equals(outboxId, m.outboxId); + NullSafety.equals(outboxId, m.outboxId) && + serverSupports.equals(m.serverSupports); } return false; } diff --git a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxStatus.java b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxStatus.java index 3ba6bb92f..5b729a7b3 100644 --- a/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxStatus.java +++ b/bramble-api/src/main/java/org/briarproject/bramble/api/mailbox/MailboxStatus.java @@ -67,6 +67,13 @@ public class MailboxStatus { return attemptsSinceSuccess; } + /** + * Returns the mailbox's supported API versions. + */ + public List getServerSupports() { + return serverSupports; + } + /** * @return true if this status indicates a problem with the mailbox. */ diff --git a/bramble-core/src/main/java/org/briarproject/bramble/client/ClientHelperImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/client/ClientHelperImpl.java index c6cbe9efc..35a8ddb73 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/client/ClientHelperImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/client/ClientHelperImpl.java @@ -52,6 +52,7 @@ import java.util.Map.Entry; import javax.annotation.concurrent.Immutable; import javax.inject.Inject; +import static java.util.Collections.sort; import static org.briarproject.bramble.api.client.ContactGroupConstants.GROUP_KEY_CONTACT_ID; import static org.briarproject.bramble.api.identity.Author.FORMAT_VERSION; import static org.briarproject.bramble.api.identity.AuthorConstants.MAX_AUTHOR_NAME_LENGTH; @@ -474,6 +475,8 @@ class ClientHelperImpl implements ClientHelper { list.add(new MailboxVersion(element.getLong(0).intValue(), element.getLong(1).intValue())); } + // Sort the list of versions for easier comparison + sort(list); return list; } diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiImpl.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiImpl.java index 7bf057904..8ae436a61 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiImpl.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApiImpl.java @@ -22,7 +22,6 @@ import java.io.FileOutputStream; import java.io.IOException; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.List; import javax.inject.Inject; @@ -35,6 +34,7 @@ import okhttp3.Response; import okhttp3.ResponseBody; import static com.fasterxml.jackson.databind.MapperFeature.BLOCK_UNSAFE_POLYMORPHIC_BASE_TYPES; +import static java.util.Collections.sort; import static java.util.Objects.requireNonNull; import static okhttp3.internal.Util.EMPTY_REQUEST; import static org.briarproject.bramble.util.IoUtils.copyAndClose; @@ -125,6 +125,8 @@ class MailboxApiImpl implements MailboxApi { if (major < 0 || minor < 0) throw new ApiException(); serverSupports.add(new MailboxVersion(major, minor)); } + // Sort the list of versions for easier comparison + sort(serverSupports); return serverSupports; } @@ -245,7 +247,7 @@ class MailboxApiImpl implements MailboxApi { if (time < 1) throw new ApiException(); list.add(new MailboxFile(MailboxFileId.fromString(name), time)); } - Collections.sort(list); + sort(list); return list; } catch (JacksonException | InvalidMailboxIdException e) { throw new ApiException();