Author: rdonkin
Date: Tue Nov 27 15:08:50 2007
New Revision: 598812

URL: http://svn.apache.org/viewvc?rev=598812&view=rev
Log:
Factored out some methods. Plan to use AspectJ to instrument slowness when 
using JSieve and IMAP client together.

Modified:
    
james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/sieve/Actions.java
    
james/server/trunk/torque-mailboxmanager-function/src/main/java/org/apache/james/mailboxmanager/torque/TorqueMailbox.java

Modified: 
james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/sieve/Actions.java
URL: 
http://svn.apache.org/viewvc/james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/sieve/Actions.java?rev=598812&r1=598811&r2=598812&view=diff
==============================================================================
--- 
james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/sieve/Actions.java
 (original)
+++ 
james/server/trunk/spoolmanager-function/src/main/java/org/apache/james/transport/mailets/sieve/Actions.java
 Tue Nov 27 15:08:50 2007
@@ -109,21 +109,7 @@
             .lookup(MailboxManagerProvider.class.getName());
             recipient = getSoleRecipient(aMail);
             user=new DefaultUser(recipient.getUser(), null);
-             // Adapted from LocalDelivery Mailet
-            // Add qmail's de facto standard Delivered-To header
-            MimeMessage localMessage = new MimeMessage(aMail.getMessage())
-            {
-                protected void updateHeaders() throws MessagingException
-                {
-                    if (getMessageID() == null)
-                        super.updateHeaders();
-                    else
-                        modified = false;
-                }
-            };
-            localMessage.addHeader("Delivered-To", recipient.toString());
-
-            localMessage.saveChanges();
+            MimeMessage localMessage = createMimeMessage(aMail, recipient);
             
             MailboxSession 
mailbox=mailboxManagerProvider.getMailboxSession(user, destinationMailbox, 
true);
             mailbox.store(localMessage);
@@ -150,6 +136,25 @@
                     + " into destination: \""
                     + destinationMailbox + "\"");
         }
+    }
+
+    private static MimeMessage createMimeMessage(Mail aMail, MailAddress 
recipient) throws MessagingException {
+        // Adapted from LocalDelivery Mailet
+        // Add qmail's de facto standard Delivered-To header
+        MimeMessage localMessage = new MimeMessage(aMail.getMessage())
+        {
+            protected void updateHeaders() throws MessagingException
+            {
+                if (getMessageID() == null)
+                    super.updateHeaders();
+                else
+                    modified = false;
+            }
+        };
+        localMessage.addHeader("Delivered-To", recipient.toString());
+
+        localMessage.saveChanges();
+        return localMessage;
     }
 
     /**

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=598812&r1=598811&r2=598812&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
 Tue Nov 27 15:08:50 2007
@@ -20,11 +20,11 @@
 package org.apache.james.mailboxmanager.torque;
 
 import java.io.ByteArrayOutputStream;
+import java.io.IOException;
 import java.io.InputStream;
 import java.sql.SQLException;
 import java.util.Collection;
 import java.util.Collections;
-import java.util.Comparator;
 import java.util.Date;
 import java.util.Enumeration;
 import java.util.Iterator;
@@ -159,43 +159,13 @@
                     messageRow.setUid(uid);
                     messageRow.setInternalDate(internalDate);
 
-                    // TODO very ugly size mesurement
-                    ByteArrayOutputStream sizeBos = new 
ByteArrayOutputStream();
-                    message.writeTo(new CRLFOutputStream(sizeBos));
-                    messageRow.setSize(sizeBos.size());
-                    MessageFlags messageFlags = new MessageFlags();
-                    messageFlags.setFlags(message.getFlags());
-                    messageRow.addMessageFlags(messageFlags);
-
-                    int line_number = 0;
-
-                    for (Enumeration lines = message.getAllHeaderLines(); lines
-                    .hasMoreElements();) {
-                        String line = (String) lines.nextElement();
-                        int colon = line.indexOf(": ");
-                        if (colon > 0) {
-                            line_number++;
-                            MessageHeader mh = new MessageHeader();
-                            mh.setLineNumber(line_number);
-                            mh.setField(line.substring(0, colon));
-                            // TODO avoid unlikely IOOB Exception
-                            mh.setValue(line.substring(colon + 2));
-                            messageRow.addMessageHeader(mh);
-                        }
-                    }
-
-                    MessageBody mb = new MessageBody();
-
-                    InputStream is = message.getInputStream();
-
-                    ByteArrayOutputStream baos = new ByteArrayOutputStream();
-                    byte[] buf = new byte[4096];
-                    int read;
-                    while ((read = is.read(buf)) > 0) {
-                        baos.write(buf, 0, read);
-                    }
+                    final int size = size(message);
+                    messageRow.setSize(size);
+                    populateFlags(message, messageRow);
+                    
+                    addHeaders(message, messageRow);
 
-                    mb.setBody(baos.toByteArray());
+                    MessageBody mb = populateBody(message);
                     messageRow.addMessageBody(mb);
 
                     save(messageRow);
@@ -215,6 +185,56 @@
         } catch (InterruptedException e) {
             throw new MailboxManagerException(e);
         }
+    }
+
+    private void populateFlags(MimeMessage message, MessageRow messageRow) 
throws MessagingException, TorqueException {
+        MessageFlags messageFlags = new MessageFlags();
+        messageFlags.setFlags(message.getFlags());
+        messageRow.addMessageFlags(messageFlags);
+    }
+
+    private MessageBody populateBody(MimeMessage message) throws IOException, 
MessagingException {
+        MessageBody mb = new MessageBody();
+
+        InputStream is = message.getInputStream();
+
+        ByteArrayOutputStream baos = new ByteArrayOutputStream();
+        byte[] buf = new byte[4096];
+        int read;
+        while ((read = is.read(buf)) > 0) {
+            baos.write(buf, 0, read);
+        }
+
+        final byte[] bytes = baos.toByteArray();
+        mb.setBody(bytes);
+        return mb;
+    }
+
+    private void addHeaders(MimeMessage message, MessageRow messageRow) throws 
MessagingException, TorqueException {
+        int line_number = 0;
+
+        for (Enumeration lines = message.getAllHeaderLines(); lines
+        .hasMoreElements();) {
+            String line = (String) lines.nextElement();
+            int colon = line.indexOf(": ");
+            if (colon > 0) {
+                line_number++;
+                MessageHeader mh = new MessageHeader();
+                mh.setLineNumber(line_number);
+                mh.setField(line.substring(0, colon));
+                // TODO avoid unlikely IOOB Exception
+                mh.setValue(line.substring(colon + 2));
+                messageRow.addMessageHeader(mh);
+            }
+        }
+    }
+
+    private int size(MimeMessage message) throws IOException, 
MessagingException {
+        // TODO very ugly size mesurement
+        ByteArrayOutputStream sizeBos = new ByteArrayOutputStream();
+        message.writeTo(new CRLFOutputStream(sizeBos));
+        final int size = sizeBos.size();
+        return size;
     }
 
     private void save(MessageRow messageRow) throws Exception {



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to