From 5c153aeb6c3e509ecce3255c1eeba481eac4ac47 Mon Sep 17 00:00:00 2001 From: Torsten Grote Date: Mon, 7 Feb 2022 09:36:48 -0300 Subject: [PATCH] Sort files returned by getFiles by time (oldest first). --- .../org/briarproject/bramble/mailbox/MailboxApi.java | 10 +++++++++- .../briarproject/bramble/mailbox/MailboxApiImpl.java | 2 ++ .../bramble/mailbox/MailboxIntegrationTest.java | 12 ++++-------- 3 files changed, 15 insertions(+), 9 deletions(-) diff --git a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApi.java b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApi.java index 9e378277b..966cf1056 100644 --- a/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApi.java +++ b/bramble-core/src/main/java/org/briarproject/bramble/mailbox/MailboxApi.java @@ -11,6 +11,7 @@ import java.io.IOException; import java.util.Collection; import java.util.List; +import javax.annotation.Nonnull; import javax.annotation.concurrent.Immutable; interface MailboxApi { @@ -130,7 +131,7 @@ interface MailboxApi { } @JsonSerialize - class MailboxFile { + class MailboxFile implements Comparable { public final MailboxId name; public final long time; @@ -138,6 +139,13 @@ interface MailboxApi { this.name = name; this.time = time; } + + @Override + public int compareTo(@Nonnull MailboxApi.MailboxFile mailboxFile) { + //noinspection UseCompareMethod + return time < mailboxFile.time ? -1 : + (time == mailboxFile.time ? 0 : 1); + } } @Immutable 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 c084a15e0..a09bba09c 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 @@ -17,6 +17,7 @@ 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; @@ -200,6 +201,7 @@ class MailboxApiImpl implements MailboxApi { if (time < 1) throw new ApiException(); list.add(new MailboxFile(MailboxId.fromString(name), time)); } + Collections.sort(list); return list; } catch (JacksonException e) { throw new ApiException(); diff --git a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTest.java b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTest.java index 2912023eb..7d98e93c2 100644 --- a/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTest.java +++ b/bramble-core/src/test/java/org/briarproject/bramble/mailbox/MailboxIntegrationTest.java @@ -194,14 +194,10 @@ public class MailboxIntegrationTest extends BrambleTestCase { file3downloaded); byte[] downloadedBytes2 = readBytes(file2downloaded); byte[] downloadedBytes3 = readBytes(file3downloaded); - // file order is not preserved, so we don't know what file is which - if (downloadedBytes2.length == bytes2.length) { - assertArrayEquals(bytes2, downloadedBytes2); - assertArrayEquals(bytes3, downloadedBytes3); - } else { - assertArrayEquals(bytes2, downloadedBytes3); - assertArrayEquals(bytes3, downloadedBytes2); - } + // file order is preserved (sorted by time), + // so we know what file is which + assertArrayEquals(bytes2, downloadedBytes2); + assertArrayEquals(bytes3, downloadedBytes3); // contact can't download files again, even if knowing name File file2forbidden = folder.newFile();