INT-1039, Fixed missing assertion on MailMessage.to value

This commit is contained in:
Oleg Zhurakousky
2010-03-16 02:56:29 +00:00
parent 203cadc600
commit a915e95c01
2 changed files with 36 additions and 10 deletions

View File

@@ -47,6 +47,7 @@ import org.springframework.util.StringUtils;
*
* @author Marius Bogoevici
* @author Mark Fisher
* @author Oleg Zhurakousky
*/
public class MailSendingMessageHandler implements MessageHandler {
@@ -127,7 +128,9 @@ public class MailSendingMessageHandler implements MessageHandler {
mailMessage.setSubject(subject);
}
String[] to = this.retrieveHeaderValueAsStringArray(headers, MailHeaders.TO);
mailMessage.setTo(to);
if (to != null){
mailMessage.setTo(to);
}
if (mailMessage instanceof SimpleMailMessage) {
Assert.state(!ObjectUtils.isEmpty(((SimpleMailMessage) mailMessage).getTo()),
"No recipient has been provided on the MailMessage or the 'MailHeaders.TO' header.");
@@ -152,15 +155,18 @@ public class MailSendingMessageHandler implements MessageHandler {
private String[] retrieveHeaderValueAsStringArray(MessageHeaders headers, String key) {
Object value = headers.get(key);
String[] returnedHeaders = null;
if (value != null) {
if (value instanceof String[]) {
return (String[]) value;
}
if (value instanceof String) {
return StringUtils.commaDelimitedListToStringArray((String) value);
}
returnedHeaders = (String[]) value;
} else if (value instanceof String) {
returnedHeaders = StringUtils.commaDelimitedListToStringArray((String) value);
}
}
return null;
if (returnedHeaders == null || ObjectUtils.isEmpty(returnedHeaders)){
returnedHeaders = null;
}
return returnedHeaders;
}
}

View File

@@ -30,14 +30,14 @@ import javax.mail.internet.MimeMessage;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.springframework.integration.message.MessageBuilder;
import org.springframework.mail.SimpleMailMessage;
/**
* @author Marius Bogoevici
* @author Oleg Zhurakousky
*/
public class MailSendingMessageHandlerTests {
public class MailSendingMessageHandlerTests {
private MailSendingMessageHandler handler;
@@ -49,7 +49,7 @@ public class MailSendingMessageHandlerTests {
this.mailSender = new StubJavaMailSender(new MimeMessage((Session) null));
this.handler = new MailSendingMessageHandler(this.mailSender);
}
@After
public void reset() {
this.mailSender.reset();
@@ -99,5 +99,25 @@ public class MailSendingMessageHandlerTests {
assertEquals("message content different from expected",
mailMessage, mailSender.getSentSimpleMailMessages().get(0));
}
@Test
public void simpleMailMessage() {
SimpleMailMessage mailMessage = MailTestsHelper.createSimpleMailMessage();
String[] toHeaders = mailMessage.getTo();
this.handler.handleMessage(MessageBuilder.withPayload(mailMessage).build());
assertEquals("only one simple message must be sent",
1, mailSender.getSentSimpleMailMessages().size());
SimpleMailMessage sentMessage = mailSender.getSentSimpleMailMessages().get(0);
assertTrue(sentMessage.getTo().equals(toHeaders));
}
@Test
public void simpleMailMessageOverrideWithHeaders() {
SimpleMailMessage mailMessage = MailTestsHelper.createSimpleMailMessage();
String[] toHeaders = mailMessage.getTo();
this.handler.handleMessage(MessageBuilder.withPayload(mailMessage).setHeader(MailHeaders.TO, new String[]{"foo@bar.bam"}).build());
assertEquals("only one simple message must be sent",
1, mailSender.getSentSimpleMailMessages().size());
SimpleMailMessage sentMessage = mailSender.getSentSimpleMailMessages().get(0);
assertTrue(sentMessage.getTo()[0].equals("foo@bar.bam"));
}
}