@Override public MessageMetaData copy(Mailbox mailbox, MailboxMessage original) throws MailboxException { MessageUid uid = uidProvider.nextUid(mailboxSession, mailbox); long modSeq = -1; if (modSeqProvider != null) { modSeq = modSeqProvider.nextModSeq(mailboxSession, mailbox); } final MessageMetaData metaData = copy(mailbox, uid, modSeq, original); return metaData; }
@Override public MailboxCounters getMailboxCounters(Mailbox mailbox) throws MailboxException { return MailboxCounters.builder() .count(countMessagesInMailbox(mailbox)) .unseen(countUnseenMessagesInMailbox(mailbox)) .build(); }
@Override public Iterator<MessageUid> listAllMessageUids(Mailbox mailbox) throws MailboxException { return Iterators.transform(findInMailbox(mailbox, MessageRange.all(), FetchType.Metadata, UNLIMITED), MailboxMessage::getUid); } }
@Override public Iterator<UpdatedFlags> updateFlags(Mailbox mailbox, FlagsUpdateCalculator flagsUpdateCalculator, MessageRange set) throws MailboxException { final List<UpdatedFlags> updatedFlags = new ArrayList<>(); Iterator<MailboxMessage> messages = findInMailbox(mailbox, set, FetchType.Metadata, -1); save(mailbox, member);
@Override public MessageMetaData add(Mailbox mailbox, MailboxMessage message) throws MailboxException { message.setUid(uidProvider.nextUid(mailboxSession, mailbox)); // if a mailbox does not support mod-sequences the provider may be null if (modSeqProvider != null) { message.setModSeq(modSeqProvider.nextModSeq(mailboxSession, mailbox)); } MessageMetaData data = save(mailbox, message); return data; }