Author: rdonkin
Date: Wed May 13 15:50:23 2009
New Revision: 774410

URL: http://svn.apache.org/viewvc?rev=774410&view=rev
Log:
Add logout method for Mailbox implementations and call from Logout. IMAP-84 
https://issues.apache.org/jira/browse/IMAP-84

Modified:
    
james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MailboxManager.java
    
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/LogoutProcessor.java
    
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java
    
james/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java

Modified: 
james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MailboxManager.java?rev=774410&r1=774409&r2=774410&view=diff
==============================================================================
--- 
james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MailboxManager.java
 (original)
+++ 
james/imap/trunk/mailbox/src/main/java/org/apache/james/imap/mailbox/MailboxManager.java
 Wed May 13 15:50:23 2009
@@ -171,6 +171,22 @@
      * @throws MailboxException when the creation fails for other reasons
      */
     MailboxSession login(String userid, String passwd, Log log) throws 
BadCredentialsException, MailboxException;
+    
+    /**
+     * <p>Logs the session out, freeing any resources.
+     * Clients who open session should make best efforts to call this
+     * when the session is closed.
+     * </p>
+     * <p>
+     * Note that clients may not always be able to call logout (whether forced 
or not).
+     * Mailboxes that create sessions which are expensive to maintain
+     * <code>MUST</code> retain a reference and periodically check {...@link 
MailboxSession#isOpen()}.
+     * </p>
+     * @param session not null
+     * @param force true when the session logout is forced by premature 
connection termination
+     * @throws MailboxException when logout fails
+     */
+    void logout(MailboxSession session, boolean force) throws MailboxException;
 
     /**
      * Subscribes the user to the given mailbox.

Modified: 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/LogoutProcessor.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/LogoutProcessor.java?rev=774410&r1=774409&r2=774410&view=diff
==============================================================================
--- 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/LogoutProcessor.java
 (original)
+++ 
james/imap/trunk/processor/src/main/java/org/apache/james/imap/processor/LogoutProcessor.java
 Wed May 13 15:50:23 2009
@@ -25,8 +25,11 @@
 import org.apache.james.imap.api.message.response.StatusResponseFactory;
 import org.apache.james.imap.api.process.ImapProcessor;
 import org.apache.james.imap.api.process.ImapSession;
+import org.apache.james.imap.mailbox.MailboxException;
 import org.apache.james.imap.mailbox.MailboxManagerProvider;
+import org.apache.james.imap.mailbox.MailboxSession;
 import org.apache.james.imap.message.request.LogoutRequest;
+import org.apache.james.imap.processor.base.ImapSessionUtils;
 
 public class LogoutProcessor extends AbstractMailboxProcessor {
 
@@ -41,8 +44,14 @@
 
     protected void doProcess(ImapRequest message, ImapSession session,
             String tag, ImapCommand command, Responder responder) {
-        session.logout();
-        bye(responder);
-        okComplete(command, tag, responder);
+        final MailboxSession mailboxSession = 
ImapSessionUtils.getMailboxSession(session);
+        try {
+            getMailboxManager().logout(mailboxSession, false);
+            session.logout();
+            bye(responder);
+            okComplete(command, tag, responder);
+        } catch (MailboxException e) {
+            no(command, tag, responder, e, session);
+        }
     }
 }

Modified: 
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java?rev=774410&r1=774409&r2=774410&view=diff
==============================================================================
--- 
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java
 (original)
+++ 
james/imap/trunk/store/src/main/java/org/apache/james/imap/store/StoreMailboxManager.java
 Wed May 13 15:50:23 2009
@@ -350,5 +350,7 @@
         }
     }
     
-    
+    public void logout(MailboxSession session, boolean force) throws 
MailboxException {
+        // fine
+    }
 }

Modified: 
james/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
URL: 
http://svn.apache.org/viewvc/james/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java?rev=774410&r1=774409&r2=774410&view=diff
==============================================================================
--- 
james/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
 (original)
+++ 
james/imap/trunk/torque/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailboxManager.java
 Wed May 13 15:50:23 2009
@@ -399,4 +399,8 @@
         }
     }
 
+    public void logout(MailboxSession session, boolean force) throws 
MailboxException {
+        // fine
+    }
+
 }



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

Reply via email to