001
014
015 package com.liferay.portal.kernel.servlet;
016
017 import com.liferay.portal.kernel.log.Log;
018 import com.liferay.portal.kernel.log.LogFactoryUtil;
019 import com.liferay.portal.kernel.portlet.LiferayPortletSession;
020 import com.liferay.portal.kernel.portlet.PortletFilterUtil;
021 import com.liferay.portal.kernel.util.JavaConstants;
022 import com.liferay.portal.kernel.util.WebKeys;
023
024 import java.io.IOException;
025
026 import javax.portlet.PortletException;
027 import javax.portlet.PortletRequest;
028 import javax.portlet.PortletResponse;
029 import javax.portlet.filter.FilterChain;
030
031 import javax.servlet.ServletException;
032 import javax.servlet.http.HttpServlet;
033 import javax.servlet.http.HttpServletRequest;
034 import javax.servlet.http.HttpServletResponse;
035 import javax.servlet.http.HttpSession;
036
037
040 public class PortletServlet extends HttpServlet {
041
042 public static final String PORTLET_APP =
043 "com.liferay.portal.model.PortletApp";
044
045
049 public static final String PORTLET_CLASS_LOADER =
050 PluginContextListener.PLUGIN_CLASS_LOADER;
051
052 public static final String PORTLET_SERVLET_CONFIG =
053 "com.liferay.portal.kernel.servlet.PortletServletConfig";
054
055 public static final String PORTLET_SERVLET_FILTER_CHAIN =
056 "com.liferay.portal.kernel.servlet.PortletServletFilterChain";
057
058 public static final String PORTLET_SERVLET_REQUEST =
059 "com.liferay.portal.kernel.servlet.PortletServletRequest";
060
061 public static final String PORTLET_SERVLET_RESPONSE =
062 "com.liferay.portal.kernel.servlet.PortletServletResponse";
063
064 @Override
065 public void service(
066 HttpServletRequest request, HttpServletResponse response)
067 throws IOException, ServletException {
068
069 if (request.getAttribute(WebKeys.EXTEND_SESSION) != null) {
070 request.removeAttribute(WebKeys.EXTEND_SESSION);
071
072 HttpSession session = request.getSession(false);
073
074 if (session != null) {
075 session.setAttribute(WebKeys.EXTEND_SESSION, Boolean.TRUE);
076
077 session.removeAttribute(WebKeys.EXTEND_SESSION);
078 }
079
080 return;
081 }
082
083 String portletId = (String)request.getAttribute(WebKeys.PORTLET_ID);
084
085 PortletRequest portletRequest = (PortletRequest)request.getAttribute(
086 JavaConstants.JAVAX_PORTLET_REQUEST);
087
088 PortletResponse portletResponse = (PortletResponse)request.getAttribute(
089 JavaConstants.JAVAX_PORTLET_RESPONSE);
090
091 String lifecycle = (String)request.getAttribute(
092 PortletRequest.LIFECYCLE_PHASE);
093
094 FilterChain filterChain = (FilterChain)request.getAttribute(
095 PORTLET_SERVLET_FILTER_CHAIN);
096
097 LiferayPortletSession portletSession =
098 (LiferayPortletSession)portletRequest.getPortletSession();
099
100 portletRequest.setAttribute(WebKeys.PORTLET_ID, portletId);
101 portletRequest.setAttribute(PORTLET_SERVLET_CONFIG, getServletConfig());
102 portletRequest.setAttribute(PORTLET_SERVLET_REQUEST, request);
103 portletRequest.setAttribute(PORTLET_SERVLET_RESPONSE, response);
104
105 HttpSession session = request.getSession();
106
107 PortletSessionTracker.add(session);
108
109 portletSession.setHttpSession(session);
110
111 try {
112 PortletFilterUtil.doFilter(
113 portletRequest, portletResponse, lifecycle, filterChain);
114 }
115 catch (PortletException pe) {
116 _log.error(pe, pe);
117
118 throw new ServletException(pe);
119 }
120 }
121
122 private static Log _log = LogFactoryUtil.getLog(PortletServlet.class);
123
124 }