001
014
015 package com.liferay.portlet.asset.model;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.portlet.PortletBag;
020 import com.liferay.portal.kernel.portlet.PortletBagPool;
021 import com.liferay.portal.kernel.util.Validator;
022
023 import java.io.IOException;
024
025 import javax.servlet.RequestDispatcher;
026 import javax.servlet.ServletContext;
027 import javax.servlet.ServletException;
028 import javax.servlet.http.HttpServletRequest;
029 import javax.servlet.http.HttpServletResponse;
030
031
034 public abstract class BaseJSPAssetRenderer<T>
035 extends BaseAssetRenderer<T> implements AssetRenderer<T> {
036
037 public abstract String getJspPath(
038 HttpServletRequest request, String template);
039
040 @Override
041 public boolean include(
042 HttpServletRequest request, HttpServletResponse response,
043 String template)
044 throws Exception {
045
046 ServletContext servletContext = getServletContext();
047
048 String jspPath = getJspPath(request, template);
049
050 if (Validator.isNull(jspPath)) {
051 return false;
052 }
053
054 RequestDispatcher requestDispatcher =
055 servletContext.getRequestDispatcher(jspPath);
056
057 try {
058 requestDispatcher.include(request, response);
059
060 return true;
061 }
062 catch (ServletException se) {
063 if (_log.isErrorEnabled()) {
064 _log.error("Unable to include JSP", se);
065 }
066
067 throw new IOException("Unable to include " + jspPath, se);
068 }
069 }
070
071 public void setServletContext(ServletContext servletContext) {
072 _servletContext = servletContext;
073 }
074
075 protected ServletContext getServletContext() {
076 if (_servletContext != null) {
077 return _servletContext;
078 }
079
080 String portletId = getAssetRendererFactory().getPortletId();
081
082 PortletBag portletBag = PortletBagPool.get(portletId);
083
084 return portletBag.getServletContext();
085 }
086
087 private static final Log _log = LogFactoryUtil.getLog(
088 BaseJSPAssetRenderer.class);
089
090 private ServletContext _servletContext;
091
092 }