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