ImageInliningBuilder.java

1
package fr.sii.ogham.email.builder;
2
3
import java.io.InputStream;
4
import java.nio.file.Files;
5
import java.util.List;
6
7
import javax.activation.MimetypesFileTypeMap;
8
9
import org.slf4j.Logger;
10
import org.slf4j.LoggerFactory;
11
12
import fr.sii.ogham.core.builder.Builder;
13
import fr.sii.ogham.core.builder.context.BuildContext;
14
import fr.sii.ogham.core.builder.env.EnvironmentBuilder;
15
import fr.sii.ogham.core.builder.mimetype.MimetypeDetectionBuilder;
16
import fr.sii.ogham.core.builder.mimetype.MimetypeDetectionBuilderDelegate;
17
import fr.sii.ogham.core.builder.mimetype.SimpleMimetypeDetectionBuilder;
18
import fr.sii.ogham.core.builder.resolution.ClassPathResolutionBuilder;
19
import fr.sii.ogham.core.builder.resolution.FileResolutionBuilder;
20
import fr.sii.ogham.core.builder.resolution.ResourceResolutionBuilder;
21
import fr.sii.ogham.core.builder.resolution.ResourceResolutionBuilderHelper;
22
import fr.sii.ogham.core.builder.resolution.StringResolutionBuilder;
23
import fr.sii.ogham.core.fluent.AbstractParent;
24
import fr.sii.ogham.core.mimetype.MimeTypeProvider;
25
import fr.sii.ogham.core.resource.path.LookupAwareRelativePathResolver;
26
import fr.sii.ogham.core.resource.path.RelativePathResolver;
27
import fr.sii.ogham.core.resource.resolver.FirstSupportingResourceResolver;
28
import fr.sii.ogham.core.resource.resolver.ResourceResolver;
29
import fr.sii.ogham.core.translator.content.ContentTranslator;
30
import fr.sii.ogham.html.inliner.EveryImageInliner;
31
import fr.sii.ogham.html.inliner.ImageInliner;
32
import fr.sii.ogham.html.translator.InlineImageTranslator;
33
34
/**
35
 * Configures how images declared in the HTML content are automatically
36
 * transformed to make it work with email.
37
 * 
38
 * Images can be either:
39
 * <ul>
40
 * <li>Attached to the email</li>
41
 * <li>Encoded to a base64 string</li>
42
 * <li>Not inlined at all</li>
43
 * </ul>
44
 * 
45
 * This builder is used to enable the inlining modes (and to configure them).
46
 * Several modes can be enabled.
47
 * 
48
 * <p>
49
 * If {@link #attach()} is called, it enables image attachment.
50
 * 
51
 * Image defined in a html must be referenced by a
52
 * <a href="https://tools.ietf.org/html/rfc4021#section-2.2.2">Content-ID (or
53
 * CID)</a> if the image is attached to the email.
54
 * 
55
 * For example, if your template contains the following HTML code:
56
 * 
57
 * <pre>
58
 * {@code
59
 *    <img src="classpath:/foo.png" data-inline-image="attach" />
60
 * }
61
 * </pre>
62
 * 
63
 * Then the image will be loaded from the classpath and attached to the email.
64
 * The src attribute will be replaced by the Content-ID.
65
 * 
66
 * 
67
 * <p>
68
 * If {@link #base64()} is called, it enables inlining by converting image
69
 * content into base64 string and using the base64 string as image source.
70
 * 
71
 * For example, if your template contains the following HTML code:
72
 * 
73
 * <pre>
74
 * {@code
75
 *    <img src="classpath:/foo.png" data-inline-image="base64" />
76
 * }
77
 * </pre>
78
 * 
79
 * Then the image will be loaded from the classpath and encoded into a base64
80
 * string. This base64 string is used in the src attribute of the image.
81
 * 
82
 * <p>
83
 * If you don't want to inline a particular image, you can set the
84
 * "data-inline-image" attribute to "skip":
85
 * 
86
 * <pre>
87
 * {@code
88
 *    <img src="classpath:/foo.png" data-inline-image="skip" />
89
 * }
90
 * </pre>
91
 * 
92
 * Then the image won't be inlined at all.
93
 * 
94
 * <p>
95
 * If no inline mode is explicitly defined on the {@code <img>}:
96
 * 
97
 * <pre>
98
 * {@code
99
 *    <img src="classpath:/foo.png" />
100
 * }
101
 * </pre>
102
 * 
103
 * The behavior depends on what you have configured:
104
 * <ul>
105
 * <li>If {@link #attach()} is enabled (has been called), then image will be
106
 * loaded from the classpath and attached to the email. The src attribute will
107
 * be replaced by the Content-ID.</li>
108
 * <li>If {@link #attach()} is not enabled (never called) and {@link #base64()}
109
 * is enabled (has been called), then the image will be loaded from the
110
 * classpath and encoded into a base64 string. This base64 string is used in the
111
 * src attribute of the image.</li>
112
 * <li>If neither {@link #attach()} nor {@link #base64()} are enabled (never
113
 * called), then images won't be inlined at all</li>
114
 * </ul>
115
 * 
116
 * 
117
 * @author Aurélien Baudet
118
 *
119
 */
120
public class ImageInliningBuilder extends AbstractParent<ImageHandlingBuilder> implements ResourceResolutionBuilder<ImageInliningBuilder>, Builder<ContentTranslator> {
121
	private static final Logger LOG = LoggerFactory.getLogger(ImageInliningBuilder.class);
122
123
	private final BuildContext buildContext;
124
	private final ResourceResolutionBuilderHelper<ImageInliningBuilder> resourceResolutionBuilderHelper;
125
	private AttachImageBuilder attachBuilder;
126
	private Base64InliningBuilder base64Builder;
127
	private MimetypeDetectionBuilder<ImageInliningBuilder> mimetypeBuilder;
128
129
	/**
130
	 * Initializes the builder with a parent builder. The parent builder is used
131
	 * when calling {@link #and()} method. The {@link EnvironmentBuilder} is
132
	 * used to evaluate properties when {@link #build()} method is called.
133
	 * 
134
	 * @param parent
135
	 *            the parent builder
136
	 * @param buildContext
137
	 *            for registering instances and property evaluation
138
	 */
139
	public ImageInliningBuilder(ImageHandlingBuilder parent, BuildContext buildContext) {
140
		super(parent);
141
		this.buildContext = buildContext;
142
		resourceResolutionBuilderHelper = new ResourceResolutionBuilderHelper<>(this, buildContext);
143
	}
144
145
	/**
146
	 * Configures how attachment of images is handled.
147
	 * 
148
	 * <p>
149
	 * If this method is called, it enables image attachment.
150
	 * 
151
	 * Image defined in a html must be referenced by a
152
	 * <a href="https://tools.ietf.org/html/rfc4021#section-2.2.2">Content-ID
153
	 * (or CID)</a> if the image is attached to the email.
154
	 * 
155
	 * For example, if your template contains the following HTML code:
156
	 * 
157
	 * <pre>
158
	 * {@code
159
	 *    <img src="classpath:/foo.png" data-inline-image="attach" />
160
	 * }
161
	 * </pre>
162
	 * 
163
	 * Then the image will be loaded from the classpath and attached to the
164
	 * email. The src attribute will be replaced by the Content-ID.
165
	 * 
166
	 * 
167
	 * 
168
	 * <p>
169
	 * In the same way, if your template contains the following code:
170
	 * 
171
	 * <pre>
172
	 * <code>
173
	 *  &lt;style&gt;
174
	 *     .some-class {
175
	 *       background: url('classpath:/foo.png');
176
	 *       --inline-image: attach;
177
	 *     }
178
	 *  &lt;/style&gt;
179
	 * </code>
180
	 * </pre>
181
	 * 
182
	 * Or directly on {@code style} attribute:
183
	 * 
184
	 * <pre>
185
	 * {@code
186
	 * 	<div style=
187
	"background: url('classpath:/foo.png'); --inline-image: attach;"></div>
188
	 * }
189
	 * </pre>
190
	 * 
191
	 * Then the image will be loaded from the classpath and attached to the
192
	 * email. The url will be replaced by the Content-ID.
193
	 * 
194
	 * <p>
195
	 * If no inline mode is defined, image attachment is used by default:
196
	 * 
197
	 * <pre>
198
	 * {@code
199
	 *    <img src="classpath:/foo.png" />
200
	 * }
201
	 * </pre>
202
	 * 
203
	 * Or:
204
	 * 
205
	 * <pre>
206
	 * <code>
207
	 *  &lt;style&gt;
208
	 *     .some-class {
209
	 *       background: url('classpath:/foo.png');
210
	 *     }
211
	 *  &lt;/style&gt;
212
	 * </code>
213
	 * </pre>
214
	 * 
215
	 * Or:
216
	 * 
217
	 * <pre>
218
	 * {@code
219
	 * 	<div style="background: url('classpath:/foo.png');"></div>
220
	 * }
221
	 * </pre>
222
	 * 
223
	 * The examples above have the same result as the example that explicitly
224
	 * defines the inline mode.
225
	 * 
226
	 * 
227
	 * @return the builder to configure how images are automatically attached
228
	 */
229
	public AttachImageBuilder attach() {
230 8 1. attach : negated conditional → NO_COVERAGE
2. attach : negated conditional → KILLED
3. attach : negated conditional → KILLED
4. attach : negated conditional → KILLED
5. attach : negated conditional → KILLED
6. attach : negated conditional → KILLED
7. attach : negated conditional → KILLED
8. attach : negated conditional → KILLED
		if (attachBuilder == null) {
231
			attachBuilder = new AttachImageBuilder(this, buildContext);
232
		}
233 8 1. attach : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → NO_COVERAGE
2. attach : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → KILLED
3. attach : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → KILLED
4. attach : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → KILLED
5. attach : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → KILLED
6. attach : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → KILLED
7. attach : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → KILLED
8. attach : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → KILLED
		return attachBuilder;
234
	}
235
236
	/**
237
	 * Configures how attachment of images is handled.
238
	 * 
239
	 * <p>
240
	 * If this method is called, it enables inlining by converting image content
241
	 * into base64 string and using the base64 string as image source.
242
	 * 
243
	 * For example, if your template contains the following HTML code:
244
	 * 
245
	 * <pre>
246
	 * {@code
247
	 *    <img src="classpath:/foo.png" data-inline-image="base64" />
248
	 * }
249
	 * </pre>
250
	 * 
251
	 * Then the image will be loaded from the classpath and encoded into a
252
	 * base64 string. This base64 string is used in the src attribute of the
253
	 * {@code <img>}.
254
	 * 
255
	 * 
256
	 * <p>
257
	 * In the same way, if your template contains the following code:
258
	 * 
259
	 * <pre>
260
	 * <code>
261
	 *  &lt;style&gt;
262
	 *     .some-class {
263
	 *       background: url('classpath:/foo.png');
264
	 *       --inline-image: base64;
265
	 *     }
266
	 *  &lt;/style&gt;
267
	 * </code>
268
	 * </pre>
269
	 * 
270
	 * Or directly on {@code style} attribute:
271
	 * 
272
	 * <pre>
273
	 * {@code
274
	 * 	<div style="background: url('classpath:/foo.png'); --inline-image: base64;"></div>
275
	 * }
276
	 * </pre>
277
	 * 
278
	 * Then the image will be loaded from the classpath and encoded into a
279
	 * base64 string. The url is updated with the base64 string.
280
	 * 
281
	 * <p>
282
	 * If no inline mode is defined <strong>and</strong> image attachment is not
283
	 * enable ({@link #attach()} is not called), this mode is used by default:
284
	 * 
285
	 * <pre>
286
	 * {@code
287
	 *    <img src="classpath:/foo.png" />
288
	 * }
289
	 * </pre>
290
	 * 
291
	 * In this case, the example above as the same result as the example that
292
	 * explicitly defines the inline mode.
293
	 * 
294
	 * 
295
	 * @return the builder to configure how images are automatically converted
296
	 *         to base64
297
	 */
298
	public Base64InliningBuilder base64() {
299 8 1. base64 : negated conditional → NO_COVERAGE
2. base64 : negated conditional → KILLED
3. base64 : negated conditional → KILLED
4. base64 : negated conditional → KILLED
5. base64 : negated conditional → KILLED
6. base64 : negated conditional → KILLED
7. base64 : negated conditional → KILLED
8. base64 : negated conditional → KILLED
		if (base64Builder == null) {
300
			base64Builder = new Base64InliningBuilder(this, buildContext);
301
		}
302 8 1. base64 : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → NO_COVERAGE
2. base64 : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → KILLED
3. base64 : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → KILLED
4. base64 : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → KILLED
5. base64 : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → KILLED
6. base64 : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → KILLED
7. base64 : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → KILLED
8. base64 : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → KILLED
		return base64Builder;
303
	}
304
305
	/**
306
	 * Builder that configures mimetype detection.
307
	 * 
308
	 * There exists several implementations to provide the mimetype:
309
	 * <ul>
310
	 * <li>Using Java {@link MimetypesFileTypeMap}</li>
311
	 * <li>Using Java 7 {@link Files#probeContentType(java.nio.file.Path)}</li>
312
	 * <li>Using <a href="http://tika.apache.org/">Apache Tika</a></li>
313
	 * <li>Using
314
	 * <a href="https://github.com/arimus/jmimemagic">JMimeMagic</a></li>
315
	 * </ul>
316
	 * 
317
	 * <p>
318
	 * Both implementations provided by Java are based on file extensions. This
319
	 * can't be used in most cases as we often handle {@link InputStream}s.
320
	 * </p>
321
	 * 
322
	 * <p>
323
	 * In previous version of Ogham, JMimeMagic was used and was working quite
324
	 * well. Unfortunately, the library is no more maintained.
325
	 * </p>
326
	 * 
327
	 * <p>
328
	 * You can configure how Tika will detect mimetype:
329
	 * 
330
	 * <pre>
331
	 * .mimetype()
332
	 *    .tika()
333
	 *       ...
334
	 * </pre>
335
	 * 
336
	 * <p>
337
	 * This builder allows to use several providers. It will chain them until
338
	 * one can find a valid mimetype. If none is found, you can explicitly
339
	 * provide the default one:
340
	 * 
341
	 * <pre>
342
	 * .mimetype()
343
	 *    .defaultMimetype("text/html")
344
	 * </pre>
345
	 * 
346
	 * <p>
347
	 * If no mimetype detector was previously defined, it creates a new one.
348
	 * Then each time you call {@link #mimetype()}, the same instance is used.
349
	 * </p>
350
	 * 
351
	 * @return the builder to configure mimetype detection
352
	 */
353
	public MimetypeDetectionBuilder<ImageInliningBuilder> mimetype() {
354 8 1. mimetype : negated conditional → NO_COVERAGE
2. mimetype : negated conditional → KILLED
3. mimetype : negated conditional → KILLED
4. mimetype : negated conditional → KILLED
5. mimetype : negated conditional → KILLED
6. mimetype : negated conditional → KILLED
7. mimetype : negated conditional → KILLED
8. mimetype : negated conditional → KILLED
		if (mimetypeBuilder == null) {
355
			mimetypeBuilder = new SimpleMimetypeDetectionBuilder<>(this, buildContext);
356
		}
357 8 1. mimetype : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → NO_COVERAGE
2. mimetype : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → KILLED
3. mimetype : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → KILLED
4. mimetype : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → KILLED
5. mimetype : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → KILLED
6. mimetype : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → KILLED
7. mimetype : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → KILLED
8. mimetype : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → KILLED
		return mimetypeBuilder;
358
	}
359
360
	/**
361
	 * NOTE: this is mostly for advance usage (when creating a custom module).
362
	 * 
363
	 * Inherits mimetype configuration from another builder. This is useful for
364
	 * configuring independently different parts of Ogham but keeping a whole
365
	 * coherence.
366
	 * 
367
	 * The same instance is shared meaning that all changes done here will also
368
	 * impact the other builder.
369
	 * 
370
	 * <p>
371
	 * If a previous builder was defined (by calling {@link #mimetype()} for
372
	 * example), the new builder will override it.
373
	 * 
374
	 * @param builder
375
	 *            the builder to inherit
376
	 * @return this instance for fluent chaining
377
	 */
378
	public ImageInliningBuilder mimetype(MimetypeDetectionBuilder<?> builder) {
379
		mimetypeBuilder = new MimetypeDetectionBuilderDelegate<>(this, builder);
380 1 1. mimetype : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → NO_COVERAGE
		return this;
381
	}
382
383
	@Override
384
	public ClassPathResolutionBuilder<ImageInliningBuilder> classpath() {
385 8 1. classpath : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → NO_COVERAGE
2. classpath : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → KILLED
3. classpath : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → KILLED
4. classpath : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → KILLED
5. classpath : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → KILLED
6. classpath : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → KILLED
7. classpath : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → KILLED
8. classpath : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → KILLED
		return resourceResolutionBuilderHelper.classpath();
386
	}
387
388
	@Override
389
	public FileResolutionBuilder<ImageInliningBuilder> file() {
390 8 1. file : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → NO_COVERAGE
2. file : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → KILLED
3. file : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → KILLED
4. file : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → KILLED
5. file : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → KILLED
6. file : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → KILLED
7. file : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → KILLED
8. file : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → KILLED
		return resourceResolutionBuilderHelper.file();
391
	}
392
393
	@Override
394
	public StringResolutionBuilder<ImageInliningBuilder> string() {
395 8 1. string : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → NO_COVERAGE
2. string : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → KILLED
3. string : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → KILLED
4. string : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → KILLED
5. string : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → KILLED
6. string : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → KILLED
7. string : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → KILLED
8. string : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → KILLED
		return resourceResolutionBuilderHelper.string();
396
	}
397
398
	@Override
399
	public ImageInliningBuilder resolver(ResourceResolver resolver) {
400 1 1. resolver : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::resolver → NO_COVERAGE
		return resourceResolutionBuilderHelper.resolver(resolver);
401
	}
402
403
	@Override
404
	public ContentTranslator build() {
405
		MimeTypeProvider mimetypeProvider = buildMimetypeProvider();
406 3 1. build : negated conditional → SURVIVED
2. build : negated conditional → NO_COVERAGE
3. build : negated conditional → KILLED
		if (mimetypeProvider == null) {
407
			LOG.info("Images won't be inlined because no mimetype detector is configured");
408
			return null;
409
		}
410
		LOG.info("Images will be inlined");
411 3 1. build : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::build → NO_COVERAGE
2. build : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::build → SURVIVED
3. build : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::build → KILLED
		return buildContext.register(new InlineImageTranslator(buildInliner(), buildResolver(), mimetypeProvider, buildRelativePathProvider()));
412
	}
413
414
	private MimeTypeProvider buildMimetypeProvider() {
415 3 1. buildMimetypeProvider : negated conditional → SURVIVED
2. buildMimetypeProvider : negated conditional → NO_COVERAGE
3. buildMimetypeProvider : negated conditional → KILLED
		if (mimetypeBuilder == null) {
416
			return null;
417
		}
418 3 1. buildMimetypeProvider : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildMimetypeProvider → SURVIVED
2. buildMimetypeProvider : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildMimetypeProvider → NO_COVERAGE
3. buildMimetypeProvider : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildMimetypeProvider → KILLED
		return mimetypeBuilder.build();
419
	}
420
421
	private ImageInliner buildInliner() {
422
		EveryImageInliner inliner = buildContext.register(new EveryImageInliner());
423 3 1. buildInliner : negated conditional → NO_COVERAGE
2. buildInliner : negated conditional → SURVIVED
3. buildInliner : negated conditional → KILLED
		if (attachBuilder != null) {
424
			inliner.addInliner(attachBuilder.build());
425
		}
426 3 1. buildInliner : negated conditional → SURVIVED
2. buildInliner : negated conditional → NO_COVERAGE
3. buildInliner : negated conditional → KILLED
		if (base64Builder != null) {
427
			inliner.addInliner(base64Builder.build());
428
		}
429 3 1. buildInliner : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildInliner → SURVIVED
2. buildInliner : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildInliner → NO_COVERAGE
3. buildInliner : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildInliner → KILLED
		return inliner;
430
	}
431
432
	private ResourceResolver buildResolver() {
433
		List<ResourceResolver> resolvers = resourceResolutionBuilderHelper.buildResolvers();
434 3 1. buildResolver : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildResolver → NO_COVERAGE
2. buildResolver : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildResolver → SURVIVED
3. buildResolver : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildResolver → KILLED
		return buildContext.register(new FirstSupportingResourceResolver(resolvers));
435
	}
436
437
	private RelativePathResolver buildRelativePathProvider() {
438 3 1. buildRelativePathProvider : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildRelativePathProvider → SURVIVED
2. buildRelativePathProvider : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildRelativePathProvider → NO_COVERAGE
3. buildRelativePathProvider : replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildRelativePathProvider → KILLED
		return buildContext.register(new LookupAwareRelativePathResolver(resourceResolutionBuilderHelper.getAllLookups()));
439
	}
440
}

Mutations

230

1.1
Location : attach
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : attach
Killed by : oghamcore.it.core.service.CleanupTest.manualCleanupShouldAutomaticallyCleanTheSenders(oghamcore.it.core.service.CleanupTest)
negated conditional → KILLED

3.3
Location : attach
Killed by : oghamsmsglobal.it.SmsglobalServiceProviderConfigurerSpec
negated conditional → KILLED

4.4
Location : attach
Killed by : oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests.oghamPropertiesWithSpringPropsShouldUseOghamPropertiesPrecedence(oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests)
negated conditional → KILLED

5.5
Location : attach
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
negated conditional → KILLED

6.6
Location : attach
Killed by : oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests.oghamAloneShouldUseOghamProperties(oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests)
negated conditional → KILLED

7.7
Location : attach
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
negated conditional → KILLED

8.8
Location : attach
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.notHtml(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
negated conditional → KILLED

233

1.1
Location : attach
Killed by : oghamcore.it.core.service.CleanupTest.manualCleanupShouldAutomaticallyCleanTheSenders(oghamcore.it.core.service.CleanupTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → KILLED

2.2
Location : attach
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → KILLED

3.3
Location : attach
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.notHtml(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → KILLED

4.4
Location : attach
Killed by : oghamsmsglobal.it.SmsglobalServiceProviderConfigurerSpec
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → KILLED

5.5
Location : attach
Killed by : oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests.oghamAloneShouldUseOghamProperties(oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → KILLED

6.6
Location : attach
Killed by : oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests.oghamPropertiesWithSpringPropsShouldUseOghamPropertiesPrecedence(oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → KILLED

7.7
Location : attach
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → KILLED

8.8
Location : attach
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::attach → NO_COVERAGE

299

1.1
Location : base64
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
negated conditional → KILLED

2.2
Location : base64
Killed by : oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests.oghamAloneShouldUseOghamProperties(oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests)
negated conditional → KILLED

3.3
Location : base64
Killed by : oghamcore.it.core.service.CleanupTest.manualCleanupShouldAutomaticallyCleanTheSenders(oghamcore.it.core.service.CleanupTest)
negated conditional → KILLED

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

5.5
Location : base64
Killed by : oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests.oghamPropertiesWithSpringPropsShouldUseOghamPropertiesPrecedence(oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests)
negated conditional → KILLED

6.6
Location : base64
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
negated conditional → KILLED

7.7
Location : base64
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.notHtml(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
negated conditional → KILLED

8.8
Location : base64
Killed by : oghamsmsglobal.it.SmsglobalServiceProviderConfigurerSpec
negated conditional → KILLED

302

1.1
Location : base64
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.notHtml(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → KILLED

2.2
Location : base64
Killed by : oghamsmsglobal.it.SmsglobalServiceProviderConfigurerSpec
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → KILLED

3.3
Location : base64
Killed by : oghamcore.it.core.service.CleanupTest.manualCleanupShouldAutomaticallyCleanTheSenders(oghamcore.it.core.service.CleanupTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → KILLED

4.4
Location : base64
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → KILLED

5.5
Location : base64
Killed by : oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests.oghamPropertiesWithSpringPropsShouldUseOghamPropertiesPrecedence(oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → KILLED

6.6
Location : base64
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → NO_COVERAGE

7.7
Location : base64
Killed by : oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests.oghamAloneShouldUseOghamProperties(oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → KILLED

8.8
Location : base64
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::base64 → KILLED

354

1.1
Location : mimetype
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
negated conditional → KILLED

2.2
Location : mimetype
Killed by : oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests.oghamPropertiesWithSpringPropsShouldUseOghamPropertiesPrecedence(oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests)
negated conditional → KILLED

3.3
Location : mimetype
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
negated conditional → KILLED

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

5.5
Location : mimetype
Killed by : oghamcore.it.core.service.CleanupTest.manualCleanupShouldAutomaticallyCleanTheSenders(oghamcore.it.core.service.CleanupTest)
negated conditional → KILLED

6.6
Location : mimetype
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.notHtml(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
negated conditional → KILLED

7.7
Location : mimetype
Killed by : oghamsmsglobal.it.SmsglobalServiceProviderConfigurerSpec
negated conditional → KILLED

8.8
Location : mimetype
Killed by : oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests.oghamAloneShouldUseOghamProperties(oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests)
negated conditional → KILLED

357

1.1
Location : mimetype
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → KILLED

2.2
Location : mimetype
Killed by : oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests.oghamAloneShouldUseOghamProperties(oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → KILLED

3.3
Location : mimetype
Killed by : oghamsmsglobal.it.SmsglobalServiceProviderConfigurerSpec
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → KILLED

4.4
Location : mimetype
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.notHtml(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → KILLED

5.5
Location : mimetype
Killed by : oghamcore.it.core.service.CleanupTest.manualCleanupShouldAutomaticallyCleanTheSenders(oghamcore.it.core.service.CleanupTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → KILLED

6.6
Location : mimetype
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → NO_COVERAGE

7.7
Location : mimetype
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → KILLED

8.8
Location : mimetype
Killed by : oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests.oghamPropertiesWithSpringPropsShouldUseOghamPropertiesPrecedence(oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → KILLED

380

1.1
Location : mimetype
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::mimetype → NO_COVERAGE

385

1.1
Location : classpath
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → NO_COVERAGE

2.2
Location : classpath
Killed by : oghamcore.it.core.service.CleanupTest.manualCleanupShouldAutomaticallyCleanTheSenders(oghamcore.it.core.service.CleanupTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → KILLED

3.3
Location : classpath
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → KILLED

4.4
Location : classpath
Killed by : oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests.oghamPropertiesWithSpringPropsShouldUseOghamPropertiesPrecedence(oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → KILLED

5.5
Location : classpath
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → KILLED

6.6
Location : classpath
Killed by : oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests.oghamAloneShouldUseOghamProperties(oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → KILLED

7.7
Location : classpath
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.notHtml(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → KILLED

8.8
Location : classpath
Killed by : oghamsmsglobal.it.SmsglobalServiceProviderConfigurerSpec
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::classpath → KILLED

390

1.1
Location : file
Killed by : oghamcore.it.core.service.CleanupTest.manualCleanupShouldAutomaticallyCleanTheSenders(oghamcore.it.core.service.CleanupTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → KILLED

2.2
Location : file
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.notHtml(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → KILLED

3.3
Location : file
Killed by : oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests.oghamPropertiesWithSpringPropsShouldUseOghamPropertiesPrecedence(oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → KILLED

4.4
Location : file
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → KILLED

5.5
Location : file
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → NO_COVERAGE

6.6
Location : file
Killed by : oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests.oghamAloneShouldUseOghamProperties(oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → KILLED

7.7
Location : file
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → KILLED

8.8
Location : file
Killed by : oghamsmsglobal.it.SmsglobalServiceProviderConfigurerSpec
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::file → KILLED

395

1.1
Location : string
Killed by : oghamcloudhopper.it.AutoRetryExtensionTest.smsNotRetriedDueToCloudhopperError(oghamcloudhopper.it.AutoRetryExtensionTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → KILLED

2.2
Location : string
Killed by : oghamall.it.html.translator.JsoupInlineCssTranslatorTest.notHtml(oghamall.it.html.translator.JsoupInlineCssTranslatorTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → KILLED

3.3
Location : string
Killed by : oghamsmsglobal.it.SmsglobalServiceProviderConfigurerSpec
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → KILLED

4.4
Location : string
Killed by : oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests.oghamAloneShouldUseOghamProperties(oghamspringbootv1autoconfigure.it.OghamSpringBoot1JavaMailAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → KILLED

5.5
Location : string
Killed by : oghamjavamail.it.UnreadableAttachmentTest.attachmentUnreadable(oghamjavamail.it.UnreadableAttachmentTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → KILLED

6.6
Location : string
Killed by : oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests.oghamPropertiesWithSpringPropsShouldUseOghamPropertiesPrecedence(oghamspringbootv2autoconfigure.it.OghamSpringBoot2JavaMailAutoConfigurationTests)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → KILLED

7.7
Location : string
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → NO_COVERAGE

8.8
Location : string
Killed by : oghamcore.it.core.service.CleanupTest.manualCleanupShouldAutomaticallyCleanTheSenders(oghamcore.it.core.service.CleanupTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::string → KILLED

400

1.1
Location : resolver
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::resolver → NO_COVERAGE

406

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

2.2
Location : build
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredAndImageInliningEnabledButUnconfiguredResourceResolutionCantInlineImages(oghamall.it.configuration.EmptyBuilderTest)
negated conditional → KILLED

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

411

1.1
Location : build
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredAndImageInliningEnabledButUnconfiguredResourceResolutionCantInlineImages(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::build → KILLED

2.2
Location : build
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::build → NO_COVERAGE

3.3
Location : build
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::build → SURVIVED

415

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

2.2
Location : buildMimetypeProvider
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredAndImageInliningEnabledButUnconfiguredResourceResolutionCantInlineImages(oghamall.it.configuration.EmptyBuilderTest)
negated conditional → KILLED

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

418

1.1
Location : buildMimetypeProvider
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildMimetypeProvider → SURVIVED

2.2
Location : buildMimetypeProvider
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredAndImageInliningEnabledButUnconfiguredResourceResolutionCantInlineImages(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildMimetypeProvider → KILLED

3.3
Location : buildMimetypeProvider
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildMimetypeProvider → NO_COVERAGE

423

1.1
Location : buildInliner
Killed by : none
negated conditional → NO_COVERAGE

2.2
Location : buildInliner
Killed by : none
negated conditional → SURVIVED

3.3
Location : buildInliner
Killed by : oghamall.it.resolver.FreemarkerRelativeResourcesTests.relativeToPrefixSuffixAndPath(oghamall.it.resolver.FreemarkerRelativeResourcesTests)
negated conditional → KILLED

426

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

2.2
Location : buildInliner
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredAndImageInliningEnabledButUnconfiguredResourceResolutionCantInlineImages(oghamall.it.configuration.EmptyBuilderTest)
negated conditional → KILLED

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

429

1.1
Location : buildInliner
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildInliner → SURVIVED

2.2
Location : buildInliner
Killed by : oghamall.it.resolver.FreemarkerRelativeResourcesTests.relativeToPrefixSuffixAndPath(oghamall.it.resolver.FreemarkerRelativeResourcesTests)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildInliner → KILLED

3.3
Location : buildInliner
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildInliner → NO_COVERAGE

434

1.1
Location : buildResolver
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildResolver → NO_COVERAGE

2.2
Location : buildResolver
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredAndImageInliningEnabledButUnconfiguredResourceResolutionCantInlineImages(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildResolver → KILLED

3.3
Location : buildResolver
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildResolver → SURVIVED

438

1.1
Location : buildRelativePathProvider
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildRelativePathProvider → SURVIVED

2.2
Location : buildRelativePathProvider
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredAndImageInliningEnabledButUnconfiguredResourceResolutionCantInlineImages(oghamall.it.configuration.EmptyBuilderTest)
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildRelativePathProvider → KILLED

3.3
Location : buildRelativePathProvider
Killed by : none
replaced return value with null for fr/sii/ogham/email/builder/ImageInliningBuilder::buildRelativePathProvider → NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT OGHAM