From 7083d8acc4ab5eecc250d235280607e99cb6c76b Mon Sep 17 00:00:00 2001 From: j2blake Date: Mon, 5 Aug 2013 16:54:49 -0400 Subject: [PATCH] VIVO-246 Set up the Freemarker directives in only one place. --- .../freemarker/FreemarkerConfiguration.java | 8 +++++++- .../freemarker/FreemarkerHttpServlet.java | 4 ---- .../freemarker/FreemarkerProcessingServiceImpl.java | 13 +------------ 3 files changed, 8 insertions(+), 17 deletions(-) diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerConfiguration.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerConfiguration.java index db5672af9..aa849ffdd 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerConfiguration.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerConfiguration.java @@ -29,6 +29,8 @@ import edu.cornell.mannlib.vitro.webapp.i18n.freemarker.I18nMethodModel; import edu.cornell.mannlib.vitro.webapp.utils.dataGetter.DataGetter; import edu.cornell.mannlib.vitro.webapp.utils.dataGetter.DataGetterUtils; import edu.cornell.mannlib.vitro.webapp.web.directives.IndividualShortViewDirective; +import edu.cornell.mannlib.vitro.webapp.web.directives.UrlDirective; +import edu.cornell.mannlib.vitro.webapp.web.directives.WidgetDirective; import edu.cornell.mannlib.vitro.webapp.web.methods.IndividualLocalNameMethod; import edu.cornell.mannlib.vitro.webapp.web.methods.IndividualPlaceholderImageUrlMethod; import edu.cornell.mannlib.vitro.webapp.web.methods.IndividualProfileUrlMethod; @@ -167,12 +169,16 @@ public class FreemarkerConfiguration extends Configuration { return urls; } - public static Map getDirectives() { + private static Map getDirectives() { Map map = new HashMap(); map.put("dump", new freemarker.ext.dump.DumpDirective()); map.put("dumpAll", new freemarker.ext.dump.DumpAllDirective()); map.put("help", new freemarker.ext.dump.HelpDirective()); map.put("shortView", new IndividualShortViewDirective()); + map.put("url", new UrlDirective()); + map.put("widget", new WidgetDirective()); + + return map; } diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java index 552846a98..3cf0faeb0 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/controller/freemarker/FreemarkerHttpServlet.java @@ -427,10 +427,6 @@ public class FreemarkerHttpServlet extends VitroHttpServlet { // the copyright text can be viewed with having to restart Tomcat map.put("copyright", getCopyrightInfo(appBean)); - map.put("url", new edu.cornell.mannlib.vitro.webapp.web.directives.UrlDirective()); - map.put("widget", new edu.cornell.mannlib.vitro.webapp.web.directives.WidgetDirective()); - map.putAll( FreemarkerConfiguration.getDirectives() ); - // Add these accumulator objects. They will collect tags so the template can write them // at the appropriate location. map.put("stylesheets", new Tags().wrap()); diff --git a/webapp/src/edu/cornell/mannlib/vitro/webapp/services/freemarker/FreemarkerProcessingServiceImpl.java b/webapp/src/edu/cornell/mannlib/vitro/webapp/services/freemarker/FreemarkerProcessingServiceImpl.java index fde6152b1..2f53a8459 100644 --- a/webapp/src/edu/cornell/mannlib/vitro/webapp/services/freemarker/FreemarkerProcessingServiceImpl.java +++ b/webapp/src/edu/cornell/mannlib/vitro/webapp/services/freemarker/FreemarkerProcessingServiceImpl.java @@ -13,10 +13,8 @@ import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import edu.cornell.mannlib.vitro.webapp.controller.VitroRequest; -import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerConfiguration; import edu.cornell.mannlib.vitro.webapp.controller.freemarker.FreemarkerConfigurationLoader; import edu.cornell.mannlib.vitro.webapp.utils.log.LogUtils; -import freemarker.core.Environment; import freemarker.core.ParseException; import freemarker.template.Configuration; import freemarker.template.Template; @@ -75,16 +73,7 @@ public class FreemarkerProcessingServiceImpl implements StringWriter writer = new StringWriter(); try { - // Add directives to the map. For some reason, having them in the - // configuration is not enough. - map.putAll(FreemarkerConfiguration.getDirectives()); - - // Add request and servlet context as custom attributes of the - // environment, so they - // can be used in directives. - Environment env = template.createProcessingEnvironment(map, writer); - env.setCustomAttribute("request", req); - env.process(); + template.process(map, writer); return writer.toString(); } catch (TemplateException e) { throw new TemplateProcessingException(