FixClassPathResolverAdapter.java

package fr.sii.ogham.template.thymeleaf.v2.adapter;

import org.thymeleaf.templateresolver.ClassLoaderTemplateResolver;
import org.thymeleaf.templateresolver.ITemplateResolver;

import fr.sii.ogham.core.resource.resolver.ClassPathResolver;
import fr.sii.ogham.core.resource.resolver.DelegateResourceResolver;
import fr.sii.ogham.core.resource.resolver.ResourceResolver;
import fr.sii.ogham.template.thymeleaf.common.adapter.AbstractTemplateResolverOptionsAdapter;
import fr.sii.ogham.template.thymeleaf.common.adapter.TemplateResolverOptionsApplier;
import fr.sii.ogham.template.thymeleaf.v2.resolver.FixClassLoaderTemplateResolver;

/**
 * Adapter that converts general {@link ClassPathResolver} into Thymeleaf
 * specific {@link ClassLoaderTemplateResolver}.
 * 
 * @author Aurélien Baudet
 *
 */
public class FixClassPathResolverAdapter extends AbstractTemplateResolverOptionsAdapter {
	public FixClassPathResolverAdapter(TemplateResolverOptionsApplier optionsSetter) {
		super(optionsSetter);
	}

	@Override
	public boolean supports(ResourceResolver resolver) {
		ResourceResolver actualResolver = resolver instanceof DelegateResourceResolver ? ((DelegateResourceResolver) resolver).getActualResourceResolver() : resolver;
		return actualResolver instanceof ClassPathResolver;
	}

	@Override
	public ITemplateResolver adapt(ResourceResolver resolver) {
		FixClassLoaderTemplateResolver templateResolver = new FixClassLoaderTemplateResolver();
		applyOptions(templateResolver);
		return templateResolver;
	}

}