001
014
015 package com.liferay.taglib.portletext;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.servlet.PipingServletResponse;
020 import com.liferay.portal.kernel.util.JavaConstants;
021 import com.liferay.portal.kernel.util.Validator;
022 import com.liferay.portal.kernel.util.WebKeys;
023 import com.liferay.portal.model.Layout;
024 import com.liferay.portlet.PortletPreferencesFactoryUtil;
025 import com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil;
026
027 import javax.portlet.PortletRequest;
028 import javax.portlet.PortletResponse;
029 import javax.portlet.RenderRequest;
030 import javax.portlet.RenderResponse;
031
032 import javax.servlet.ServletContext;
033 import javax.servlet.http.HttpServletRequest;
034 import javax.servlet.http.HttpServletResponse;
035 import javax.servlet.jsp.JspException;
036 import javax.servlet.jsp.PageContext;
037 import javax.servlet.jsp.tagext.TagSupport;
038
039
042 public class RuntimeTag extends TagSupport {
043
044 public static void doTag(
045 String portletName, PageContext pageContext,
046 ServletContext servletContext, HttpServletRequest request,
047 HttpServletResponse response)
048 throws Exception {
049
050 doTag(
051 portletName, null, pageContext, servletContext, request, response);
052 }
053
054 public static void doTag(
055 String portletName, String queryString, PageContext pageContext,
056 ServletContext servletContext, HttpServletRequest request,
057 HttpServletResponse response)
058 throws Exception {
059
060 doTag(
061 portletName, queryString, null, pageContext, servletContext,
062 request, response);
063 }
064
065 public static void doTag(
066 String portletName, String queryString, String defaultPreferences,
067 PageContext pageContext, ServletContext servletContext,
068 HttpServletRequest request, HttpServletResponse response)
069 throws Exception {
070
071 if (pageContext != null) {
072 response = new PipingServletResponse(
073 response, pageContext.getOut());
074 }
075
076 PortletRequest portletRequest = (PortletRequest)request.getAttribute(
077 JavaConstants.JAVAX_PORTLET_REQUEST);
078
079 RenderRequest renderRequest = null;
080
081 if ((portletRequest != null) &&
082 (portletRequest instanceof RenderRequest)) {
083
084 renderRequest = (RenderRequest)portletRequest;
085 }
086
087 PortletResponse portletResponse = (PortletResponse)request.getAttribute(
088 JavaConstants.JAVAX_PORTLET_RESPONSE);
089
090 RenderResponse renderResponse = null;
091
092 if ((portletResponse != null) &&
093 (portletResponse instanceof RenderResponse)) {
094
095 renderResponse = (RenderResponse)portletResponse;
096 }
097
098 String portletId = portletName;
099
100 try {
101 request.setAttribute(WebKeys.RENDER_PORTLET_RESOURCE, Boolean.TRUE);
102
103 if (Validator.isNotNull(defaultPreferences)) {
104 PortletPreferencesFactoryUtil.getPortletSetup(
105 request, portletId, defaultPreferences);
106 }
107
108 RuntimePortletUtil.processPortlet(
109 servletContext, request, response, renderRequest,
110 renderResponse, portletId, queryString, true);
111 }
112 finally {
113 request.removeAttribute(WebKeys.RENDER_PORTLET_RESOURCE);
114 }
115 }
116
117 public int doEndTag() throws JspException {
118 try {
119 HttpServletRequest request =
120 (HttpServletRequest)pageContext.getRequest();
121
122 Layout layout = (Layout)request.getAttribute(WebKeys.LAYOUT);
123
124 if (layout == null) {
125 return EVAL_PAGE;
126 }
127
128 ServletContext servletContext =
129 (ServletContext)request.getAttribute(WebKeys.CTX);
130
131 HttpServletResponse response =
132 (HttpServletResponse)pageContext.getResponse();
133
134 doTag(
135 _portletName, _queryString, _defaultPreferences, pageContext,
136 servletContext, request, response);
137
138 return EVAL_PAGE;
139 }
140 catch (Exception e) {
141 _log.error(e, e);
142
143 throw new JspException(e);
144 }
145 }
146
147 public void setPortletName(String portletName) {
148 _portletName = portletName;
149 }
150
151 public void setQueryString(String queryString) {
152 _queryString = queryString;
153 }
154
155 public void setDefaultPreferences(String defaultPreferences) {
156 _defaultPreferences = defaultPreferences;
157 }
158
159 private static Log _log = LogFactoryUtil.getLog(RuntimeTag.class);
160
161 private String _portletName;
162 private String _queryString;
163 private String _defaultPreferences;
164
165 }