In FreeMarkerHttpServlet.getTemplateLoader(), handle the case where the theme directory has no templates subdirectory without an error.

This commit is contained in:
rjy7 2010-07-09 22:10:43 +00:00
parent 0d09bcf546
commit cb1ab5a041
2 changed files with 18 additions and 8 deletions

View file

@ -6,8 +6,10 @@ import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.io.PrintWriter; import java.io.PrintWriter;
import java.io.StringWriter; import java.io.StringWriter;
import java.util.ArrayList;
import java.util.Calendar; import java.util.Calendar;
import java.util.HashMap; import java.util.HashMap;
import java.util.List;
import java.util.Map; import java.util.Map;
import javax.servlet.ServletContext; import javax.servlet.ServletContext;
@ -158,18 +160,26 @@ public class FreeMarkerHttpServlet extends VitroHttpServlet {
protected final TemplateLoader getTemplateLoader(Configuration config, String themeDir) { protected final TemplateLoader getTemplateLoader(Configuration config, String themeDir) {
ServletContext context = getServletContext(); ServletContext context = getServletContext();
String themeTemplateDir = context.getRealPath(themeDir) + "/templates"; String themeTemplatePath = context.getRealPath(themeDir) + "/templates";
String vitroTemplateDir = context.getRealPath("/templates/freemarker"); String vitroTemplatePath = context.getRealPath("/templates/freemarker");
try { try {
FileTemplateLoader themeFtl = new FileTemplateLoader(new File(themeTemplateDir)); TemplateLoader[] loaders;
FileTemplateLoader vitroFtl = new FileTemplateLoader(new File(vitroTemplateDir)); FileTemplateLoader vitroFtl = new FileTemplateLoader(new File(vitroTemplatePath));
ClassTemplateLoader ctl = new ClassTemplateLoader(getClass(), ""); ClassTemplateLoader ctl = new ClassTemplateLoader(getClass(), "");
TemplateLoader[] loaders = new TemplateLoader[] { themeFtl, vitroFtl, ctl };
File themeTemplateDir = new File(themeTemplatePath);
// Handle the case where there's no theme template directory gracefully
if (themeTemplateDir.exists()) {
FileTemplateLoader themeFtl = new FileTemplateLoader(themeTemplateDir);
loaders = new TemplateLoader[] { themeFtl, vitroFtl, ctl };
} else {
loaders = new TemplateLoader[] { vitroFtl, ctl };
}
MultiTemplateLoader mtl = new MultiTemplateLoader(loaders); MultiTemplateLoader mtl = new MultiTemplateLoader(loaders);
return mtl; return mtl;
} catch (IOException e) { } catch (IOException e) {
log.error("Error loading templates"); log.error("Error creating template loaders");
return null; return null;
} }

View file

@ -6,7 +6,7 @@
<h1><a title="Home" href="${urls.home}">${siteName}</a></h1> <h1><a title="Home" href="${urls.home}">${siteName}</a></h1>
<#if siteTagline.has_content> <#if siteTagline?has_content>
<em>${siteTagline}</em> <em>${siteTagline}</em>
</#if> </#if>