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