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]