Author: norman
Date: Mon May  2 08:44:50 2011
New Revision: 1098511

URL: http://svn.apache.org/viewvc?rev=1098511&view=rev
Log:
Send FLAGS / PERMANENTFLAGS responses for new flags/keywords even if 
FLAGS.SILENT was used. See IMAP-303

Modified:
    
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
    
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/StoreProcessor.java
    
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/MailboxEventAnalyser.java

Modified: 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java?rev=1098511&r1=1098510&r2=1098511&view=diff
==============================================================================
--- 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
 (original)
+++ 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/AbstractSelectionProcessor.java
 Mon May  2 08:44:50 2011
@@ -188,6 +188,11 @@ abstract class AbstractSelectionProcesso
             applicableFlags.add(mr.getFlags());
             uids.add(mr.getUid());
         }
+        
+        
+        // \RECENT is not a applicable flag in imap so remove it from the list
+        applicableFlags.remove(Flags.Flag.RECENT);
+        
         final SelectedMailbox sessionMailbox = new 
SelectedMailboxImpl(getMailboxManager(), uids.iterator(),applicableFlags,  
session, path);
         session.selected(sessionMailbox);
         return sessionMailbox;

Modified: 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/StoreProcessor.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/StoreProcessor.java?rev=1098511&r1=1098510&r2=1098511&view=diff
==============================================================================
--- 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/StoreProcessor.java
 (original)
+++ 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/StoreProcessor.java
 Mon May  2 08:44:50 2011
@@ -76,16 +76,16 @@ public class StoreProcessor extends Abst
                 if (messageSet != null) {
                     final MailboxSession mailboxSession = 
ImapSessionUtils.getMailboxSession(session);
                     final Map<Long, Flags> flagsByUid = 
mailbox.setFlags(flags, value, replace, messageSet, mailboxSession);
-
+                    // As the STORE command is allowed to create a new 
"flag/keyword", we need to send a FLAGS and PERMANENTFLAGS response before the 
FETCH response
+                    // if some new flag/keyword was used
+                    // See IMAP-303
+                    if (selected.hasNewApplicableFlags()) {
+                        flags(responder, selected);
+                        permanentFlags(responder, mailbox.getMetaData(false, 
mailboxSession, FetchGroup.NO_COUNT), selected);
+                    }
+                    
                     if (!silent) {
-                        // As the STORE command is allowed to create a new 
"flag/keyword", we need to send a FLAGS and PERMANENTFLAGS response before the 
FETCH response
-                        // if some new flag/keyword was used
-                        // See IMAP-303
-                        if (selected.hasNewApplicableFlags()) {
-                            flags(responder, selected);
-                            permanentFlags(responder, 
mailbox.getMetaData(false, mailboxSession, FetchGroup.NO_COUNT), selected);
-                            selected.resetNewApplicableFlags();
-                        }
+     
                         for (Map.Entry<Long, Flags> entry : 
flagsByUid.entrySet()) {
                             final long uid = entry.getKey();
                             final int msn = selected.msn(uid);
@@ -111,6 +111,7 @@ public class StoreProcessor extends Abst
                         }
                     }
                 }
+
                 
             }
             final boolean omitExpunged = (!useUids);

Modified: 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/MailboxEventAnalyser.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/MailboxEventAnalyser.java?rev=1098511&r1=1098510&r2=1098511&view=diff
==============================================================================
--- 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/MailboxEventAnalyser.java
 (original)
+++ 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/base/MailboxEventAnalyser.java
 Mon May  2 08:44:50 2011
@@ -149,10 +149,12 @@ public class MailboxEventAnalyser extend
                         
                        for (int i = 0; i < flags.size(); i++) {
                           applicableFlags.add(flags.get(i).getNewFlags());
-                          
-                          // \RECENT is not a applicable flag in imap so 
remove it from the list
-                          applicableFlags.remove(Flags.Flag.RECENT);
+
                        }
+                       
+                       // \RECENT is not a applicable flag in imap so remove 
it from the list
+                       applicableFlags.remove(Flags.Flag.RECENT);
+                       
                        if (size < applicableFlags.getSystemFlags().length) {
                           applicableFlagsChanged = true;
                        }



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

Reply via email to