http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java index a48aab8..61f7f61 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MailboxMetaData.java @@ -25,6 +25,7 @@ import java.util.List; import javax.mail.Flags; import org.apache.james.mailbox.MessageManager; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.model.MailboxACL; /** @@ -33,22 +34,22 @@ import org.apache.james.mailbox.model.MailboxACL; public class MailboxMetaData implements MessageManager.MetaData { private final long recentCount; - private final List<Long> recent; + private final List<MessageUid> recent; private final Flags premanentFlags; private final long uidValidity; - private final long nextUid; + private final MessageUid nextUid; private final long messageCount; private final long unseenCount; - private final Long firstUnseen; + private final MessageUid firstUnseen; private final boolean writeable; private final long highestModSeq; private final boolean modSeqPermanent; private final MailboxACL acl; - public MailboxMetaData(List<Long> recent, Flags premanentFlags, long uidValidity, long nextUid, long highestModSeq, long messageCount, long unseenCount, Long firstUnseen, boolean writeable, boolean modSeqPermanent, MailboxACL acl) { + public MailboxMetaData(List<MessageUid> recent, Flags premanentFlags, long uidValidity, MessageUid uidNext, long highestModSeq, long messageCount, long unseenCount, MessageUid firstUnseen, boolean writeable, boolean modSeqPermanent, MailboxACL acl) { super(); if (recent == null) { - this.recent = new ArrayList<Long>(); + this.recent = new ArrayList<MessageUid>(); } else { this.recent = recent; @@ -58,7 +59,7 @@ public class MailboxMetaData implements MessageManager.MetaData { this.premanentFlags = premanentFlags; this.uidValidity = uidValidity; - this.nextUid = nextUid; + this.nextUid = uidNext; this.messageCount = messageCount; this.unseenCount = unseenCount; this.firstUnseen = firstUnseen; @@ -81,10 +82,8 @@ public class MailboxMetaData implements MessageManager.MetaData { return premanentFlags; } - /** - * @see MailboxMetaData#getRecent() - */ - public List<Long> getRecent() { + @Override + public List<MessageUid> getRecent() { return recent; } @@ -95,10 +94,7 @@ public class MailboxMetaData implements MessageManager.MetaData { return uidValidity; } - /** - * @see MailboxMetaData#getUidNext() - */ - public long getUidNext() { + public MessageUid getUidNext() { return nextUid; } @@ -116,10 +112,7 @@ public class MailboxMetaData implements MessageManager.MetaData { return unseenCount; } - /** - * @see MailboxMetaData#getFirstUnseen() - */ - public Long getFirstUnseen() { + public MessageUid getFirstUnseen() { return firstUnseen; }
http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java index b0dce83..6b79611 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/MessageResultImpl.java @@ -29,6 +29,7 @@ import java.util.Map; import javax.mail.Flags; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.Content; import org.apache.james.mailbox.model.Headers; @@ -41,6 +42,8 @@ import org.apache.james.mailbox.store.streaming.InputStreamContent; import org.apache.james.mailbox.store.streaming.InputStreamContent.Type; import org.apache.james.mime4j.MimeException; +import com.google.common.base.Objects; + /** * Bean based implementation. */ @@ -63,16 +66,12 @@ public class MessageResultImpl implements MessageResult { } - /** - * @see org.apache.james.mailbox.model.MessageResult#getUid() - */ - public long getUid() { + @Override + public MessageUid getUid() { return message.getUid(); } - /** - * @see org.apache.james.mailbox.model.MessageResult#getInternalDate() - */ + @Override public Date getInternalDate() { return message.getInternalDate(); } @@ -91,35 +90,16 @@ public class MessageResultImpl implements MessageResult { return message.getFullContentOctets(); } - /** - * @see java.lang.Comparable#compareTo(java.lang.Object) - */ + @Override public int compareTo(MessageResult that) { - if (getUid() > 0 && that.getUid() > 0) { - // TODO: this seems inefficient - return Long.valueOf(getUid()).compareTo(Long.valueOf(that.getUid())); - } else { - // TODO: throwing an undocumented untyped runtime seems wrong - // TODO: if uids must be greater than zero then this should be - // enforced - // TODO: on the way in - // TODO: probably an IllegalArgumentException would be better - throw new RuntimeException("can't compare"); - } - + return this.getUid().compareTo(that.getUid()); } - /** - * {@inheritDoc} - */ @Override public int hashCode() { - return 37 * 17 + (int)getUid(); + return Objects.hashCode(getUid()); } - /** - * {@inheritDoc} - */ @Override public boolean equals(Object obj) { if (this == obj) { @@ -128,7 +108,6 @@ public class MessageResultImpl implements MessageResult { if (obj instanceof MessageResultImpl) { MessageResultImpl that = (MessageResultImpl)obj; return this.headers.equals(that.headers) && this.message.equals(that.message); -// return this.message.equals(that.message); } return false; } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMessageMetaData.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMessageMetaData.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMessageMetaData.java index 5c88a13..7f01b2c 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMessageMetaData.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/SimpleMessageMetaData.java @@ -23,18 +23,21 @@ import java.util.Date; import javax.mail.Flags; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.model.MessageMetaData; import org.apache.james.mailbox.store.mail.model.MailboxMessage; +import com.google.common.base.Objects; + public class SimpleMessageMetaData implements MessageMetaData{ - private final long uid; + private final MessageUid uid; private final Flags flags; private final long size; private final Date internalDate; private final long modSeq; - public SimpleMessageMetaData(long uid, long modSeq, Flags flags, long size, Date internalDate) { + public SimpleMessageMetaData(MessageUid uid, long modSeq, Flags flags, long size, Date internalDate) { this.uid = uid; this.flags = flags; this.size = size; @@ -46,53 +49,40 @@ public class SimpleMessageMetaData implements MessageMetaData{ this(message.getUid(), message.getModSeq(), message.createFlags(), message.getFullContentOctets(), message.getInternalDate()); } - /** - * @see org.apache.james.mailbox.model.MessageMetaData#getFlags() - */ + @Override public Flags getFlags() { return flags; } - /** - * @see org.apache.james.mailbox.model.MessageMetaData#getSize() - */ + @Override public long getSize() { return size; } - /** - * @see org.apache.james.mailbox.model.MessageMetaData#getInternalDate() - */ + @Override public Date getInternalDate() { return internalDate; } - /** - * @see org.apache.james.mailbox.model.MessageMetaData#getUid() - */ - public long getUid() { + @Override + public MessageUid getUid() { return uid; } @Override public boolean equals(Object obj) { if(obj instanceof SimpleMessageMetaData) { - return uid == ((SimpleMessageMetaData) obj).getUid(); + return uid.equals(((SimpleMessageMetaData) obj).getUid()); } return false; } @Override public int hashCode() { - final int PRIME = 31; - int result = 1; - result = PRIME * result + (int) (uid ^ (uid >>> 32)); - return result; + return Objects.hashCode(uid); } - /** - * @see org.apache.james.mailbox.model.MessageMetaData#getModSeq() - */ + @Override public long getModSeq() { return modSeq; } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java index 6bdb110..ba073d2 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMailboxManager.java @@ -40,6 +40,7 @@ import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MailboxSession.SessionType; import org.apache.james.mailbox.MailboxSessionIdGenerator; import org.apache.james.mailbox.MessageManager; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.RequestAware; import org.apache.james.mailbox.StandardMailboxMetaDataComparator; import org.apache.james.mailbox.acl.GroupMembershipResolver; @@ -639,7 +640,7 @@ public class StoreMailboxManager implements MailboxManager { } @Override - public Map<MailboxId, Collection<Long>> search(MultimailboxesSearchQuery expression, MailboxSession session) throws MailboxException { + public Map<MailboxId, Collection<MessageUid>> search(MultimailboxesSearchQuery expression, MailboxSession session) throws MailboxException { return index.search(session, expression); } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java index f84daa9..171c457 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java @@ -43,6 +43,7 @@ import org.apache.james.mailbox.MailboxPathLocker; import org.apache.james.mailbox.MailboxSession; import org.apache.james.mailbox.MailboxSession.User; import org.apache.james.mailbox.MessageManager; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.acl.GroupMembershipResolver; import org.apache.james.mailbox.acl.MailboxACLResolver; import org.apache.james.mailbox.acl.UnionMailboxACLResolver; @@ -89,6 +90,7 @@ import org.apache.james.mime4j.stream.RecursionMode; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import com.google.common.base.Function; import com.google.common.collect.ImmutableList; /** @@ -244,26 +246,19 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana return true; } - /** - * @see org.apache.james.mailbox.MessageManager#expunge(org.apache.james.mailbox.model.MessageRange, - * org.apache.james.mailbox.MailboxSession) - */ - public Iterator<Long> expunge(MessageRange set, MailboxSession mailboxSession) throws MailboxException { + @Override + public Iterator<MessageUid> expunge(MessageRange set, MailboxSession mailboxSession) throws MailboxException { if (!isWriteable(mailboxSession)) { throw new ReadOnlyException(getMailboxPath(), mailboxSession.getPathDelimiter()); } - Map<Long, MessageMetaData> uids = deleteMarkedInMailbox(set, mailboxSession); + Map<MessageUid, MessageMetaData> uids = deleteMarkedInMailbox(set, mailboxSession); dispatcher.expunged(mailboxSession, uids, getMailboxEntity()); return uids.keySet().iterator(); } - /** - * @see org.apache.james.mailbox.MessageManager#appendMessage(java.io.InputStream, - * java.util.Date, org.apache.james.mailbox.MailboxSession, boolean, - * javax.mail.Flags) - */ - public long appendMessage(InputStream msgIn, Date internalDate, final MailboxSession mailboxSession, boolean isRecent, Flags flagsToBeSet) throws MailboxException { + @Override + public MessageUid appendMessage(InputStream msgIn, Date internalDate, final MailboxSession mailboxSession, boolean isRecent, Flags flagsToBeSet) throws MailboxException { File file = null; TeeInputStream tmpMsgIn = null; @@ -390,13 +385,13 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana new QuotaChecker(quotaManager, quotaRootResolver, mailbox).tryAddition(1, size); - return locker.executeWithLock(mailboxSession, getMailboxPath(), new MailboxPathLocker.LockAwareExecution<Long>() { + return locker.executeWithLock(mailboxSession, getMailboxPath(), new MailboxPathLocker.LockAwareExecution<MessageUid>() { @Override - public Long execute() throws MailboxException { + public MessageUid execute() throws MailboxException { MessageMetaData data = appendMessageToStore(message, attachments, mailboxSession); - SortedMap<Long, MessageMetaData> uids = new TreeMap<Long, MessageMetaData>(); + SortedMap<MessageUid, MessageMetaData> uids = new TreeMap<MessageUid, MessageMetaData>(); uids.put(data.getUid(), data); dispatcher.added(mailboxSession, uids, getMailboxEntity()); return data.getUid(); @@ -465,14 +460,19 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana */ public MetaData getMetaData(boolean resetRecent, MailboxSession mailboxSession, org.apache.james.mailbox.MessageManager.MetaData.FetchGroup fetchGroup) throws MailboxException { - final List<Long> recent; + final List<MessageUid> recent; final Flags permanentFlags = getPermanentFlags(mailboxSession); final long uidValidity = getMailboxEntity().getUidValidity(); - final long uidNext = mapperFactory.getMessageMapper(mailboxSession).getLastUid(mailbox) + 1; + MessageUid uidNext = mapperFactory.getMessageMapper(mailboxSession).getLastUid(mailbox) + .transform(new Function<MessageUid, MessageUid>() { + public MessageUid apply(MessageUid input) { + return input.next(); + }}) + .or(MessageUid.MIN_VALUE); final long highestModSeq = mapperFactory.getMessageMapper(mailboxSession).getHighestModSeq(mailbox); final long messageCount; final long unseenCount; - final Long firstUnseen; + final MessageUid firstUnseen; switch (fetchGroup) { case UNSEEN_COUNT: unseenCount = countUnseenMessagesInMailbox(mailboxSession); @@ -503,7 +503,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana if (resetRecent) { recent(resetRecent, mailboxSession); } - recent = new ArrayList<Long>(); + recent = new ArrayList<MessageUid>(); break; } MailboxACL resolvedAcl = getResolvedMailboxACL(mailboxSession); @@ -550,12 +550,12 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana * boolean, boolean, org.apache.james.mailbox.model.MessageRange, * org.apache.james.mailbox.MailboxSession) */ - public Map<Long, Flags> setFlags(final Flags flags, final FlagsUpdateMode flagsUpdateMode, final MessageRange set, MailboxSession mailboxSession) throws MailboxException { + public Map<MessageUid, Flags> setFlags(final Flags flags, final FlagsUpdateMode flagsUpdateMode, final MessageRange set, MailboxSession mailboxSession) throws MailboxException { if (!isWriteable(mailboxSession)) { throw new ReadOnlyException(getMailboxPath(), mailboxSession.getPathDelimiter()); } - final SortedMap<Long, Flags> newFlagsByUid = new TreeMap<Long, Flags>(); + final SortedMap<MessageUid, Flags> newFlagsByUid = new TreeMap<MessageUid, Flags>(); trimFlags(flags, mailboxSession); @@ -568,7 +568,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana } }); - final SortedMap<Long, UpdatedFlags> uFlags = new TreeMap<Long, UpdatedFlags>(); + final SortedMap<MessageUid, UpdatedFlags> uFlags = new TreeMap<MessageUid, UpdatedFlags>(); while (it.hasNext()) { UpdatedFlags flag = it.next(); @@ -576,7 +576,7 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana uFlags.put(flag.getUid(), flag); } - dispatcher.flagsUpdated(mailboxSession, new ArrayList<Long>(uFlags.keySet()), getMailboxEntity(), new ArrayList<UpdatedFlags>(uFlags.values())); + dispatcher.flagsUpdated(mailboxSession, new ArrayList<MessageUid>(uFlags.keySet()), getMailboxEntity(), new ArrayList<UpdatedFlags>(uFlags.values())); return newFlagsByUid; } @@ -598,9 +598,9 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana @Override public List<MessageRange> execute() throws MailboxException { - SortedMap<Long, MessageMetaData> copiedUids = copy(set, toMailbox, session); + SortedMap<MessageUid, MessageMetaData> copiedUids = copy(set, toMailbox, session); dispatcher.added(session, copiedUids, toMailbox.getMailboxEntity()); - return MessageRange.toRanges(new ArrayList<Long>(copiedUids.keySet())); + return MessageRange.toRanges(new ArrayList<MessageUid>(copiedUids.keySet())); } }, true); } @@ -626,9 +626,9 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana @Override public List<MessageRange> execute() throws MailboxException { - SortedMap<Long, MessageMetaData> movedUids = move(set, toMailbox, session); + SortedMap<MessageUid, MessageMetaData> movedUids = move(set, toMailbox, session); dispatcher.added(session, movedUids, toMailbox.getMailboxEntity()); - return MessageRange.toRanges(new ArrayList<Long>(movedUids.keySet())); + return MessageRange.toRanges(new ArrayList<MessageUid>(movedUids.keySet())); } }, true); } @@ -670,13 +670,8 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana /** * Return a List which holds all uids of recent messages and optional reset * the recent flag on the messages for the uids - * - * @param reset - * @param mailboxSession - * @return list - * @throws MailboxException */ - protected List<Long> recent(final boolean reset, MailboxSession mailboxSession) throws MailboxException { + protected List<MessageUid> recent(final boolean reset, MailboxSession mailboxSession) throws MailboxException { if (reset) { if (!isWriteable(mailboxSession)) { throw new ReadOnlyException(getMailboxPath(), mailboxSession.getPathDelimiter()); @@ -684,10 +679,10 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana } final MessageMapper messageMapper = mapperFactory.getMessageMapper(mailboxSession); - return messageMapper.execute(new Mapper.Transaction<List<Long>>() { + return messageMapper.execute(new Mapper.Transaction<List<MessageUid>>() { - public List<Long> run() throws MailboxException { - final List<Long> members = messageMapper.findRecentMessageUidsInMailbox(getMailboxEntity()); + public List<MessageUid> run() throws MailboxException { + final List<MessageUid> members = messageMapper.findRecentMessageUidsInMailbox(getMailboxEntity()); // Convert to MessageRanges so we may be able to optimize the // flag update @@ -705,24 +700,21 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana } - protected Map<Long, MessageMetaData> deleteMarkedInMailbox(final MessageRange range, MailboxSession session) throws MailboxException { + protected Map<MessageUid, MessageMetaData> deleteMarkedInMailbox(final MessageRange range, MailboxSession session) throws MailboxException { final MessageMapper messageMapper = mapperFactory.getMessageMapper(session); - return messageMapper.execute(new Mapper.Transaction<Map<Long, MessageMetaData>>() { + return messageMapper.execute(new Mapper.Transaction<Map<MessageUid, MessageMetaData>>() { - public Map<Long, MessageMetaData> run() throws MailboxException { + public Map<MessageUid, MessageMetaData> run() throws MailboxException { return messageMapper.expungeMarkedForDeletionInMailbox(getMailboxEntity(), range); } }); } - /** - * @see org.apache.james.mailbox.MessageManager#search(org.apache.james.mailbox.model.SearchQuery, - * org.apache.james.mailbox.MailboxSession) - */ - public Iterator<Long> search(SearchQuery query, MailboxSession mailboxSession) throws MailboxException { + @Override + public Iterator<MessageUid> search(SearchQuery query, MailboxSession mailboxSession) throws MailboxException { return index.search(mailboxSession, getMailboxEntity(), query); } @@ -766,12 +758,12 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana } - private SortedMap<Long, MessageMetaData> copy(MessageRange set, StoreMessageManager to, MailboxSession session) throws MailboxException { + private SortedMap<MessageUid, MessageMetaData> copy(MessageRange set, StoreMessageManager to, MailboxSession session) throws MailboxException { Iterator<MailboxMessage> originalRows = retrieveOriginalRows(set, session); return collectMetadata(to.copy(originalRows, session)); } - private SortedMap<Long, MessageMetaData> move(MessageRange set, StoreMessageManager to, MailboxSession session) throws MailboxException { + private SortedMap<MessageUid, MessageMetaData> move(MessageRange set, StoreMessageManager to, MailboxSession session) throws MailboxException { Iterator<MailboxMessage> originalRows = retrieveOriginalRows(set, session); MoveResult moveResult = to.move(originalRows, session); dispatcher.expunged(session, collectMetadata(moveResult.getOriginalMessages()), getMailboxEntity()); @@ -783,8 +775,8 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana return messageMapper.findInMailbox(mailbox, set, FetchType.Full, -1); } - private SortedMap<Long, MessageMetaData> collectMetadata(Iterator<MessageMetaData> ids) { - final SortedMap<Long, MessageMetaData> copiedMessages = new TreeMap<Long, MessageMetaData>(); + private SortedMap<MessageUid, MessageMetaData> collectMetadata(Iterator<MessageMetaData> ids) { + final SortedMap<MessageUid, MessageMetaData> copiedMessages = new TreeMap<MessageUid, MessageMetaData>(); while (ids.hasNext()) { MessageMetaData data = ids.next(); copiedMessages.put(data.getUid(), data); @@ -805,12 +797,8 @@ public class StoreMessageManager implements org.apache.james.mailbox.MessageMana /** * Return the uid of the first unseen message or null of none is found - * - * @param session - * @return uid - * @throws MailboxException */ - protected Long findFirstUnseenMessageUid(MailboxSession session) throws MailboxException { + protected MessageUid findFirstUnseenMessageUid(MailboxSession session) throws MailboxException { MessageMapper messageMapper = mapperFactory.getMessageMapper(session); return messageMapper.findFirstUnseenMessageUid(getMailboxEntity()); } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java index 8193273..84ea6ce 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/StoreMessageResultIterator.java @@ -25,6 +25,7 @@ import java.util.NoSuchElementException; import javax.mail.Flags; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.Content; import org.apache.james.mailbox.model.Headers; @@ -40,15 +41,17 @@ import org.apache.james.mailbox.store.mail.MessageMapper.FetchType; import org.apache.james.mailbox.store.mail.model.Mailbox; import org.apache.james.mailbox.store.mail.model.MailboxMessage; +import com.google.common.base.Objects; + public class StoreMessageResultIterator implements MessageResultIterator { private Iterator<MailboxMessage> next = null; private MailboxException exception; private final Mailbox mailbox; private final FetchGroup group; - private final long from; - private long cursor; - private final long to; + private final MessageUid from; + private MessageUid cursor; + private final MessageUid to; private final int batchSize; private final Type type; private final MessageMapper mapper; @@ -116,7 +119,7 @@ public class StoreMessageResultIterator implements MessageResultIterator { @Override public boolean hasNext() { - if (cursor > to) + if (cursor.compareTo(to) > 0) return false; if (next == null || !next.hasNext()) { @@ -167,7 +170,7 @@ public class StoreMessageResultIterator implements MessageResultIterator { result = new UnloadedMessageResult(message, e); } - cursor++; + cursor = cursor.next(); return result; } @@ -188,7 +191,7 @@ public class StoreMessageResultIterator implements MessageResultIterator { private final long size; - private final long uid; + private final MessageUid uid; private final Flags flags; @@ -224,26 +227,17 @@ public class StoreMessageResultIterator implements MessageResultIterator { return size; } - public long getUid() { + public MessageUid getUid() { return uid; } public int compareTo(MessageResult that) { - // Java 1.5 return (int) Math.signum(uid - that.getUid()); - long diff = uid - that.getUid(); - return (int) diff == 0 ? 0 : diff > 0 ? 1 : -1; + return uid.compareTo(that.getUid()); } @Override public int hashCode() { - int ret = 19 * 37; - ret = ret * 37 + exception.hashCode(); - ret = ret * 37 + internalDate.hashCode(); - ret = ret * 37 + (int)size; - ret = ret * 37 + (int)uid; - ret = ret * 37 + flags.hashCode(); - ret = ret * 37 + (int)modSeq; - return ret; + return Objects.hashCode(exception, internalDate, size, uid, flags, modSeq); } @Override @@ -253,7 +247,7 @@ public class StoreMessageResultIterator implements MessageResultIterator { } if (obj instanceof UnloadedMessageResult) { UnloadedMessageResult that = (UnloadedMessageResult)obj; - return (size == that.size) && (uid == that.uid) && (modSeq == that.modSeq) && exception.equals(that.exception) + return (size == that.size) && (uid.equals(that.uid)) && (modSeq == that.modSeq) && exception.equals(that.exception) && internalDate.equals(that.internalDate) && flags.equals(that.flags); } return false; http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java index deb6c1a..f2da9e5 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/EventFactory.java @@ -25,6 +25,7 @@ import java.util.SortedMap; import org.apache.james.mailbox.MailboxListener; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageMetaData; import org.apache.james.mailbox.model.UpdatedFlags; @@ -41,20 +42,20 @@ public class EventFactory { } public final class AddedImpl extends MailboxListener.Added implements MailboxAware { - private final Map<Long, MessageMetaData> added; + private final Map<MessageUid, MessageMetaData> added; private final Mailbox mailbox; - public AddedImpl(MailboxSession session, Mailbox mailbox, SortedMap<Long, MessageMetaData> added) { + public AddedImpl(MailboxSession session, Mailbox mailbox, SortedMap<MessageUid, MessageMetaData> uids) { super(session, new StoreMailboxPath(mailbox)); - this.added = ImmutableMap.copyOf(added); + this.added = ImmutableMap.copyOf(uids); this.mailbox = mailbox; } - public List<Long> getUids() { + public List<MessageUid> getUids() { return ImmutableList.copyOf(added.keySet()); } - public MessageMetaData getMetaData(long uid) { + public MessageMetaData getMetaData(MessageUid uid) { return added.get(uid); } @@ -64,20 +65,20 @@ public class EventFactory { } public final class ExpungedImpl extends MailboxListener.Expunged implements MailboxAware { - private final Map<Long, MessageMetaData> uids; + private final Map<MessageUid, MessageMetaData> uids; private final Mailbox mailbox; - public ExpungedImpl(MailboxSession session, Mailbox mailbox, Map<Long, MessageMetaData> uids) { + public ExpungedImpl(MailboxSession session, Mailbox mailbox, Map<MessageUid, MessageMetaData> uids) { super(session, new StoreMailboxPath(mailbox)); this.uids = ImmutableMap.copyOf(uids); this.mailbox = mailbox; } - public List<Long> getUids() { + public List<MessageUid> getUids() { return ImmutableList.copyOf(uids.keySet()); } - public MessageMetaData getMetaData(long uid) { + public MessageMetaData getMetaData(MessageUid uid) { return uids.get(uid); } @@ -87,20 +88,20 @@ public class EventFactory { } public final class FlagsUpdatedImpl extends MailboxListener.FlagsUpdated implements MailboxAware { - private final List<Long> uids; + private final List<MessageUid> uids; private final Mailbox mailbox; private final List<UpdatedFlags> uFlags; - public FlagsUpdatedImpl(MailboxSession session, Mailbox mailbox, List<Long> uids, List<UpdatedFlags> uFlags) { + 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 List<Long> getUids() { + public List<MessageUid> getUids() { return uids; } @@ -166,15 +167,15 @@ public class EventFactory { } } - public MailboxListener.Added added(MailboxSession session, SortedMap<Long, MessageMetaData> uids, Mailbox mailbox) { + public MailboxListener.Added added(MailboxSession session, SortedMap<MessageUid, MessageMetaData> uids, Mailbox mailbox) { return new AddedImpl(session, mailbox, uids); } - public MailboxListener.Expunged expunged(MailboxSession session, Map<Long, MessageMetaData> uids, Mailbox mailbox) { + public MailboxListener.Expunged expunged(MailboxSession session, Map<MessageUid, MessageMetaData> uids, Mailbox mailbox) { return new ExpungedImpl(session, mailbox, uids); } - public MailboxListener.FlagsUpdated flagsUpdated(MailboxSession session, List<Long> uids, Mailbox mailbox, List<UpdatedFlags> uflags) { + public MailboxListener.FlagsUpdated flagsUpdated(MailboxSession session, List<MessageUid> uids, Mailbox mailbox, List<UpdatedFlags> uflags) { return new FlagsUpdatedImpl(session, mailbox, uids, uflags); } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java index acf5ee1..47a1e7a 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/event/MailboxEventDispatcher.java @@ -25,6 +25,7 @@ import java.util.SortedMap; import org.apache.james.mailbox.MailboxListener; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageMetaData; import org.apache.james.mailbox.model.UpdatedFlags; @@ -51,7 +52,7 @@ public class MailboxEventDispatcher { * @param uids Sorted map with uids and message meta data * @param mailbox The mailbox */ - public void added(MailboxSession session, SortedMap<Long, MessageMetaData> uids, Mailbox mailbox) { + public void added(MailboxSession session, SortedMap<MessageUid, MessageMetaData> uids, Mailbox mailbox) { listener.event(eventFactory.added(session, uids, mailbox)); } @@ -63,7 +64,7 @@ public class MailboxEventDispatcher { * @param uids Sorted map with uids and message meta data * @param mailbox The mailbox */ - public void expunged(MailboxSession session, Map<Long, MessageMetaData> uids, Mailbox mailbox) { + public void expunged(MailboxSession session, Map<MessageUid, MessageMetaData> uids, Mailbox mailbox) { listener.event(eventFactory.expunged(session, uids, mailbox)); } @@ -71,7 +72,7 @@ public class MailboxEventDispatcher { * Should get called when the message flags were update in a Mailbox. All * registered MailboxListener will get triggered then */ - public void flagsUpdated(MailboxSession session, List<Long> uids, Mailbox mailbox, List<UpdatedFlags> uflags) { + public void flagsUpdated(MailboxSession session, List<MessageUid> uids, Mailbox mailbox, List<UpdatedFlags> uflags) { listener.event(eventFactory.flagsUpdated(session, uids, mailbox, uflags)); } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JacksonEventSerializer.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JacksonEventSerializer.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JacksonEventSerializer.java index 41b0c2a..17e4d44 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JacksonEventSerializer.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JacksonEventSerializer.java @@ -19,12 +19,24 @@ package org.apache.james.mailbox.store.json; +import java.io.IOException; + import org.apache.james.mailbox.MailboxListener; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.store.event.EventSerializer; import org.apache.james.mailbox.store.json.event.EventConverter; import org.apache.james.mailbox.store.json.event.dto.EventDataTransferObject; +import com.fasterxml.jackson.core.JsonGenerator; +import com.fasterxml.jackson.core.JsonParser; +import com.fasterxml.jackson.core.JsonProcessingException; +import com.fasterxml.jackson.databind.DeserializationContext; +import com.fasterxml.jackson.databind.JsonDeserializer; +import com.fasterxml.jackson.databind.JsonSerializer; +import com.fasterxml.jackson.databind.KeyDeserializer; import com.fasterxml.jackson.databind.ObjectMapper; +import com.fasterxml.jackson.databind.SerializerProvider; +import com.fasterxml.jackson.databind.module.SimpleModule; public class JacksonEventSerializer implements EventSerializer { @@ -44,4 +56,51 @@ public class JacksonEventSerializer implements EventSerializer { EventDataTransferObject eventDataTransferObject = objectMapper.readValue(serializedEvent, EventDataTransferObject.class); return eventConverter.retrieveEvent(eventDataTransferObject); } + + public static ObjectMapper configureObjectMapper(ObjectMapper objectMapper) { + SimpleModule module = new SimpleModule(); + module.addDeserializer(MessageUid.class, new MessageUidDeserializer()); + module.addKeyDeserializer(MessageUid.class, new MessageUidKeyDeserializer()); + module.addSerializer(MessageUid.class, new MessageUidSerializer()); + module.addKeySerializer(MessageUid.class, new MessageUidKeySerializer()); + objectMapper.registerModule(module); + return objectMapper; + } + + public static class MessageUidDeserializer extends JsonDeserializer<MessageUid> { + + @Override + public MessageUid deserialize(JsonParser p, DeserializationContext ctxt) throws IOException, JsonProcessingException { + return MessageUid.of(Long.parseLong(p.getValueAsString())); + } + + } + + public static class MessageUidSerializer extends JsonSerializer<MessageUid> { + + @Override + public void serialize(MessageUid value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException { + gen.writeString(String.valueOf(value.asLong())); + } + + } + + public static class MessageUidKeyDeserializer extends KeyDeserializer { + + @Override + public Object deserializeKey(String key, DeserializationContext ctxt) throws IOException, JsonProcessingException { + return MessageUid.of(Long.parseLong(key)); + } + + } + + public static class MessageUidKeySerializer extends JsonSerializer<MessageUid> { + + @Override + public void serialize(MessageUid value, JsonGenerator gen, SerializerProvider serializers) throws IOException, JsonProcessingException { + gen.writeFieldName(String.valueOf(value.asLong())); + } + + } + } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JsonEventSerializer.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JsonEventSerializer.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JsonEventSerializer.java index 187405c..f932198 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JsonEventSerializer.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/JsonEventSerializer.java @@ -26,7 +26,6 @@ import com.fasterxml.jackson.databind.ObjectMapper; public class JsonEventSerializer extends JacksonEventSerializer { public JsonEventSerializer(EventConverter eventConverter) { - super(eventConverter, new ObjectMapper()); + super(eventConverter, configureObjectMapper(new ObjectMapper())); } - } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/MessagePackEventSerializer.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/MessagePackEventSerializer.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/MessagePackEventSerializer.java index b4c232d..0c9cf78 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/MessagePackEventSerializer.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/MessagePackEventSerializer.java @@ -28,8 +28,7 @@ import com.fasterxml.jackson.databind.ObjectMapper; * MailboxMessage Pack ( http://msgpack.org/ ) Event Serializer */ public class MessagePackEventSerializer extends JacksonEventSerializer { - public MessagePackEventSerializer(EventConverter eventConverter) { - super(eventConverter, new ObjectMapper(new MessagePackFactory())); + super(eventConverter, configureObjectMapper(new ObjectMapper(new MessagePackFactory()))); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java index fe91bd4..866c594 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/EventConverter.java @@ -29,6 +29,7 @@ import java.util.TreeMap; import org.apache.james.mailbox.MailboxListener; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.model.MailboxPath; import org.apache.james.mailbox.model.MessageMetaData; import org.apache.james.mailbox.model.UpdatedFlags; @@ -143,7 +144,7 @@ public class EventConverter { private EventDataTransferObject constructFalgsUpdatedProxy(MailboxSession session, MailboxDataTransferObject mailboxIntermediate, - List<Long> uids, + List<MessageUid> uids, List<UpdatedFlags> updatedFlagsList) { ArrayList<UpdatedFlagsDataTransferObject> updatedFlagsDataTransferObjects = new ArrayList<UpdatedFlagsDataTransferObject>(); for(UpdatedFlags updatedFlags : updatedFlagsList) { @@ -161,10 +162,10 @@ public class EventConverter { private EventDataTransferObject constructMeteDataHoldingEventProxy(EventType eventType, MailboxSession mailboxSession, MailboxDataTransferObject mailboxIntermediate, - List<Long> uids, + List<MessageUid> uids, MailboxListener.MetaDataHoldingEvent event) { - HashMap<Long, MessageMetaDataDataTransferObject> metaDataProxyMap = new HashMap<Long, MessageMetaDataDataTransferObject>(); - for(Long uid : uids) { + HashMap<MessageUid, MessageMetaDataDataTransferObject> metaDataProxyMap = new HashMap<MessageUid, MessageMetaDataDataTransferObject>(); + for(MessageUid uid : uids) { metaDataProxyMap.put(uid, new MessageMetaDataDataTransferObject( event.getMetaData(uid) )); @@ -178,11 +179,11 @@ public class EventConverter { .build(); } - private SortedMap<Long, MessageMetaData> retrieveMetadata(Map<Long, MessageMetaDataDataTransferObject> metaDataProxyMap) { + private SortedMap<MessageUid, MessageMetaData> retrieveMetadata(Map<MessageUid, MessageMetaDataDataTransferObject> metaDataProxyMap) { if(metaDataProxyMap != null) { - TreeMap<Long, MessageMetaData> result = new TreeMap<Long, MessageMetaData>(); - Set<Map.Entry<Long, MessageMetaDataDataTransferObject>> entrySet = metaDataProxyMap.entrySet(); - for (Map.Entry<Long, MessageMetaDataDataTransferObject> entry : entrySet) { + TreeMap<MessageUid, MessageMetaData> result = new TreeMap<MessageUid, MessageMetaData>(); + Set<Map.Entry<MessageUid, MessageMetaDataDataTransferObject>> entrySet = metaDataProxyMap.entrySet(); + for (Map.Entry<MessageUid, MessageMetaDataDataTransferObject> entry : entrySet) { result.put(entry.getKey(), entry.getValue().getMetadata()); } return result; http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventDataTransferObject.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventDataTransferObject.java index c7d02c5..ac2ba0c 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventDataTransferObject.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/EventDataTransferObject.java @@ -24,6 +24,8 @@ import com.fasterxml.jackson.annotation.JsonProperty; import java.util.List; import java.util.Map; +import org.apache.james.mailbox.MessageUid; + public class EventDataTransferObject { public static class Builder { @@ -31,8 +33,8 @@ public class EventDataTransferObject { private EventType type; private MailboxDataTransferObject mailbox; private MailboxSessionDataTransferObject session; - private List<Long> uids; - private Map<Long, MessageMetaDataDataTransferObject> metaData; + private List<MessageUid> uids; + private Map<MessageUid, MessageMetaDataDataTransferObject> metaData; private List<UpdatedFlagsDataTransferObject> updatedFlags; private MailboxPathDataTransferObject from; @@ -56,12 +58,12 @@ public class EventDataTransferObject { return this; } - public Builder uids(List<Long> uids) { + public Builder uids(List<MessageUid> uids) { this.uids = uids; return this; } - public Builder metaData(Map<Long, MessageMetaDataDataTransferObject> metaData) { + public Builder metaData(Map<MessageUid, MessageMetaDataDataTransferObject> metaData) { this.metaData = metaData; return this; } @@ -88,9 +90,9 @@ public class EventDataTransferObject { @JsonProperty() private MailboxSessionDataTransferObject session; @JsonProperty() - private List<Long> uids; + private List<MessageUid> uids; @JsonProperty() - private Map<Long, MessageMetaDataDataTransferObject> metaData; + private Map<MessageUid, MessageMetaDataDataTransferObject> metaData; @JsonProperty() private List<UpdatedFlagsDataTransferObject> updatedFlags; @JsonProperty() @@ -101,8 +103,8 @@ public class EventDataTransferObject { public EventDataTransferObject(EventType type, MailboxDataTransferObject mailbox, MailboxSessionDataTransferObject session, - List<Long> uids, - Map<Long, MessageMetaDataDataTransferObject> metaData, + List<MessageUid> uids, + Map<MessageUid, MessageMetaDataDataTransferObject> metaData, List<UpdatedFlagsDataTransferObject> updatedFlags, MailboxPathDataTransferObject from) { this.type = type; @@ -130,12 +132,12 @@ public class EventDataTransferObject { } @JsonIgnore - public List<Long> getUids() { + public List<MessageUid> getUids() { return uids; } @JsonIgnore - public Map<Long, MessageMetaDataDataTransferObject> getMetaDataProxyMap() { + public Map<MessageUid, MessageMetaDataDataTransferObject> getMetaDataProxyMap() { return metaData; } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java index 2331d4f..01f191f 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/MessageMetaDataDataTransferObject.java @@ -21,6 +21,8 @@ package org.apache.james.mailbox.store.json.event.dto; import com.fasterxml.jackson.annotation.JsonIgnore; import com.fasterxml.jackson.annotation.JsonProperty; + +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.model.MessageMetaData; import org.apache.james.mailbox.store.SimpleMessageMetaData; import org.slf4j.Logger; @@ -73,7 +75,7 @@ public class MessageMetaDataDataTransferObject { } public MessageMetaDataDataTransferObject(MessageMetaData metadata) { - this.uid = metadata.getUid(); + this.uid = metadata.getUid().asLong(); this.modseq = metadata.getModSeq(); this.flags = new FlagsDataTransferObject(metadata.getFlags()); this.size = metadata.getSize(); @@ -83,10 +85,10 @@ public class MessageMetaDataDataTransferObject { @JsonIgnore public SimpleMessageMetaData getMetadata() { try { - return new SimpleMessageMetaData(uid, modseq, flags.getFlags(), size, parse(date)); + return new SimpleMessageMetaData(MessageUid.of(uid), modseq, flags.getFlags(), size, parse(date)); } catch(ParseException parseException) { LOG.error("Parse exception while parsing date while deserializing metadata upon event serialization. Using nowadays date instead."); - return new SimpleMessageMetaData(uid, modseq, flags.getFlags(), size, new Date()); + return new SimpleMessageMetaData(MessageUid.of(uid), modseq, flags.getFlags(), size, new Date()); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/UpdatedFlagsDataTransferObject.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/UpdatedFlagsDataTransferObject.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/UpdatedFlagsDataTransferObject.java index 61d6a6c..ada06f6 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/UpdatedFlagsDataTransferObject.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/json/event/dto/UpdatedFlagsDataTransferObject.java @@ -19,6 +19,7 @@ package org.apache.james.mailbox.store.json.event.dto; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.model.UpdatedFlags; import com.fasterxml.jackson.annotation.JsonProperty; @@ -37,14 +38,14 @@ public class UpdatedFlagsDataTransferObject { } public UpdatedFlagsDataTransferObject(UpdatedFlags updatedFlags) { - this.uid = updatedFlags.getUid(); + this.uid = updatedFlags.getUid().asLong(); this.modseq = updatedFlags.getModSeq(); this.oldFlags = new FlagsDataTransferObject(updatedFlags.getOldFlags()); this.newFlags = new FlagsDataTransferObject(updatedFlags.getNewFlags()); } public UpdatedFlags retrieveUpdatedFlags() { - return new UpdatedFlags(uid, modseq, oldFlags.getFlags(), newFlags.getFlags()); + return new UpdatedFlags(MessageUid.of(uid), modseq, oldFlags.getFlags(), newFlags.getFlags()); } } \ No newline at end of file http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingUidProvider.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingUidProvider.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingUidProvider.java index b0531c6..f83c6a4 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingUidProvider.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractLockingUidProvider.java @@ -21,6 +21,7 @@ package org.apache.james.mailbox.store.mail; import org.apache.james.mailbox.MailboxPathLocker; import org.apache.james.mailbox.MailboxPathLocker.LockAwareExecution; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.store.StoreMailboxPath; import org.apache.james.mailbox.store.mail.model.Mailbox; @@ -41,11 +42,11 @@ public abstract class AbstractLockingUidProvider implements UidProvider{ } @Override - public long nextUid(final MailboxSession session, final Mailbox mailbox) throws MailboxException { - return locker.executeWithLock(session, new StoreMailboxPath(mailbox), new LockAwareExecution<Long>() { + public MessageUid nextUid(final MailboxSession session, final Mailbox mailbox) throws MailboxException { + return locker.executeWithLock(session, new StoreMailboxPath(mailbox), new LockAwareExecution<MessageUid>() { @Override - public Long execute() throws MailboxException { + public MessageUid execute() throws MailboxException { return lockedNextUid(session, mailbox); } }, true); @@ -53,12 +54,7 @@ public abstract class AbstractLockingUidProvider implements UidProvider{ /** * Generate the next uid to use while the {@link Mailbox} is locked - * - * @param session - * @param mailbox - * @return nextUid - * @throws MailboxException */ - protected abstract long lockedNextUid(MailboxSession session, Mailbox mailbox) throws MailboxException; + protected abstract MessageUid lockedNextUid(MailboxSession session, Mailbox mailbox) throws MailboxException; } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java index 59361b8..006fee5 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java @@ -25,6 +25,7 @@ import java.util.List; import javax.mail.Flags; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MessageMetaData; import org.apache.james.mailbox.model.MessageRange; @@ -34,6 +35,8 @@ import org.apache.james.mailbox.store.mail.model.Mailbox; import org.apache.james.mailbox.store.mail.model.MailboxMessage; import org.apache.james.mailbox.store.transaction.TransactionalMapper; +import com.google.common.base.Optional; + /** * Abstract base class for {@link MessageMapper} implementation * which already takes care of most uid / mod-seq handling. @@ -50,23 +53,17 @@ public abstract class AbstractMessageMapper extends TransactionalMapper implemen this.modSeqProvider = modSeqProvider; } - /** - * @see org.apache.james.mailbox.store.mail.MessageMapper#getHighestModSeq(org.apache.james.mailbox.store.mail.model.Mailbox) - */ + @Override public long getHighestModSeq(Mailbox mailbox) throws MailboxException { return modSeqProvider.highestModSeq(mailboxSession, mailbox); } - /** - * @see org.apache.james.mailbox.store.mail.MessageMapper#getLastUid(org.apache.james.mailbox.store.mail.model.Mailbox) - */ - public long getLastUid(Mailbox mailbox) throws MailboxException { + @Override + public Optional<MessageUid> getLastUid(Mailbox mailbox) throws MailboxException { return uidProvider.lastUid(mailboxSession, mailbox); } - /** - * @see org.apache.james.mailbox.store.mail.MessageMapper#updateFlags(org.apache.james.mailbox.store.mail.model.Mailbox, javax.mail.Flags, boolean, boolean, org.apache.james.mailbox.model.MessageRange) - */ + @Override public Iterator<UpdatedFlags> updateFlags(Mailbox mailbox, FlagsUpdateCalculator flagsUpdateCalculator, MessageRange set) throws MailboxException { final List<UpdatedFlags> updatedFlags = new ArrayList<UpdatedFlags>(); Iterator<MailboxMessage> messages = findInMailbox(mailbox, set, FetchType.Metadata, -1); @@ -100,9 +97,7 @@ public abstract class AbstractMessageMapper extends TransactionalMapper implemen } - /** - * @see org.apache.james.mailbox.store.mail.MessageMapper#add(org.apache.james.mailbox.store.mail.model.Mailbox, MailboxMessage) - */ + @Override public MessageMetaData add(Mailbox mailbox, MailboxMessage message) throws MailboxException { message.setUid(uidProvider.nextUid(mailboxSession, mailbox)); @@ -117,11 +112,9 @@ public abstract class AbstractMessageMapper extends TransactionalMapper implemen } - /** - * @see org.apache.james.mailbox.store.mail.MessageMapper#copy(org.apache.james.mailbox.store.mail.model.Mailbox, MailboxMessage) - */ + @Override public MessageMetaData copy(Mailbox mailbox, MailboxMessage original) throws MailboxException { - long uid = uidProvider.nextUid(mailboxSession, mailbox); + MessageUid uid = uidProvider.nextUid(mailboxSession, mailbox); long modSeq = -1; if (modSeqProvider != null) { modSeq = modSeqProvider.nextModSeq(mailboxSession, mailbox); @@ -131,30 +124,15 @@ public abstract class AbstractMessageMapper extends TransactionalMapper implemen return metaData; } - - - /** * Save the {@link MailboxMessage} for the given {@link Mailbox} and return the {@link MessageMetaData} - * - * @param mailbox - * @param message - * @return metaData - * @throws MailboxException */ protected abstract MessageMetaData save(Mailbox mailbox, MailboxMessage message) throws MailboxException; /** * Copy the MailboxMessage to the Mailbox, using the given uid and modSeq for the new MailboxMessage - * - * @param mailbox - * @param uid - * @param modSeq - * @param original - * @return metaData - * @throws MailboxException */ - protected abstract MessageMetaData copy(Mailbox mailbox, long uid, long modSeq, MailboxMessage original) throws MailboxException; + protected abstract MessageMetaData copy(Mailbox mailbox, MessageUid uid, long modSeq, MailboxMessage original) throws MailboxException; } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java index 94bac52..f4486c5 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/MessageMapper.java @@ -22,6 +22,7 @@ import java.util.Iterator; import java.util.List; import java.util.Map; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MessageMetaData; import org.apache.james.mailbox.model.MessageRange; @@ -32,6 +33,8 @@ import org.apache.james.mailbox.store.mail.model.MailboxMessage; import org.apache.james.mailbox.store.mail.model.Property; import org.apache.james.mailbox.store.transaction.Mapper; +import com.google.common.base.Optional; + /** * Maps {@link MailboxMessage} in a {@link org.apache.james.mailbox.MessageManager}. A {@link MessageMapper} has a lifecycle from the start of a request * to the end of the request. @@ -55,12 +58,8 @@ public interface MessageMapper extends Mapper { /** * Return a {@link Iterator} which holds the uids for all deleted Messages for the given {@link MessageRange} which are marked for deletion * The list must be ordered - * @param mailbox - * @param set - * @return uids - * @throws MailboxException */ - Map<Long, MessageMetaData> expungeMarkedForDeletionInMailbox( + Map<MessageUid, MessageMetaData> expungeMarkedForDeletionInMailbox( Mailbox mailbox, MessageRange set) throws MailboxException; @@ -102,17 +101,13 @@ public interface MessageMapper extends Mapper { * @return uid or null * @throws StorageException */ - Long findFirstUnseenMessageUid(Mailbox mailbox) throws MailboxException; + MessageUid findFirstUnseenMessageUid(Mailbox mailbox) throws MailboxException; /** * Return a List of {@link MailboxMessage} which are recent. * The list must be ordered by the {@link MailboxMessage} uid. - * - * @param mailbox - * @return recentList - * @throws StorageException */ - List<Long> findRecentMessageUidsInMailbox(Mailbox mailbox) throws MailboxException; + List<MessageUid> findRecentMessageUidsInMailbox(Mailbox mailbox) throws MailboxException; /** @@ -161,21 +156,13 @@ public interface MessageMapper extends Mapper { /** - * Return the last uid which were used for storing a MailboxMessage in the {@link Mailbox} - * - * @param mailbox - * @return lastUid - * @throws MailboxException + * Return the last uid which were used for storing a MailboxMessage in the {@link Mailbox} or null if no */ - long getLastUid(Mailbox mailbox) throws MailboxException; + Optional<MessageUid> getLastUid(Mailbox mailbox) throws MailboxException; /** * Return the higest mod-sequence which were used for storing a MailboxMessage in the {@link Mailbox} - * - * @param mailbox - * @return lastUid - * @throws MailboxException */ long getHighestModSeq(Mailbox mailbox) throws MailboxException; http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/UidProvider.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/UidProvider.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/UidProvider.java index 870d1a6..cdff7cf 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/UidProvider.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/UidProvider.java @@ -19,9 +19,12 @@ package org.apache.james.mailbox.store.mail; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.store.mail.model.Mailbox; +import com.google.common.base.Optional; + /** * Take care of provide uids for a given {@link Mailbox}. Be aware that implementations * need to be thread-safe! @@ -34,21 +37,11 @@ public interface UidProvider { * Return the next uid which can be used while append a MailboxMessage to the {@link Mailbox}. * Its important that the returned uid is higher then the last used and that the next call of this method does return a higher * one - * - * @param session - * @param mailbox - * @return nextUid - * @throws MailboxException */ - long nextUid(MailboxSession session, Mailbox mailbox) throws MailboxException; + MessageUid nextUid(MailboxSession session, Mailbox mailbox) throws MailboxException; /** * Return the last uid which were used for storing a MailboxMessage in the {@link Mailbox} - * - * @param session - * @param mailbox - * @return lastUid - * @throws MailboxException */ - long lastUid(MailboxSession session, Mailbox mailbox) throws MailboxException; + Optional<MessageUid> lastUid(MailboxSession session, Mailbox mailbox) throws MailboxException; } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DefaultMessageId.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DefaultMessageId.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DefaultMessageId.java index 46b65fc..93be2f9 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DefaultMessageId.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DefaultMessageId.java @@ -18,6 +18,7 @@ ****************************************************************/ package org.apache.james.mailbox.store.mail.model; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.model.MailboxId; import com.google.common.base.Objects; @@ -26,9 +27,9 @@ import com.google.common.base.Preconditions; public class DefaultMessageId implements MessageId { private final MailboxId mailboxId; - private final long messageUid; + private final MessageUid messageUid; - public DefaultMessageId(MailboxId mailboxId, long messageUid) { + public DefaultMessageId(MailboxId mailboxId, MessageUid messageUid) { Preconditions.checkNotNull(mailboxId); this.mailboxId = mailboxId; this.messageUid = messageUid; @@ -36,7 +37,7 @@ public class DefaultMessageId implements MessageId { @Override public String serialize() { - return String.format("%s-%d", mailboxId.serialize(), messageUid); + return String.format("%s-%d", mailboxId.serialize(), messageUid.asLong()); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DelegatingMailboxMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DelegatingMailboxMessage.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DelegatingMailboxMessage.java index 101c56b..a0128b1 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DelegatingMailboxMessage.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/DelegatingMailboxMessage.java @@ -26,12 +26,9 @@ import java.util.List; import javax.mail.Flags; import org.apache.james.mailbox.model.MessageAttachment; -import org.apache.james.mailbox.store.mail.model.impl.MessageUidComparator; public abstract class DelegatingMailboxMessage implements MailboxMessage { - private static final MessageUidComparator MESSAGE_UID_COMPARATOR = new MessageUidComparator(); - private final Message message; protected DelegatingMailboxMessage(Message message) { @@ -40,7 +37,7 @@ public abstract class DelegatingMailboxMessage implements MailboxMessage { @Override public int compareTo(MailboxMessage other) { - return MESSAGE_UID_COMPARATOR.compare(this, other); + return this.getUid().compareTo(other.getUid()); } @Override http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java index 647de53..2033917 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/MailboxMessage.java @@ -20,6 +20,7 @@ package org.apache.james.mailbox.store.mail.model; import javax.mail.Flags; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.model.MailboxId; /** @@ -38,18 +39,14 @@ public interface MailboxMessage extends Message, Comparable<MailboxMessage> { /** * Return the uid - * - * @return uid */ - long getUid(); + MessageUid getUid(); /** * Set the uid for the message. This must be called before the message is added to the store * and must be unique / sequential. - * - * @param uid */ - void setUid(long uid); + void setUid(MessageUid uid); http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageUidComparator.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageUidComparator.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageUidComparator.java deleted file mode 100644 index 1c62ede..0000000 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/MessageUidComparator.java +++ /dev/null @@ -1,31 +0,0 @@ -/**************************************************************** - * Licensed to the Apache Software Foundation (ASF) under one * - * or more contributor license agreements. See the NOTICE file * - * distributed with this work for additional information * - * regarding copyright ownership. The ASF licenses this file * - * to you under the Apache License, Version 2.0 (the * - * "License"); you may not use this file except in compliance * - * with the License. You may obtain a copy of the License at * - * * - * http://www.apache.org/licenses/LICENSE-2.0 * - * * - * Unless required by applicable law or agreed to in writing, * - * software distributed under the License is distributed on an * - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY * - * KIND, either express or implied. See the License for the * - * specific language governing permissions and limitations * - * under the License. * - ****************************************************************/ -package org.apache.james.mailbox.store.mail.model.impl; - -import java.util.Comparator; - -import org.apache.james.mailbox.store.mail.model.MailboxMessage; - -public class MessageUidComparator implements Comparator<MailboxMessage> { - - @Override - public int compare(MailboxMessage m1, MailboxMessage m2) { - return Long.valueOf(m1.getUid()).compareTo(m2.getUid()); - } -} http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessage.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessage.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessage.java index fd465d7..04d660f 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessage.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/mail/model/impl/SimpleMailboxMessage.java @@ -28,6 +28,7 @@ import javax.mail.internet.SharedInputStream; import javax.mail.util.SharedByteArrayInputStream; import org.apache.commons.io.IOUtils; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MessageAttachment; @@ -35,6 +36,7 @@ import org.apache.james.mailbox.store.mail.model.DelegatingMailboxMessage; import org.apache.james.mailbox.store.mail.model.MailboxMessage; import com.google.common.base.MoreObjects; +import com.google.common.base.Objects; import com.google.common.collect.ImmutableList; import com.google.common.primitives.Ints; @@ -59,7 +61,7 @@ public class SimpleMailboxMessage extends DelegatingMailboxMessage { } } - private long uid; + private MessageUid uid; private final MailboxId mailboxId; private boolean answered; private boolean deleted; @@ -104,7 +106,7 @@ public class SimpleMailboxMessage extends DelegatingMailboxMessage { return mailboxId; } - public long getUid() { + public MessageUid getUid() { return uid; } @@ -140,7 +142,7 @@ public class SimpleMailboxMessage extends DelegatingMailboxMessage { this.modSeq = modSeq; } - public void setUid(long uid) { + public void setUid(MessageUid uid) { this.uid = uid; } @@ -156,24 +158,16 @@ public class SimpleMailboxMessage extends DelegatingMailboxMessage { @Override public int hashCode() { - final int PRIME = 31; - int result = 1; - result = PRIME * result + (int) (uid ^ (uid >>> 32)); - return result; + return Objects.hashCode(uid); } @Override public boolean equals(Object obj) { - if (this == obj) - return true; - if (obj == null) - return false; - if (getClass() != obj.getClass()) - return false; - final SimpleMailboxMessage other = (SimpleMailboxMessage) obj; - if (uid != other.uid) - return false; - return true; + if (obj instanceof SimpleMailboxMessage) { + SimpleMailboxMessage other = (SimpleMailboxMessage) obj; + return Objects.equal(this.uid, other.uid); + } + return false; } public String toString() { http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java index df3f0cc..9e48071 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/quota/ListeningCurrentQuotaUpdater.java @@ -21,6 +21,7 @@ package org.apache.james.mailbox.store.quota; import java.util.List; import org.apache.james.mailbox.MailboxListener; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.QuotaRoot; import org.apache.james.mailbox.quota.QuotaRootResolver; @@ -69,8 +70,8 @@ public class ListeningCurrentQuotaUpdater implements MailboxListener, QuotaUpdat private void handleExpungedEvent(Expunged expunged, QuotaRoot quotaRoot) throws MailboxException { long addedSize = 0; long addedCount = 0; - List<Long> uids = expunged.getUids(); - for (Long uid : uids) { + List<MessageUid> uids = expunged.getUids(); + for (MessageUid uid : uids) { addedSize += expunged.getMetaData(uid).getSize(); addedCount++; } @@ -83,8 +84,8 @@ public class ListeningCurrentQuotaUpdater implements MailboxListener, QuotaUpdat private void handleAddedEvent(Added added, QuotaRoot quotaRoot) throws MailboxException { long addedSize = 0; long addedCount = 0; - List<Long> uids = added.getUids(); - for (Long uid : uids) { + List<MessageUid> uids = added.getUids(); + for (MessageUid uid : uids) { addedSize += added.getMetaData(uid).getSize(); addedCount++; } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java index 72b905b..a1c9275 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/LazyMessageSearchIndex.java @@ -27,6 +27,7 @@ import java.util.concurrent.ConcurrentHashMap; import org.apache.james.mailbox.MailboxManager.SearchCapabilities; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.exception.UnsupportedSearchException; import org.apache.james.mailbox.model.MailboxId; @@ -76,7 +77,7 @@ public class LazyMessageSearchIndex extends ListeningMessageSearchIndex { } @Override - public void delete(MailboxSession session, Mailbox mailbox, List<Long> expungedUids) throws MailboxException { + public void delete(MailboxSession session, Mailbox mailbox, List<MessageUid> expungedUids) throws MailboxException { index.delete(session, mailbox, expungedUids); } @@ -92,7 +93,7 @@ public class LazyMessageSearchIndex extends ListeningMessageSearchIndex { * */ @Override - public Iterator<Long> search(MailboxSession session, Mailbox mailbox, SearchQuery searchQuery) throws MailboxException { + public Iterator<MessageUid> search(MailboxSession session, Mailbox mailbox, SearchQuery searchQuery) throws MailboxException { Preconditions.checkArgument(session != null, "'session' is mandatory"); MailboxId id = mailbox.getMailboxId(); @@ -127,7 +128,7 @@ public class LazyMessageSearchIndex extends ListeningMessageSearchIndex { @Override - public Map<MailboxId, Collection<Long>> search(MailboxSession session, MultimailboxesSearchQuery searchQuery) throws MailboxException { + public Map<MailboxId, Collection<MessageUid>> search(MailboxSession session, MultimailboxesSearchQuery searchQuery) throws MailboxException { throw new UnsupportedSearchException(); } } http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java index 0495398..6cc40b9 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/ListeningMessageSearchIndex.java @@ -23,6 +23,7 @@ import java.util.List; import org.apache.james.mailbox.MailboxListener; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MessageRange; import org.apache.james.mailbox.model.UpdatedFlags; @@ -75,7 +76,7 @@ public abstract class ListeningMessageSearchIndex implements MessageSearchIndex, EventFactory.AddedImpl added = (EventFactory.AddedImpl) event; final Mailbox mailbox = added.getMailbox(); - for (Long next : (Iterable<Long>) added.getUids()) { + for (MessageUid next : (Iterable<MessageUid>) added.getUids()) { Iterator<MailboxMessage> messages = factory.getMessageMapper(session).findInMailbox(mailbox, MessageRange.one(next), FetchType.Full, -1); while (messages.hasNext()) { MailboxMessage message = messages.next(); @@ -131,7 +132,7 @@ public abstract class ListeningMessageSearchIndex implements MessageSearchIndex, * @param expungedUids UIDS to be deleted * @throws MailboxException */ - public abstract void delete(MailboxSession session, Mailbox mailbox, List<Long> expungedUids) throws MailboxException; + public abstract void delete(MailboxSession session, Mailbox mailbox, List<MessageUid> expungedUids) throws MailboxException; /** * Delete the messages contained in the given {@link Mailbox} from the index http://git-wip-us.apache.org/repos/asf/james-project/blob/34242a5b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearchIndex.java ---------------------------------------------------------------------- diff --git a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearchIndex.java b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearchIndex.java index b81607d..6324898 100644 --- a/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearchIndex.java +++ b/mailbox/store/src/main/java/org/apache/james/mailbox/store/search/MessageSearchIndex.java @@ -26,6 +26,7 @@ import java.util.Map; import org.apache.james.mailbox.MailboxManager; import org.apache.james.mailbox.MailboxSession; +import org.apache.james.mailbox.MessageUid; import org.apache.james.mailbox.exception.MailboxException; import org.apache.james.mailbox.model.MailboxId; import org.apache.james.mailbox.model.MultimailboxesSearchQuery; @@ -44,12 +45,12 @@ public interface MessageSearchIndex { /** * Return all uids of the previous indexed {@link Mailbox}'s which match the {@link SearchQuery} */ - Iterator<Long> search(MailboxSession session, Mailbox mailbox, SearchQuery searchQuery) throws MailboxException; + Iterator<MessageUid> search(MailboxSession session, Mailbox mailbox, SearchQuery searchQuery) throws MailboxException; /** * Return all uids of all {@link Mailbox}'s the current user has access to which match the {@link SearchQuery} */ - Map<MailboxId, Collection<Long>> search(MailboxSession session, MultimailboxesSearchQuery searchQuery) throws MailboxException; + Map<MailboxId, Collection<MessageUid>> search(MailboxSession session, MultimailboxesSearchQuery searchQuery) throws MailboxException; EnumSet<MailboxManager.SearchCapabilities> getSupportedCapabilities(); --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
