Author: wstrzalka
Date: Sat Sep 17 18:56:44 2011
New Revision: 1172050
URL: http://svn.apache.org/viewvc?rev=1172050&view=rev
Log:
Fix for preserving UID order when copying messages. See IMAP-340
Modified:
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MailboxEventDispatcher.java
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
Modified:
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MailboxEventDispatcher.java
URL:
http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MailboxEventDispatcher.java?rev=1172050&r1=1172049&r2=1172050&view=diff
==============================================================================
---
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MailboxEventDispatcher.java
(original)
+++
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/MailboxEventDispatcher.java
Sat Sep 17 18:56:44 2011
@@ -24,6 +24,7 @@ import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Set;
+import java.util.SortedMap;
import java.util.concurrent.CopyOnWriteArraySet;
import org.apache.james.mailbox.MailboxListener;
@@ -59,7 +60,7 @@ public class MailboxEventDispatcher<Id>
* @param sessionId
* @param path
*/
- public void added(MailboxSession session, Map<Long, MessageMetaData> uids,
Mailbox<Id> mailbox) {
+ public void added(MailboxSession session, SortedMap<Long, MessageMetaData>
uids, Mailbox<Id> mailbox) {
final AddedImpl added = new AddedImpl(session, mailbox, uids);
event(added);
}
@@ -133,10 +134,10 @@ public class MailboxEventDispatcher<Id>
public final class AddedImpl extends MailboxListener.Added {
- private Map<Long, MessageMetaData> added;
+ private SortedMap<Long, MessageMetaData> added;
private final Mailbox<Id> mailbox;
- public AddedImpl(final MailboxSession session, final Mailbox<Id>
mailbox, final Map<Long, MessageMetaData> added) {
+ public AddedImpl(final MailboxSession session, final Mailbox<Id>
mailbox, final SortedMap<Long, MessageMetaData> added) {
super(session, new StoreMailboxPath<Id>(mailbox));
this.added = added;
this.mailbox = mailbox;
Modified:
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
URL:
http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java?rev=1172050&r1=1172049&r2=1172050&view=diff
==============================================================================
---
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
(original)
+++
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/StoreMessageManager.java
Sat Sep 17 18:56:44 2011
@@ -326,7 +326,7 @@ public class StoreMessageManager<Id> imp
public Long execute() throws MailboxException {
MessageMetaData data = appendMessageToStore(message,
mailboxSession);
- Map<Long, MessageMetaData> uids = new HashMap<Long,
MessageMetaData>();
+ SortedMap<Long, MessageMetaData> uids = new TreeMap<Long,
MessageMetaData>();
uids.put(data.getUid(), data);
dispatcher.added(mailboxSession, uids, getMailboxEntity());
return data.getUid();
@@ -529,7 +529,7 @@ public class StoreMessageManager<Id> imp
@Override
public List<MessageRange> execute() throws MailboxException {
- Map<Long, MessageMetaData> copiedUids = copy(set,
toMailbox, session);
+ SortedMap<Long, MessageMetaData> copiedUids = copy(set,
toMailbox, session);
dispatcher.added(session, copiedUids,
toMailbox.getMailboxEntity());
return MessageRange.toRanges(new
ArrayList<Long>(copiedUids.keySet()));
}
@@ -663,11 +663,11 @@ public class StoreMessageManager<Id> imp
* (non-Javadoc)
* @see
org.apache.james.mailbox.store.AbstractStoreMessageManager#copy(org.apache.james.mailbox.MessageRange,
org.apache.james.mailbox.store.AbstractStoreMessageManager,
org.apache.james.mailbox.MailboxSession)
*/
- private Map<Long, MessageMetaData> copy(MessageRange set, final
StoreMessageManager<Id> to, final MailboxSession session) throws
MailboxException {
+ private SortedMap<Long, MessageMetaData> copy(MessageRange set, final
StoreMessageManager<Id> to, final MailboxSession session) throws
MailboxException {
try {
MessageMapper<Id> messageMapper =
mapperFactory.getMessageMapper(session);
- final Map<Long, MessageMetaData> copiedMessages = new
HashMap<Long, MessageMetaData>();
+ final SortedMap<Long, MessageMetaData> copiedMessages = new
TreeMap<Long, MessageMetaData>();
Iterator<Message<Id>> originalRows =
messageMapper.findInMailbox(mailbox, set, FetchType.Full, -1);
Iterator<MessageMetaData> ids = to.copy(originalRows, session);
while (ids.hasNext()) {
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]