Author: sebb
Date: Mon Aug 16 20:54:59 2010
New Revision: 986129

URL: http://svn.apache.org/viewvc?rev=986129&view=rev
Log:
Bug 49622 - Allow sending messages without a subject (SMTP Sampler)

Modified:
    
jakarta/jmeter/trunk/src/core/org/apache/jmeter/resources/messages.properties
    
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/SmtpSampler.java
    
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/gui/SmtpPanel.java
    
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/gui/SmtpSamplerGui.java
    
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/protocol/SendMailCommand.java
    jakarta/jmeter/trunk/xdocs/changes.xml
    jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml

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=986129&r1=986128&r2=986129&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 
Mon Aug 16 20:54:59 2010
@@ -812,6 +812,7 @@ smtp_server_port=Port:
 smtp_server=Server:
 smtp_server_settings=Server settings
 smtp_subject=Subject:
+smtp_suppresssubj=Suppress Subject Header
 smtp_to=Address To:
 smtp_timestamp=Include timestamp in subject
 smtp_trustall=Trust all certificates

Modified: 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/SmtpSampler.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/SmtpSampler.java?rev=986129&r1=986128&r2=986129&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/SmtpSampler.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/SmtpSampler.java
 Mon Aug 16 20:54:59 2010
@@ -65,6 +65,7 @@ public class SmtpSampler extends Abstrac
     public final static String RECEIVER_BCC         = 
"SMTPSampler.receiverBCC"; // $NON-NLS-1$
 
     public final static String SUBJECT              = "SMTPSampler.subject"; 
// $NON-NLS-1$
+    public final static String SUPPRESS_SUBJECT     = 
"SMTPSampler.suppressSubject"; // $NON-NLS-1$
     public final static String MESSAGE              = "SMTPSampler.message"; 
// $NON-NLS-1$
     public final static String INCLUDE_TIMESTAMP    = 
"SMTPSampler.include_timestamp"; // $NON-NLS-1$
     public final static String ATTACH_FILE          = 
"SMTPSampler.attachFile"; // $NON-NLS-1$
@@ -135,12 +136,20 @@ public class SmtpSampler extends Abstrac
             instance.setReceiverTo(getPropNameAsAddresses(receiverTo));
             instance.setReceiverCC(getPropNameAsAddresses(receiverCC));
             instance.setReceiverBCC(getPropNameAsAddresses(receiverBcc));
-
-            instance.setSubject(getPropertyAsString(SUBJECT)
-                    + (getPropertyAsBoolean(INCLUDE_TIMESTAMP) ?
-                            " <<< current timestamp: " + new Date().getTime() 
+ " >>>"
-                            : ""
-                       ));
+            
+            if(getPropertyAsBoolean(SUPPRESS_SUBJECT)){
+               instance.setSubject(null);
+            }else{
+               String subject = getPropertyAsString(SUBJECT);
+               if (getPropertyAsBoolean(INCLUDE_TIMESTAMP)){
+                       StringBuffer sb = new StringBuffer(subject);
+                       sb.append(" <<< current timestamp: ");
+                       sb.append(new Date().getTime());
+                       sb.append(" >>>");
+                       subject = sb.toString();
+               }
+               instance.setSubject(subject);
+            }
 
             if (!getPropertyAsBoolean(USE_EML)) { // part is only needed if we
                 // don't send an .eml-file

Modified: 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/gui/SmtpPanel.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/gui/SmtpPanel.java?rev=986129&r1=986128&r2=986129&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/gui/SmtpPanel.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/gui/SmtpPanel.java
 Mon Aug 16 20:54:59 2010
@@ -95,6 +95,7 @@ public class SmtpPanel extends JPanel {
     private JTextField tfAuthPassword;
     private JTextField tfAuthUsername;
     private JTextField tfSubject;
+    private JCheckBox cbSuppressSubject;
     private JCheckBox cbIncludeTimestamp;
     private JCheckBox cbMessageSizeStats;
     private JCheckBox cbEnableDebug;
@@ -289,6 +290,25 @@ public class SmtpPanel extends JPanel {
     }
 
     /**
+     * Returns true if subject header should be suppressed
+     *
+     * @return true if subject header should be suppressed
+     */
+    public boolean isSuppressSubject() {
+        return cbSuppressSubject.isSelected();
+    }
+
+    /**
+     * Sets the property that defines if the subject header should be 
suppressed
+     *
+     * @param emptySubject
+     *            
+     */
+    public void setSuppressSubject(boolean emptySubject) {
+        cbSuppressSubject.setSelected(emptySubject);
+    }
+    
+    /**
      * Returns if mail-server needs authentication (checkbox)
      *
      * @return true if authentication is used
@@ -602,6 +622,13 @@ public class SmtpPanel extends JPanel {
         tfEmlMessage = new JTextField(30);
 
         taMessage = new JTextArea(5, 20);
+        
+        cbSuppressSubject = new 
JCheckBox(JMeterUtils.getResString("smtp_suppresssubj")); // $NON-NLS-1$
+        cbSuppressSubject.addActionListener(new ActionListener() {
+            public void actionPerformed(ActionEvent evt) {
+                emptySubjectActionPerformed(evt);
+            }
+        });
 
         cbUseAuth = new JCheckBox(JMeterUtils.getResString("smtp_useauth")); 
// $NON-NLS-1$
         rbUseNone = new 
JRadioButton(JMeterUtils.getResString("smtp_usenone")); // $NON-NLS-1$
@@ -894,11 +921,18 @@ public class SmtpPanel extends JPanel {
         gridBagConstraints.gridy = 0;
         gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
         panelMessageSettings.add(tfSubject, gridBagConstraints);
+        
+        cbSuppressSubject.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 
0));
+        cbSuppressSubject.setMargin(new java.awt.Insets(0, 0, 0, 0));
+        gridBagConstraints.gridx = 2;
+        gridBagConstraints.gridy = 0;
+        gridBagConstraints.fill = GridBagConstraints.NONE;
+        panelMessageSettings.add(cbSuppressSubject, gridBagConstraints);
 
         cbIncludeTimestamp.setBorder(BorderFactory.createEmptyBorder(0, 0, 0, 
0));
         cbIncludeTimestamp.setMargin(new java.awt.Insets(0, 0, 0, 0));
-        gridBagConstraints.gridx = 2;
-        gridBagConstraints.gridy = 0;
+        gridBagConstraints.gridx = 1;
+        gridBagConstraints.gridy = 1;
         gridBagConstraints.fill = GridBagConstraints.NONE;
         panelMessageSettings.add(cbIncludeTimestamp, gridBagConstraints);
 
@@ -933,26 +967,26 @@ public class SmtpPanel extends JPanel {
         headerFieldsPanel.add(headerFieldValue, gridBagConstraints);
         
         gridBagConstraintsMain.gridx = 1;
-        gridBagConstraintsMain.gridy = 1;
+        gridBagConstraintsMain.gridy = 2;
         panelMessageSettings.add(headerFieldsPanel, gridBagConstraintsMain);   
     
 
         gridBagConstraints.gridx = 0;
-        gridBagConstraints.gridy = 2;
+        gridBagConstraints.gridy = 3;
         panelMessageSettings.add(jlMessage, gridBagConstraints);
 
         taMessage.setBorder(BorderFactory.createBevelBorder(1));
         gridBagConstraints.gridx = 1;
-        gridBagConstraints.gridy = 2;
+        gridBagConstraints.gridy = 3;
         gridBagConstraints.fill = GridBagConstraints.BOTH;
         panelMessageSettings.add(taMessage, gridBagConstraints);
 
         gridBagConstraints.gridx = 0;
-        gridBagConstraints.gridy = 3;
+        gridBagConstraints.gridy = 4;
         gridBagConstraints.fill = GridBagConstraints.NONE;
         panelMessageSettings.add(jlAttachFile, gridBagConstraints);
 
         gridBagConstraints.gridx = 1;
-        gridBagConstraints.gridy = 3;
+        gridBagConstraints.gridy = 4;
         gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
         panelMessageSettings.add(tfAttachment, gridBagConstraints);
         
tfAttachment.setToolTipText(JMeterUtils.getResString("smtp_attach_file_tooltip"));
 // $NON-NLS-1$
@@ -964,7 +998,7 @@ public class SmtpPanel extends JPanel {
         });
 
         gridBagConstraints.gridx = 2;
-        gridBagConstraints.gridy = 3;
+        gridBagConstraints.gridy = 4;
         gridBagConstraints.fill = GridBagConstraints.NONE;
         panelMessageSettings.add(browseButton, gridBagConstraints);
 
@@ -976,12 +1010,12 @@ public class SmtpPanel extends JPanel {
         });
 
         gridBagConstraints.gridx = 0;
-        gridBagConstraints.gridy = 4;
+        gridBagConstraints.gridy = 5;
         gridBagConstraints.fill = GridBagConstraints.NONE;
         panelMessageSettings.add(cbUseEmlMessage, gridBagConstraints);
 
         gridBagConstraints.gridx = 1;
-        gridBagConstraints.gridy = 4;
+        gridBagConstraints.gridy = 5;
         gridBagConstraints.fill = GridBagConstraints.HORIZONTAL;
         tfEmlMessage.setEnabled(false);
         panelMessageSettings.add(tfEmlMessage, gridBagConstraints);
@@ -994,12 +1028,12 @@ public class SmtpPanel extends JPanel {
         emlBrowseButton.setEnabled(false);
 
         gridBagConstraints.gridx = 2;
-        gridBagConstraints.gridy = 4;
+        gridBagConstraints.gridy = 5;
         gridBagConstraints.fill = GridBagConstraints.NONE;
         panelMessageSettings.add(emlBrowseButton, gridBagConstraints);
 
         gridBagConstraintsMain.gridx = 0;
-        gridBagConstraintsMain.gridy = 5;
+        gridBagConstraintsMain.gridy = 6;
         add(panelMessageSettings, gridBagConstraintsMain);
 
         /*
@@ -1022,7 +1056,7 @@ public class SmtpPanel extends JPanel {
         panelAdditionalSettings.add(cbEnableDebug, gridBagConstraints);
 
         gridBagConstraintsMain.gridx = 0;
-        gridBagConstraintsMain.gridy = 6;
+        gridBagConstraintsMain.gridy = 7;
         add(panelAdditionalSettings, gridBagConstraintsMain);
     }
 
@@ -1212,7 +1246,8 @@ public class SmtpPanel extends JPanel {
         tfSubject.setText("");
         tfTrustStoreToUse.setText("");
         rbUseNone.setSelected(true);
-           clearHeaderFields();
+        cbSuppressSubject.setSelected(false);
+        clearHeaderFields();
         validate();        
     }
 
@@ -1293,4 +1328,16 @@ public class SmtpPanel extends JPanel {
             validate();
         }
     }
+    private void emptySubjectActionPerformed(ActionEvent evt) {
+               final Object source = evt.getSource();
+       if(source != null && source instanceof JCheckBox){
+               if(cbSuppressSubject.isSelected()){
+                       tfSubject.setEnabled(false);
+                       cbIncludeTimestamp.setEnabled(false);
+               }else{
+                       tfSubject.setEnabled(true);
+                       cbIncludeTimestamp.setEnabled(true);
+               }
+       }               
+       }
 }
\ No newline at end of file

Modified: 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/gui/SmtpSamplerGui.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/gui/SmtpSamplerGui.java?rev=986129&r1=986128&r2=986129&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/gui/SmtpSamplerGui.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/gui/SmtpSamplerGui.java
 Mon Aug 16 20:54:59 2010
@@ -75,6 +75,7 @@ public class SmtpSamplerGui extends Abst
 
         smtpPanel.setBody(element.getPropertyAsString(SmtpSampler.MESSAGE));
         smtpPanel.setSubject(element.getPropertyAsString(SmtpSampler.SUBJECT));
+        
smtpPanel.setSuppressSubject(element.getPropertyAsBoolean(SmtpSampler.SUPPRESS_SUBJECT));
         
smtpPanel.setIncludeTimestamp(element.getPropertyAsBoolean(SmtpSampler.INCLUDE_TIMESTAMP));
         JMeterProperty headers = 
element.getProperty(SmtpSampler.HEADER_FIELDS);
         if (headers instanceof CollectionProperty) { // Might be NullProperty
@@ -133,6 +134,7 @@ public class SmtpSamplerGui extends Abst
         te.setProperty(SmtpSampler.RECEIVER_CC, smtpPanel.getReceiverCC());
         te.setProperty(SmtpSampler.RECEIVER_BCC, smtpPanel.getReceiverBCC());
         te.setProperty(SmtpSampler.SUBJECT, smtpPanel.getSubject());
+        te.setProperty(SmtpSampler.SUPPRESS_SUBJECT, 
Boolean.toString(smtpPanel.isSuppressSubject()));
         te.setProperty(SmtpSampler.INCLUDE_TIMESTAMP, 
Boolean.toString(smtpPanel.isIncludeTimestamp()));
         te.setProperty(SmtpSampler.MESSAGE, smtpPanel.getBody());
         te.setProperty(SmtpSampler.ATTACH_FILE, smtpPanel.getAttachments());

Modified: 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/protocol/SendMailCommand.java
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/protocol/SendMailCommand.java?rev=986129&r1=986128&r2=986129&view=diff
==============================================================================
--- 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/protocol/SendMailCommand.java
 (original)
+++ 
jakarta/jmeter/trunk/src/protocol/mail/org/apache/jmeter/protocol/smtp/sampler/protocol/SendMailCommand.java
 Mon Aug 16 20:54:59 2010
@@ -191,9 +191,7 @@ public class SendMailCommand {
             message.setFrom(new InternetAddress(sender));
         }
 
-        if (null != subject) {
-            message.setSubject(subject);
-        }
+        message.setSubject(subject);
 
         if (receiverTo != null) {
             InternetAddress[] to = new InternetAddress[receiverTo.size()];
@@ -323,7 +321,7 @@ public class SendMailCommand {
      * Sets subject for current message - called by SmtpSampler-object
      *
      * @param subject
-     *            Subject for message of current message
+     *            Subject for message of current message - may be null
      */
     public void setSubject(String subject) {
         this.subject = subject;

Modified: jakarta/jmeter/trunk/xdocs/changes.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/changes.xml?rev=986129&r1=986128&r2=986129&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/changes.xml (original)
+++ jakarta/jmeter/trunk/xdocs/changes.xml Mon Aug 16 20:54:59 2010
@@ -110,6 +110,7 @@ To override the default local language f
 
 <h3>Other samplers</h3>
 <ul>
+<li>Bug 49622 - Allow sending messages without a subject (SMTP Sampler)</li>
 </ul>
 
 <h3>Controllers</h3>

Modified: jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml
URL: 
http://svn.apache.org/viewvc/jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml?rev=986129&r1=986128&r2=986129&view=diff
==============================================================================
--- jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml (original)
+++ jakarta/jmeter/trunk/xdocs/usermanual/component_reference.xml Mon Aug 16 
20:54:59 2010
@@ -1531,6 +1531,8 @@ Relative paths are resolved against the 
 <br />Failing that, against the directory containing the test script (JMX 
file).
 </property>
 <property name="Subject" required="">The e-mail message subject.</property>
+<property name="Suppress Subject Header" required="">If selected, the 
"Subject:" header is omitted from the mail that is sent. 
+This is different from sending an empty "Subject:" header, though some e-mail 
clients may display it identically.</property>
 <property name="Include timestamp in subject" required="">Includes the 
System.currentTimemilis() in the subject line.</property>
 <property name="Add Header" required="No">Additional headers can be defined 
using this button.</property>
 <property name="Message" required="">The message body.</property>



---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to