All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fr.sii.ogham.template.thymeleaf.ThymeleafLookupMappingResolver Maven / Gradle / Ivy

package fr.sii.ogham.template.thymeleaf;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.thymeleaf.TemplateProcessingParameters;
import org.thymeleaf.templateresolver.ITemplateResolver;
import org.thymeleaf.templateresolver.TemplateResolution;

import fr.sii.ogham.core.util.LookupUtils;

/**
 * 

* Decorator resolver that is able to manage lookup prefix. It associates each * prefix to a dedicated resolver. *

*

* The lookup is a prefix that contains at least one ':' character. The lookup * prefix is case sensitive. For example, if the path is * "classpath:/foo/bar.txt" then the lookup prefix is * "classpath:". If the path is "foo:bar:/foobar.txt" * then the lookup prefix is "foo:bar:". *

*

* The lookup can also be empty in order to define a kind of default resolver if * no lookup is provided. The template path could then be "/email/hello.html". * The resolver associated to empty string lookup will be used in this case. *

* * @author Aurélien Baudet * */ public class ThymeleafLookupMappingResolver implements ITemplateResolver { private Map mapping; public ThymeleafLookupMappingResolver() { this(new HashMap()); } public ThymeleafLookupMappingResolver(Map mapping) { super(); this.mapping = mapping; } /** * Add a resolver for the associated lookup. If a resolver already exists * with the same lookup, the new provided resolver will replace it. * * @param lookup * the lookup string without the ':' character (example: * "classpath") * @param resolver * the resolver to call for the lookup string */ public void addMapping(String lookup, ITemplateResolver resolver) { mapping.put(lookup, resolver); } /** * Get the resolver according to the template name. * * @param templateName * the name of the template * @return the template resolver to use */ public ITemplateResolver getResolver(String templateName) { return LookupUtils.getResolver(mapping, templateName); } /** * Extract the name of the template (remove the lookup) * * @param templateName * the name of the template with lookup * @return the name of the template without lookup */ public String getTemplateName(String templateName) { return LookupUtils.getRealPath(mapping, templateName); } @Override public String getName() { return "LookupMappingResolver"; } @Override public Integer getOrder() { return 0; } @Override public TemplateResolution resolveTemplate(TemplateProcessingParameters templateProcessingParameters) { return getResolver(templateProcessingParameters.getTemplateName()).resolveTemplate( new TemplateProcessingParameters(templateProcessingParameters.getConfiguration(), getTemplateName(templateProcessingParameters.getTemplateName()), templateProcessingParameters .getContext())); } @Override public void initialize() { for (ITemplateResolver resolver : getResolvers()) { resolver.initialize(); } } public List getResolvers() { return new ArrayList(mapping.values()); } }




© 2015 - 2025 Weber Informatics LLC | Privacy Policy