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

rs.mail.templates.resolver.DefaultTemplateResolver Maven / Gradle / Ivy

package rs.mail.templates.resolver;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.util.List;

import org.apache.commons.io.IOUtils;

import rs.mail.templates.ResolverException;
import rs.mail.templates.Template;
import rs.mail.templates.TemplateContext;
import rs.mail.templates.TemplateResolver;
import rs.mail.templates.cache.Cache;
import rs.mail.templates.cache.CacheFactory;
import rs.mail.templates.cache.CacheFactory.CacheBuilder;
import rs.mail.templates.cache.CacheStrategy;
import rs.mail.templates.impl.DefaultTemplate;
import rs.mail.templates.impl.ResolverId;

/**
 * The default template resolver searches a specific directory (non-recursive)
 * for the locale-specific versions of a template:
 * 
    *
  1. <directory>/<template-name>.<context.locale.language>-<context.locale.country>.<content-type-suffix>
  2. *
  3. <directory>/<template-name>.<context.locale.language>.<content-type-suffix>
  4. *
  5. <directory>/<template-name>.<content-type-suffix>
  6. *
*

where {@code content-type-suffix} is either {@code html} or {@code txt}. So for template {@code my-template} in * locale {@code de-DE} the following files are searched in order of priority

* *
    *
  1. <directory>/my-template.de-DE.html
  2. *
  3. <directory>/my-template.de-DE.txt
  4. *
  5. <directory>/my-template.de.html
  6. *
  7. <directory>/my-template.de.txt
  8. *
  9. <directory>/my-template.html
  10. *
  11. <directory>/my-template.txt
  12. *
*

The prioritized list of paths can be changed by overrriding {@link #getPriorityPaths(String, TemplateContext, String)}.

* *

Please notice that an additiona file {@code /my-template.ftl} will be returned when the name was {@code my-template.ftl} * (ends with {@code .ftl}). This allows an easier inclusion of general Freemarker libraries.

* @author ralph * */ public class DefaultTemplateResolver extends AbstractFileResolver