james-server-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Bernd Fondermann" <bernd.fonderm...@googlemail.com>
Subject Re: svn commit: r450344 - in /james/postage/trunk/src/main/java/org/apache/james/postage/mail: AbstractMailFactory.java DefaultMailFactory.java
Date Wed, 27 Sep 2006 06:55:56 GMT
ok, there is room for improvement... I am working on fixing format and
adding headers.

  Bernd

On 9/27/06, berndf@apache.org <berndf@apache.org> wrote:
> Author: berndf
> Date: Tue Sep 26 23:33:29 2006
> New Revision: 450344
>
> URL: http://svn.apache.org/viewvc?view=rev&rev=450344
> Log:
> extract abstract MailFactory to facilitate development of custom test mails (POSTAGE-5)
>
> Added:
>     james/postage/trunk/src/main/java/org/apache/james/postage/mail/AbstractMailFactory.java
> Modified:
>     james/postage/trunk/src/main/java/org/apache/james/postage/mail/DefaultMailFactory.java
>
> Added: james/postage/trunk/src/main/java/org/apache/james/postage/mail/AbstractMailFactory.java
> URL: http://svn.apache.org/viewvc/james/postage/trunk/src/main/java/org/apache/james/postage/mail/AbstractMailFactory.java?view=auto&rev=450344
> ==============================================================================
> --- james/postage/trunk/src/main/java/org/apache/james/postage/mail/AbstractMailFactory.java
(added)
> +++ james/postage/trunk/src/main/java/org/apache/james/postage/mail/AbstractMailFactory.java
Tue Sep 26 23:33:29 2006
> @@ -0,0 +1,92 @@
> +package org.apache.james.postage.mail;
>
> +
>
> +import javax.mail.Message;
>
> +import javax.mail.MessagingException;
>
> +import javax.mail.Session;
>
> +import javax.mail.internet.MimeMessage;
>
> +
>
> +import org.apache.commons.logging.Log;
>
> +import org.apache.commons.logging.LogFactory;
>
> +import org.apache.james.postage.configuration.MailSender;
>
> +import org.apache.james.postage.result.MailProcessingRecord;
>
> +
>
> +public abstract class AbstractMailFactory {
>
> +
>
> +       private static Log log = LogFactory.getLog(DefaultMailFactory.class);
>
> +
>
> +       private static final char[] CHARSET = new char[]
>
> +                                       {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i',
'j',
>
> +                                        'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's',
't',
>
> +                                        'u', 'v', 'w', 'x', 'y', 'z',
>
> +                                        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',
'J',
>
> +                                        'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S',
'T',
>
> +                                        'U', 'V', 'W', 'X', 'Y', 'Z'};
>
> +
>
> +       public static char getRandomChar() {
>
> +           return CHARSET[getRandomInt()];
>
> +       }
>
> +
>
> +       private static int getRandomInt() {
>
> +           return (int)(Math.random() * (double)(CHARSET.length - 1));
>
> +       }
>
> +
>
> +       public static byte getRandomByte() {
>
> +           return (byte)CHARSET[getRandomInt()];
>
> +       }
>
> +
>
> +       public AbstractMailFactory() {
>
> +               super();
>
> +       }
>
> +
>
> +       /**
>
> +        * generates a mail containing data common to all test mails: postage headers,
>
> +        */
>
> +       public Message createMail(Session mailSession, MailSender mailSender, MailProcessingRecord
mailProcessingRecord) {
>
> +
>
> +               MimeMessage message = new MimeMessage(mailSession);
>
> +
>
> +           try {
>
> +               message.addHeader(HeaderConstants.JAMES_POSTAGE_HEADER, "This is a test
mail sent by James Postage");
>
> +               message.addHeader(HeaderConstants.JAMES_POSTAGE_VALIDATORCLASSNAME_HEADER,
getValidatorClass().getName());
>
> +               message.setSubject(mailSender.getSubject());
>
> +               message.addHeader("Message-ID", "Postage-" + System.currentTimeMillis());
>
> +               mailProcessingRecord.setSubject(mailSender.getSubject());
>
> +
>
> +               if (mailProcessingRecord.getMailId() != null) {
>
> +                   message.addHeader(HeaderConstants.MAIL_ID_HEADER, mailProcessingRecord.getMailId());
>
> +               } else {
>
> +                       log.warn("ID header is NULL!");
>
> +                       throw new RuntimeException("could not create mail with ID = NULL");
>
> +               }
>
> +
>
> +               populateMessage(message, mailSender, mailProcessingRecord);
>
> +
>
> +           } catch (MessagingException e) {
>
> +               mailProcessingRecord.setErrorTextSending(e.toString());
>
> +               log.error("mail could not be created", e);
>
> +               return null;
>
> +           }
>
> +           return message;
>
> +       }
>
> +
>
> +       /**
>
> +        * here, the test case specific data must be added to the message.
>
> +        * @param message
>
> +        * @param mailSender
>
> +        * @param mailProcessingRecord
>
> +        * @throws MessagingException
>
> +        */
>
> +       abstract protected void populateMessage(MimeMessage message, MailSender mailSender,
MailProcessingRecord mailProcessingRecord) throws MessagingException;
>
> +
>
> +       /**
>
> +        * the class representing the validator
>
> +        *
>
> +        * @return validator class
>
> +        */
>
> +       abstract protected Class getValidatorClass();
>
> +
>
> +       protected int generateRandomPartSize(int sizeMin, int sizeMax) {
>
> +           return (int)(Math.random() * (double)(sizeMax - sizeMin)) + sizeMin;
>
> +       }
>
> +
>
> +}
> \ No newline at end of file
>
> Modified: james/postage/trunk/src/main/java/org/apache/james/postage/mail/DefaultMailFactory.java
> URL: http://svn.apache.org/viewvc/james/postage/trunk/src/main/java/org/apache/james/postage/mail/DefaultMailFactory.java?view=diff&rev=450344&r1=450343&r2=450344
> ==============================================================================
> --- james/postage/trunk/src/main/java/org/apache/james/postage/mail/DefaultMailFactory.java
(original)
> +++ james/postage/trunk/src/main/java/org/apache/james/postage/mail/DefaultMailFactory.java
Tue Sep 26 23:33:29 2006
> @@ -20,110 +20,62 @@
>
>  package org.apache.james.postage.mail;
>
> -import org.apache.commons.logging.Log;
> -import org.apache.commons.logging.LogFactory;
>  import org.apache.james.postage.configuration.MailSender;
>  import org.apache.james.postage.result.MailProcessingRecord;
>
>  import javax.activation.DataHandler;
> -import javax.mail.Message;
>  import javax.mail.MessagingException;
>  import javax.mail.Multipart;
> -import javax.mail.Session;
>  import javax.mail.internet.MimeBodyPart;
>  import javax.mail.internet.MimeMessage;
>  import javax.mail.internet.MimeMultipart;
>  import javax.mail.util.ByteArrayDataSource;
>
> -public class DefaultMailFactory implements MailFactory {
> +public class DefaultMailFactory extends AbstractMailFactory implements MailFactory {
>
> -    private static Log log = LogFactory.getLog(DefaultMailFactory.class);
> +       protected void populateMessage(MimeMessage message, MailSender mailSender, MailProcessingRecord
mailProcessingRecord) throws MessagingException {
> +        message.addHeader("Mime-Version", "1.0");
> +        message.addHeader("Content-Type", "multipart/mixed");
>
> -    private final static char[] CHARSET = new char[]
> -                                {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j',
> -                                 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't',
> -                                 'u', 'v', 'w', 'x', 'y', 'z',
> -                                 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
> -                                 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
> -                                 'U', 'V', 'W', 'X', 'Y', 'Z'};
> -
> -
> -    public Message createMail(Session mailSession, MailSender mailSender, MailProcessingRecord
mailProcessingRecord) {
> -        MimeMessage message = new MimeMessage(mailSession);
> -
> -        try {
> -            message.addHeader("Mime-Version", "1.0");
> -            message.addHeader(HeaderConstants.JAMES_POSTAGE_HEADER, "This is a test
mail sent by James Postage");
> -            message.addHeader(HeaderConstants.JAMES_POSTAGE_VALIDATORCLASSNAME_HEADER,
"org.apache.james.postage.mail.DefaultMailValidator");
> -            message.setSubject(mailSender.getSubject());
> -            message.addHeader("Message-ID", "Postage-" + System.currentTimeMillis());
> -            mailProcessingRecord.setSubject(mailSender.getSubject());
> -            message.addHeader("Content-Type", "multipart/mixed");
> -
> -            Multipart multipart = new MimeMultipart("mixed");
> -
> -            if (mailProcessingRecord.getMailId() != null) {
> -                message.addHeader(HeaderConstants.MAIL_ID_HEADER, mailProcessingRecord.getMailId());
> -            } else {
> -               // TODO resolve situations when ID is null
> -               log.warn("ID header is NULL!");
> -               throw new RuntimeException("could not create mail with ID = NULL");
> -            }
> -
> -            if (mailSender.sendTextPart()) {
> -                int sizeMinText = mailSender.getSizeMinText();
> -                int sizeMaxText = mailSender.getSizeMaxText();
> -                MimeBodyPart part = new MimeBodyPart();
> +               Multipart multipart = new MimeMultipart("mixed");
>
> -                int mailSize = generateRandomPartSize(sizeMinText, sizeMaxText);
> -                mailProcessingRecord.setByteSendText(mailSize);
> +               if (mailSender.sendTextPart()) {
> +                   int sizeMinText = mailSender.getSizeMinText();
> +                   int sizeMaxText = mailSender.getSizeMaxText();
> +                   MimeBodyPart part = new MimeBodyPart();
>
> -                StringBuffer textBody = new StringBuffer(mailSize);
> -                for (int i = 0; i < mailSize; i++) textBody.append(getRandomChar());
> +                   int mailSize = generateRandomPartSize(sizeMinText, sizeMaxText);
> +                   mailProcessingRecord.setByteSendText(mailSize);
>
> -                part.setText(textBody.toString());
> +                   StringBuffer textBody = new StringBuffer(mailSize);
> +                   for (int i = 0; i < mailSize; i++) textBody.append(getRandomChar());
> +
> +                   part.setText(textBody.toString());
>
>  //                part.setDataHandler(new DataHandler(textBody.toString(), "text/plain"));
> -
> -                multipart.addBodyPart(part);
> -            }
> -
> -            if (mailSender.sendBinaryPart()) {
> -                int sizeMinBinary = mailSender.getSizeMinBinary();
> -                int sizeMaxBinary = mailSender.getSizeMaxBinary();
> -                MimeBodyPart part = new MimeBodyPart();
> -
> -                int mailSize = generateRandomPartSize(sizeMinBinary, sizeMaxBinary);
> -                mailProcessingRecord.setByteSendBinary(mailSize);
> -
> -                byte[] bytes = new byte[mailSize];
> -                for (int i = 0; i < mailSize; i++) bytes[i] = getRandomByte();
> -
> -                part.setDataHandler(new DataHandler(new ByteArrayDataSource(bytes, "application/octet-stream")));
> -                multipart.addBodyPart(part);
> -            }
> -            message.setContent(multipart);
> -        } catch (MessagingException e) {
> -            mailProcessingRecord.setErrorTextSending(e.toString());
> -            log.error("mail could not be created", e);
> -            return null;
> -        }
> -        return message;
> -    }
> -
> -    private int generateRandomPartSize(int sizeMin, int sizeMax) {
> -        return (int)(Math.random() * (double)(sizeMax - sizeMin)) + sizeMin;
> -    }
> -
> -    public static char getRandomChar() {
> -        return CHARSET[getRandomInt()];
> -    }
> -
> -    private static int getRandomInt() {
> -        return (int)(Math.random() * (double)(CHARSET.length - 1));
> -    }
> -
> -    public static byte getRandomByte() {
> -        return (byte)CHARSET[getRandomInt()];
> -    }
> +
> +                   multipart.addBodyPart(part);
> +               }
> +
> +               if (mailSender.sendBinaryPart()) {
> +                   int sizeMinBinary = mailSender.getSizeMinBinary();
> +                   int sizeMaxBinary = mailSender.getSizeMaxBinary();
> +                   MimeBodyPart part = new MimeBodyPart();
> +
> +                   int mailSize = generateRandomPartSize(sizeMinBinary, sizeMaxBinary);
> +                   mailProcessingRecord.setByteSendBinary(mailSize);
> +
> +                   byte[] bytes = new byte[mailSize];
> +                   for (int i = 0; i < mailSize; i++) bytes[i] = getRandomByte();
> +
> +                   part.setDataHandler(new DataHandler(new ByteArrayDataSource(bytes,
"application/octet-stream")));
> +                   multipart.addBodyPart(part);
> +               }
> +               message.setContent(multipart);
> +       }
> +
> +       protected Class getValidatorClass() {
> +               return DefaultMailValidator.class;
> +       }
> +
>  }
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: server-dev-unsubscribe@james.apache.org
> For additional commands, e-mail: server-dev-help@james.apache.org
>
>

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


Mime
View raw message