001
014
015 package com.liferay.util.freemarker;
016
017 import com.liferay.portal.kernel.servlet.PortletServlet;
018 import com.liferay.portal.kernel.servlet.ServletContextPool;
019 import com.liferay.portal.kernel.template.Template;
020 import com.liferay.portal.kernel.template.TemplateResource;
021 import com.liferay.portal.kernel.template.TemplateTaglibSupportProvider;
022 import com.liferay.portal.util.PortalUtil;
023
024 import freemarker.ext.servlet.HttpRequestHashModel;
025 import freemarker.ext.servlet.ServletContextHashModel;
026
027 import freemarker.template.ObjectWrapper;
028 import freemarker.template.TemplateHashModel;
029
030 import javax.portlet.PortletRequest;
031 import javax.portlet.PortletResponse;
032
033 import javax.servlet.ServletConfig;
034 import javax.servlet.ServletContext;
035 import javax.servlet.http.HttpServletRequest;
036 import javax.servlet.http.HttpServletResponse;
037
038
041 public class FreeMarkerTemplateTaglibSupportProvider
042 implements TemplateTaglibSupportProvider {
043
044 public void addTaglibSupport(
045 Template template, String servletContextName,
046 PortletRequest portletRequest, PortletResponse portletResponse)
047 throws Exception {
048
049 HttpServletRequest request = PortalUtil.getHttpServletRequest(
050 portletRequest);
051
052 template.prepare(request);
053
054 template.put(
055 "fullTemplatesPath", servletContextName.concat(
056 TemplateResource.SERVLET_SEPARATOR));
057
058 ServletConfig servletConfig =
059 (ServletConfig)portletRequest.getAttribute(
060 PortletServlet.PORTLET_SERVLET_CONFIG);
061
062 PortletServlet portletServlet = new PortletServlet();
063
064 portletServlet.init(servletConfig);
065
066 ServletContextHashModel servletContextHashModel =
067 new ServletContextHashModel(
068 portletServlet, ObjectWrapper.DEFAULT_WRAPPER);
069
070 template.put("Application", servletContextHashModel);
071
072 ServletContext servletContext = ServletContextPool.get(
073 servletContextName);
074
075 TemplateHashModel taglibsFactory =
076 FreeMarkerTaglibFactoryUtil.createTaglibFactory(servletContext);
077
078 template.put("PortletJspTagLibs", taglibsFactory);
079
080 HttpServletResponse response = PortalUtil.getHttpServletResponse(
081 portletResponse);
082
083 HttpRequestHashModel httpRequestHashModel = new HttpRequestHashModel(
084 request, response, ObjectWrapper.DEFAULT_WRAPPER);
085
086 template.put("Request", httpRequestHashModel);
087 }
088
089 }