FirstSupportingResolverAdapter.java

1
package fr.sii.ogham.template.freemarker.adapter;
2
3
import java.util.ArrayList;
4
import java.util.Arrays;
5
import java.util.List;
6
7
import fr.sii.ogham.core.resource.resolver.ResourceResolver;
8
import fr.sii.ogham.template.exception.NoResolverAdapterException;
9
import fr.sii.ogham.template.exception.ResolverAdapterException;
10
import fr.sii.ogham.template.freemarker.TemplateLoaderOptions;
11
import freemarker.cache.TemplateLoader;
12
13
/**
14
 * Decorator that will ask each resolver adapter if it is able to handle the
15
 * template resolver. If the resolver adapter supports it, then this
16
 * implementation asks the resolver adapter to provide the FreeMarker template
17
 * loader.
18
 * 
19
 * Only the first resolver adapter that can handle the template resolver is
20
 * used.
21
 * 
22
 * @author Cyril Dejonghe
23
 */
24
public class FirstSupportingResolverAdapter implements TemplateLoaderAdapter {
25
26
	/**
27
	 * The list of adapters used to convert the general resolvers into
28
	 * FreeMarker specific resolvers
29
	 */
30
	private List<TemplateLoaderAdapter> adapters;
31
32
	/**
33
	 * Initialize the decorator with none, one or several resolver adapter
34
	 * implementations. The registration order may be important.
35
	 * 
36
	 * @param adapters
37
	 *            the adapters to register
38
	 */
39
	public FirstSupportingResolverAdapter(TemplateLoaderAdapter... adapters) {
40
		this(new ArrayList<>(Arrays.asList(adapters)));
41
	}
42
43
	/**
44
	 * Initialize the decorator with the provided resolver adapter
45
	 * implementations. The registration order may be important.
46
	 * 
47
	 * @param adapters
48
	 *            the adapters to register
49
	 */
50
	public FirstSupportingResolverAdapter(List<TemplateLoaderAdapter> adapters) {
51
		super();
52
		this.adapters = adapters;
53
	}
54
55
	public FirstSupportingResolverAdapter() {
56
		this(new ArrayList<>());
57
	}
58
59
	@Override
60
	public boolean supports(ResourceResolver resolver) {
61
		for (TemplateLoaderAdapter adapter : adapters) {
62 2 1. supports : negated conditional → NO_COVERAGE
2. supports : negated conditional → KILLED
			if (adapter.supports(resolver)) {
63 2 1. supports : replaced boolean return with false for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::supports → NO_COVERAGE
2. supports : replaced boolean return with false for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::supports → KILLED
				return true;
64
			}
65
		}
66 2 1. supports : replaced boolean return with true for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::supports → NO_COVERAGE
2. supports : replaced boolean return with true for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::supports → KILLED
		return false;
67
	}
68
69
	@Override
70
	public TemplateLoader adapt(ResourceResolver resolver) throws ResolverAdapterException {
71
		for (TemplateLoaderAdapter adapter : adapters) {
72 4 1. adapt : negated conditional → KILLED
2. adapt : negated conditional → KILLED
3. adapt : negated conditional → KILLED
4. adapt : negated conditional → KILLED
			if (adapter.supports(resolver)) {
73 4 1. adapt : replaced return value with null for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::adapt → KILLED
2. adapt : replaced return value with null for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::adapt → KILLED
3. adapt : replaced return value with null for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::adapt → KILLED
4. adapt : replaced return value with null for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::adapt → KILLED
				return adapter.adapt(resolver);
74
			}
75
		}
76
		throw new NoResolverAdapterException("No resolver adapter found for the provided resolver: " + resolverName(resolver), resolver);
77
	}
78
79
	/**
80
	 * Register a new adapter. The adapter is added at the end.
81
	 * 
82
	 * @param adapter
83
	 *            the adapter to register
84
	 */
85
	public void addAdapter(TemplateLoaderAdapter adapter) {
86
		adapters.add(adapter);
87
	}
88
89
	public List<TemplateLoaderAdapter> getAdapters() {
90 1 1. getAdapters : replaced return value with Collections.emptyList for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::getAdapters → NO_COVERAGE
		return adapters;
91
	}
92
93
	@Override
94
	public void setOptions(TemplateLoaderOptions options) {
95
		for (TemplateLoaderAdapter adapter : adapters) {
96 2 1. setOptions : removed call to fr/sii/ogham/template/freemarker/adapter/TemplateLoaderAdapter::setOptions → SURVIVED
2. setOptions : removed call to fr/sii/ogham/template/freemarker/adapter/TemplateLoaderAdapter::setOptions → TIMED_OUT
			adapter.setOptions(options);
97
		}
98
	}
99
100
	private static String resolverName(ResourceResolver resolver) {
101 5 1. resolverName : replaced return value with "" for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::resolverName → SURVIVED
2. resolverName : replaced return value with "" for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::resolverName → NO_COVERAGE
3. resolverName : negated conditional → SURVIVED
4. resolverName : negated conditional → NO_COVERAGE
5. resolverName : negated conditional → KILLED
		return resolver==null ? "null" : resolver.getClass().getSimpleName();
102
	}
103
}

Mutations

62

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

2.2
Location : supports
Killed by : oghamfremarker.ut.FirstSupportingResolverAdapterTest.supportsIfAtLeastOneSupports(oghamfremarker.ut.FirstSupportingResolverAdapterTest)
negated conditional → KILLED

63

1.1
Location : supports
Killed by : none
replaced boolean return with false for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::supports → NO_COVERAGE

2.2
Location : supports
Killed by : oghamfremarker.ut.FirstSupportingResolverAdapterTest.supportsIfAtLeastOneSupports(oghamfremarker.ut.FirstSupportingResolverAdapterTest)
replaced boolean return with false for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::supports → KILLED

66

1.1
Location : supports
Killed by : oghamfremarker.ut.FirstSupportingResolverAdapterTest.supportsIfAtLeastOneSupports(oghamfremarker.ut.FirstSupportingResolverAdapterTest)
replaced boolean return with true for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::supports → KILLED

2.2
Location : supports
Killed by : none
replaced boolean return with true for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::supports → NO_COVERAGE

72

1.1
Location : adapt
Killed by : oghamspringbootv1autoconfigure.it.SpringBeanResolutionTest.smsUsingFreemarkerTemplateShouldResolveBeans(oghamspringbootv1autoconfigure.it.SpringBeanResolutionTest)
negated conditional → KILLED

2.2
Location : adapt
Killed by : oghamspringbootv2autoconfigure.it.StaticMethodAccessTest.emailUsingFreemarkerTemplateAndStaticMethodAccessDisabledShouldFail(oghamspringbootv2autoconfigure.it.StaticMethodAccessTest)
negated conditional → KILLED

3.3
Location : adapt
Killed by : oghamfremarker.ut.FirstSupportingResolverAdapterTest.noSupportingAdapterShouldFail(oghamfremarker.ut.FirstSupportingResolverAdapterTest)
negated conditional → KILLED

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

73

1.1
Location : adapt
Killed by : oghamspringbootv2autoconfigure.it.StaticMethodAccessTest.emailUsingFreemarkerTemplateAndStaticMethodAccessDisabledShouldFail(oghamspringbootv2autoconfigure.it.StaticMethodAccessTest)
replaced return value with null for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::adapt → KILLED

2.2
Location : adapt
Killed by : oghamall.it.email.EmailMultiTemplateTest.withFreemarkerOneVariantWithParsingError(oghamall.it.email.EmailMultiTemplateTest)
replaced return value with null for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::adapt → KILLED

3.3
Location : adapt
Killed by : oghamspringbootv1autoconfigure.it.SpringBeanResolutionTest.smsUsingFreemarkerTemplateShouldResolveBeans(oghamspringbootv1autoconfigure.it.SpringBeanResolutionTest)
replaced return value with null for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::adapt → KILLED

4.4
Location : adapt
Killed by : oghamfremarker.it.FreeMarkerParserTest.nested(oghamfremarker.it.FreeMarkerParserTest)
replaced return value with null for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::adapt → KILLED

90

1.1
Location : getAdapters
Killed by : none
replaced return value with Collections.emptyList for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::getAdapters → NO_COVERAGE

96

1.1
Location : setOptions
Killed by : none
removed call to fr/sii/ogham/template/freemarker/adapter/TemplateLoaderAdapter::setOptions → SURVIVED

2.2
Location : setOptions
Killed by : none
removed call to fr/sii/ogham/template/freemarker/adapter/TemplateLoaderAdapter::setOptions → TIMED_OUT

101

1.1
Location : resolverName
Killed by : none
replaced return value with "" for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::resolverName → SURVIVED

2.2
Location : resolverName
Killed by : none
replaced return value with "" for fr/sii/ogham/template/freemarker/adapter/FirstSupportingResolverAdapter::resolverName → NO_COVERAGE

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

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

5.5
Location : resolverName
Killed by : oghamall.it.configuration.EmptyBuilderTest.emailSenderManuallyRegisteredAndFreemarkerOnlyRegisteredButResourceResolutionNotConfiguredCantHandleTemplateContent(oghamall.it.configuration.EmptyBuilderTest)
negated conditional → KILLED

Active mutators

Tests examined


Report generated by PIT OGHAM