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