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

com.mastfrog.email.server.EnumHtmlEmailTemplateProvider Maven / Gradle / Ivy

The newest version!
package com.mastfrog.email.server;

import com.mastfrog.util.preconditions.Checks;
import freemarker.template.Template;

/**
 * Registered in a Guice Multibinder for EnumHtmlEmailTemplateProvider<?>, these can look up an email
 * template based on an enum constant as a lookup key
 *
 * @author Tim Boudreau
 * @param  An ad-hoc enum type
 */
public abstract class EnumHtmlEmailTemplateProvider> implements HtmlTemplateProvider {

    final Class type;

    protected EnumHtmlEmailTemplateProvider(Class type) {
        Checks.notNull("type", type);
        this.type = type;
    }

    @SuppressWarnings("unchecked")
    > EnumHtmlEmailTemplateProvider match(T enumValue) {
        if (enumValue != null && enumValue.getClass() == type) {
            return (EnumHtmlEmailTemplateProvider) this;
        }
        return null;
    }

    @Override
    public > Template template(T template) {
        if (template != null) {
            return findTemplate(type.cast(template));
        }
        return null;
    }

    protected abstract Template findTemplate(T template);
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy