Code cleanup in FreemarkerConfigurationLoader.getTemplateLoader()

This commit is contained in:
rjy7 2010-11-15 02:12:01 +00:00
parent 8a49574f7e
commit 37d95fe5fc

View file

@ -4,6 +4,8 @@ package edu.cornell.mannlib.vitro.webapp.controller.freemarker;
import java.io.File; import java.io.File;
import java.io.IOException; import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import java.util.Map; import java.util.Map;
import javax.servlet.ServletContext; import javax.servlet.ServletContext;
@ -133,28 +135,31 @@ public class FreemarkerConfigurationLoader {
// location, then in the vitro location. // location, then in the vitro location.
protected final TemplateLoader getTemplateLoader(Configuration config, String themeDir) { protected final TemplateLoader getTemplateLoader(Configuration config, String themeDir) {
String themeTemplatePath = context.getRealPath(themeDir) + "/templates"; List<TemplateLoader> loaders = new ArrayList<TemplateLoader>();
String vitroTemplatePath = context.getRealPath("/templates/freemarker"); MultiTemplateLoader mtl = null;
try { try {
TemplateLoader[] loaders; // Theme template loader
FlatteningTemplateLoader vitroFtl = new FlatteningTemplateLoader(new File(vitroTemplatePath)); String themeTemplatePath = context.getRealPath(themeDir) + "/templates";
ClassTemplateLoader ctl = new ClassTemplateLoader(getClass(), "");
File themeTemplateDir = new File(themeTemplatePath); File themeTemplateDir = new File(themeTemplatePath);
// Handle the case where there's no theme template directory gracefully // Handle the case where there's no theme template directory gracefully
if (themeTemplateDir.exists()) { if (themeTemplateDir.exists()) {
FileTemplateLoader themeFtl = new FileTemplateLoader(themeTemplateDir); FileTemplateLoader themeFtl = new FileTemplateLoader(themeTemplateDir);
loaders = new TemplateLoader[] { themeFtl, vitroFtl, ctl }; loaders.add(themeFtl);
} else {
loaders = new TemplateLoader[] { vitroFtl, ctl };
} }
MultiTemplateLoader mtl = new MultiTemplateLoader(loaders);
return mtl; // Vitro template loader
String vitroTemplatePath = context.getRealPath("/templates/freemarker");
loaders.add(new FlatteningTemplateLoader(new File(vitroTemplatePath)));
loaders.add(new ClassTemplateLoader(getClass(), ""));
TemplateLoader[] loaderArray = loaders.toArray(new TemplateLoader[loaders.size()]);
mtl = new MultiTemplateLoader(loaderArray);
} catch (IOException e) { } catch (IOException e) {
log.error("Error creating template loaders"); log.error("Error creating template loaders");
return null;
} }
return mtl;
} }