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