Author: sebb
Date: Thu Jun 26 19:15:01 2008
New Revision: 672077

URL: http://svn.apache.org/viewvc?rev=672077&view=rev
Log:
Bug 45200 - MailReaderSampler: store the whole MIME message in the SamplerResult

Removed:
    jakarta/jmeter/trunk/docs/images/screenshots/mailreadersampler.png
    jakarta/jmeter/trunk/xdocs/images/screenshots/mailreadersampler.png
Modified:
    jakarta/jmeter/trunk/docs/images/screenshots/mailreader_sampler.png
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
    
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java
    
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/gui/MailReaderSamplerGui.java
    jakarta/jmeter/trunk/xdocs/changes.xml
    jakarta/jmeter/trunk/xdocs/images/screenshots/mailreader_sampler.png
    jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml

Modified: jakarta/jmeter/trunk/docs/images/screenshots/mailreader_sampler.png
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/docs/images/screenshots/mailreader_sampler.png?rev=672077&r1=672076&r2=672077&view=diff
==============================================================================
Binary files - no diff available.

Modified: 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties?rev=672077&r1=672076&r2=672077&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties 
(original)
+++ 
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties 
Thu Jun 26 19:15:01 2008
@@ -448,6 +448,7 @@
 mail_reader_pop3s=POP3S
 mail_reader_server=Server:
 mail_reader_server_type=Server Type:
+mail_reader_storemime=Store the message using MIME
 mail_reader_title=Mail Reader Sampler
 mail_sent=Mail sent successfully
 mailer_attributes_panel=Mailing attributes

Modified: 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java?rev=672077&r1=672076&r2=672077&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/MailReaderSampler.java
 Thu Jun 26 19:15:01 2008
@@ -17,6 +17,7 @@
  */
 package org.apache.jmeter.protocol.mail.sampler;
 
+import java.io.ByteArrayOutputStream;
 import java.io.IOException;
 import java.io.UnsupportedEncodingException;
 import java.util.Properties;
@@ -54,6 +55,7 @@
        private final static String DELETE = "delete"; // $NON-NLS-1$
        private final static String NUM_MESSAGES = "num_messages"; // 
$NON-NLS-1$
        private static final String NEW_LINE = "\n"; // $NON-NLS-1$
+       private final static String STORE_MIME_MESSAGE = "storeMimeMessage";
        
        // Needed by GUI
        public final static String TYPE_POP3 = "pop3"; // $NON-NLS-1$
@@ -133,57 +135,10 @@
                                child.setSamplerData(cdata.toString());
                                cdata.setLength(0);
                                
-                               cdata.append("Date: "); // $NON-NLS-1$
-                               cdata.append(message.getSentDate());
-                               cdata.append(NEW_LINE);
-
-                               cdata.append("To: "); // $NON-NLS-1$
-                               Address[] recips = message.getAllRecipients();
-                               for (int j = 0; j < recips.length; j++) {
-                                       cdata.append(recips[j].toString());
-                                       if (j < recips.length - 1) {
-                                               cdata.append("; "); // 
$NON-NLS-1$
-                                       }
-                               }
-                               cdata.append(NEW_LINE);
-
-                               cdata.append("From: "); // $NON-NLS-1$
-                               Address[] from = message.getFrom();
-                               for (int j = 0; j < from.length; j++) {
-                                       cdata.append(from[j].toString());
-                                       if (j < from.length - 1) {
-                                               cdata.append("; "); // 
$NON-NLS-1$
-                                       }
-                               }
-                               cdata.append(NEW_LINE);
-
-                               cdata.append("Subject: "); // $NON-NLS-1$
-                               cdata.append(message.getSubject());
-                               cdata.append(NEW_LINE);
-                               
-                               cdata.append(NEW_LINE);
-                               Object content = message.getContent();
-                               if (content instanceof MimeMultipart) {
-                                       MimeMultipart mmp = (MimeMultipart) 
content;
-                                       int count = mmp.getCount();
-                                       cdata.append("Multipart. Count: ");
-                                       cdata.append(count);
-                                       cdata.append(NEW_LINE);
-                                       for (int j=0; j<count;j++){
-                                               BodyPart bodyPart = 
mmp.getBodyPart(j);
-                                               cdata.append("Type: ");
-                                               
cdata.append(bodyPart.getContentType());
-                                               cdata.append(NEW_LINE);
-                                               try {
-                                                       
cdata.append(bodyPart.getContent());
-                                               } catch 
(UnsupportedEncodingException ex){
-                                                       
cdata.append(ex.getLocalizedMessage());
-                                               }
-                                               cdata.append(NEW_LINE);
-                                       }
+                               if (isStoreMimeMessage()) {
+                    appendMessageAsMime(cdata, message);
                                } else {
-                                   cdata.append(content);
-                                       cdata.append(NEW_LINE);
+                    appendMessageData(cdata, message);
                                }
 
                                if (deleteMessages) {
@@ -232,6 +187,67 @@
                parent.setSuccessful(isOK);
                return parent;
        }
+       
+       private void appendMessageData(StringBuffer cdata, Message message)
+                       throws MessagingException, IOException {
+               cdata.append("Date: "); // $NON-NLS-1$
+               cdata.append(message.getSentDate());// TODO - use a different 
format here?
+               cdata.append(NEW_LINE);
+
+               cdata.append("To: "); // $NON-NLS-1$
+               Address[] recips = message.getAllRecipients();
+               for (int j = 0; j < recips.length; j++) {
+                       cdata.append(recips[j].toString());
+                       if (j < recips.length - 1) {
+                               cdata.append("; "); // $NON-NLS-1$
+                       }
+               }
+               cdata.append(NEW_LINE);
+
+               cdata.append("From: "); // $NON-NLS-1$
+               Address[] from = message.getFrom();
+               for (int j = 0; j < from.length; j++) {
+                       cdata.append(from[j].toString());
+                       if (j < from.length - 1) {
+                               cdata.append("; "); // $NON-NLS-1$
+                       }
+               }
+               cdata.append(NEW_LINE);
+
+               cdata.append("Subject: "); // $NON-NLS-1$
+               cdata.append(message.getSubject());
+               cdata.append(NEW_LINE);
+               
+               cdata.append(NEW_LINE);
+               Object content = message.getContent();
+               if (content instanceof MimeMultipart) {
+                       MimeMultipart mmp = (MimeMultipart) content;
+                       int count = mmp.getCount();
+                       cdata.append("Multipart. Count: ");
+                       cdata.append(count);
+                       cdata.append(NEW_LINE);
+                       for (int j=0; j<count;j++){
+                               BodyPart bodyPart = mmp.getBodyPart(j);
+                               cdata.append("Type: ");
+                               cdata.append(bodyPart.getContentType());
+                               cdata.append(NEW_LINE);
+                               try {
+                                       cdata.append(bodyPart.getContent());
+                               } catch (UnsupportedEncodingException ex){
+                                       cdata.append(ex.getLocalizedMessage());
+                               }
+                       }
+               } else {
+                   cdata.append(content);
+               }
+       }
+       
+       private void appendMessageAsMime(StringBuffer cdata, Message message)
+                       throws MessagingException, IOException {
+               ByteArrayOutputStream bout = new ByteArrayOutputStream();
+               message.writeTo(bout);
+               cdata.append(bout);
+       }
 
        /**
         * Sets the type of protocol to use when talking with the remote mail
@@ -363,4 +379,21 @@
        public boolean getDeleteMessages() {
                return getPropertyAsBoolean(DELETE);
        }
+       
+       /**
+        * @return Whether or not to store the retrieved message as MIME 
message in
+        *         the sample result
+        */
+       public boolean isStoreMimeMessage() {
+               return getPropertyAsBoolean(STORE_MIME_MESSAGE, false);
+       }
+
+       /**
+        * @param storeMimeMessage
+        *            Whether or not to store the retrieved message as MIME 
message in the
+        *            sample result
+        */
+       public void setStoreMimeMessage(boolean storeMimeMessage) {
+               setProperty(STORE_MIME_MESSAGE, storeMimeMessage, false);
+       }
 }

Modified: 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/gui/MailReaderSamplerGui.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/gui/MailReaderSamplerGui.java?rev=672077&r1=672076&r2=672077&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/gui/MailReaderSamplerGui.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/mail/sampler/gui/MailReaderSamplerGui.java
 Thu Jun 26 19:15:01 2008
@@ -60,6 +60,8 @@
        private JTextField someMessagesField;
 
        private JCheckBox deleteBox;
+       
+       private JCheckBox storeMimeMessageBox;
 
        // Labels
        private final static String POP3Label = 
JMeterUtils.getResString("mail_reader_pop3");// $NON-NLS-1$
@@ -86,6 +88,8 @@
 
        private final static String FolderLabel = 
JMeterUtils.getResString("mail_reader_folder");// $NON-NLS-1$
 
+    private final static String STOREMIME = 
JMeterUtils.getResString("mail_reader_storemime");// $NON-NLS-1$
+
        private static final String INBOX = "INBOX"; // $NON-NLS-1$
 
        public MailReaderSamplerGui() {
@@ -128,6 +132,7 @@
                        someMessagesField.setText(mrs.getNumMessagesString());
                }
                deleteBox.setSelected(mrs.getDeleteMessages());
+               storeMimeMessageBox.setSelected(mrs.isStoreMimeMessage());
                super.configure(element);
        }
 
@@ -175,6 +180,7 @@
                        mrs.setNumMessages(someMessagesField.getText());
                }
                mrs.setDeleteMessages(deleteBox.isSelected());
+               mrs.setStoreMimeMessage(storeMimeMessageBox.isSelected());
        }
 
        // TODO - fix GUI layout problems
@@ -266,6 +272,9 @@
 
                deleteBox = new JCheckBox(DeleteLabel);
                add(deleteBox);
+               
+               storeMimeMessageBox = new JCheckBox(STOREMIME);
+               add(storeMimeMessageBox);
        }
 
        public void clearGui() {
@@ -278,9 +287,11 @@
                //someMessagesButton.setSelected(false);
                //someMessagesField.setText("0");
                deleteBox.setSelected(false);
+               storeMimeMessageBox.setSelected(false);
                folderBox.setText(INBOX);
-               passwordBox.setText("");
-               serverBox.setText("");
-               usernameBox.setText("");
+               serverTypeBox.setSelectedIndex(0);
+               passwordBox.setText("");// $NON-NLS-1$
+               serverBox.setText("");// $NON-NLS-1$
+               usernameBox.setText("");// $NON-NLS-1$
        }
 }

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=672077&r1=672076&r2=672077&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Thu Jun 26 19:15:01 2008
@@ -86,6 +86,7 @@
 <li>Add OUT variable to jexl function</li>
 <li>Save Responses to a file can save the generated filename(s) to 
variables.</li>
 <li>Add BSF Listener element</li>
+<li>Bug 45200 - MailReaderSampler: store the whole MIME message in the 
SamplerResult</li>
 </ul>
 
 <h3>Non-functional changes</h3>

Modified: jakarta/jmeter/trunk/xdocs/images/screenshots/mailreader_sampler.png
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/images/screenshots/mailreader_sampler.png?rev=672077&r1=672076&r2=672077&view=diff
==============================================================================
Binary files - no diff available.

Modified: jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=672077&r1=672076&r2=672077&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Thu Jun 26 
19:15:01 2008
@@ -1201,8 +1201,27 @@
 </properties>
 </component>
 
-<component name="Mail Reader Sampler"  index="&sect-num;.1.17"  width="344" 
height="318" screenshot="mailreader_sampler.png">
-<description>TBA</description>
+<component name="Mail Reader Sampler"  index="&sect-num;.1.17"  width="340" 
height="365" screenshot="mailreader_sampler.png">
+<description>
+<p>
+The Mail Reader Sampler can read (and optionally delete) mail messages using 
POP3(S) or IMAP(S) protocols.
+</p>
+<note>
+The sampler requires the JavaMail and JAF jars to be available on the 
classpath.
+To use POP3S or IMAPS requires a recent version of JavaMail (e.g. JavaMail 
1.4.1 and JAF 1.1.1).
+</note>
+</description>
+<properties>
+<property name="Name" required="">Descriptive name for this element that is 
shown in the tree.</property>
+<property name="Server Type" required="Yes">The protocol used by the server: 
POP3, POP3S, IMAP, IMAPS</property>
+<property name="Server" required="Yes">Hostname or IP address of the 
server</property>
+<property name="Username" required="">User login name</property>
+<property name="Password" required="">User login password (N.B. this is stored 
unencrypted in the test plan)</property>
+<property name="Folder" required="Yes, if using IMAP(S)">The IMAP(S) folder to 
use</property>
+<property name="Number of messages to retrieve" required="Yes">Set this to 
retrieve all or some messages</property>
+<property name="Delete messages from the server" required="Yes">If set, 
messages will be deleted after retrieval</property>
+<property name="Store the message using MIME" required="Yes">Whether to store 
the message as MIME. If not, fewer headers are stored (Date, To, From, 
Subject).</property>
+</properties>
 </component>
 
 <component name="Test Action" index="&sect-num;.1.18"  width="351" 
height="182" screenshot="test_action.png">



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

Reply via email to