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
51 public class RuntimeTag extends TagSupport {
52
53 public static void doTag(
54 String portletName, PageContext pageContext,
55 ServletContext servletContext, HttpServletRequest request,
56 HttpServletResponse response)
57 throws Exception {
58
59 doTag(
60 portletName, null, pageContext, servletContext, request, response);
61 }
62
63 public static void doTag(
64 String portletName, String queryString, PageContext pageContext,
65 ServletContext servletContext, HttpServletRequest request,
66 HttpServletResponse response)
67 throws Exception {
68
69 doTag(
70 portletName, null, null, pageContext, servletContext, request,
71 response);
72 }
73
74 public static void doTag(
75 String portletName, String queryString, String defaultPreferences,
76 PageContext pageContext, ServletContext servletContext,
77 HttpServletRequest request, HttpServletResponse response)
78 throws Exception {
79
80 PortletRequest portletRequest = (PortletRequest)request.getAttribute(
81 JavaConstants.JAVAX_PORTLET_REQUEST);
82
83 RenderRequest renderRequest = null;
84
85 if ((portletRequest != null) &&
86 (portletRequest instanceof RenderRequest)) {
87
88 renderRequest = (RenderRequest)portletRequest;
89 }
90
91 PortletResponse portletResponse = (PortletResponse)request.getAttribute(
92 JavaConstants.JAVAX_PORTLET_RESPONSE);
93
94 RenderResponse renderResponse = null;
95
96 if ((portletResponse != null) &&
97 (portletResponse instanceof RenderResponse)) {
98
99 renderResponse = (RenderResponse)portletResponse;
100 }
101
102 String portletId = portletName;
103
104 StringBuilder sb = new StringBuilder();
105
106 try {
107 request.setAttribute(WebKeys.RENDER_PORTLET_RESOURCE, Boolean.TRUE);
108
109 if (Validator.isNotNull(defaultPreferences)) {
110 PortletPreferencesFactoryUtil.getPortletSetup(
111 request, portletId, defaultPreferences);
112 }
113
114 RuntimePortletUtil.processPortlet(
115 sb, servletContext, request, response, renderRequest,
116 renderResponse, portletId, queryString);
117 }
118 finally {
119 request.removeAttribute(WebKeys.RENDER_PORTLET_RESOURCE);
120 }
121
122 if (pageContext != null) {
123 pageContext.getOut().print(sb.toString());
124 }
125 else {
126
127
129 response.getWriter().print(sb.toString());
131 }
132 }
133
134 public int doEndTag() throws JspException {
135 try {
136 HttpServletRequest request =
137 (HttpServletRequest)pageContext.getRequest();
138
139 Layout layout = (Layout)request.getAttribute(WebKeys.LAYOUT);
140
141 if (layout == null) {
142 return EVAL_PAGE;
143 }
144
145 ServletContext servletContext =
146 (ServletContext)request.getAttribute(WebKeys.CTX);
147
148 HttpServletResponse response =
149 (HttpServletResponse)pageContext.getResponse();
150
151 doTag(
152 _portletName, _queryString, _defaultPreferences, pageContext,
153 servletContext, request, response);
154
155 return EVAL_PAGE;
156 }
157 catch (Exception e) {
158 _log.error(e, e);
159
160 throw new JspException(e);
161 }
162 }
163
164 public void setPortletName(String portletName) {
165 _portletName = portletName;
166 }
167
168 public void setQueryString(String queryString) {
169 _queryString = queryString;
170 }
171
172 public void setDefaultPreferences(String defaultPreferences) {
173 _defaultPreferences = defaultPreferences;
174 }
175
176 private static Log _log = LogFactoryUtil.getLog(RuntimeTag.class);
177
178 private String _portletName;
179 private String _queryString;
180 private String _defaultPreferences;
181
182 }