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