Author: bago Date: Fri Sep 15 01:19:40 2006 New Revision: 446545 URL: http://svn.apache.org/viewvc?view=rev&rev=446545 Log: Moved POP3Handler.stat() method from the Handler to the RsetCmdHandler
Modified: james/server/trunk/src/java/org/apache/james/pop3server/POP3Handler.java james/server/trunk/src/java/org/apache/james/pop3server/POP3Session.java james/server/trunk/src/java/org/apache/james/pop3server/PassCmdHandler.java james/server/trunk/src/java/org/apache/james/pop3server/RsetCmdHandler.java Modified: james/server/trunk/src/java/org/apache/james/pop3server/POP3Handler.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/pop3server/POP3Handler.java?view=diff&rev=446545&r1=446544&r2=446545 ============================================================================== --- james/server/trunk/src/java/org/apache/james/pop3server/POP3Handler.java (original) +++ james/server/trunk/src/java/org/apache/james/pop3server/POP3Handler.java Fri Sep 15 01:19:40 2006 @@ -30,8 +30,6 @@ import org.apache.james.util.watchdog.Watchdog; import org.apache.mailet.Mail; -import javax.mail.MessagingException; - import java.io.IOException; import java.io.OutputStream; import java.util.ArrayList; @@ -102,9 +100,9 @@ * emails in the user's inbox at any given time * during the POP3 transaction. */ - private ArrayList userMailbox = new ArrayList(); + private List userMailbox = new ArrayList(); - private ArrayList backupUserMailbox; // A snapshot list representing the set of + private List backupUserMailbox; // A snapshot list representing the set of // emails in the user's inbox at the beginning // of the transaction @@ -308,38 +306,6 @@ } /** - * Implements a "stat". If the handler is currently in - * a transaction state, this amounts to a rollback of the - * mailbox contents to the beginning of the transaction. - * This method is also called when first entering the - * transaction state to initialize the handler copies of the - * user inbox. - * - */ - public void stat() { - userMailbox = new ArrayList(); - userMailbox.add(DELETED); - try { - for (Iterator it = userInbox.list(); it.hasNext(); ) { - String key = (String) it.next(); - Mail mc = userInbox.retrieve(key); - // Retrieve can return null if the mail is no longer in the store. - // In this case we simply continue to the next key - if (mc == null) { - continue; - } - userMailbox.add(mc); - } - } catch(MessagingException e) { - // In the event of an exception being thrown there may or may not be anything in userMailbox - getLogger().error("Unable to STAT mail box ", e); - } - finally { - backupUserMailbox = (ArrayList) userMailbox.clone(); - } - } - - /** * Reads a line of characters off the command line. * * @return the trimmed input line @@ -517,14 +483,14 @@ /** * @see org.apache.james.pop3server.POP3Session#getUserMailbox() */ - public ArrayList getUserMailbox() { + public List getUserMailbox() { return userMailbox; } /** * @see org.apache.james.pop3server.POP3Session#setUserMailbox(java.util.ArrayList) */ - public void setUserMailbox(ArrayList userMailbox) { + public void setUserMailbox(List userMailbox) { this.userMailbox = userMailbox; } @@ -533,6 +499,14 @@ */ public List getBackupUserMailbox() { return backupUserMailbox; + } + + + /** + * @see org.apache.james.pop3server.POP3Session#setUserMailbox(java.util.ArrayList) + */ + public void setBackupUserMailbox(List backupUserMailbox) { + this.backupUserMailbox = backupUserMailbox; } /** Modified: james/server/trunk/src/java/org/apache/james/pop3server/POP3Session.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/pop3server/POP3Session.java?view=diff&rev=446545&r1=446544&r2=446545 ============================================================================== --- james/server/trunk/src/java/org/apache/james/pop3server/POP3Session.java (original) +++ james/server/trunk/src/java/org/apache/james/pop3server/POP3Session.java Fri Sep 15 01:19:40 2006 @@ -27,7 +27,6 @@ import java.io.IOException; import java.io.OutputStream; -import java.util.ArrayList; import java.util.HashMap; import java.util.List; @@ -184,26 +183,29 @@ * * @return mailbox content */ - ArrayList getUserMailbox(); + List getUserMailbox(); /** * Sets a new mailbox content * * @param userMailbox mailbox */ - void setUserMailbox(ArrayList userMailbox); + void setUserMailbox(List userMailbox); /** - * Inizialize the mailbox - */ - void stat(); - - /** * Returns the backup mailbox * * @return list backup */ List getBackupUserMailbox(); + + + /** + * Sets a new backup mailbox content + * + * @param backupUserMailbox the mailbox backup + */ + void setBackupUserMailbox(List backupUserMailbox); /** * Returns the raw output stream Modified: james/server/trunk/src/java/org/apache/james/pop3server/PassCmdHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/pop3server/PassCmdHandler.java?view=diff&rev=446545&r1=446544&r2=446545 ============================================================================== --- james/server/trunk/src/java/org/apache/james/pop3server/PassCmdHandler.java (original) +++ james/server/trunk/src/java/org/apache/james/pop3server/PassCmdHandler.java Fri Sep 15 01:19:40 2006 @@ -55,7 +55,7 @@ throw new IllegalStateException("MailServer returned a null inbox for "+session.getUser()); } session.setUserInbox(inbox); - session.stat(); + RsetCmdHandler.stat(session, getLogger()); // Store the ipAddress to use it later for pop before smtp POP3BeforeSMTPHelper.addIPAddress(session.getRemoteIPAddress()); Modified: james/server/trunk/src/java/org/apache/james/pop3server/RsetCmdHandler.java URL: http://svn.apache.org/viewvc/james/server/trunk/src/java/org/apache/james/pop3server/RsetCmdHandler.java?view=diff&rev=446545&r1=446544&r2=446545 ============================================================================== --- james/server/trunk/src/java/org/apache/james/pop3server/RsetCmdHandler.java (original) +++ james/server/trunk/src/java/org/apache/james/pop3server/RsetCmdHandler.java Fri Sep 15 01:19:40 2006 @@ -21,11 +21,20 @@ package org.apache.james.pop3server; +import org.apache.avalon.framework.logger.AbstractLogEnabled; +import org.apache.avalon.framework.logger.Logger; +import org.apache.mailet.Mail; + +import javax.mail.MessagingException; + +import java.util.ArrayList; +import java.util.Iterator; + /** * Handles RSET command */ -public class RsetCmdHandler implements CommandHandler { +public class RsetCmdHandler extends AbstractLogEnabled implements CommandHandler { /** * @see org.apache.james.pop3server.CommandHandler#onCommand(POP3Session) @@ -44,7 +53,7 @@ private void doRSET(POP3Session session,String argument) { String responseString = null; if (session.getHandlerState() == POP3Handler.TRANSACTION) { - session.stat(); + stat(session, getLogger()); responseString = POP3Handler.OK_RESPONSE; } else { responseString = POP3Handler.ERR_RESPONSE; @@ -52,5 +61,38 @@ session.writeResponse(responseString); } + + /** + * Implements a "stat". If the handler is currently in + * a transaction state, this amounts to a rollback of the + * mailbox contents to the beginning of the transaction. + * This method is also called when first entering the + * transaction state to initialize the handler copies of the + * user inbox. + * + */ + public static void stat(POP3Session session, Logger logger) { + ArrayList userMailbox = new ArrayList(); + userMailbox.add(POP3Handler.DELETED); + try { + for (Iterator it = session.getUserInbox().list(); it.hasNext(); ) { + String key = (String) it.next(); + Mail mc = session.getUserInbox().retrieve(key); + // Retrieve can return null if the mail is no longer in the store. + // In this case we simply continue to the next key + if (mc == null) { + continue; + } + userMailbox.add(mc); + } + } catch(MessagingException e) { + // In the event of an exception being thrown there may or may not be anything in userMailbox + logger.error("Unable to STAT mail box ", e); + } + finally { + session.setUserMailbox(userMailbox); + session.setBackupUserMailbox((ArrayList) userMailbox.clone()); + } + } } --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]