You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by rd...@apache.org on 2008/03/22 20:31:25 UTC

svn commit: r640066 - in /james/server/trunk: core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/ experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/ imap-api/src/main/java/org/apache/james/...

Author: rdonkin
Date: Sat Mar 22 12:31:23 2008
New Revision: 640066

URL: http://svn.apache.org/viewvc?rev=640066&view=rev
Log:
RECENT redesign step 2: IMAP protocol layer now caches RECENT uids.

Modified:
    james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/Mailbox.java
    james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/AppendToSelected.test
    james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchEnvelope.test
    james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchHeaderFields.test
    james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchHeaderFieldsNot.test
    james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchInternalDate.test
    james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SearchAtoms.test
    james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SearchCombinations.test
    james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SelectAppend.test
    james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SelectUnseen.test
    james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/UidSearchAtoms.test
    james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/UidSearchCombinations.test
    james/server/trunk/imap-api/src/main/java/org/apache/james/api/imap/process/SelectedImapMailbox.java
    james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/SelectedMailboxSessionImpl.java
    james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractMailboxSelectionProcessor.java
    james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AppendProcessor.java
    james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/ExpungeProcessor.java
    james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MessageSearcher.java
    james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailbox.java

Modified: james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/Mailbox.java
URL: http://svn.apache.org/viewvc/james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/Mailbox.java?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/Mailbox.java (original)
+++ james/server/trunk/core-library/src/main/java/org/apache/james/mailboxmanager/mailbox/Mailbox.java Sat Mar 22 12:31:23 2008
@@ -35,7 +35,7 @@
      * @throws MailboxManagerException
      */
 
-    String getName() throws MailboxManagerException;
+    String getName();
 
     int getMessageCount(MailboxSession mailboxSession) throws MailboxManagerException;
 

Modified: james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/AppendToSelected.test
URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/AppendToSelected.test?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/AppendToSelected.test (original)
+++ james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/AppendToSelected.test Sat Mar 22 12:31:23 2008
@@ -56,7 +56,7 @@
 C: Hello Joe, could we change that to 4:00pm tomorrow?
 C:
 S: \* 2 EXISTS
-S: \* 1 RECENT
+S: \* 2 RECENT
 S: A007 OK APPEND completed.
 
 C: a1 DELETE appendBox

Modified: james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchEnvelope.test
URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchEnvelope.test?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchEnvelope.test (original)
+++ james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchEnvelope.test Sat Mar 22 12:31:23 2008
@@ -34,7 +34,7 @@
 C: Works!
 C: 
 S: \* 5 EXISTS
-S: \* 1 RECENT
+S: \* 5 RECENT
 S: A007 OK APPEND completed.
 
 C: f1 FETCH 1 (ENVELOPE)

Modified: james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchHeaderFields.test
URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchHeaderFields.test?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchHeaderFields.test (original)
+++ james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchHeaderFields.test Sat Mar 22 12:31:23 2008
@@ -59,9 +59,7 @@
 C: 
 C: - robert
 S: \* 2 EXISTS
-#TODO: FIX RECENT 
-#S: \* 2 RECENT
-S: \* 1 RECENT
+S: \* 2 RECENT
 S: A5 OK APPEND completed\.
 C: A6 APPEND testmailbox {668+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -93,9 +91,7 @@
 C: --1729--
 C: 
 S: \* 3 EXISTS
-# TODO: FIX RECENT
-# S: \* 3 RECENT
-S: \* 1 RECENT
+S: \* 3 RECENT
 S: A6 OK APPEND completed\.
 C: A7 APPEND testmailbox {765+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -133,9 +129,7 @@
 C: --1729--
 C: 
 S: \* 4 EXISTS
-# TODO: FIX RECENT
-# S: \* 4 RECENT
-S: \* 1 RECENT
+S: \* 4 RECENT
 S: A7 OK APPEND completed\.
 C: A8 APPEND testmailbox {1767+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -230,9 +224,7 @@
 C: --1729--
 C: 
 S: \* 5 EXISTS
-# TODO: FIX RECENT
-#S: \* 5 RECENT
-S: \* 1 RECENT
+S: \* 5 RECENT
 S: A8 OK APPEND completed\.
 C: A9 APPEND testmailbox {185+}
 C: From: John Smith <jo...@example.org>
@@ -243,9 +235,7 @@
 C: 
 C: Hello, World!
 S: \* 6 EXISTS
-# TODO: RECENT
-#S: \* 6 RECENT
-S: \* 1 RECENT
+S: \* 6 RECENT
 S: A9 OK APPEND completed\.
 C: A10 APPEND testmailbox {227+}
 C: From: John Smith <jo...@example.org>
@@ -257,9 +247,7 @@
 C: 
 C: Hello, World!
 S: \* 7 EXISTS
-# TODO: FIX RECENT
-#S: \* 7 RECENT
-S: \* 1 RECENT
+S: \* 7 RECENT
 S: A10 OK APPEND completed\.
 C: A11 APPEND testmailbox {185+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -270,9 +258,7 @@
 C: This is a very simple email.
 C: 
 S: \* 8 EXISTS
-# TODO: FIX RECENT
-#S: \* 8 RECENT
-S: \* 1 RECENT
+S: \* 8 RECENT
 S: A11 OK APPEND completed\.
 C: A12 APPEND testmailbox {318+}
 C: From: "Brian G. Hutton" <br...@example.org>
@@ -284,15 +270,11 @@
 C: 
 C: Rhubarb!
 S: \* 9 EXISTS
-# TODO: FIX RECENT
-#S: \* 9 RECENT
-S: \* 1 RECENT
+S: \* 9 RECENT
 S: A12 OK APPEND completed\.
 C: A13 SELECT testmailbox
 S: \* FLAGS \(\\Answered \\Deleted \\Draft \\Flagged \\Seen\)
 S: \* 9 EXISTS
-# TODO: FIX RECENT
-# S: \* 1 RECENT
 S: \* 0 RECENT
 S: \* OK \[UIDVALIDITY (.)*
 S: \* OK \[UNSEEN 1\] Message 1 is the first unseen

Modified: james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchHeaderFieldsNot.test
URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchHeaderFieldsNot.test?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchHeaderFieldsNot.test (original)
+++ james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchHeaderFieldsNot.test Sat Mar 22 12:31:23 2008
@@ -59,9 +59,7 @@
 C: 
 C: - robert
 S: \* 2 EXISTS
-# TODO: FIX RECENT
-#S: \* 2 RECENT
-S: \* 1 RECENT
+S: \* 2 RECENT
 S: A5 OK APPEND completed\.
 C: A6 APPEND testmailbox {668+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -93,9 +91,7 @@
 C: --1729--
 C: 
 S: \* 3 EXISTS
-# TODO: FIX RECENT
-#S: \* 3 RECENT
-S: \* 1 RECENT
+S: \* 3 RECENT
 S: A6 OK APPEND completed\.
 C: A7 APPEND testmailbox {765+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -133,9 +129,7 @@
 C: --1729--
 C: 
 S: \* 4 EXISTS
-# TODO: FIX RECENT
-#S: \* 4 RECENT
-S: \* 1 RECENT
+S: \* 4 RECENT
 S: A7 OK APPEND completed\.
 C: A8 APPEND testmailbox {1767+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -230,9 +224,7 @@
 C: --1729--
 C: 
 S: \* 5 EXISTS
-# TODO: FIX RECENT
-#S: \* 5 RECENT
-S: \* 1 RECENT
+S: \* 5 RECENT
 S: A8 OK APPEND completed\.
 C: A9 APPEND testmailbox {185+}
 C: From: John Smith <jo...@example.org>
@@ -243,9 +235,7 @@
 C: 
 C: Hello, World!
 S: \* 6 EXISTS
-# TODO: FIX RECENT
-#S: \* 6 RECENT
-S: \* 1 RECENT
+S: \* 6 RECENT
 S: A9 OK APPEND completed\.
 C: A10 APPEND testmailbox {227+}
 C: From: John Smith <jo...@example.org>
@@ -257,9 +247,7 @@
 C: 
 C: Hello, World!
 S: \* 7 EXISTS
-# TODO: FIX RECENT
-#S: \* 7 RECENT
-S: \* 1 RECENT
+S: \* 7 RECENT
 S: A10 OK APPEND completed\.
 C: A11 APPEND testmailbox {185+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -270,9 +258,7 @@
 C: This is a very simple email.
 C: 
 S: \* 8 EXISTS
-# TODO: FIX RECENT
-#S: \* 8 RECENT
-S: \* 1 RECENT
+S: \* 8 RECENT
 S: A11 OK APPEND completed\.
 C: A12 APPEND testmailbox {318+}
 C: From: "Brian G. Hutton" <br...@example.org>
@@ -284,9 +270,7 @@
 C: 
 C: Rhubarb!
 S: \* 9 EXISTS
-# TODO: FIX RECENT
-#S: \* 9 RECENT
-S: \* 1 RECENT
+S: \* 9 RECENT
 S: A12 OK APPEND completed\.
 C: A13 SELECT testmailbox
 S: \* FLAGS \(\\Answered \\Deleted \\Draft \\Flagged \\Seen\)

Modified: james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchInternalDate.test
URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchInternalDate.test?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchInternalDate.test (original)
+++ james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/FetchInternalDate.test Sat Mar 22 12:31:23 2008
@@ -30,7 +30,7 @@
 C: Hello Joe, could we change that to 4:00pm tomorrow?
 C:
 S: \* 5 EXISTS
-S: \* 1 RECENT
+S: \* 5 RECENT
 S: A004 OK APPEND completed.
 
 C: F11 FETCH 5 INTERNALDATE

Modified: james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SearchAtoms.test
URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SearchAtoms.test?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SearchAtoms.test (original)
+++ james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SearchAtoms.test Sat Mar 22 12:31:23 2008
@@ -58,9 +58,7 @@
 C: 
 C: - robert
 S: \* 2 EXISTS
-#TODO FIX RECENT
-#S: \* 2 RECENT
-S: \* 1 RECENT
+S: \* 2 RECENT
 S: A5 OK APPEND completed\.
 C: A6 APPEND testmailbox {668+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -92,9 +90,7 @@
 C: --1729--
 C: 
 S: \* 3 EXISTS
-# TODO:FIX RECENT
-# S: \* 3 RECENT
-S: \* 1 RECENT
+S: \* 3 RECENT
 S: A6 OK APPEND completed\.
 C: A7 APPEND testmailbox {765+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -132,9 +128,7 @@
 C: --1729--
 C: 
 S: \* 4 EXISTS
-# TODO: FIX RECENT
-#S: \* 4 RECENT
-S: \* 1 RECENT
+S: \* 4 RECENT
 S: A7 OK APPEND completed\.
 C: A8 APPEND testmailbox {1767+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -229,9 +223,7 @@
 C: --1729--
 C: 
 S: \* 5 EXISTS
-# TODO: FIX RECENT
-#S: \* 5 RECENT
-S: \* 1 RECENT
+S: \* 5 RECENT
 S: A8 OK APPEND completed\.
 C: A9 APPEND testmailbox {185+}
 C: From: John Smith <jo...@example.org>
@@ -242,9 +234,7 @@
 C: 
 C: Hello, World!
 S: \* 6 EXISTS
-# TODO: FIX RECENT
-#S: \* 6 RECENT
-S: \* 1 RECENT
+S: \* 6 RECENT
 S: A9 OK APPEND completed\.
 C: A10 APPEND testmailbox {227+}
 C: From: John Smith <jo...@example.org>
@@ -256,9 +246,7 @@
 C: 
 C: Hello, World!
 S: \* 7 EXISTS
-# TODO: RECENT
-#S: \* 7 RECENT
-S: \* 1 RECENT
+S: \* 7 RECENT
 S: A10 OK APPEND completed\.
 C: A11 APPEND testmailbox {185+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -269,9 +257,7 @@
 C: This is a very simple email.
 C: 
 S: \* 8 EXISTS
-# TODO: RECENT
-#S: \* 8 RECENT
-S: \* 1 RECENT
+S: \* 8 RECENT
 S: A11 OK APPEND completed\.
 C: A12 APPEND testmailbox {318+}
 C: From: "Brian G. Hutton" <br...@example.org>
@@ -283,9 +269,7 @@
 C: 
 C: Rhubarb!
 S: \* 9 EXISTS
-# TODO: RECENT
-#S: \* 9 RECENT
-S: \* 1 RECENT
+S: \* 9 RECENT
 S: A12 OK APPEND completed\.
 C: A13 APPEND testmailbox {12272+}
 C:                                                                                                                                                                                                                                                                                                        
@@ -497,9 +481,7 @@
 C: ------=_Part_3998_1661991.1205261618747--
 C: 
 S: \* 10 EXISTS
-#TODO:RECENT
-#S: \* 10 RECENT
-S: \* 1 RECENT
+S: \* 10 RECENT
 S: A13 OK APPEND completed\.
 C: A14 APPEND testmailbox {3661+}
 C:                                                                                                                                                                                                                                                                                                      
@@ -594,9 +576,7 @@
 C: 
 C: 
 S: \* 11 EXISTS
-#TODO: RECENT
-#S: \* 11 RECENT
-S: \* 1 RECENT
+S: \* 11 RECENT
 S: A14 OK APPEND completed\.
 C: A15 APPEND testmailbox {4387+}
 C:                                                                                                                                                                                                                     
@@ -695,9 +675,7 @@
 C: 
 C: --=-iC8rnNDvTPHypqsz+j7t--
 S: \* 12 EXISTS
-# TODO:RECENT
-#S: \* 12 RECENT
-S: \* 1 RECENT
+S: \* 12 RECENT
 S: A15 OK APPEND completed\.
 C: A16 APPEND testmailbox {302+}
 C: From: Samual Smith <sa...@example.org>
@@ -711,9 +689,7 @@
 C: 
 C: Rhubard, I say!
 S: \* 13 EXISTS
-#TODO: RECENT
-#S: \* 13 RECENT
-S: \* 1 RECENT
+S: \* 13 RECENT
 S: A16 OK APPEND completed\.
 C: A17 APPEND testmailbox {404+}
 C: Resent-From: John Smith <jo...@example.org>
@@ -728,9 +704,7 @@
 C: 
 C: Rhubard or custard? Rhubard AND custard!
 S: \* 14 EXISTS
-# TODO:RECENT
-#S: \* 14 RECENT
-S: \* 1 RECENT
+S: \* 14 RECENT
 S: A17 OK APPEND completed\.
 C: A18 APPEND testmailbox {429+}
 C: Received: from alpha.beta
@@ -749,9 +723,7 @@
 C: Rhubard! Rhubard! Rhubard!
 C: 
 S: \* 15 EXISTS
-#TODO: RECENT
-#S: \* 15 RECENT
-S: \* 1 RECENT
+S: \* 15 RECENT
 S: A18 OK APPEND completed\.
 C: A19 APPEND testmailbox {217+}
 C: From: Timothy Taylor <ti...@example.org>
@@ -763,9 +735,7 @@
 C: Custard? Rhubard!
 C: 
 S: \* 16 EXISTS
-# TODO: RECENT
-#S: \* 16 RECENT
-S: \* 1 RECENT
+S: \* 16 RECENT
 S: A19 OK APPEND completed\.
 C: A20 APPEND testmailbox {14862+}
 C: Return-Path: <ro...@gmail.com>
@@ -1045,9 +1015,7 @@
 C: 
 C: 
 S: \* 17 EXISTS
-#TODO:RECENT
-#S: \* 17 RECENT
-S: \* 1 RECENT
+S: \* 17 RECENT
 S: A20 OK APPEND completed\.
 C: A21 APPEND testmailbox {14154+}
 C: Return-Path: <ro...@gmail.com>
@@ -1288,9 +1256,7 @@
 C: 
 C: 
 S: \* 18 EXISTS
-#TODO: RECENT
-#S: \* 18 RECENT
-S: \* 1 RECENT
+S: \* 18 RECENT
 S: A21 OK APPEND completed\.
 C: A22 APPEND testmailbox {14996+}
 C: Return-Path: <ro...@gmail.com>
@@ -1544,9 +1510,7 @@
 C: 
 C: 
 S: \* 19 EXISTS
-#TODO: RECENT
-#S: \* 19 RECENT
-S: \* 1 RECENT
+S: \* 19 RECENT
 S: A22 OK APPEND completed\.
 C: A23 STORE 1:9  +FLAGS (\FLAGGED)
 S: \* 1 FETCH \(FLAGS \(\\Flagged\)\)

Modified: james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SearchCombinations.test
URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SearchCombinations.test?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SearchCombinations.test (original)
+++ james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SearchCombinations.test Sat Mar 22 12:31:23 2008
@@ -58,9 +58,7 @@
 C: 
 C: - robert
 S: \* 2 EXISTS
-# TODO: RECENT
-# S: \* 2 RECENT
-S: \* 1 RECENT
+S: \* 2 RECENT
 S: A5 OK APPEND completed\.
 C: A6 APPEND testmailbox {668+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -92,9 +90,7 @@
 C: --1729--
 C: 
 S: \* 3 EXISTS
-# TODO:RECENT
-#S: \* 3 RECENT
-S: \* 1 RECENT
+S: \* 3 RECENT
 S: A6 OK APPEND completed\.
 C: A7 APPEND testmailbox {765+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -132,9 +128,7 @@
 C: --1729--
 C: 
 S: \* 4 EXISTS
-# TODO: RECENT
-#S: \* 4 RECENT
-S: \* 1 RECENT
+S: \* 4 RECENT
 S: A7 OK APPEND completed\.
 C: A8 APPEND testmailbox {1767+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -229,9 +223,7 @@
 C: --1729--
 C: 
 S: \* 5 EXISTS
-# TODO: RECENT
-#S: \* 5 RECENT
-S: \* 1 RECENT
+S: \* 5 RECENT
 S: A8 OK APPEND completed\.
 C: A9 APPEND testmailbox {185+}
 C: From: John Smith <jo...@example.org>
@@ -242,9 +234,7 @@
 C: 
 C: Hello, World!
 S: \* 6 EXISTS
-# TODO: RECENT
-#S: \* 6 RECENT
-S: \* 1 RECENT
+S: \* 6 RECENT
 S: A9 OK APPEND completed\.
 C: A10 APPEND testmailbox {227+}
 C: From: John Smith <jo...@example.org>
@@ -256,9 +246,7 @@
 C: 
 C: Hello, World!
 S: \* 7 EXISTS
-# TODO: RECENT
-#S: \* 7 RECENT
-S: \* 1 RECENT
+S: \* 7 RECENT
 S: A10 OK APPEND completed\.
 C: A11 APPEND testmailbox {185+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -269,9 +257,7 @@
 C: This is a very simple email.
 C: 
 S: \* 8 EXISTS
-# TODO: RECENT
-#S: \* 8 RECENT
-S: \* 1 RECENT
+S: \* 8 RECENT
 S: A11 OK APPEND completed\.
 C: A12 APPEND testmailbox {318+}
 C: From: "Brian G. Hutton" <br...@example.org>
@@ -283,9 +269,7 @@
 C: 
 C: Rhubarb!
 S: \* 9 EXISTS
-# TODO: RECENT
-#S: \* 9 RECENT
-S: \* 1 RECENT
+S: \* 9 RECENT
 S: A12 OK APPEND completed\.
 C: A13 APPEND testmailbox {12272+}
 C:                                                                                                                                                                                                                                                                                                        
@@ -497,9 +481,7 @@
 C: ------=_Part_3998_1661991.1205261618747--
 C: 
 S: \* 10 EXISTS
-# TODO: RECENT
-#S: \* 10 RECENT
-S: \* 1 RECENT
+S: \* 10 RECENT
 S: A13 OK APPEND completed\.
 C: A14 APPEND testmailbox {3661+}
 C:                                                                                                                                                                                                                                                                                                      
@@ -594,9 +576,7 @@
 C: 
 C: 
 S: \* 11 EXISTS
-# TODO: RECENT
-#S: \* 11 RECENT
-S: \* 1 RECENT
+S: \* 11 RECENT
 S: A14 OK APPEND completed\.
 C: A15 APPEND testmailbox {4387+}
 C:                                                                                                                                                                                                                     
@@ -695,9 +675,7 @@
 C: 
 C: --=-iC8rnNDvTPHypqsz+j7t--
 S: \* 12 EXISTS
-# TODO:RECENT
-#S: \* 12 RECENT
-S: \* 1 RECENT
+S: \* 12 RECENT
 S: A15 OK APPEND completed\.
 C: A16 APPEND testmailbox {302+}
 C: From: Samual Smith <sa...@example.org>
@@ -711,9 +689,7 @@
 C: 
 C: Rhubard, I say!
 S: \* 13 EXISTS
-# TODO: RECENT
-#S: \* 13 RECENT
-S: \* 1 RECENT
+S: \* 13 RECENT
 S: A16 OK APPEND completed\.
 C: A17 APPEND testmailbox {404+}
 C: Resent-From: John Smith <jo...@example.org>
@@ -728,9 +704,7 @@
 C: 
 C: Rhubard or custard? Rhubard AND custard!
 S: \* 14 EXISTS
-# TODO: RECENT
-#S: \* 14 RECENT
-S: \* 1 RECENT
+S: \* 14 RECENT
 S: A17 OK APPEND completed\.
 C: A18 APPEND testmailbox {429+}
 C: Received: from alpha.beta
@@ -749,9 +723,7 @@
 C: Rhubard! Rhubard! Rhubard!
 C: 
 S: \* 15 EXISTS
-# TODO: RECENT
-#S: \* 15 RECENT
-S: \* 1 RECENT
+S: \* 15 RECENT
 S: A18 OK APPEND completed\.
 C: A19 APPEND testmailbox {217+}
 C: From: Timothy Taylor <ti...@example.org>
@@ -763,9 +735,7 @@
 C: Custard? Rhubard!
 C: 
 S: \* 16 EXISTS
-#TODO: RECENT
-#S: \* 16 RECENT
-S: \* 1 RECENT
+S: \* 16 RECENT
 S: A19 OK APPEND completed\.
 C: A20 APPEND testmailbox {14862+}
 C: Return-Path: <ro...@gmail.com>
@@ -1045,9 +1015,7 @@
 C: 
 C: 
 S: \* 17 EXISTS
-# TODO:RECENT
-#S: \* 17 RECENT
-S: \* 1 RECENT
+S: \* 17 RECENT
 S: A20 OK APPEND completed\.
 C: A21 APPEND testmailbox {14154+}
 C: Return-Path: <ro...@gmail.com>
@@ -1288,9 +1256,7 @@
 C: 
 C: 
 S: \* 18 EXISTS
-# TODO: RECENT
-#S: \* 18 RECENT
-S: \* 1 RECENT
+S: \* 18 RECENT
 S: A21 OK APPEND completed\.
 C: A22 APPEND testmailbox {14996+}
 C: Return-Path: <ro...@gmail.com>
@@ -1544,9 +1510,7 @@
 C: 
 C: 
 S: \* 19 EXISTS
-#TODO: RECENT
-#S: \* 19 RECENT
-S: \* 1 RECENT
+S: \* 19 RECENT
 S: A22 OK APPEND completed\.
 C: A23 STORE 1:9  +FLAGS (\FLAGGED)
 S: \* 1 FETCH \(FLAGS \(\\Flagged\)\)

Modified: james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SelectAppend.test
URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SelectAppend.test?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SelectAppend.test (original)
+++ james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SelectAppend.test Sat Mar 22 12:31:23 2008
@@ -59,7 +59,7 @@
 C: Hello Joe, could we change that to 4:00pm tomorrow?
 C:
 S: \* 2 EXISTS
-S: \* 1 RECENT
+S: \* 2 RECENT
 S: A009 OK APPEND completed.
 
 C: a1 DELETE selectappend

Modified: james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SelectUnseen.test
URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SelectUnseen.test?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SelectUnseen.test (original)
+++ james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/SelectUnseen.test Sat Mar 22 12:31:23 2008
@@ -62,7 +62,7 @@
 C: Hello Joe, could we change that to 4:00pm tomorrow?
 C:
 S: \* 2 EXISTS
-S: \* 1 RECENT
+S: \* 2 RECENT
 S: A009 OK APPEND completed.
 
 C: 20 SELECT another

Modified: james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/UidSearchAtoms.test
URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/UidSearchAtoms.test?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/UidSearchAtoms.test (original)
+++ james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/UidSearchAtoms.test Sat Mar 22 12:31:23 2008
@@ -418,9 +418,7 @@
 C: 
 C: - robert
 S: \* 2 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 2 RECENT
+S: \* 2 RECENT
 S: A65 OK APPEND completed\.
 C: A66 APPEND testmailbox {668+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -452,9 +450,7 @@
 C: --1729--
 C: 
 S: \* 3 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 3 RECENT
+S: \* 3 RECENT
 S: A66 OK APPEND completed\.
 C: A67 APPEND testmailbox {765+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -492,9 +488,7 @@
 C: --1729--
 C: 
 S: \* 4 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 4 RECENT
+S: \* 4 RECENT
 S: A67 OK APPEND completed\.
 C: A68 APPEND testmailbox {1767+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -589,9 +583,7 @@
 C: --1729--
 C: 
 S: \* 5 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 5 RECENT
+S: \* 5 RECENT
 S: A68 OK APPEND completed\.
 C: A69 APPEND testmailbox {185+}
 C: From: John Smith <jo...@example.org>
@@ -602,9 +594,7 @@
 C: 
 C: Hello, World!
 S: \* 6 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 6 RECENT
+S: \* 6 RECENT
 S: A69 OK APPEND completed\.
 C: A70 APPEND testmailbox {227+}
 C: From: John Smith <jo...@example.org>
@@ -616,9 +606,7 @@
 C: 
 C: Hello, World!
 S: \* 7 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 7 RECENT
+S: \* 7 RECENT
 S: A70 OK APPEND completed\.
 C: A71 APPEND testmailbox {185+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -629,9 +617,7 @@
 C: This is a very simple email.
 C: 
 S: \* 8 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 8 RECENT
+S: \* 8 RECENT
 S: A71 OK APPEND completed\.
 C: A72 APPEND testmailbox {318+}
 C: From: "Brian G. Hutton" <br...@example.org>
@@ -643,9 +629,7 @@
 C: 
 C: Rhubarb!
 S: \* 9 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 9 RECENT
+S: \* 9 RECENT
 S: A72 OK APPEND completed\.
 C: A73 APPEND testmailbox {12272+}
 C:                                                                                                                                                                                                                                                                                                        
@@ -857,9 +841,7 @@
 C: ------=_Part_3998_1661991.1205261618747--
 C: 
 S: \* 10 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 10 RECENT
+S: \* 10 RECENT
 S: A73 OK APPEND completed\.
 C: A74 APPEND testmailbox {3661+}
 C:                                                                                                                                                                                                                                                                                                      
@@ -954,9 +936,7 @@
 C: 
 C: 
 S: \* 11 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 11 RECENT
+S: \* 11 RECENT
 S: A74 OK APPEND completed\.
 C: A75 APPEND testmailbox {4387+}
 C:                                                                                                                                                                                                                     
@@ -1055,9 +1035,7 @@
 C: 
 C: --=-iC8rnNDvTPHypqsz+j7t--
 S: \* 12 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 12 RECENT
+S: \* 12 RECENT
 S: A75 OK APPEND completed\.
 C: A76 APPEND testmailbox {302+}
 C: From: Samual Smith <sa...@example.org>
@@ -1071,9 +1049,7 @@
 C: 
 C: Rhubard, I say!
 S: \* 13 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 13 RECENT
+S: \* 13 RECENT
 S: A76 OK APPEND completed\.
 C: A77 APPEND testmailbox {404+}
 C: Resent-From: John Smith <jo...@example.org>
@@ -1088,9 +1064,7 @@
 C: 
 C: Rhubard or custard? Rhubard AND custard!
 S: \* 14 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 14 RECENT
+S: \* 14 RECENT
 S: A77 OK APPEND completed\.
 C: A78 APPEND testmailbox {429+}
 C: Received: from alpha.beta
@@ -1109,9 +1083,7 @@
 C: Rhubard! Rhubard! Rhubard!
 C: 
 S: \* 15 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 15 RECENT
+S: \* 15 RECENT
 S: A78 OK APPEND completed\.
 C: A79 APPEND testmailbox {217+}
 C: From: Timothy Taylor <ti...@example.org>
@@ -1123,9 +1095,7 @@
 C: Custard? Rhubard!
 C: 
 S: \* 16 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 16 RECENT
+S: \* 16 RECENT
 S: A79 OK APPEND completed\.
 C: A80 APPEND testmailbox {14862+}
 C: Return-Path: <ro...@gmail.com>
@@ -1405,9 +1375,7 @@
 C: 
 C: 
 S: \* 17 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 17 RECENT
+S: \* 17 RECENT
 S: A80 OK APPEND completed\.
 C: A81 APPEND testmailbox {14154+}
 C: Return-Path: <ro...@gmail.com>
@@ -1648,9 +1616,7 @@
 C: 
 C: 
 S: \* 18 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 18 RECENT
+S: \* 18 RECENT
 S: A81 OK APPEND completed\.
 C: A82 APPEND testmailbox {14996+}
 C: Return-Path: <ro...@gmail.com>
@@ -1904,9 +1870,7 @@
 C: 
 C: 
 S: \* 19 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 19 RECENT
+S: \* 19 RECENT
 S: A82 OK APPEND completed\.
 C: A83 STORE 1:9  +FLAGS (\FLAGGED)
 S: \* 1 FETCH \(FLAGS \(\\Flagged\)\)

Modified: james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/UidSearchCombinations.test
URL: http://svn.apache.org/viewvc/james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/UidSearchCombinations.test?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/UidSearchCombinations.test (original)
+++ james/server/trunk/experimental-seda-imap-function/src/test/resources/org/apache/james/test/functional/imap/scripts/UidSearchCombinations.test Sat Mar 22 12:31:23 2008
@@ -418,9 +418,7 @@
 C: 
 C: - robert
 S: \* 2 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 2 RECENT
+S: \* 2 RECENT
 S: A65 OK APPEND completed\.
 C: A66 APPEND testmailbox {668+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -452,9 +450,7 @@
 C: --1729--
 C: 
 S: \* 3 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 3 RECENT
+S: \* 3 RECENT
 S: A66 OK APPEND completed\.
 C: A67 APPEND testmailbox {765+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -492,9 +488,7 @@
 C: --1729--
 C: 
 S: \* 4 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 4 RECENT
+S: \* 4 RECENT
 S: A67 OK APPEND completed\.
 C: A68 APPEND testmailbox {1767+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -589,9 +583,7 @@
 C: --1729--
 C: 
 S: \* 5 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 5 RECENT
+S: \* 5 RECENT
 S: A68 OK APPEND completed\.
 C: A69 APPEND testmailbox {185+}
 C: From: John Smith <jo...@example.org>
@@ -602,9 +594,7 @@
 C: 
 C: Hello, World!
 S: \* 6 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 6 RECENT
+S: \* 6 RECENT
 S: A69 OK APPEND completed\.
 C: A70 APPEND testmailbox {227+}
 C: From: John Smith <jo...@example.org>
@@ -616,9 +606,7 @@
 C: 
 C: Hello, World!
 S: \* 7 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 7 RECENT
+S: \* 7 RECENT
 S: A70 OK APPEND completed\.
 C: A71 APPEND testmailbox {185+}
 C: From: Timothy Tayler <ti...@example.org>
@@ -629,9 +617,7 @@
 C: This is a very simple email.
 C: 
 S: \* 8 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 8 RECENT
+S: \* 8 RECENT
 S: A71 OK APPEND completed\.
 C: A72 APPEND testmailbox {318+}
 C: From: "Brian G. Hutton" <br...@example.org>
@@ -643,9 +629,7 @@
 C: 
 C: Rhubarb!
 S: \* 9 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 9 RECENT
+S: \* 9 RECENT
 S: A72 OK APPEND completed\.
 C: A73 APPEND testmailbox {12272+}
 C:                                                                                                                                                                                                                                                                                                        
@@ -857,9 +841,7 @@
 C: ------=_Part_3998_1661991.1205261618747--
 C: 
 S: \* 10 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 10 RECENT
+S: \* 10 RECENT
 S: A73 OK APPEND completed\.
 C: A74 APPEND testmailbox {3661+}
 C:                                                                                                                                                                                                                                                                                                      
@@ -954,9 +936,7 @@
 C: 
 C: 
 S: \* 11 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 11 RECENT
+S: \* 11 RECENT
 S: A74 OK APPEND completed\.
 C: A75 APPEND testmailbox {4387+}
 C:                                                                                                                                                                                                                     
@@ -1055,9 +1035,7 @@
 C: 
 C: --=-iC8rnNDvTPHypqsz+j7t--
 S: \* 12 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 12 RECENT
+S: \* 12 RECENT
 S: A75 OK APPEND completed\.
 C: A76 APPEND testmailbox {302+}
 C: From: Samual Smith <sa...@example.org>
@@ -1071,9 +1049,7 @@
 C: 
 C: Rhubard, I say!
 S: \* 13 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 13 RECENT
+S: \* 13 RECENT
 S: A76 OK APPEND completed\.
 C: A77 APPEND testmailbox {404+}
 C: Resent-From: John Smith <jo...@example.org>
@@ -1088,9 +1064,7 @@
 C: 
 C: Rhubard or custard? Rhubard AND custard!
 S: \* 14 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 14 RECENT
+S: \* 14 RECENT
 S: A77 OK APPEND completed\.
 C: A78 APPEND testmailbox {429+}
 C: Received: from alpha.beta
@@ -1109,9 +1083,7 @@
 C: Rhubard! Rhubard! Rhubard!
 C: 
 S: \* 15 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 15 RECENT
+S: \* 15 RECENT
 S: A78 OK APPEND completed\.
 C: A79 APPEND testmailbox {217+}
 C: From: Timothy Taylor <ti...@example.org>
@@ -1123,9 +1095,7 @@
 C: Custard? Rhubard!
 C: 
 S: \* 16 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 16 RECENT
+S: \* 16 RECENT
 S: A79 OK APPEND completed\.
 C: A80 APPEND testmailbox {14862+}
 C: Return-Path: <ro...@gmail.com>
@@ -1405,9 +1375,7 @@
 C: 
 C: 
 S: \* 17 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 17 RECENT
+S: \* 17 RECENT
 S: A80 OK APPEND completed\.
 C: A81 APPEND testmailbox {14154+}
 C: Return-Path: <ro...@gmail.com>
@@ -1648,9 +1616,7 @@
 C: 
 C: 
 S: \* 18 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 18 RECENT
+S: \* 18 RECENT
 S: A81 OK APPEND completed\.
 C: A82 APPEND testmailbox {14996+}
 C: Return-Path: <ro...@gmail.com>
@@ -1904,9 +1870,7 @@
 C: 
 C: 
 S: \* 19 EXISTS
-S: \* 1 RECENT
-#TODO: RECENT
-#S: \* 19 RECENT
+S: \* 19 RECENT
 S: A82 OK APPEND completed\.
 C: A83 STORE 1:9  +FLAGS (\FLAGGED)
 S: \* 1 FETCH \(FLAGS \(\\Flagged\)\)

Modified: james/server/trunk/imap-api/src/main/java/org/apache/james/api/imap/process/SelectedImapMailbox.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-api/src/main/java/org/apache/james/api/imap/process/SelectedImapMailbox.java?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/imap-api/src/main/java/org/apache/james/api/imap/process/SelectedImapMailbox.java (original)
+++ james/server/trunk/imap-api/src/main/java/org/apache/james/api/imap/process/SelectedImapMailbox.java Sat Mar 22 12:31:23 2008
@@ -31,4 +31,14 @@
     public int msn(long uid);
 
     public abstract long uid(int i);
+    
+    public void addRecent(long uid);
+    
+    public void removeRecent(long uid);
+    
+    public long[] getRecent();
+    
+    public int recentCount();
+    
+    public String getName();
 }

Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/SelectedMailboxSessionImpl.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/SelectedMailboxSessionImpl.java?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/SelectedMailboxSessionImpl.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/base/SelectedMailboxSessionImpl.java Sat Mar 22 12:31:23 2008
@@ -20,8 +20,11 @@
 package org.apache.james.imapserver.processor.base;
 
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Set;
+import java.util.TreeSet;
 
 import javax.mail.Flags;
 import javax.mail.MessagingException;
@@ -51,11 +54,13 @@
     private final MailboxEventAnalyser events;
     private final UidToMsnConverter converter;    
     private final MailboxSession mailboxSession;
+    private final Set recentUids;
     
     public SelectedMailboxSessionImpl(ImapMailbox mailbox, List uids, 
             MailboxSession mailboxSession) throws MailboxManagerException {
         this.mailbox = mailbox;
         this.mailboxSession = mailboxSession;
+        recentUids = new TreeSet();
         final long sessionId = mailboxSession.getSessionId();
         events = new MailboxEventAnalyser(sessionId);
         // Ignore events from our session
@@ -161,15 +166,10 @@
     }
 
     private void addRecentResponses(final List responses, final ImapMailbox mailbox) {
-        try {
-            final int recentCount = mailbox.recent(true, mailboxSession).length;
-            // TODO: use factory
-            RecentResponse response = new RecentResponse(recentCount);
-            responses.add(response);
-        } catch (MailboxManagerException e) {
-            final String message = "Failed to retrieve recent count data";
-            handleResponseException(responses, e, message);
-        }
+        final int recentCount = recentCount();
+        // TODO: use factory
+        RecentResponse response = new RecentResponse(recentCount);
+        responses.add(response);
     }
 
     private void handleResponseException(final List responses, MessagingException e, final String message) {
@@ -194,5 +194,40 @@
 
     public long uid(int msn) {
         return converter.getUid(msn);
+    }
+
+    public void removeRecent(long uid) {
+        recentUids.remove(new Long(uid));
+    }
+    
+    public void addRecent(long uid) {
+        recentUids.add(new Long(uid));
+    }
+
+    public long[] getRecent() {
+        checkExpungedRecents();
+        final long[] results = new long[recentUids.size()];
+        int count = 0;
+        for (Iterator it=recentUids.iterator();it.hasNext();) {
+            Long uid = (Long) it.next();
+            results[count++] = uid.longValue();
+        }
+        return results;
+    }
+
+    public int recentCount() {
+        checkExpungedRecents();
+        return recentUids.size();
+    }
+
+    public String getName() {
+        return mailbox.getName();
+    }
+    
+    private void checkExpungedRecents() {
+        for(final Iterator it = events.expungedUids();it.hasNext();) {
+            final Long uid = (Long) it.next();
+            recentUids.remove(uid);
+        }
     }
 }

Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractMailboxSelectionProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractMailboxSelectionProcessor.java?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractMailboxSelectionProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AbstractMailboxSelectionProcessor.java Sat Mar 22 12:31:23 2008
@@ -89,8 +89,8 @@
         // TODO: compact this into a single API call for meta-data about the repository
         final Flags permanentFlags = mailbox.getPermanentFlags();
         final boolean writeable = mailbox.isWriteable() && !isExamine;
-        final boolean resetRecent = !isExamine;
-        final int recentCount = mailbox.recent(resetRecent, mailboxSession).length;
+        final SelectedImapMailbox selected = session.getSelected();
+        final int recentCount = selected.recentCount();
         final long uidValidity = mailbox.getUidValidity(mailboxSession);
         final MessageResult firstUnseen = mailbox.getFirstUnseen(FetchGroupImpl.MINIMAL, mailboxSession);
         final int messageCount = mailbox.getMessageCount(mailboxSession);
@@ -98,7 +98,7 @@
         if (firstUnseen == null) {
             msn = -1;
         } else {
-            msn = session.getSelected().msn(firstUnseen.getUid());
+            msn = selected.msn(firstUnseen.getUid());
         }
         result = new ExamineAndSelectResponse(command, permanentFlags,
                 writeable, recentCount, uidValidity, msn, messageCount, tag);
@@ -117,12 +117,21 @@
             final MessageResult result = (MessageResult) it.next();
             uids.add(new Long(result.getUid()));
         }
-        
         SelectedImapMailbox sessionMailbox = new SelectedMailboxSessionImpl(mailbox, uids, mailboxSession);
+        
+        addRecent(readOnly, mailbox, mailboxSession, sessionMailbox);
         session.selected(sessionMailbox);
         session.setAttribute(
                 ImapSessionUtils.SELECTED_MAILBOX_ATTRIBUTE_SESSION_KEY,
                 mailbox);
         return readOnly;
+    }
+
+    private void addRecent(boolean readOnly, final ImapMailbox mailbox, final MailboxSession mailboxSession, SelectedImapMailbox sessionMailbox) throws MailboxManagerException {
+        final long[] recentUids = mailbox.recent(!readOnly, mailboxSession);
+        for (int i = 0; i < recentUids.length; i++) {
+            long uid = recentUids[i];
+            sessionMailbox.addRecent(uid);    
+        }
     }
 }

Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AppendProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AppendProcessor.java?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AppendProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/AppendProcessor.java Sat Mar 22 12:31:23 2008
@@ -35,6 +35,7 @@
 import org.apache.james.api.imap.message.response.imap4rev1.StatusResponseFactory;
 import org.apache.james.api.imap.process.ImapProcessor;
 import org.apache.james.api.imap.process.ImapSession;
+import org.apache.james.api.imap.process.SelectedImapMailbox;
 import org.apache.james.imap.message.request.imap4rev1.AppendRequest;
 import org.apache.james.imapserver.processor.base.AbstractMailboxAwareProcessor;
 import org.apache.james.imapserver.processor.base.AuthorizationException;
@@ -42,6 +43,7 @@
 import org.apache.james.imapserver.store.MailboxException;
 import org.apache.james.mailboxmanager.MailboxManagerException;
 import org.apache.james.mailboxmanager.MailboxSession;
+import org.apache.james.mailboxmanager.MessageResult;
 import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
 import org.apache.james.mailboxmanager.manager.MailboxManager;
@@ -110,9 +112,17 @@
             ImapSession session, String tag, ImapCommand command, ImapMailbox mailbox,
             Responder responder) throws MailboxException {
         try {
-            message.setFlag(Flag.RECENT, true);
             final MailboxSession mailboxSession = ImapSessionUtils.getMailboxSession(session);
-            mailbox.appendMessage(message, datetime, FetchGroupImpl.MINIMAL, mailboxSession);
+            final SelectedImapMailbox selectedMailbox = session.getSelected();
+            final boolean isSelectedMailbox = selectedMailbox != null && mailbox.getName().equals(selectedMailbox.getName());
+            if (!isSelectedMailbox) {
+                message.setFlag(Flag.RECENT, true);
+            }
+            final MessageResult result = mailbox.appendMessage(message, datetime, FetchGroupImpl.MINIMAL, mailboxSession);
+            final long uid = result.getUid();
+            if (isSelectedMailbox) {
+                selectedMailbox.addRecent(uid);
+            }
         } catch (MailboxManagerException e) {
             // TODO why not TRYCREATE?
             throw new MailboxException(e);

Modified: james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/ExpungeProcessor.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/ExpungeProcessor.java?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/ExpungeProcessor.java (original)
+++ james/server/trunk/imap-mailbox-processor-function/src/main/java/org/apache/james/imapserver/processor/imap4rev1/ExpungeProcessor.java Sat Mar 22 12:31:23 2008
@@ -19,6 +19,8 @@
 
 package org.apache.james.imapserver.processor.imap4rev1;
 
+import java.util.Iterator;
+
 import org.apache.james.api.imap.ImapCommand;
 import org.apache.james.api.imap.ImapMessage;
 import org.apache.james.api.imap.ProtocolException;
@@ -27,12 +29,14 @@
 import org.apache.james.api.imap.message.response.imap4rev1.StatusResponseFactory;
 import org.apache.james.api.imap.process.ImapProcessor;
 import org.apache.james.api.imap.process.ImapSession;
+import org.apache.james.api.imap.process.SelectedImapMailbox;
 import org.apache.james.imap.message.request.imap4rev1.ExpungeRequest;
 import org.apache.james.imapserver.processor.base.AbstractImapRequestProcessor;
 import org.apache.james.imapserver.processor.base.AuthorizationException;
 import org.apache.james.imapserver.processor.base.ImapSessionUtils;
 import org.apache.james.imapserver.store.MailboxException;
 import org.apache.james.mailboxmanager.MailboxManagerException;
+import org.apache.james.mailboxmanager.MessageResult;
 import org.apache.james.mailboxmanager.impl.FetchGroupImpl;
 import org.apache.james.mailboxmanager.impl.GeneralMessageSetImpl;
 import org.apache.james.mailboxmanager.mailbox.ImapMailbox;
@@ -57,8 +61,16 @@
             no(command, tag, responder, HumanReadableTextKey.MAILBOX_IS_READ_ONLY);
         } else {
             try {
-                mailbox.expunge(GeneralMessageSetImpl.all(),
+                final Iterator it = mailbox.expunge(GeneralMessageSetImpl.all(),
                         FetchGroupImpl.MINIMAL, ImapSessionUtils.getMailboxSession(session));
+                final SelectedImapMailbox mailboxSession = session.getSelected();
+                if (mailboxSession != null) {
+                    while(it.hasNext()) {
+                        final MessageResult result = (MessageResult) it.next();
+                        final long uid = result.getUid();
+                        mailboxSession.removeRecent(uid);
+                    }
+                }
                 unsolicitedResponses(session, responder, false);
                 okComplete(command, tag, responder);
             } catch (MailboxManagerException e) {

Modified: james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MessageSearcher.java
URL: http://svn.apache.org/viewvc/james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MessageSearcher.java?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MessageSearcher.java (original)
+++ james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/MessageSearcher.java Sat Mar 22 12:31:23 2008
@@ -142,7 +142,6 @@
             parser.parse(input);
             while (!result && parser.next() != MimeTokenStream.T_END_OF_STREAM) {
                 final int state = parser.getState();
-                System.out.println(MimeTokenStream.stateToString(state));
                 switch (state) {
                     case MimeTokenStream.T_BODY:
                     case MimeTokenStream.T_PREAMBLE:

Modified: james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailbox.java
URL: http://svn.apache.org/viewvc/james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailbox.java?rev=640066&r1=640065&r2=640066&view=diff
==============================================================================
--- james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailbox.java (original)
+++ james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailbox.java Sat Mar 22 12:31:23 2008
@@ -93,7 +93,7 @@
         getUidToKeyConverter().setUidValidity(mailboxRow.getUidValidity());
     }
 
-    public synchronized String getName() throws MailboxManagerException {
+    public synchronized String getName() {
         checkAccess();
         return mailboxRow.getName();
     }
@@ -609,7 +609,7 @@
         }
     }
 
-    private void checkAccess() throws MailboxManagerException {
+    private void checkAccess() {
         if (!open) {
             throw new RuntimeException("mailbox is closed");
         }
@@ -650,8 +650,6 @@
                 
                 return getResults(fetchGroup, filteredMessages);
             } catch (TorqueException e) {
-                throw new MailboxManagerException(e);
-            } catch (MessagingException e) {
                 throw new MailboxManagerException(e);
             } finally {
                 lock.readLock().release();



---------------------------------------------------------------------
To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
For additional commands, e-mail: server-dev-help@james.apache.org