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]

Reply via email to