I committed fixes. Sorry, it was too late I think when I did this. Tell me if it's OK now.
On Sun, Feb 5, 2012 at 2:05 PM, sebb <[email protected]> wrote: > On 5 February 2012 08:00, <[email protected]> wrote: > > Author: pmouawad > > Date: Sun Feb 5 08:00:38 2012 > > New Revision: 1240674 > > > > URL: http://svn.apache.org/viewvc?rev=1240674&view=rev > > Log: > > Bug 52603 - MailerVisualizer : Enable SSL , TLS and Authentication > > > > Modified: > > > jmeter/trunk/src/components/org/apache/jmeter/reporters/MailerModel.java > > > > jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java > > jmeter/trunk/xdocs/changes.xml > > > > Modified: > jmeter/trunk/src/components/org/apache/jmeter/reporters/MailerModel.java > > URL: > http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/reporters/MailerModel.java?rev=1240674&r1=1240673&r2=1240674&view=diff > > > ============================================================================== > > --- > jmeter/trunk/src/components/org/apache/jmeter/reporters/MailerModel.java > (original) > > +++ > jmeter/trunk/src/components/org/apache/jmeter/reporters/MailerModel.java > Sun Feb 5 08:00:38 2012 > > @@ -24,8 +24,10 @@ import java.util.List; > > import java.util.Properties; > > import java.util.StringTokenizer; > > > > +import javax.mail.Authenticator; > > import javax.mail.Message; > > import javax.mail.MessagingException; > > +import javax.mail.PasswordAuthentication; > > import javax.mail.Session; > > import javax.mail.Transport; > > import javax.mail.internet.AddressException; > > @@ -34,6 +36,7 @@ import javax.mail.internet.MimeMessage; > > import javax.swing.event.ChangeEvent; > > import javax.swing.event.ChangeListener; > > > > +import org.apache.commons.lang.StringUtils; > > import org.apache.jmeter.samplers.SampleResult; > > import org.apache.jmeter.testelement.AbstractTestElement; > > import org.apache.jmeter.util.JMeterUtils; > > @@ -45,13 +48,31 @@ import org.apache.log.Logger; > > * > > */ > > public class MailerModel extends AbstractTestElement implements > Serializable { > > - > > + public static enum MailAuthType { > > + SSL("SSL"), > > + TLS("TLS"), > > + NONE(""); > > + > > + final private String value; > > + MailAuthType(String value) { > > + this.value = value; > > + } > > + } > > + > > private static final long serialVersionUID = 233L; > > > > private static final Logger log = LoggingManager.getLoggerForClass(); > > > > private static final String MAIL_SMTP_HOST = "mail.smtp.host"; > //$NON-NLS-1$ > > > > + private static final String MAIL_SMTP_PORT = "mail.smtp.port"; > //$NON-NLS-1$ > > + > > + private static final String MAIL_SMTP_AUTH = "mail.smtp.auth"; > //$NON-NLS-1$ > > + > > + private static final String MAIL_SMTP_SOCKETFACTORY_CLASS = > "mail.smtp.socketFactory.class"; //$NON-NLS-1$ > > + > > + private static final String MAIL_SMTP_STARTTLS = > "mail.smtp.starttls.enable"; //$NON-NLS-1$ > > + > > private long failureCount = 0; > > > > private long successCount = 0; > > @@ -68,6 +89,8 @@ public class MailerModel extends Abstrac > > > > private static final String HOST_KEY = "MailerModel.smtpHost"; > //$NON-NLS-1$ > > > > + private static final String PORT_KEY = "MailerModel.smtpPort"; > //$NON-NLS-1$ > > + > > private static final String SUCCESS_SUBJECT = > "MailerModel.successSubject"; //$NON-NLS-1$ > > > > private static final String FAILURE_SUBJECT = > "MailerModel.failureSubject"; //$NON-NLS-1$ > > @@ -76,8 +99,16 @@ public class MailerModel extends Abstrac > > > > private static final String SUCCESS_LIMIT_KEY = > "MailerModel.successLimit"; //$NON-NLS-1$ > > > > + private static final String LOGIN = "MailerModel.login"; > //$NON-NLS-1$ > > + > > + private static final String PASSWORD = "MailerModel.password"; > //$NON-NLS-1$ > > + > > + private static final String MAIL_AUTH_TYPE = > "MailerModel.authType"; //$NON-NLS-1$ > > + > > private static final String DEFAULT_LIMIT = "2"; //$NON-NLS-1$ > > > > + private static final int DEFAULT_SMTP_PORT = 25; > > + > > /** The listener for changes. */ > > private transient ChangeListener changeListener; > > > > @@ -180,7 +211,9 @@ public class MailerModel extends Abstrac > > if (addressList.size() != 0) { > > try { > > sendMail(getFromAddress(), addressList, > getFailureSubject(), "URL Failed: " > > - + sample.getSampleLabel(), getSmtpHost()); > > + + sample.getSampleLabel(), getSmtpHost(), > > + getSmtpPort(), getLogin(), getPassword(), > > + getMailAuthType()); > > } catch (Exception e) { > > log.error("Problem sending mail: "+e); > > } > > @@ -215,6 +248,8 @@ public class MailerModel extends Abstrac > > notifyChangeListeners(); > > } > > > > + > > + > > /** > > * Resets the state of this object to its default. But: This method > does not > > * reset any mail-specific attributes (like sender, mail-subject...) > since > > @@ -257,8 +292,35 @@ public class MailerModel extends Abstrac > > * the message-body. > > * @param smtpHost > > * the smtp-server used to send the mail. > > + * @throws MessagingException > > + * @throws AddressException > > AFAIK, @throws clauses need some text > > > */ > > - public void sendMail(String from, List<String> vEmails, String > subject, String attText, String smtpHost) > > + public void sendMail(String from, List<String> vEmails, String > subject, String attText, String smtpHost) > > + throws AddressException, MessagingException { > > + sendMail(from, vEmails, subject, attText, smtpHost, null, null, > null, null); > > + } > > + > > + /** > > + * Sends a mail with the given parameters using SMTP. > > + * > > + * @param from > > + * the sender of the mail as shown in the mail-client. > > + * @param vEmails > > + * all receivers of the mail. The receivers are > seperated by > > + * commas. > > + * @param subject > > + * the subject of the mail. > > + * @param attText > > + * the message-body. > > + * @param smtpHost > > + * the smtp-server used to send the mail. > > + */ > > @throws clauses? > > > + public void sendMail(String from, List<String> vEmails, String > subject, > > + String attText, String smtpHost, > > + Integer smtpPort, > > + final String user, > > + final String password, > > + MailAuthType mailAuthType) > > throws AddressException, MessagingException { > > String host = smtpHost; > > boolean debug = Boolean.valueOf(host).booleanValue(); > > @@ -274,15 +336,39 @@ public class MailerModel extends Abstrac > > Properties props = new Properties(); > > > > props.put(MAIL_SMTP_HOST, host); > > - Session session = Session.getDefaultInstance(props, null); > > + if(smtpPort != null) { > > + props.put(MAIL_SMTP_PORT, smtpPort); > > + } > > + Authenticator authenticator = null; > > + if(mailAuthType != MailAuthType.NONE) { > > + props.put(MAIL_SMTP_AUTH, "true"); > > + switch (mailAuthType) { > > + case SSL: > > + props.put(MAIL_SMTP_SOCKETFACTORY_CLASS, > > + "javax.net.ssl.SSLSocketFactory"); > > + break; > > + case TLS: > > + props.put(MAIL_SMTP_STARTTLS, > > + "true"); > > + break; > > + > > + default: > > + break; > > + } > > + } > > + > > + if(!StringUtils.isEmpty(user)) { > > + authenticator = > > + new javax.mail.Authenticator() { > > + protected PasswordAuthentication > getPasswordAuthentication() { > > + return new > PasswordAuthentication(user,password); > > + } > > + }; > > + } > > + Session session = Session.getInstance(props, authenticator); > > // N.B. properties are only used when the default session is > first > > // created > > // so check if the mail host needs to be reset... > > Do the above comments still apply? > If so, where is the code? > If not, please remove. > > > - props = session.getProperties(); > > - if (!host.equalsIgnoreCase(props.getProperty(MAIL_SMTP_HOST))) { > > - props.setProperty(MAIL_SMTP_HOST, host); > > - } > > - > > session.setDebug(debug); > > > > // create a message > > @@ -305,7 +391,11 @@ public class MailerModel extends Abstrac > > > > log.info(attText); > > > > - sendMail(from, getAddressList(), subject, attText, smtpHost); > > + sendMail(from, getAddressList(), subject, attText, smtpHost, > > + getSmtpPort(), > > + getLogin(), > > + getPassword(), > > + getMailAuthType()); > > log.info("Test mail sent successfully!!"); > > } > > > > @@ -327,6 +417,26 @@ public class MailerModel extends Abstrac > > setProperty(HOST_KEY, str); > > } > > > > + public void setSmtpPort(Integer str) { > > + if(str== null) { > > + setProperty(PORT_KEY, DEFAULT_SMTP_PORT); > > + } else { > > + setProperty(PORT_KEY, str); > > + } > > + } > > + > > + public void setLogin(String login) { > > + setProperty(LOGIN, login); > > + } > > + > > + public void setPassword(String password) { > > + setProperty(PASSWORD, password); > > + } > > + > > + public void setMailAuthType(String value) { > > + setProperty(MAIL_AUTH_TYPE, value, ""); > > + } > > + > > public void setFailureSubject(String str) { > > setProperty(FAILURE_SUBJECT, str); > > } > > @@ -365,6 +475,10 @@ public class MailerModel extends Abstrac > > return getPropertyAsString(HOST_KEY); > > } > > > > + public int getSmtpPort() { > > + return getPropertyAsInt(PORT_KEY, DEFAULT_SMTP_PORT); > > + } > > + > > public String getFailureSubject() { > > return getPropertyAsString(FAILURE_SUBJECT); > > } > > @@ -388,4 +502,17 @@ public class MailerModel extends Abstrac > > public long getFailureCount() { > > return this.failureCount; > > } > > -} > > + > > + public String getLogin() { > > + return getPropertyAsString(LOGIN); > > + } > > + > > + public String getPassword() { > > + return getPropertyAsString(PASSWORD); > > + } > > + > > + public MailAuthType getMailAuthType() { > > + String authType = getPropertyAsString(MAIL_AUTH_TYPE, > MailAuthType.NONE.toString()); > > + return MailAuthType.valueOf(authType); > > + } > > +} > > \ No newline at end of file > > > > Modified: > jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java > > URL: > http://svn.apache.org/viewvc/jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java?rev=1240674&r1=1240673&r2=1240674&view=diff > > > ============================================================================== > > --- > jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java > (original) > > +++ > jmeter/trunk/src/components/org/apache/jmeter/visualizers/MailerVisualizer.java > Sun Feb 5 08:00:38 2012 > > @@ -24,19 +24,23 @@ import java.awt.GridBagLayout; > > import java.awt.Insets; > > import java.awt.event.ActionEvent; > > import java.awt.event.ActionListener; > > + > > import javax.mail.MessagingException; > > import javax.mail.internet.AddressException; > > import javax.swing.BorderFactory; > > import javax.swing.JButton; > > +import javax.swing.JComboBox; > > import javax.swing.JLabel; > > import javax.swing.JOptionPane; > > import javax.swing.JPanel; > > +import javax.swing.JPasswordField; > > import javax.swing.JTextField; > > import javax.swing.border.Border; > > import javax.swing.border.EmptyBorder; > > import javax.swing.event.ChangeEvent; > > import javax.swing.event.ChangeListener; > > > > +import org.apache.commons.lang.StringUtils; > > import org.apache.jmeter.gui.util.VerticalPanel; > > import org.apache.jmeter.reporters.MailerModel; > > import org.apache.jmeter.reporters.MailerResultCollector; > > @@ -72,6 +76,8 @@ public class MailerVisualizer extends Ab > > > > private JTextField smtpHostField; > > > > + private JTextField smtpPortField; > > + > > private JTextField failureSubjectField; > > > > private JTextField successSubjectField; > > @@ -82,6 +88,13 @@ public class MailerVisualizer extends Ab > > > > private JTextField successLimitField; > > > > + private JTextField smtpLoginField; > > + > > + private JTextField smtpPasswordField; > > + > > + private JComboBox authTypeCombo; > > + > > + > > // private JPanel mainPanel; > > // private JLabel panelTitleLabel; > > > > @@ -180,6 +193,45 @@ public class MailerVisualizer extends Ab > > mailerPanel.add(smtpHostField); > > > > c.gridwidth = 1; > > + mailerPanel.add(new JLabel("SMTP Port:")); > > + > > + smtpPortField = new JTextField(25); > > + smtpPortField.setEditable(true); > > + c.gridwidth = GridBagConstraints.REMAINDER; > > + g.setConstraints(smtpPortField, c); > > + mailerPanel.add(smtpPortField); > > + > > + c.gridwidth = 1; > > + mailerPanel.add(new JLabel("SMTP Login:")); > > + > > + smtpLoginField = new JTextField(25); > > + smtpLoginField.setEditable(true); > > + c.gridwidth = GridBagConstraints.REMAINDER; > > + g.setConstraints(smtpLoginField, c); > > + mailerPanel.add(smtpLoginField); > > + > > + c.gridwidth = 1; > > + mailerPanel.add(new JLabel("SMTP Password:")); > > + > > + smtpPasswordField = new JPasswordField(25); > > + smtpPasswordField.setEditable(true); > > + c.gridwidth = GridBagConstraints.REMAINDER; > > + g.setConstraints(smtpPasswordField, c); > > + mailerPanel.add(smtpPasswordField); > > + > > + c.gridwidth = 1; > > + mailerPanel.add(new JLabel("AUTH TYPE")); > > + > > + authTypeCombo = new JComboBox(new Object[] { > > + MailerModel.MailAuthType.NONE.toString(), > > + MailerModel.MailAuthType.SSL.toString(), > > + MailerModel.MailAuthType.TLS.toString()}); > > + c.gridwidth = GridBagConstraints.REMAINDER; > > + g.setConstraints(authTypeCombo, c); > > + mailerPanel.add(authTypeCombo); > > + > > + > > + c.gridwidth = 1; > > mailerPanel.add(new JLabel("Failure Subject:")); > > > > failureSubjectField = new JTextField(25); > > @@ -322,6 +374,13 @@ public class MailerVisualizer extends Ab > > mailerModel.setFailureSubject(failureSubjectField.getText()); > > mailerModel.setFromAddress(fromField.getText()); > > mailerModel.setSmtpHost(smtpHostField.getText()); > > + mailerModel.setSmtpPort( > > + StringUtils.isEmpty(smtpPortField.getText()) ? > > + null : > Integer.valueOf(smtpPortField.getText())); > > + mailerModel.setLogin(smtpLoginField.getText()); > > + mailerModel.setPassword(smtpPasswordField.getText()); > > + mailerModel.setMailAuthType( > > + authTypeCombo.getSelectedItem().toString()); > > mailerModel.setSuccessLimit(successLimitField.getText()); > > mailerModel.setSuccessSubject(successSubjectField.getText()); > > mailerModel.setToAddress(addressField.getText()); > > @@ -341,6 +400,10 @@ public class MailerVisualizer extends Ab > > addressField.setText(model.getToAddress()); > > fromField.setText(model.getFromAddress()); > > smtpHostField.setText(model.getSmtpHost()); > > + smtpPortField.setText(Integer.toString(model.getSmtpPort())); > > + smtpLoginField.setText(model.getLogin()); > > + smtpPasswordField.setText(model.getPassword()); > > + > authTypeCombo.setSelectedItem(model.getMailAuthType().toString()); > > successSubjectField.setText(model.getSuccessSubject()); > > failureSubjectField.setText(model.getFailureSubject()); > > > failureLimitField.setText(String.valueOf(model.getFailureLimit())); > > > > Modified: jmeter/trunk/xdocs/changes.xml > > URL: > http://svn.apache.org/viewvc/jmeter/trunk/xdocs/changes.xml?rev=1240674&r1=1240673&r2=1240674&view=diff > > > ============================================================================== > > --- jmeter/trunk/xdocs/changes.xml (original) > > +++ jmeter/trunk/xdocs/changes.xml Sun Feb 5 08:00:38 2012 > > @@ -118,6 +118,7 @@ or a Debug Sampler with all fields set t > > > > <h3>Listeners</h3> > > <ul> > > +<li>Bug 52603 - MailerVisualizer : Enable SSL , TLS and > Authentication</li> > > </ul> > > > > <h3>Timers, Assertions, Config, Pre- & Post-Processors</h3> > > > > > -- Cordialement. Philippe Mouawad.
