ClassPathResolverAdapter.java

1
package fr.sii.ogham.template.freemarker.adapter;
2
3
import java.net.URL;
4
5
import fr.sii.ogham.core.resource.resolver.ClassPathResolver;
6
import fr.sii.ogham.core.resource.resolver.DelegateResourceResolver;
7
import fr.sii.ogham.core.resource.resolver.ResourceResolver;
8
import freemarker.cache.ClassTemplateLoader;
9
import freemarker.cache.TemplateLoader;
10
11
/**
12
 * Adapter that converts general {@link ClassPathResolver} into FreeMarker
13
 * specific {@link ClassTemplateLoader}.
14
 * 
15
 * @author Cyril Dejonghe
16
 *
17
 */
18
public class ClassPathResolverAdapter extends AbstractFreeMarkerTemplateLoaderOptionsAdapter {
19
	private final ClassLoader classLoader;
20
	
21
	public ClassPathResolverAdapter(ClassLoader classLoader) {
22
		super();
23
		this.classLoader = classLoader;
24 1 1. supports : negated conditional → NO_COVERAGE
	}
25 2 1. supports : replaced boolean return with true for fr/sii/ogham/template/thymeleaf/common/adapter/ClassPathResolverAdapter::supports → NO_COVERAGE
2. supports : replaced boolean return with false for fr/sii/ogham/template/thymeleaf/common/adapter/ClassPathResolverAdapter::supports → NO_COVERAGE
26
	@Override
27
	public boolean supports(ResourceResolver resolver) {
28
		ResourceResolver actualResolver = resolver instanceof DelegateResourceResolver ? ((DelegateResourceResolver) resolver).getActualResourceResolver() : resolver;
29
		return actualResolver instanceof ClassPathResolver;
30
	}
31 1 1. adapt : removed call to fr/sii/ogham/template/thymeleaf/common/adapter/ClassPathResolverAdapter::applyOptions → NO_COVERAGE
32 1 1. adapt : replaced return value with null for fr/sii/ogham/template/thymeleaf/common/adapter/ClassPathResolverAdapter::adapt → NO_COVERAGE
	@Override
33
	public TemplateLoader adapt(ResourceResolver resolver) {
34
		return new FixClassTemplateLoader(getClassLoader(), "");
35
	}
36
37
	private ClassLoader getClassLoader() {
38
		if(classLoader!=null) {
39
			return classLoader;
40
		}
41
		return Thread.currentThread().getContextClassLoader();
42
	}
43
44
	private static class FixClassTemplateLoader extends ClassTemplateLoader {
45
		public FixClassTemplateLoader(ClassLoader classLoader, String basePackagePath) {
46
			super(classLoader, basePackagePath);
47
		}
48
49
		@Override
50
		protected URL getURL(String name) {
51
			String path = name.startsWith("/") ? name.substring(1) : name;
52
			return super.getURL(path);
53
		}
54
	}
55
	
56
}

Mutations

24

1.1
Location : supports
Killed by :
negated conditional → NO_COVERAGE

25

1.1
Location : supports
Killed by :
replaced boolean return with true for fr/sii/ogham/template/thymeleaf/common/adapter/ClassPathResolverAdapter::supports → NO_COVERAGE

2.2
Location : supports
Killed by :
replaced boolean return with false for fr/sii/ogham/template/thymeleaf/common/adapter/ClassPathResolverAdapter::supports → NO_COVERAGE

31

1.1
Location : adapt
Killed by :
removed call to fr/sii/ogham/template/thymeleaf/common/adapter/ClassPathResolverAdapter::applyOptions → NO_COVERAGE

32

1.1
Location : adapt
Killed by :
replaced return value with null for fr/sii/ogham/template/thymeleaf/common/adapter/ClassPathResolverAdapter::adapt → NO_COVERAGE

Active mutators

Tests examined


Report generated by PIT 1.13.1