public MailboxRenamedEventImpl(MailboxSession session, MailboxPath oldPath, Mailbox newMailbox) { super(session, oldPath); this.newPath = new StoreMailboxPath(newMailbox); this.newMailbox = newMailbox; }
public MailboxAddedImpl(MailboxSession session, Mailbox mailbox) { super(session, new StoreMailboxPath(mailbox)); this.mailbox = mailbox; }
public MailboxDeletionImpl(MailboxSession session, Mailbox mailbox, QuotaRoot quotaRoot, QuotaCount deletedMessageCount, QuotaSize totalDeletedSize) { super(session, new StoreMailboxPath(mailbox), quotaRoot, deletedMessageCount, totalDeletedSize); this.mailbox = mailbox; }
public ExpungedImpl(MailboxSession session, Mailbox mailbox, Map<MessageUid, MessageMetaData> uids) { super(session, new StoreMailboxPath(mailbox)); this.uids = ImmutableMap.copyOf(uids); this.mailbox = mailbox; }
public FlagsUpdatedImpl(MailboxSession session, Mailbox mailbox, List<MessageUid> uids, List<UpdatedFlags> uFlags) { super(session, new StoreMailboxPath(mailbox)); this.uids = ImmutableList.copyOf(uids); this.uFlags = ImmutableList.copyOf(uFlags); this.mailbox = mailbox; }
public AddedImpl(MailboxSession session, Mailbox mailbox, SortedMap<MessageUid, MessageMetaData> uids, Map<MessageUid, MailboxMessage> availableMessages) { super(session, new StoreMailboxPath(mailbox)); this.added = ImmutableMap.copyOf(uids); this.mailbox = mailbox; this.availableMessages = ImmutableMap.copyOf(availableMessages); }
@Override public MailboxPath getMailboxPath() throws MailboxException { return new StoreMailboxPath(getMailboxEntity()); }
@Override public long nextModSeq(final MailboxSession session, final Mailbox mailbox) throws MailboxException { boolean writeLock = true; return locker.executeWithLock(session, new StoreMailboxPath(mailbox), () -> lockedNextModSeq(session, mailbox), writeLock); }
@Override public MessageUid nextUid(final MailboxSession session, final Mailbox mailbox) throws MailboxException { boolean writeLock = true; return locker.executeWithLock(session, new StoreMailboxPath(mailbox), () -> lockedNextUid(session, mailbox), writeLock); }
/** * Copy the {@link MessageRange} to the {@link StoreMessageManager} * * @param set * @param toMailbox * @param session * @throws MailboxException */ public List<MessageRange> copyTo(final MessageRange set, final StoreMessageManager toMailbox, final MailboxSession session) throws MailboxException { if (!toMailbox.isWriteable(session)) { throw new ReadOnlyException(new StoreMailboxPath(toMailbox.getMailboxEntity()), session.getPathDelimiter()); } return locker.executeWithLock(session, new StoreMailboxPath(toMailbox.getMailboxEntity()), () -> { SortedMap<MessageUid, MessageMetaData> copiedUids = copy(set, toMailbox, session); return MessageRange.toRanges(new ArrayList<>(copiedUids.keySet())); }, true); }
/** * Move the {@link MessageRange} to the {@link StoreMessageManager} * * @param set * @param toMailbox * @param session * @throws MailboxException */ public List<MessageRange> moveTo(final MessageRange set, final StoreMessageManager toMailbox, final MailboxSession session) throws MailboxException { if (!isWriteable(session)) { throw new ReadOnlyException(getMailboxPath(), session.getPathDelimiter()); } if (!toMailbox.isWriteable(session)) { throw new ReadOnlyException(new StoreMailboxPath(toMailbox.getMailboxEntity()), session.getPathDelimiter()); } //TODO lock the from mailbox too, in a non-deadlocking manner - how? return locker.executeWithLock(session, new StoreMailboxPath(toMailbox.getMailboxEntity()), () -> { SortedMap<MessageUid, MessageMetaData> movedUids = move(set, toMailbox, session); return MessageRange.toRanges(new ArrayList<>(movedUids.keySet())); }, true); }