1
14
15 package com.liferay.taglib.portletext;
16
17 import com.liferay.portal.kernel.log.Log;
18 import com.liferay.portal.kernel.log.LogFactoryUtil;
19 import com.liferay.portal.kernel.servlet.PipingServletResponse;
20 import com.liferay.portal.kernel.util.JavaConstants;
21 import com.liferay.portal.kernel.util.Validator;
22 import com.liferay.portal.kernel.util.WebKeys;
23 import com.liferay.portal.model.Layout;
24 import com.liferay.portlet.PortletPreferencesFactoryUtil;
25 import com.liferay.portlet.layoutconfiguration.util.RuntimePortletUtil;
26
27 import javax.portlet.PortletRequest;
28 import javax.portlet.PortletResponse;
29 import javax.portlet.RenderRequest;
30 import javax.portlet.RenderResponse;
31
32 import javax.servlet.ServletContext;
33 import javax.servlet.http.HttpServletRequest;
34 import javax.servlet.http.HttpServletResponse;
35 import javax.servlet.jsp.JspException;
36 import javax.servlet.jsp.PageContext;
37 import javax.servlet.jsp.tagext.TagSupport;
38
39
44 public class RuntimeTag extends TagSupport {
45
46 public static void doTag(
47 String portletName, PageContext pageContext,
48 ServletContext servletContext, HttpServletRequest request,
49 HttpServletResponse response)
50 throws Exception {
51
52 doTag(
53 portletName, null, pageContext, servletContext, request, response);
54 }
55
56 public static void doTag(
57 String portletName, String queryString, PageContext pageContext,
58 ServletContext servletContext, HttpServletRequest request,
59 HttpServletResponse response)
60 throws Exception {
61
62 doTag(
63 portletName, queryString, null, pageContext, servletContext,
64 request, response);
65 }
66
67 public static void doTag(
68 String portletName, String queryString, String defaultPreferences,
69 PageContext pageContext, ServletContext servletContext,
70 HttpServletRequest request, HttpServletResponse response)
71 throws Exception {
72
73 if (pageContext != null) {
74 response = new PipingServletResponse(
75 response, pageContext.getOut());
76 }
77
78 PortletRequest portletRequest = (PortletRequest)request.getAttribute(
79 JavaConstants.JAVAX_PORTLET_REQUEST);
80
81 RenderRequest renderRequest = null;
82
83 if ((portletRequest != null) &&
84 (portletRequest instanceof RenderRequest)) {
85
86 renderRequest = (RenderRequest)portletRequest;
87 }
88
89 PortletResponse portletResponse = (PortletResponse)request.getAttribute(
90 JavaConstants.JAVAX_PORTLET_RESPONSE);
91
92 RenderResponse renderResponse = null;
93
94 if ((portletResponse != null) &&
95 (portletResponse instanceof RenderResponse)) {
96
97 renderResponse = (RenderResponse)portletResponse;
98 }
99
100 String portletId = portletName;
101
102 try {
103 request.setAttribute(WebKeys.RENDER_PORTLET_RESOURCE, Boolean.TRUE);
104
105 if (Validator.isNotNull(defaultPreferences)) {
106 PortletPreferencesFactoryUtil.getPortletSetup(
107 request, portletId, defaultPreferences);
108 }
109
110 RuntimePortletUtil.processPortlet(
111 servletContext, request, response, renderRequest,
112 renderResponse, portletId, queryString, true);
113 }
114 finally {
115 request.removeAttribute(WebKeys.RENDER_PORTLET_RESOURCE);
116 }
117 }
118
119 public int doEndTag() throws JspException {
120 try {
121 HttpServletRequest request =
122 (HttpServletRequest)pageContext.getRequest();
123
124 Layout layout = (Layout)request.getAttribute(WebKeys.LAYOUT);
125
126 if (layout == null) {
127 return EVAL_PAGE;
128 }
129
130 ServletContext servletContext =
131 (ServletContext)request.getAttribute(WebKeys.CTX);
132
133 HttpServletResponse response =
134 (HttpServletResponse)pageContext.getResponse();
135
136 doTag(
137 _portletName, _queryString, _defaultPreferences, pageContext,
138 servletContext, request, response);
139
140 return EVAL_PAGE;
141 }
142 catch (Exception e) {
143 _log.error(e, e);
144
145 throw new JspException(e);
146 }
147 }
148
149 public void setPortletName(String portletName) {
150 _portletName = portletName;
151 }
152
153 public void setQueryString(String queryString) {
154 _queryString = queryString;
155 }
156
157 public void setDefaultPreferences(String defaultPreferences) {
158 _defaultPreferences = defaultPreferences;
159 }
160
161 private static Log _log = LogFactoryUtil.getLog(RuntimeTag.class);
162
163 private String _portletName;
164 private String _queryString;
165 private String _defaultPreferences;
166
167 }