1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.springframework.batch.sample.domain.mail.internal;
17
18 import java.util.ArrayList;
19 import java.util.LinkedHashMap;
20 import java.util.List;
21 import java.util.Map;
22
23 import javax.mail.MessagingException;
24
25 import org.springframework.mail.MailException;
26 import org.springframework.mail.MailSendException;
27 import org.springframework.mail.MailSender;
28 import org.springframework.mail.SimpleMailMessage;
29
30
31
32
33
34
35
36 public class TestMailSender implements MailSender {
37
38 private List<String> subjectsToFail = new ArrayList<String>();
39
40 private List<SimpleMailMessage> received = new ArrayList<SimpleMailMessage>();
41
42 public void clear() {
43 received.clear();
44 }
45
46 public void send(SimpleMailMessage simpleMessage) throws MailException {
47 throw new UnsupportedOperationException("Not implememted. Use send(SimpleMailMessage[]).");
48 }
49
50 public void setSubjectsToFail(List<String> subjectsToFail) {
51 this.subjectsToFail = subjectsToFail;
52 }
53
54 public void send(SimpleMailMessage[] simpleMessages) throws MailException {
55 Map<Object, Exception> failedMessages = new LinkedHashMap<Object, Exception>();
56 for (SimpleMailMessage simpleMessage : simpleMessages) {
57 if (subjectsToFail.contains(simpleMessage.getSubject())) {
58 failedMessages.put(simpleMessage, new MessagingException());
59 }
60 else {
61 received.add(simpleMessage);
62 }
63 }
64 if (!failedMessages.isEmpty()) {
65 throw new MailSendException(failedMessages);
66 }
67 }
68
69 public List<SimpleMailMessage> getReceivedMessages() {
70 return received;
71 }
72
73 }