JavaMailSender.java

1
package fr.sii.ogham.email.sender.impl;
2
3
import static fr.sii.ogham.core.util.LogUtils.logString;
4
import static fr.sii.ogham.email.JavaMailConstants.DEFAULT_JAVAMAIL_IMPLEMENTATION_PRIORITY;
5
import static fr.sii.ogham.email.attachment.ContentDisposition.ATTACHMENT;
6
import static fr.sii.ogham.email.attachment.ContentDisposition.INLINE;
7
8
import java.io.IOException;
9
import java.io.UnsupportedEncodingException;
10
import java.util.Properties;
11
12
import javax.mail.Authenticator;
13
import javax.mail.BodyPart;
14
import javax.mail.Message.RecipientType;
15
import javax.mail.MessagingException;
16
import javax.mail.Multipart;
17
import javax.mail.Session;
18
import javax.mail.Transport;
19
import javax.mail.internet.AddressException;
20
import javax.mail.internet.InternetAddress;
21
import javax.mail.internet.MimeBodyPart;
22
import javax.mail.internet.MimeMessage;
23
import javax.mail.internet.MimeMultipart;
24
25
import org.slf4j.Logger;
26
import org.slf4j.LoggerFactory;
27
28
import fr.sii.ogham.core.builder.priority.Priority;
29
import fr.sii.ogham.core.env.PropertiesBridge;
30
import fr.sii.ogham.core.env.PropertyResolver;
31
import fr.sii.ogham.core.exception.InvalidMessageException;
32
import fr.sii.ogham.core.exception.MessageException;
33
import fr.sii.ogham.core.sender.AbstractSpecializedSender;
34
import fr.sii.ogham.email.attachment.Attachment;
35
import fr.sii.ogham.email.exception.handler.AttachmentResourceHandlerException;
36
import fr.sii.ogham.email.exception.handler.ContentHandlerException;
37
import fr.sii.ogham.email.message.Email;
38
import fr.sii.ogham.email.message.EmailAddress;
39
import fr.sii.ogham.email.message.Recipient;
40
import fr.sii.ogham.email.sender.impl.javamail.JavaMailAttachmentHandler;
41
import fr.sii.ogham.email.sender.impl.javamail.JavaMailContentHandler;
42
import fr.sii.ogham.email.sender.impl.javamail.JavaMailInterceptor;
43
44
/**
45
 * Java mail API implementation.
46
 * 
47
 * @author Aurélien Baudet
48
 * @see JavaMailContentHandler
49
 */
50
@Priority(properties = "${ogham.email.implementation-priority.javamail}", defaultValue = DEFAULT_JAVAMAIL_IMPLEMENTATION_PRIORITY)
51
public class JavaMailSender extends AbstractSpecializedSender<Email> {
52
	private static final Logger LOG = LoggerFactory.getLogger(JavaMailSender.class);
53
54
	/**
55
	 * Properties that is used to initialize the session
56
	 */
57
	private final Properties properties;
58
59
	/**
60
	 * The content handler used to add message content
61
	 */
62
	private final JavaMailContentHandler contentHandler;
63
64
	/**
65
	 * The handler used to attach files to the email
66
	 */
67
	private final JavaMailAttachmentHandler attachmentHandler;
68
69
	/**
70
	 * Extra operations to apply on the message
71
	 */
72
	private final JavaMailInterceptor interceptor;
73
74
	/**
75
	 * Authentication mechanism
76
	 */
77
	private final Authenticator authenticator;
78
79
	public JavaMailSender(PropertyResolver propertyResolver, JavaMailContentHandler contentHandler, JavaMailAttachmentHandler attachmentHandler, Authenticator authenticator) {
80
		this(new PropertiesBridge(propertyResolver), contentHandler, attachmentHandler, authenticator);
81
	}
82
83
	public JavaMailSender(PropertyResolver propertyResolver, JavaMailContentHandler contentHandler, JavaMailAttachmentHandler attachmentHandler, Authenticator authenticator,
84
			JavaMailInterceptor interceptor) {
85
		this(new PropertiesBridge(propertyResolver), contentHandler, attachmentHandler, authenticator, interceptor);
86
	}
87
88
	public JavaMailSender(Properties properties, JavaMailContentHandler contentHandler, JavaMailAttachmentHandler attachmentHandler, Authenticator authenticator) {
89
		this(properties, contentHandler, attachmentHandler, authenticator, null);
90
	}
91
92
	public JavaMailSender(Properties properties, JavaMailContentHandler contentHandler, JavaMailAttachmentHandler attachmentHandler, Authenticator authenticator, JavaMailInterceptor interceptor) {
93
		super();
94
		this.properties = properties;
95
		this.contentHandler = contentHandler;
96
		this.attachmentHandler = attachmentHandler;
97
		this.authenticator = authenticator;
98
		this.interceptor = interceptor;
99
	}
100
101
	@Override
102
	public void send(Email email) throws MessageException {
103
		try {
104
			LOG.debug("Initialize Java mail session with authenticator {} and properties {}", authenticator, properties);
105
			LOG.debug("Create the mime message for email {}", logString(email));
106
			MimeMessage mimeMsg = createMimeMessage();
107
			// set the sender address
108 3 1. send : removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setFrom → TIMED_OUT
2. send : removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setFrom → KILLED
3. send : removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setFrom → KILLED
			setFrom(email, mimeMsg);
109
			// set recipients (to, cc, bcc)
110 3 1. send : removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setRecipients → TIMED_OUT
2. send : removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setRecipients → KILLED
3. send : removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setRecipients → KILLED
			setRecipients(email, mimeMsg);
111
			// set subject and content
112 3 1. send : removed call to javax/mail/internet/MimeMessage::setSubject → TIMED_OUT
2. send : removed call to javax/mail/internet/MimeMessage::setSubject → KILLED
3. send : removed call to javax/mail/internet/MimeMessage::setSubject → KILLED
			mimeMsg.setSubject(email.getSubject());
113 3 1. send : removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setMimeContent → TIMED_OUT
2. send : removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setMimeContent → KILLED
3. send : removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setMimeContent → KILLED
			setMimeContent(email, mimeMsg);
114
			// default behavior is done => message is ready but let possibility
115
			// to add extra operations to do on the message
116 3 1. send : negated conditional → TIMED_OUT
2. send : negated conditional → KILLED
3. send : negated conditional → KILLED
			if (interceptor != null) {
117
				LOG.debug("Executing extra operations for email {}", logString(email));
118
				interceptor.intercept(mimeMsg, email);
119
			}
120
			// message is ready => send it
121
			LOG.info("Sending email using Java Mail API through server {}:{}...", properties.getProperty("mail.smtp.host", properties.getProperty("mail.host")),
122
					properties.getProperty("mail.smtp.port", properties.getProperty("mail.port")));
123 3 1. send : removed call to javax/mail/Transport::send → TIMED_OUT
2. send : removed call to javax/mail/Transport::send → KILLED
3. send : removed call to javax/mail/Transport::send → KILLED
			Transport.send(mimeMsg);
124
		} catch (MessagingException | ContentHandlerException | AttachmentResourceHandlerException | IOException e) {
125
			throw new MessageException("failed to send message using Java Mail API", email, e);
126
		}
127
	}
128
129
	/**
130
	 * Initialize the session and create the mime message.
131
	 * 
132
	 * @return the mime message
133
	 */
134
	private MimeMessage createMimeMessage() {
135
		// prepare the message
136
		Session session = Session.getInstance(properties, authenticator);
137 3 1. createMimeMessage : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::createMimeMessage → TIMED_OUT
2. createMimeMessage : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::createMimeMessage → KILLED
3. createMimeMessage : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::createMimeMessage → KILLED
		return new MimeMessage(session);
138
	}
139
140
	/**
141
	 * Set the sender address on the mime message.
142
	 * 
143
	 * @param email
144
	 *            the source email
145
	 * @param mimeMsg
146
	 *            the mime message to fill
147
	 * @throws MessagingException
148
	 *             when the email address is not valid
149
	 * @throws AddressException
150
	 *             when the email address is not valid
151
	 * @throws UnsupportedEncodingException
152
	 *             when the email address is not valid
153
	 * @throws InvalidMessageException
154
	 *             when the email address is not valid
155
	 */
156
	private static void setFrom(Email email, MimeMessage mimeMsg) throws MessagingException, UnsupportedEncodingException, InvalidMessageException {
157 3 1. setFrom : negated conditional → TIMED_OUT
2. setFrom : negated conditional → KILLED
3. setFrom : negated conditional → KILLED
		if (email.getFrom() == null) {
158
			throw new InvalidMessageException("The sender address has not been set", email, "Missing sender email address");
159
		}
160 3 1. setFrom : removed call to javax/mail/internet/MimeMessage::setFrom → TIMED_OUT
2. setFrom : removed call to javax/mail/internet/MimeMessage::setFrom → KILLED
3. setFrom : removed call to javax/mail/internet/MimeMessage::setFrom → KILLED
		mimeMsg.setFrom(toInternetAddress(email.getFrom()));
161
	}
162
163
	/**
164
	 * Set the recipients addresses on the mime message.
165
	 * 
166
	 * @param email
167
	 *            the source email
168
	 * @param mimeMsg
169
	 *            the mime message to fill
170
	 * @throws MessagingException
171
	 *             when the email address is not valid
172
	 * @throws AddressException
173
	 *             when the email address is not valid
174
	 * @throws UnsupportedEncodingException
175
	 *             when the email address is not valid
176
	 */
177
	private static void setRecipients(Email email, MimeMessage mimeMsg) throws MessagingException, UnsupportedEncodingException {
178
		for (Recipient recipient : email.getRecipients()) {
179 3 1. setRecipients : removed call to javax/mail/internet/MimeMessage::addRecipient → TIMED_OUT
2. setRecipients : removed call to javax/mail/internet/MimeMessage::addRecipient → KILLED
3. setRecipients : removed call to javax/mail/internet/MimeMessage::addRecipient → KILLED
			mimeMsg.addRecipient(convert(recipient.getType()), toInternetAddress(recipient.getAddress()));
180
		}
181
	}
182
183
	/**
184
	 * Set the content on the mime message.
185
	 * 
186
	 * <ul>
187
	 * <li>If the source email has only one textual content (text/html for
188
	 * example), the structure is:
189
	 * 
190
	 * <pre>
191
	 * [text/html] (root/body)
192
	 * </pre>
193
	 * 
194
	 * </li>
195
	 * <li>If the source email has HTML content with embedded attachments
196
	 * (images for example), the structure is:
197
	 * 
198
	 * <pre>
199
	 * [multipart/related] (root/body)
200
	 *   [text/html]       
201
	 *   [image/png]       (embedded image 1)
202
	 *   [image/gif]       (embedded image 2)
203
	 * </pre>
204
	 * 
205
	 * </li>
206
	 * <li>If the source email has HTML content with attachments, the structure
207
	 * is:
208
	 * 
209
	 * <pre>
210
	 * [multipart/mixed]              (root)
211
	 *   [text/html]                  (body)
212
	 *   [application/pdf]            (attached file 1)
213
	 *   [application/octet-stream]   (attached file 2)
214
	 * </pre>
215
	 * 
216
	 * </li>
217
	 * <li>If the source email has HTML content with embedded attachments
218
	 * (images for example) and additional attachments, the structure is:
219
	 * 
220
	 * <pre>
221
	 * [multipart/mixed]              (root)
222
	 *   [multipart/related]          (body)
223
	 *     [text/html]                
224
	 *     [image/png]                (embedded image 1)
225
	 *     [image/gif]                (embedded image 2)
226
	 *   [application/pdf]            (attached file 1)
227
	 *   [application/octet-stream]   (attached file 2)
228
	 * </pre>
229
	 * 
230
	 * </li>
231
	 * <li>If the source email has several textual contents (text/html and
232
	 * text/plain for example), the structure is:
233
	 * 
234
	 * <pre>
235
	 * [multipart/alternative]  (root/body)
236
	 *   [text/plain]           (alternative body)
237
	 *   [text/html]            (main body)
238
	 * </pre>
239
	 * 
240
	 * </li>
241
	 * <li>If the source email has several textual contents (text/html and
242
	 * text/plain for example) and embedded attachments (images for example),
243
	 * the structure is:
244
	 * 
245
	 * <pre>
246
	 * [multipart/related]          (root/body)
247
	 *   [multipart/alternative]    
248
	 *     [text/plain]             (alternative body)
249
	 *     [text/html]              (main body)
250
	 *   [image/png]                (embedded image 1)
251
	 *   [image/gif]                (embedded image 2)
252
	 * </pre>
253
	 * 
254
	 * </li>
255
	 * <li>If the source email has several textual contents (text/html and
256
	 * text/plain for example) and attachments, the structure is:
257
	 * 
258
	 * <pre>
259
	 * [multipart/mixed]              (root)
260
	 *   [multipart/alternative]      (body)
261
	 *     [text/plain]               (alternative body)
262
	 *     [text/html]                (main body)
263
	 *   [application/pdf]            (attached file 1)
264
	 *   [application/octet-stream]   (attached file 2)
265
	 * </pre>
266
	 * 
267
	 * </li>
268
	 * <li>If the source email has several textual contents (text/html and
269
	 * text/plain for example), embedded attachment (images for example) and
270
	 * attachments, the structure is:
271
	 * 
272
	 * <pre>
273
	 * [multipart/mixed]              (root)
274
	 *   [multipart/related]          (body)
275
	 *     [multipart/alternative]      
276
	 *       [text/plain]             (alternative body)
277
	 *       [text/html]              (main body)
278
	 *     [image/png]                (embedded image 1)
279
	 *     [image/gif]                (embedded image 2)
280
	 *   [application/pdf]            (attached file 1)
281
	 *   [application/octet-stream]   (attached file 2)
282
	 * </pre>
283
	 * 
284
	 * </li>
285
	 * </ul>
286
	 * 
287
	 * @param email
288
	 *            the source email
289
	 * @param mimeMsg
290
	 *            the mime message to fill
291
	 * @throws MessagingException
292
	 *             when the email address is not valid
293
	 * @throws ContentHandlerException
294
	 *             when the email address is not valid
295
	 * @throws AttachmentResourceHandlerException
296
	 *             when the email address is not valid
297
	 * @throws IOException
298
	 *             when the content can't be constructed
299
	 */
300
	private void setMimeContent(Email email, MimeMessage mimeMsg) throws MessagingException, ContentHandlerException, AttachmentResourceHandlerException, IOException {
301
		LOG.debug("Add message content for email {}", logString(email));
302
303
		Multipart mixedContainer = new MimeMultipart("mixed");
304
305
		// prepare the body
306 3 1. setMimeContent : removed call to fr/sii/ogham/email/sender/impl/javamail/JavaMailContentHandler::setContent → TIMED_OUT
2. setMimeContent : removed call to fr/sii/ogham/email/sender/impl/javamail/JavaMailContentHandler::setContent → KILLED
3. setMimeContent : removed call to fr/sii/ogham/email/sender/impl/javamail/JavaMailContentHandler::setContent → KILLED
		contentHandler.setContent(mimeMsg, mixedContainer, email, email.getContent());
307
308
		// add the attachments (either embedded or attached)
309
		Multipart relatedContainer = getOrAddRelatedContainer(mixedContainer, email);
310
		for (Attachment attachment : email.getAttachments()) {
311 3 1. setMimeContent : negated conditional → NO_COVERAGE
2. setMimeContent : negated conditional → KILLED
3. setMimeContent : negated conditional → KILLED
			Multipart attachmentContainer = isEmbeddableAttachment(attachment) ? relatedContainer : mixedContainer;
312 3 1. setMimeContent : removed call to fr/sii/ogham/email/sender/impl/javamail/JavaMailAttachmentHandler::addAttachment → NO_COVERAGE
2. setMimeContent : removed call to fr/sii/ogham/email/sender/impl/javamail/JavaMailAttachmentHandler::addAttachment → KILLED
3. setMimeContent : removed call to fr/sii/ogham/email/sender/impl/javamail/JavaMailAttachmentHandler::addAttachment → KILLED
			attachmentHandler.addAttachment(attachmentContainer, attachment);
313
		}
314
315
		// set the content of the email
316 6 1. setMimeContent : negated conditional → TIMED_OUT
2. setMimeContent : negated conditional → TIMED_OUT
3. setMimeContent : negated conditional → KILLED
4. setMimeContent : negated conditional → KILLED
5. setMimeContent : negated conditional → KILLED
6. setMimeContent : negated conditional → KILLED
		if (hasDownloadableAttachments(email) || hasEmbeddableAttachments(email)) {
317 6 1. setMimeContent : negated conditional → NO_COVERAGE
2. setMimeContent : removed call to javax/mail/internet/MimeMessage::setContent → NO_COVERAGE
3. setMimeContent : negated conditional → KILLED
4. setMimeContent : negated conditional → KILLED
5. setMimeContent : removed call to javax/mail/internet/MimeMessage::setContent → KILLED
6. setMimeContent : removed call to javax/mail/internet/MimeMessage::setContent → KILLED
			mimeMsg.setContent(hasDownloadableAttachments(email) ? mixedContainer : relatedContainer);
318
		} else {
319
			// extract the body from the container (as it is not necessary)
320
			// and place the body at the root of the message
321
			BodyPart body = mixedContainer.getBodyPart(0);
322 3 1. setMimeContent : removed call to javax/mail/internet/MimeMessage::setContent → TIMED_OUT
2. setMimeContent : removed call to javax/mail/internet/MimeMessage::setContent → KILLED
3. setMimeContent : removed call to javax/mail/internet/MimeMessage::setContent → KILLED
			mimeMsg.setContent(body.getContent(), body.getContentType());
323
		}
324
	}
325
326
	private static Multipart getOrAddRelatedContainer(Multipart root, Email email) throws MessagingException, IOException {
327
		// no embeddable attachments means that there is no need of the related
328
		// container
329 3 1. getOrAddRelatedContainer : negated conditional → TIMED_OUT
2. getOrAddRelatedContainer : negated conditional → KILLED
3. getOrAddRelatedContainer : negated conditional → KILLED
		if (!hasEmbeddableAttachments(email)) {
330
			return null;
331
		}
332
		Multipart related = findRelatedContainer(root);
333 3 1. getOrAddRelatedContainer : negated conditional → NO_COVERAGE
2. getOrAddRelatedContainer : negated conditional → KILLED
3. getOrAddRelatedContainer : negated conditional → KILLED
		if (related == null) {
334
			related = new MimeMultipart("related");
335 3 1. getOrAddRelatedContainer : removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::moveBodyToRelatedContainer → NO_COVERAGE
2. getOrAddRelatedContainer : removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::moveBodyToRelatedContainer → KILLED
3. getOrAddRelatedContainer : removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::moveBodyToRelatedContainer → KILLED
			moveBodyToRelatedContainer(root, related);
336 3 1. getOrAddRelatedContainer : removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::addRelatedContainer → NO_COVERAGE
2. getOrAddRelatedContainer : removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::addRelatedContainer → KILLED
3. getOrAddRelatedContainer : removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::addRelatedContainer → KILLED
			addRelatedContainer(root, related);
337
		}
338 3 1. getOrAddRelatedContainer : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::getOrAddRelatedContainer → NO_COVERAGE
2. getOrAddRelatedContainer : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::getOrAddRelatedContainer → KILLED
3. getOrAddRelatedContainer : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::getOrAddRelatedContainer → KILLED
		return related;
339
	}
340
341
	private static void moveBodyToRelatedContainer(Multipart root, Multipart related) throws MessagingException {
342 6 1. moveBodyToRelatedContainer : changed conditional boundary → NO_COVERAGE
2. moveBodyToRelatedContainer : negated conditional → NO_COVERAGE
3. moveBodyToRelatedContainer : changed conditional boundary → KILLED
4. moveBodyToRelatedContainer : changed conditional boundary → KILLED
5. moveBodyToRelatedContainer : negated conditional → KILLED
6. moveBodyToRelatedContainer : negated conditional → KILLED
		while (root.getCount() > 0) {
343 3 1. moveBodyToRelatedContainer : removed call to javax/mail/Multipart::addBodyPart → NO_COVERAGE
2. moveBodyToRelatedContainer : removed call to javax/mail/Multipart::addBodyPart → KILLED
3. moveBodyToRelatedContainer : removed call to javax/mail/Multipart::addBodyPart → KILLED
			related.addBodyPart(root.getBodyPart(0));
344 2 1. moveBodyToRelatedContainer : removed call to javax/mail/Multipart::removeBodyPart → NO_COVERAGE
2. moveBodyToRelatedContainer : removed call to javax/mail/Multipart::removeBodyPart → TIMED_OUT
			root.removeBodyPart(0);
345
		}
346
	}
347
348
	private static void addRelatedContainer(Multipart root, Multipart related) throws MessagingException {
349
		MimeBodyPart part = new MimeBodyPart();
350 3 1. addRelatedContainer : removed call to javax/mail/internet/MimeBodyPart::setContent → NO_COVERAGE
2. addRelatedContainer : removed call to javax/mail/internet/MimeBodyPart::setContent → KILLED
3. addRelatedContainer : removed call to javax/mail/internet/MimeBodyPart::setContent → KILLED
		part.setContent(related);
351 3 1. addRelatedContainer : removed call to javax/mail/Multipart::addBodyPart → NO_COVERAGE
2. addRelatedContainer : removed call to javax/mail/Multipart::addBodyPart → KILLED
3. addRelatedContainer : removed call to javax/mail/Multipart::addBodyPart → KILLED
		root.addBodyPart(part);
352
	}
353
354
	private static Multipart findRelatedContainer(Multipart container) throws MessagingException, IOException {
355 3 1. findRelatedContainer : negated conditional → SURVIVED
2. findRelatedContainer : negated conditional → NO_COVERAGE
3. findRelatedContainer : negated conditional → KILLED
		if (isRelated(container)) {
356 1 1. findRelatedContainer : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::findRelatedContainer → NO_COVERAGE
			return container;
357
		}
358 5 1. findRelatedContainer : changed conditional boundary → NO_COVERAGE
2. findRelatedContainer : negated conditional → NO_COVERAGE
3. findRelatedContainer : negated conditional → SURVIVED
4. findRelatedContainer : changed conditional boundary → KILLED
5. findRelatedContainer : changed conditional boundary → KILLED
		for (int i = 0; i < container.getCount(); i++) {
359
			Object content = container.getBodyPart(i).getContent();
360 3 1. findRelatedContainer : negated conditional → NO_COVERAGE
2. findRelatedContainer : negated conditional → KILLED
3. findRelatedContainer : negated conditional → KILLED
			if (content instanceof Multipart) {
361 2 1. findRelatedContainer : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::findRelatedContainer → NO_COVERAGE
2. findRelatedContainer : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::findRelatedContainer → SURVIVED
				return findRelatedContainer((Multipart) content);
362
			}
363
		}
364
		return null;
365
	}
366
367
	private static boolean isRelated(Multipart mp) {
368 5 1. isRelated : replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isRelated → NO_COVERAGE
2. isRelated : replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isRelated → SURVIVED
3. isRelated : replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isRelated → NO_COVERAGE
4. isRelated : replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isRelated → SURVIVED
5. isRelated : replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isRelated → KILLED
		return mp.getContentType().startsWith("multipart/related");
369
	}
370
371
	private static boolean isEmbeddableAttachment(Attachment attachment) {
372 6 1. isEmbeddableAttachment : replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isEmbeddableAttachment → NO_COVERAGE
2. isEmbeddableAttachment : replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isEmbeddableAttachment → NO_COVERAGE
3. isEmbeddableAttachment : replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isEmbeddableAttachment → SURVIVED
4. isEmbeddableAttachment : replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isEmbeddableAttachment → KILLED
5. isEmbeddableAttachment : replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isEmbeddableAttachment → KILLED
6. isEmbeddableAttachment : replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isEmbeddableAttachment → KILLED
		return INLINE.equals(attachment.getDisposition());
373
	}
374
375
	private static boolean isDownloadableAttachment(Attachment attachment) {
376 6 1. isDownloadableAttachment : replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isDownloadableAttachment → NO_COVERAGE
2. isDownloadableAttachment : replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isDownloadableAttachment → NO_COVERAGE
3. isDownloadableAttachment : replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isDownloadableAttachment → SURVIVED
4. isDownloadableAttachment : replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isDownloadableAttachment → KILLED
5. isDownloadableAttachment : replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isDownloadableAttachment → KILLED
6. isDownloadableAttachment : replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isDownloadableAttachment → KILLED
		return ATTACHMENT.equals(attachment.getDisposition());
377
	}
378
379
	private static boolean hasEmbeddableAttachments(Email email) {
380 6 1. hasEmbeddableAttachments : replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::hasEmbeddableAttachments → TIMED_OUT
2. hasEmbeddableAttachments : replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::hasEmbeddableAttachments → TIMED_OUT
3. hasEmbeddableAttachments : replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::hasEmbeddableAttachments → KILLED
4. hasEmbeddableAttachments : replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::hasEmbeddableAttachments → KILLED
5. hasEmbeddableAttachments : replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::hasEmbeddableAttachments → KILLED
6. hasEmbeddableAttachments : replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::hasEmbeddableAttachments → KILLED
		return email.getAttachments().stream().anyMatch(JavaMailSender::isEmbeddableAttachment);
381
	}
382
383
	private static boolean hasDownloadableAttachments(Email email) {
384 6 1. hasDownloadableAttachments : replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::hasDownloadableAttachments → SURVIVED
2. hasDownloadableAttachments : replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::hasDownloadableAttachments → TIMED_OUT
3. hasDownloadableAttachments : replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::hasDownloadableAttachments → TIMED_OUT
4. hasDownloadableAttachments : replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::hasDownloadableAttachments → KILLED
5. hasDownloadableAttachments : replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::hasDownloadableAttachments → KILLED
6. hasDownloadableAttachments : replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::hasDownloadableAttachments → KILLED
		return email.getAttachments().stream().anyMatch(JavaMailSender::isDownloadableAttachment);
385
	}
386
387
	private static RecipientType convert(fr.sii.ogham.email.message.RecipientType type) {
388
		switch (type) {
389
			case BCC:
390 2 1. convert : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::convert → NO_COVERAGE
2. convert : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::convert → KILLED
				return RecipientType.BCC;
391
			case CC:
392 2 1. convert : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::convert → NO_COVERAGE
2. convert : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::convert → KILLED
				return RecipientType.CC;
393
			case TO:
394 3 1. convert : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::convert → TIMED_OUT
2. convert : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::convert → KILLED
3. convert : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::convert → KILLED
				return RecipientType.TO;
395
			default:
396
				throw new IllegalArgumentException("Invalid recipient type " + type);
397
		}
398
	}
399
400
	private static InternetAddress toInternetAddress(EmailAddress address) throws AddressException, UnsupportedEncodingException {
401 6 1. toInternetAddress : negated conditional → SURVIVED
2. toInternetAddress : negated conditional → TIMED_OUT
3. toInternetAddress : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::toInternetAddress → TIMED_OUT
4. toInternetAddress : negated conditional → KILLED
5. toInternetAddress : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::toInternetAddress → KILLED
6. toInternetAddress : replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::toInternetAddress → KILLED
		return address.getPersonal() == null ? new InternetAddress(address.getAddress()) : new InternetAddress(address.getAddress(), address.getPersonal());
402
	}
403
404
	@Override
405
	public String toString() {
406 2 1. toString : replaced return value with "" for fr/sii/ogham/email/sender/impl/JavaMailSender::toString → SURVIVED
2. toString : replaced return value with "" for fr/sii/ogham/email/sender/impl/JavaMailSender::toString → TIMED_OUT
		return "JavaMailSender";
407
	}
408
}

Mutations

108

1.1
Location : send
Killed by : oghamjavamail.it.JavaMailSmtpTest.missingRecipientIsInvalid(oghamjavamail.it.JavaMailSmtpTest)
removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setFrom → KILLED

2.2
Location : send
Killed by : none
removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setFrom → TIMED_OUT

3.3
Location : send
Killed by : oghamall.it.configuration.EmptyBuilderTest.manualJavaMailConfigurationCanSendEmail(oghamall.it.configuration.EmptyBuilderTest)
removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setFrom → KILLED

110

1.1
Location : send
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setRecipients → KILLED

2.2
Location : send
Killed by : oghamall.it.configuration.EmptyBuilderTest.manualJavaMailConfigurationCanSendEmail(oghamall.it.configuration.EmptyBuilderTest)
removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setRecipients → KILLED

3.3
Location : send
Killed by : none
removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setRecipients → TIMED_OUT

112

1.1
Location : send
Killed by : oghamjavamail.it.JavaMailSmtpTest.simple(oghamjavamail.it.JavaMailSmtpTest)
removed call to javax/mail/internet/MimeMessage::setSubject → KILLED

2.2
Location : send
Killed by : oghamall.it.configuration.EmptyBuilderTest.manualJavaMailConfigurationCanSendEmail(oghamall.it.configuration.EmptyBuilderTest)
removed call to javax/mail/internet/MimeMessage::setSubject → KILLED

3.3
Location : send
Killed by : none
removed call to javax/mail/internet/MimeMessage::setSubject → TIMED_OUT

113

1.1
Location : send
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setMimeContent → KILLED

2.2
Location : send
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setMimeContent → KILLED

3.3
Location : send
Killed by : none
removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::setMimeContent → TIMED_OUT

116

1.1
Location : send
Killed by : none
negated conditional → TIMED_OUT

2.2
Location : send
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

3.3
Location : send
Killed by : oghamall.it.configuration.EmptyBuilderTest.manualJavaMailConfigurationCanSendEmail(oghamall.it.configuration.EmptyBuilderTest)
negated conditional → KILLED

123

1.1
Location : send
Killed by : none
removed call to javax/mail/Transport::send → TIMED_OUT

2.2
Location : send
Killed by : oghamall.it.configuration.EmptyBuilderTest.manualJavaMailConfigurationCanSendEmail(oghamall.it.configuration.EmptyBuilderTest)
removed call to javax/mail/Transport::send → KILLED

3.3
Location : send
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
removed call to javax/mail/Transport::send → KILLED

137

1.1
Location : createMimeMessage
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::createMimeMessage → KILLED

2.2
Location : createMimeMessage
Killed by : none
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::createMimeMessage → TIMED_OUT

3.3
Location : createMimeMessage
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::createMimeMessage → KILLED

157

1.1
Location : setFrom
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
negated conditional → KILLED

2.2
Location : setFrom
Killed by : oghamjavamail.it.JavaMailSmtpTest.missingRecipientIsInvalid(oghamjavamail.it.JavaMailSmtpTest)
negated conditional → KILLED

3.3
Location : setFrom
Killed by : none
negated conditional → TIMED_OUT

160

1.1
Location : setFrom
Killed by : none
removed call to javax/mail/internet/MimeMessage::setFrom → TIMED_OUT

2.2
Location : setFrom
Killed by : oghamall.it.configuration.EmptyBuilderTest.manualJavaMailConfigurationCanSendEmail(oghamall.it.configuration.EmptyBuilderTest)
removed call to javax/mail/internet/MimeMessage::setFrom → KILLED

3.3
Location : setFrom
Killed by : oghamjavamail.it.JavaMailSmtpTest.simple(oghamjavamail.it.JavaMailSmtpTest)
removed call to javax/mail/internet/MimeMessage::setFrom → KILLED

179

1.1
Location : setRecipients
Killed by : none
removed call to javax/mail/internet/MimeMessage::addRecipient → TIMED_OUT

2.2
Location : setRecipients
Killed by : oghamall.it.configuration.EmptyBuilderTest.manualJavaMailConfigurationCanSendEmail(oghamall.it.configuration.EmptyBuilderTest)
removed call to javax/mail/internet/MimeMessage::addRecipient → KILLED

3.3
Location : setRecipients
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
removed call to javax/mail/internet/MimeMessage::addRecipient → KILLED

306

1.1
Location : setMimeContent
Killed by : none
removed call to fr/sii/ogham/email/sender/impl/javamail/JavaMailContentHandler::setContent → TIMED_OUT

2.2
Location : setMimeContent
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
removed call to fr/sii/ogham/email/sender/impl/javamail/JavaMailContentHandler::setContent → KILLED

3.3
Location : setMimeContent
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
removed call to fr/sii/ogham/email/sender/impl/javamail/JavaMailContentHandler::setContent → KILLED

311

1.1
Location : setMimeContent
Killed by : oghamall.it.email.EmailSMTPDefaultsTest.attachmentLookup(oghamall.it.email.EmailSMTPDefaultsTest)
negated conditional → KILLED

2.2
Location : setMimeContent
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : setMimeContent
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

312

1.1
Location : setMimeContent
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredResourceResolutionCantAttachFilesFromPath(oghamall.it.configuration.EmptyBuilderTest)
removed call to fr/sii/ogham/email/sender/impl/javamail/JavaMailAttachmentHandler::addAttachment → KILLED

2.2
Location : setMimeContent
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
removed call to fr/sii/ogham/email/sender/impl/javamail/JavaMailAttachmentHandler::addAttachment → KILLED

3.3
Location : setMimeContent
Killed by : none
removed call to fr/sii/ogham/email/sender/impl/javamail/JavaMailAttachmentHandler::addAttachment → NO_COVERAGE

316

1.1
Location : setMimeContent
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

2.2
Location : setMimeContent
Killed by : none
negated conditional → TIMED_OUT

3.3
Location : setMimeContent
Killed by : oghamall.it.configuration.EmptyBuilderTest.manualJavaMailConfigurationCanSendEmail(oghamall.it.configuration.EmptyBuilderTest)
negated conditional → KILLED

4.4
Location : setMimeContent
Killed by : oghamall.it.configuration.EmptyBuilderTest.manualJavaMailConfigurationCanSendEmail(oghamall.it.configuration.EmptyBuilderTest)
negated conditional → KILLED

5.5
Location : setMimeContent
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

6.6
Location : setMimeContent
Killed by : none
negated conditional → TIMED_OUT

317

1.1
Location : setMimeContent
Killed by : oghamall.it.email.EmailSMTPDefaultsTest.attachmentLookup(oghamall.it.email.EmailSMTPDefaultsTest)
negated conditional → KILLED

2.2
Location : setMimeContent
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : setMimeContent
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

4.4
Location : setMimeContent
Killed by : oghamall.it.email.EmailSMTPDefaultsTest.attachmentLookup(oghamall.it.email.EmailSMTPDefaultsTest)
removed call to javax/mail/internet/MimeMessage::setContent → KILLED

5.5
Location : setMimeContent
Killed by : none
removed call to javax/mail/internet/MimeMessage::setContent → NO_COVERAGE

6.6
Location : setMimeContent
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
removed call to javax/mail/internet/MimeMessage::setContent → KILLED

322

1.1
Location : setMimeContent
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
removed call to javax/mail/internet/MimeMessage::setContent → KILLED

2.2
Location : setMimeContent
Killed by : none
removed call to javax/mail/internet/MimeMessage::setContent → TIMED_OUT

3.3
Location : setMimeContent
Killed by : oghamall.it.configuration.EmptyBuilderTest.manualJavaMailConfigurationCanSendEmail(oghamall.it.configuration.EmptyBuilderTest)
removed call to javax/mail/internet/MimeMessage::setContent → KILLED

329

1.1
Location : getOrAddRelatedContainer
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

2.2
Location : getOrAddRelatedContainer
Killed by : oghamall.it.email.FluentEmailTest.embedStream(oghamall.it.email.FluentEmailTest)
negated conditional → KILLED

3.3
Location : getOrAddRelatedContainer
Killed by : none
negated conditional → TIMED_OUT

333

1.1
Location : getOrAddRelatedContainer
Killed by : oghamall.it.email.FluentEmailTest.embedStream(oghamall.it.email.FluentEmailTest)
negated conditional → KILLED

2.2
Location : getOrAddRelatedContainer
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : getOrAddRelatedContainer
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithEmbeddedImage(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

335

1.1
Location : getOrAddRelatedContainer
Killed by : none
removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::moveBodyToRelatedContainer → NO_COVERAGE

2.2
Location : getOrAddRelatedContainer
Killed by : oghamall.it.email.FluentEmailTest.embedStream(oghamall.it.email.FluentEmailTest)
removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::moveBodyToRelatedContainer → KILLED

3.3
Location : getOrAddRelatedContainer
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithEmbeddedImage(oghamjavamail.it.JavaMailStructureTest)
removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::moveBodyToRelatedContainer → KILLED

336

1.1
Location : getOrAddRelatedContainer
Killed by : oghamall.it.email.FluentEmailTest.attachAndEmbed(oghamall.it.email.FluentEmailTest)
removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::addRelatedContainer → KILLED

2.2
Location : getOrAddRelatedContainer
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithAttachmentsAndEmbeddedImages(oghamjavamail.it.JavaMailStructureTest)
removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::addRelatedContainer → KILLED

3.3
Location : getOrAddRelatedContainer
Killed by : none
removed call to fr/sii/ogham/email/sender/impl/JavaMailSender::addRelatedContainer → NO_COVERAGE

338

1.1
Location : getOrAddRelatedContainer
Killed by : oghamall.it.email.FluentEmailTest.embedStream(oghamall.it.email.FluentEmailTest)
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::getOrAddRelatedContainer → KILLED

2.2
Location : getOrAddRelatedContainer
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithEmbeddedImage(oghamjavamail.it.JavaMailStructureTest)
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::getOrAddRelatedContainer → KILLED

3.3
Location : getOrAddRelatedContainer
Killed by : none
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::getOrAddRelatedContainer → NO_COVERAGE

342

1.1
Location : moveBodyToRelatedContainer
Killed by : none
changed conditional boundary → NO_COVERAGE

2.2
Location : moveBodyToRelatedContainer
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithEmbeddedImage(oghamjavamail.it.JavaMailStructureTest)
changed conditional boundary → KILLED

3.3
Location : moveBodyToRelatedContainer
Killed by : oghamall.it.email.FluentEmailTest.embedStream(oghamall.it.email.FluentEmailTest)
changed conditional boundary → KILLED

4.4
Location : moveBodyToRelatedContainer
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithEmbeddedImage(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

5.5
Location : moveBodyToRelatedContainer
Killed by : oghamall.it.email.FluentEmailTest.embedStream(oghamall.it.email.FluentEmailTest)
negated conditional → KILLED

6.6
Location : moveBodyToRelatedContainer
Killed by : none
negated conditional → NO_COVERAGE

343

1.1
Location : moveBodyToRelatedContainer
Killed by : oghamall.it.email.FluentEmailTest.embedStream(oghamall.it.email.FluentEmailTest)
removed call to javax/mail/Multipart::addBodyPart → KILLED

2.2
Location : moveBodyToRelatedContainer
Killed by : none
removed call to javax/mail/Multipart::addBodyPart → NO_COVERAGE

3.3
Location : moveBodyToRelatedContainer
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithEmbeddedImage(oghamjavamail.it.JavaMailStructureTest)
removed call to javax/mail/Multipart::addBodyPart → KILLED

344

1.1
Location : moveBodyToRelatedContainer
Killed by : none
removed call to javax/mail/Multipart::removeBodyPart → TIMED_OUT

2.2
Location : moveBodyToRelatedContainer
Killed by : none
removed call to javax/mail/Multipart::removeBodyPart → NO_COVERAGE

350

1.1
Location : addRelatedContainer
Killed by : oghamall.it.email.FluentEmailTest.attachAndEmbed(oghamall.it.email.FluentEmailTest)
removed call to javax/mail/internet/MimeBodyPart::setContent → KILLED

2.2
Location : addRelatedContainer
Killed by : none
removed call to javax/mail/internet/MimeBodyPart::setContent → NO_COVERAGE

3.3
Location : addRelatedContainer
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithAttachmentsAndEmbeddedImages(oghamjavamail.it.JavaMailStructureTest)
removed call to javax/mail/internet/MimeBodyPart::setContent → KILLED

351

1.1
Location : addRelatedContainer
Killed by : oghamall.it.email.FluentEmailTest.attachAndEmbed(oghamall.it.email.FluentEmailTest)
removed call to javax/mail/Multipart::addBodyPart → KILLED

2.2
Location : addRelatedContainer
Killed by : none
removed call to javax/mail/Multipart::addBodyPart → NO_COVERAGE

3.3
Location : addRelatedContainer
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithAttachmentsAndEmbeddedImages(oghamjavamail.it.JavaMailStructureTest)
removed call to javax/mail/Multipart::addBodyPart → KILLED

355

1.1
Location : findRelatedContainer
Killed by : none
negated conditional → SURVIVED

2.2
Location : findRelatedContainer
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithEmbeddedImage(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

3.3
Location : findRelatedContainer
Killed by : none
negated conditional → NO_COVERAGE

356

1.1
Location : findRelatedContainer
Killed by : none
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::findRelatedContainer → NO_COVERAGE

358

1.1
Location : findRelatedContainer
Killed by : oghamall.it.email.FluentEmailTest.embedStream(oghamall.it.email.FluentEmailTest)
changed conditional boundary → KILLED

2.2
Location : findRelatedContainer
Killed by : none
changed conditional boundary → NO_COVERAGE

3.3
Location : findRelatedContainer
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithEmbeddedImage(oghamjavamail.it.JavaMailStructureTest)
changed conditional boundary → KILLED

4.4
Location : findRelatedContainer
Killed by : none
negated conditional → NO_COVERAGE

5.5
Location : findRelatedContainer
Killed by : none
negated conditional → SURVIVED

360

1.1
Location : findRelatedContainer
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithEmbeddedImage(oghamjavamail.it.JavaMailStructureTest)
negated conditional → KILLED

2.2
Location : findRelatedContainer
Killed by : none
negated conditional → NO_COVERAGE

3.3
Location : findRelatedContainer
Killed by : oghamall.it.email.FluentEmailTest.embedStream(oghamall.it.email.FluentEmailTest)
negated conditional → KILLED

361

1.1
Location : findRelatedContainer
Killed by : none
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::findRelatedContainer → NO_COVERAGE

2.2
Location : findRelatedContainer
Killed by : none
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::findRelatedContainer → SURVIVED

368

1.1
Location : isRelated
Killed by : none
replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isRelated → NO_COVERAGE

2.2
Location : isRelated
Killed by : none
replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isRelated → SURVIVED

3.3
Location : isRelated
Killed by : none
replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isRelated → NO_COVERAGE

4.4
Location : isRelated
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithEmbeddedImage(oghamjavamail.it.JavaMailStructureTest)
replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isRelated → KILLED

5.5
Location : isRelated
Killed by : none
replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isRelated → SURVIVED

372

1.1
Location : isEmbeddableAttachment
Killed by : oghamall.it.email.FluentEmailTest.embedStream(oghamall.it.email.FluentEmailTest)
replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isEmbeddableAttachment → KILLED

2.2
Location : isEmbeddableAttachment
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithEmbeddedImage(oghamjavamail.it.JavaMailStructureTest)
replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isEmbeddableAttachment → KILLED

3.3
Location : isEmbeddableAttachment
Killed by : none
replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isEmbeddableAttachment → NO_COVERAGE

4.4
Location : isEmbeddableAttachment
Killed by : none
replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isEmbeddableAttachment → NO_COVERAGE

5.5
Location : isEmbeddableAttachment
Killed by : none
replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isEmbeddableAttachment → SURVIVED

6.6
Location : isEmbeddableAttachment
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isEmbeddableAttachment → KILLED

376

1.1
Location : isDownloadableAttachment
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isDownloadableAttachment → KILLED

2.2
Location : isDownloadableAttachment
Killed by : oghamall.it.email.EmailSMTPDefaultsTest.attachmentLookup(oghamall.it.email.EmailSMTPDefaultsTest)
replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isDownloadableAttachment → KILLED

3.3
Location : isDownloadableAttachment
Killed by : none
replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::isDownloadableAttachment → NO_COVERAGE

4.4
Location : isDownloadableAttachment
Killed by : none
replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isDownloadableAttachment → NO_COVERAGE

5.5
Location : isDownloadableAttachment
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithEmbeddedImage(oghamjavamail.it.JavaMailStructureTest)
replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isDownloadableAttachment → KILLED

6.6
Location : isDownloadableAttachment
Killed by : none
replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::isDownloadableAttachment → SURVIVED

380

1.1
Location : hasEmbeddableAttachments
Killed by : oghamall.it.email.FluentEmailTest.embedStream(oghamall.it.email.FluentEmailTest)
replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::hasEmbeddableAttachments → KILLED

2.2
Location : hasEmbeddableAttachments
Killed by : none
replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::hasEmbeddableAttachments → TIMED_OUT

3.3
Location : hasEmbeddableAttachments
Killed by : oghamjavamail.it.JavaMailStructureTest.htmlBodyWithEmbeddedImage(oghamjavamail.it.JavaMailStructureTest)
replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::hasEmbeddableAttachments → KILLED

4.4
Location : hasEmbeddableAttachments
Killed by : oghamall.it.resolver.ThymeleafRelativeResourcesTest.relativeToMultiTemplateName(oghamall.it.resolver.ThymeleafRelativeResourcesTest)
replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::hasEmbeddableAttachments → KILLED

5.5
Location : hasEmbeddableAttachments
Killed by : none
replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::hasEmbeddableAttachments → TIMED_OUT

6.6
Location : hasEmbeddableAttachments
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::hasEmbeddableAttachments → KILLED

384

1.1
Location : hasDownloadableAttachments
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBodyWithAttachments(oghamjavamail.it.JavaMailStructureTest)
replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::hasDownloadableAttachments → KILLED

2.2
Location : hasDownloadableAttachments
Killed by : oghamall.it.email.EmailSMTPDefaultsTest.attachmentLookup(oghamall.it.email.EmailSMTPDefaultsTest)
replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::hasDownloadableAttachments → KILLED

3.3
Location : hasDownloadableAttachments
Killed by : none
replaced boolean return with false for fr/sii/ogham/email/sender/impl/JavaMailSender::hasDownloadableAttachments → TIMED_OUT

4.4
Location : hasDownloadableAttachments
Killed by : none
replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::hasDownloadableAttachments → TIMED_OUT

5.5
Location : hasDownloadableAttachments
Killed by : none
replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::hasDownloadableAttachments → SURVIVED

6.6
Location : hasDownloadableAttachments
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
replaced boolean return with true for fr/sii/ogham/email/sender/impl/JavaMailSender::hasDownloadableAttachments → KILLED

390

1.1
Location : convert
Killed by : oghamall.it.email.EmailPropertiesTest.simple(oghamall.it.email.EmailPropertiesTest)
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::convert → KILLED

2.2
Location : convert
Killed by : none
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::convert → NO_COVERAGE

392

1.1
Location : convert
Killed by : oghamall.it.email.EmailPropertiesTest.simple(oghamall.it.email.EmailPropertiesTest)
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::convert → KILLED

2.2
Location : convert
Killed by : none
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::convert → NO_COVERAGE

394

1.1
Location : convert
Killed by : none
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::convert → TIMED_OUT

2.2
Location : convert
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::convert → KILLED

3.3
Location : convert
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::convert → KILLED

401

1.1
Location : toInternetAddress
Killed by : none
negated conditional → TIMED_OUT

2.2
Location : toInternetAddress
Killed by : oghamall.it.email.EmailSMTPAuthenticationTest.authenticated(oghamall.it.email.EmailSMTPAuthenticationTest)
negated conditional → KILLED

3.3
Location : toInternetAddress
Killed by : none
negated conditional → SURVIVED

4.4
Location : toInternetAddress
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredButUnconfiguredTemplateParsersCantHandleMultiTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::toInternetAddress → KILLED

5.5
Location : toInternetAddress
Killed by : none
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::toInternetAddress → TIMED_OUT

6.6
Location : toInternetAddress
Killed by : oghamjavamail.it.JavaMailStructureTest.plainTextBody(oghamjavamail.it.JavaMailStructureTest)
replaced return value with null for fr/sii/ogham/email/sender/impl/JavaMailSender::toInternetAddress → KILLED

406

1.1
Location : toString
Killed by : none
replaced return value with "" for fr/sii/ogham/email/sender/impl/JavaMailSender::toString → SURVIVED

2.2
Location : toString
Killed by : none
replaced return value with "" for fr/sii/ogham/email/sender/impl/JavaMailSender::toString → TIMED_OUT

Active mutators

Tests examined


Report generated by PIT OGHAM