private void readBatch() throws MailboxException { MessageRange range; switch (type) { default: case ALL: // In case of all, we start on cursor and don't specify a to range = MessageRange.from(cursor); break; case FROM: range = MessageRange.from(cursor); break; case ONE: range = MessageRange.one(cursor); break; case RANGE: range = MessageRange.range(cursor, to); break; } next = mapper.findInMailbox(mailbox, range, ftype, batchSizeFromFetchType(ftype)); }
@Test public void includeShouldBeTrueWhenAfterFrom() { MessageRange range = MessageRange.from(MessageUid.of(3)); boolean actual = range.includes(MessageUid.of(5)); assertThat(actual).isTrue(); }
@Test void retrieveDeletedMessageShouldReturnNoMessageForMessageRangeFromIfNoDeletedMessageWithIdBiggerOrSameThanFrom() { addMessageForRetrieveTest(); List<MessageUid> result = testee .retrieveDeletedMessage(MAILBOX_ID, MessageRange.from(MessageUid.of(9))) .join() .collect(Guavate.toImmutableList()); assertThat(result).isEmpty(); }
@Test void retrieveDeletedMessageShouldReturnDeletedMessageWithIdBiggerOrSameThanFrom() { addMessageForRetrieveTest(); List<MessageUid> result = testee .retrieveDeletedMessage(MAILBOX_ID, MessageRange.from(MessageUid.of(4))) .join() .collect(Guavate.toImmutableList()); assertThat(result).containsExactly(UID_4, UID_7, UID_8); } }
@Test public void includeShouldBeFalseWhenBeforeFrom() { MessageRange range = MessageRange.from(MessageUid.of(3)); boolean actual = range.includes(MessageUid.of(1)); assertThat(actual).isFalse(); }
@Test public void includeShouldBeTrueWhenEqualsFrom() { MessageRange range = MessageRange.from(MessageUid.of(3)); boolean actual = range.includes(MessageUid.of(3)); assertThat(actual).isTrue(); }
/** * Constructs an inclusive ranges of messages. The parameters will be * checked and {@link #from(long)} used where appropriate. * * @param from * first message UID * @param to * last message UID */ public static MessageRange range(MessageUid from, MessageUid to) { if (to.equals(MessageUid.MAX_VALUE) || to.compareTo(from) < 0) { return from(from); } else if (from.equals(to)) { // from and to is the same so no need to construct a real range return one(from); } else { return new MessageRange(Type.RANGE, from, to); } }
.join(); List<ComposedMessageIdWithMetaData> messages = testee.retrieveMessages(mailboxId, MessageRange.from(messageUid2)).join() .collect(Collectors.toList());