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