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]