ThymeLeafV2FirstSupportingTemplateResolver.java

1
package fr.sii.ogham.template.thymeleaf.v2;
2
3
import org.thymeleaf.TemplateProcessingParameters;
4
import org.thymeleaf.templateresolver.ITemplateResolver;
5
import org.thymeleaf.templateresolver.TemplateResolution;
6
7
import fr.sii.ogham.core.resource.path.ResolvedResourcePath;
8
import fr.sii.ogham.core.resource.path.UnresolvedPath;
9
import fr.sii.ogham.core.resource.resolver.FirstSupportingResourceResolver;
10
import fr.sii.ogham.core.resource.resolver.ResourceResolver;
11
import fr.sii.ogham.template.exception.NoResolverAdapterException;
12
import fr.sii.ogham.template.exception.ResolverAdapterNotFoundException;
13
import fr.sii.ogham.template.thymeleaf.common.adapter.FirstSupportingResolverAdapter;
14
15
/**
16
 * <p>
17
 * Decorator resolver that is able to manage {@link ResolvedResourcePath}.
18
 * </p>
19
 * <p>
20
 * It delegates to a {@link FirstSupportingResourceResolver} the link between
21
 * path, {@link ResolvedResourcePath} and {@link ResourceResolver}. each lookup to a
22
 * dedicated {@link ResourceResolver}.
23
 * </p>
24
 * <p>
25
 * It delegates to a {@link FirstSupportingResolverAdapter} the link between
26
 * {@link ResourceResolver} and the {@link ITemplateResolver} implementation to
27
 * use with the given path.
28
 * </p>
29
 * 
30
 * @author Cyril Dejonghe
31
 * @see FirstSupportingResourceResolver
32
 * @see FirstSupportingResolverAdapter
33
 *
34
 */
35
public class ThymeLeafV2FirstSupportingTemplateResolver implements ITemplateResolver {
36
37
	private FirstSupportingResourceResolver resolver;
38
	private FirstSupportingResolverAdapter resolverAdapter;
39
	private boolean forceInitialize;
40
41
	public ThymeLeafV2FirstSupportingTemplateResolver(FirstSupportingResourceResolver resolver, FirstSupportingResolverAdapter resolverAdapter) {
42
		super();
43
		this.resolver = resolver;
44
		this.resolverAdapter = resolverAdapter;
45
	}
46
47
	@Override
48
	public String getName() {
49 3 1. getName : replaced return value with "" for fr/sii/ogham/template/thymeleaf/v2/ThymeLeafV2FirstSupportingTemplateResolver::getName → NO_COVERAGE
2. getName : replaced return value with "" for fr/sii/ogham/template/thymeleaf/v2/ThymeLeafV2FirstSupportingTemplateResolver::getName → SURVIVED
3. getName : replaced return value with "" for fr/sii/ogham/template/thymeleaf/v2/ThymeLeafV2FirstSupportingTemplateResolver::getName → TIMED_OUT
		return "ThymeLeafFirstSupportingTemplateResolver";
50
	}
51
52
	@Override
53
	public Integer getOrder() {
54
		return 0;
55
	}
56
57
	@Override
58
	public TemplateResolution resolveTemplate(TemplateProcessingParameters templateProcessingParameters) {
59
		String unresolvedTemplateName = templateProcessingParameters.getTemplateName();
60
		ResourceResolver supportingResolver = resolver.getSupportingResolver(new UnresolvedPath(unresolvedTemplateName));
61
		ITemplateResolver templateResolver;
62
		try {
63
			templateResolver = resolverAdapter.adapt(supportingResolver);
64 3 1. resolveTemplate : negated conditional → NO_COVERAGE
2. resolveTemplate : negated conditional → TIMED_OUT
3. resolveTemplate : negated conditional → KILLED
			if (forceInitialize) {
65
				// we must initialize the new templateResolver
66 3 1. resolveTemplate : removed call to org/thymeleaf/templateresolver/ITemplateResolver::initialize → NO_COVERAGE
2. resolveTemplate : removed call to org/thymeleaf/templateresolver/ITemplateResolver::initialize → TIMED_OUT
3. resolveTemplate : removed call to org/thymeleaf/templateresolver/ITemplateResolver::initialize → KILLED
				templateResolver.initialize();
67
			}
68
			String resolvedPath = supportingResolver.resolve(new UnresolvedPath(unresolvedTemplateName)).getResolvedPath();
69
			TemplateProcessingParameters resolvedTemplateProcessingParameters = new TemplateProcessingParameters(templateProcessingParameters.getConfiguration(), resolvedPath,
70
					templateProcessingParameters.getContext());
71 3 1. resolveTemplate : replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/ThymeLeafV2FirstSupportingTemplateResolver::resolveTemplate → NO_COVERAGE
2. resolveTemplate : replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/ThymeLeafV2FirstSupportingTemplateResolver::resolveTemplate → TIMED_OUT
3. resolveTemplate : replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/ThymeLeafV2FirstSupportingTemplateResolver::resolveTemplate → KILLED
			return templateResolver.resolveTemplate(resolvedTemplateProcessingParameters);
72
		} catch (NoResolverAdapterException e) {
73
			throw new ResolverAdapterNotFoundException("Unable to resolver template cause no adapter supporting template name '" + unresolvedTemplateName + "' was found. ", e);
74
75
		}
76
77
	}
78
79
	@Override
80
	public void initialize() {
81
		forceInitialize = true;
82
	}
83
84
}

Mutations

49

1.1
Location : getName
Killed by : none
replaced return value with "" for fr/sii/ogham/template/thymeleaf/v2/ThymeLeafV2FirstSupportingTemplateResolver::getName → TIMED_OUT

2.2
Location : getName
Killed by : none
replaced return value with "" for fr/sii/ogham/template/thymeleaf/v2/ThymeLeafV2FirstSupportingTemplateResolver::getName → NO_COVERAGE

3.3
Location : getName
Killed by : none
replaced return value with "" for fr/sii/ogham/template/thymeleaf/v2/ThymeLeafV2FirstSupportingTemplateResolver::getName → SURVIVED

64

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

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

3.3
Location : resolveTemplate
Killed by : oghamthymeleafv2.it.resolver.StringResourceResolverTest.text(oghamthymeleafv2.it.resolver.StringResourceResolverTest)
negated conditional → KILLED

66

1.1
Location : resolveTemplate
Killed by : none
removed call to org/thymeleaf/templateresolver/ITemplateResolver::initialize → NO_COVERAGE

2.2
Location : resolveTemplate
Killed by : none
removed call to org/thymeleaf/templateresolver/ITemplateResolver::initialize → TIMED_OUT

3.3
Location : resolveTemplate
Killed by : oghamthymeleafv2.it.resolver.StringResourceResolverTest.text(oghamthymeleafv2.it.resolver.StringResourceResolverTest)
removed call to org/thymeleaf/templateresolver/ITemplateResolver::initialize → KILLED

71

1.1
Location : resolveTemplate
Killed by : none
replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/ThymeLeafV2FirstSupportingTemplateResolver::resolveTemplate → NO_COVERAGE

2.2
Location : resolveTemplate
Killed by : oghamthymeleafv2.it.resolver.StringResourceResolverTest.text(oghamthymeleafv2.it.resolver.StringResourceResolverTest)
replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/ThymeLeafV2FirstSupportingTemplateResolver::resolveTemplate → KILLED

3.3
Location : resolveTemplate
Killed by : none
replaced return value with null for fr/sii/ogham/template/thymeleaf/v2/ThymeLeafV2FirstSupportingTemplateResolver::resolveTemplate → TIMED_OUT

Active mutators

Tests examined


Report generated by PIT OGHAM