package com.github.nyrkovalex.ironadmin.core; import com.github.nyrkovalex.ironadmin.core.pages.PageContext; import java.io.Writer; public interface TemplateResolver { /** * <p>Resolves the template against {@link com.github.nyrkovalex.ironadmin.core.pages.Page Page} provided.</p> * <p> * <p>Implementors must take into account that * {@link com.github.nyrkovalex.ironadmin.core.servlet.AdminDispatcherServlet AdminDispatcherServlet} may be * registered under different paths therefore each time template is resolved it will provide target * {@link TemplateResolver TemplateResolver} implementation with its * current path providing <code>urlPrefix</code> parameter.</p> * * @param urlPrefix current mapping of * {@link com.github.nyrkovalex.ironadmin.core.servlet.AdminDispatcherServlet AdminDispatcherServlet}. * All relative links inside target <code>pages</code> must be prefixed with tis path. * @param pageContext current admin page context * @param writer writer to write resolved template to. Most likely but not necessary * {@link java.io.PrintWriter PrintWriter} from {@link javax.servlet.http.HttpServletResponse HttpServletResponse} */ void resolvePageTemplate(String urlPrefix, PageContext pageContext, Writer writer); }