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 no...@apache.org on 2010/03/26 09:14:50 UTC

svn commit: r927725 - /james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/mina/AsyncImapServer.java

Author: norman
Date: Fri Mar 26 08:14:50 2010
New Revision: 927725

URL: http://svn.apache.org/viewvc?rev=927725&view=rev
Log:
Make sure we call the startProcessing() and stopProcessing() methods when working with the MailboxManager 

Modified:
    james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/mina/AsyncImapServer.java

Modified: james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/mina/AsyncImapServer.java
URL: http://svn.apache.org/viewvc/james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/mina/AsyncImapServer.java?rev=927725&r1=927724&r2=927725&view=diff
==============================================================================
--- james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/mina/AsyncImapServer.java (original)
+++ james/server/trunk/imapserver/src/main/java/org/apache/james/imapserver/mina/AsyncImapServer.java Fri Mar 26 08:14:50 2010
@@ -154,9 +154,46 @@ public class AsyncImapServer extends Abs
                         } 
                         
                         final MailboxSession session = mailboxManager.createSystemSession(user, getLogger());
+                        
+                        // start processing request
+                        mailboxManager.startProcessingRequest(session);
+
                         // This allows Sieve scripts to use a standard delimiter regardless of mailbox implementation
-                        final String mailbox = urlPath.replace('/', session.getPersonalSpace().getDeliminator());
-                        postToMailbox(user, mail, mailbox, session, mailboxManager);
+                        String destination = urlPath.replace('/', session.getPersonalSpace().getDeliminator());
+                        
+                        if (destination == null || "".equals(destination)) {
+                            destination = "INBOX";
+                        }
+                        final String name = mailboxManager.resolve(user, destination);
+                        try
+                        {
+                            if ("INBOX".equalsIgnoreCase(destination) && !(mailboxManager.mailboxExists(name, session))) {
+                                mailboxManager.createMailbox(name, session);
+                            }
+                            final Mailbox mailbox = mailboxManager.getMailbox(name, session);
+                            
+                            if (mailbox == null) {
+                                final String error = "Mailbox for user " + user
+                                        + " was not found on this server.";
+                                throw new MessagingException(error);
+                            }
+
+                            final ByteArrayOutputStream baos = new ByteArrayOutputStream();
+                            mail.writeTo(baos);
+                            mailbox.appendMessage(baos.toByteArray() , new Date(), session, true, null);
+                        }
+                        catch (IOException e)
+                        {
+                            throw new MessagingException("Failed to write mail message", e);
+                        }
+                        finally 
+                        {
+                            session.close();   
+                            mailboxManager.logout(session, true);
+                            
+                            // stop processing request
+                            mailboxManager.endProcessingRequest(session);
+                        }
                     }
                 }
             } else {
@@ -167,39 +204,4 @@ public class AsyncImapServer extends Abs
             }
         }
     }
-    
-    public void postToMailbox(String username, MimeMessage mail, String destination, final MailboxSession session, final MailboxManager mailboxManager) throws MessagingException {
-        if (destination == null || "".equals(destination)) {
-            destination = "INBOX";
-        }
-        final String name = mailboxManager.resolve(username, destination);
-        try
-        {
-            if ("INBOX".equalsIgnoreCase(destination) && !(mailboxManager.mailboxExists(name, session))) {
-                mailboxManager.createMailbox(name, session);
-            }
-            final Mailbox mailbox = mailboxManager.getMailbox(name, session);
-            
-            if (mailbox == null) {
-                final String error = "Mailbox for user " + username
-                        + " was not found on this server.";
-                throw new MessagingException(error);
-            }
-
-            final ByteArrayOutputStream baos = new ByteArrayOutputStream();
-            mail.writeTo(baos);
-            mailbox.appendMessage(baos.toByteArray() , new Date(), session, true, null);
-        }
-        catch (IOException e)
-        {
-            throw new MessagingException("Failed to write mail message", e);
-        }
-        finally 
-        {
-            session.close();   
-            mailboxManager.logout(session, true);
-        }
-    }
-
-
 }



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