Author: norman
Date: Tue May 31 06:26:22 2011
New Revision: 1129513

URL: http://svn.apache.org/viewvc?rev=1129513&view=rev
Log:
Increase highestModSeq on expunge. See MAILBOX-74

Modified:
    
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java

Modified: 
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java
URL: 
http://svn.apache.org/viewvc/james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java?rev=1129513&r1=1129512&r2=1129513&view=diff
==============================================================================
--- 
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java
 (original)
+++ 
james/mailbox/trunk/store/src/main/java/org/apache/james/mailbox/store/mail/AbstractMessageMapper.java
 Tue May 31 06:26:22 2011
@@ -168,9 +168,9 @@ public abstract class AbstractMessageMap
         Map<Long, MessageMetaData> data = expungeMarkedForDeletion(mailbox, 
set);
         if (data.isEmpty() == false) {
 
-            // Increase the mod-sequence  and the uid for this mailbox and 
save it permanent way
+            // Increase the mod-sequence and save it with the uid for this 
mailbox in a permanent way
             // See MAILBOX-75 
-            saveSequences(mailbox, getLastUid(mailbox), 
getHighestModSeq(mailbox));
+            saveSequences(mailbox, getLastUid(mailbox), nextModSeq(mailbox));
 
         }
         if (index != null) {
@@ -187,7 +187,7 @@ public abstract class AbstractMessageMap
      * (non-Javadoc)
      * @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.MessageRange)
      */
-    public Iterator<UpdatedFlags> updateFlags(final Mailbox<Id> mailbox, final 
Flags flags, final boolean value, final boolean replace, MessageRange set) 
throws MailboxException {
+    public Iterator<UpdatedFlags> updateFlags(final Mailbox<Id> mailbox, final 
Flags flags, final boolean value, final boolean replace, final MessageRange 
set) throws MailboxException {
         final List<UpdatedFlags> updatedFlags = new ArrayList<UpdatedFlags>();
         findInMailbox(mailbox, set, new MailboxMembershipCallback<Id>() {
 
@@ -215,12 +215,12 @@ public abstract class AbstractMessageMap
                         // increase the mod-seq as we changed the flags
                         member.setModSeq(modSeq);
                         save(mailbox, member);
+
                         
 
-                        if (index != null) {
+                        if (replace == false && index != null) {
                             index.update(mailboxSession, mailbox, 
MessageRange.one(member.getUid()), newFlags);
                         }
-
                     }
 
                     
@@ -230,6 +230,13 @@ public abstract class AbstractMessageMap
                     
 
                 }
+                
+
+                // as it was a replace operation we can just use the given 
message for update the index
+                if (replace && index != null) {
+                    index.update(mailboxSession, mailbox, set, flags);
+                }
+                
             }
         });
 



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to