Skip to content

Commit

Permalink
Add default methods to MailSender and JavaMailSender when appropriate
Browse files Browse the repository at this point in the history
send(..) -methods of JavaMailSenderImpl which is only delegating to
other methods are pulled up as default methods in the interfaces
JavaMailSender and MailSender, to make these interfaces require fewer
methods to implement.

See gh-23651
runeflobakk authored and snicoll committed Sep 15, 2023

Verified

This commit was created on GitHub.com and signed with GitHub’s verified signature.
1 parent 3c4eef1 commit f67fad4
Showing 3 changed files with 34 additions and 42 deletions.
Original file line number Diff line number Diff line change
@@ -38,7 +38,9 @@ public interface MailSender {
* @throws MailAuthenticationException in case of authentication failure
* @throws MailSendException in case of failure when sending the message
*/
void send(SimpleMailMessage simpleMessage) throws MailException;
default void send(SimpleMailMessage simpleMessage) throws MailException {
send(new SimpleMailMessage[] {simpleMessage});
}

/**
* Send the given array of simple mail messages in batch.
Original file line number Diff line number Diff line change
@@ -17,10 +17,15 @@
package org.springframework.mail.javamail;

import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;

import javax.mail.MessagingException;
import jakarta.mail.internet.MimeMessage;

import org.springframework.mail.MailException;
import org.springframework.mail.MailParseException;
import org.springframework.mail.MailPreparationException;
import org.springframework.mail.MailSender;

/**
@@ -92,7 +97,9 @@ public interface JavaMailSender extends MailSender {
* in case of failure when sending the message
* @see #createMimeMessage
*/
void send(MimeMessage mimeMessage) throws MailException;
default void send(MimeMessage mimeMessage) throws MailException {
send(new MimeMessage[] {mimeMessage});
}

/**
* Send the given array of JavaMail MIME messages in batch.
@@ -121,7 +128,9 @@ public interface JavaMailSender extends MailSender {
* @throws org.springframework.mail.MailSendException
* in case of failure when sending the message
*/
void send(MimeMessagePreparator mimeMessagePreparator) throws MailException;
default void send(MimeMessagePreparator mimeMessagePreparator) throws MailException {
send(new MimeMessagePreparator[] {mimeMessagePreparator});
}

/**
* Send the JavaMail MIME messages prepared by the given MimeMessagePreparators.
@@ -138,6 +147,25 @@ public interface JavaMailSender extends MailSender {
* @throws org.springframework.mail.MailSendException
* in case of failure when sending a message
*/
void send(MimeMessagePreparator... mimeMessagePreparators) throws MailException;
default void send(MimeMessagePreparator... mimeMessagePreparators) throws MailException {
try {
List<MimeMessage> mimeMessages = new ArrayList<>(mimeMessagePreparators.length);
for (MimeMessagePreparator preparator : mimeMessagePreparators) {
MimeMessage mimeMessage = createMimeMessage();
preparator.prepare(mimeMessage);
mimeMessages.add(mimeMessage);
}
send(mimeMessages.toArray(new MimeMessage[0]));
}
catch (MailException ex) {
throw ex;
}
catch (MessagingException ex) {
throw new MailParseException(ex);
}
catch (Exception ex) {
throw new MailPreparationException(ex);
}
}

}
Original file line number Diff line number Diff line change
@@ -37,7 +37,6 @@
import org.springframework.mail.MailAuthenticationException;
import org.springframework.mail.MailException;
import org.springframework.mail.MailParseException;
import org.springframework.mail.MailPreparationException;
import org.springframework.mail.MailSendException;
import org.springframework.mail.SimpleMailMessage;
import org.springframework.util.Assert;
@@ -307,11 +306,6 @@ public FileTypeMap getDefaultFileTypeMap() {
// Implementation of MailSender
//---------------------------------------------------------------------

@Override
public void send(SimpleMailMessage simpleMessage) throws MailException {
send(new SimpleMailMessage[] {simpleMessage});
}

@Override
public void send(SimpleMailMessage... simpleMessages) throws MailException {
List<MimeMessage> mimeMessages = new ArrayList<>(simpleMessages.length);
@@ -351,43 +345,11 @@ public MimeMessage createMimeMessage(InputStream contentStream) throws MailExcep
}
}

@Override
public void send(MimeMessage mimeMessage) throws MailException {
send(new MimeMessage[] {mimeMessage});
}

@Override
public void send(MimeMessage... mimeMessages) throws MailException {
doSend(mimeMessages, null);
}

@Override
public void send(MimeMessagePreparator mimeMessagePreparator) throws MailException {
send(new MimeMessagePreparator[] {mimeMessagePreparator});
}

@Override
public void send(MimeMessagePreparator... mimeMessagePreparators) throws MailException {
try {
List<MimeMessage> mimeMessages = new ArrayList<>(mimeMessagePreparators.length);
for (MimeMessagePreparator preparator : mimeMessagePreparators) {
MimeMessage mimeMessage = createMimeMessage();
preparator.prepare(mimeMessage);
mimeMessages.add(mimeMessage);
}
send(mimeMessages.toArray(new MimeMessage[0]));
}
catch (MailException ex) {
throw ex;
}
catch (MessagingException ex) {
throw new MailParseException(ex);
}
catch (Exception ex) {
throw new MailPreparationException(ex);
}
}

/**
* Validate that this instance can connect to the server that it is configured
* for. Throws a {@link MessagingException} if the connection attempt failed.

0 comments on commit f67fad4

Please sign in to comment.