Search in sources :

Example 1 with AbstractLockingUidProvider

use of org.apache.james.mailbox.store.mail.AbstractLockingUidProvider in project i2p.i2p-bote by i2p.

the class MapperFactory method createUidProvider.

private UidProvider createUidProvider() {
    MailboxPathLocker uidLocker = new AbstractMailboxPathLocker() {

        @Override
        protected void lock(MailboxSession session, MailboxPath path, boolean writeLock) throws MailboxException {
            BoteMailbox mailbox = getMailboxes().get(path.getName().toLowerCase());
            mailbox.lockNextUid(writeLock);
        }

        @Override
        protected void unlock(MailboxSession session, MailboxPath path, boolean writeLock) throws MailboxException {
            BoteMailbox mailbox = getMailboxes().get(path.getName().toLowerCase());
            mailbox.unlockNextUid(writeLock);
        }
    };
    return new AbstractLockingUidProvider(uidLocker) {

        @Override
        protected MessageUid lockedNextUid(MailboxSession session, Mailbox mailbox) throws MailboxException {
            BoteMailbox boteMailbox = (BoteMailbox) mailbox;
            return boteMailbox.lockedNextUid();
        }

        @Override
        public Optional<MessageUid> lastUid(MailboxSession session, Mailbox mailbox) throws MailboxException {
            BoteMailbox boteMailbox = (BoteMailbox) mailbox;
            return boteMailbox.lastUid();
        }
    };
}
Also used : MailboxSession(org.apache.james.mailbox.MailboxSession) MailboxPath(org.apache.james.mailbox.model.MailboxPath) MessageUid(org.apache.james.mailbox.MessageUid) AbstractLockingUidProvider(org.apache.james.mailbox.store.mail.AbstractLockingUidProvider) Mailbox(org.apache.james.mailbox.store.mail.model.Mailbox) AbstractMailboxPathLocker(org.apache.james.mailbox.store.AbstractMailboxPathLocker) MailboxPathLocker(org.apache.james.mailbox.MailboxPathLocker) AbstractMailboxPathLocker(org.apache.james.mailbox.store.AbstractMailboxPathLocker)

Aggregations

MailboxPathLocker (org.apache.james.mailbox.MailboxPathLocker)1 MailboxSession (org.apache.james.mailbox.MailboxSession)1 MessageUid (org.apache.james.mailbox.MessageUid)1 MailboxPath (org.apache.james.mailbox.model.MailboxPath)1 AbstractMailboxPathLocker (org.apache.james.mailbox.store.AbstractMailboxPathLocker)1 AbstractLockingUidProvider (org.apache.james.mailbox.store.mail.AbstractLockingUidProvider)1 Mailbox (org.apache.james.mailbox.store.mail.model.Mailbox)1