001
014
015 package com.liferay.portal.servlet.filters.absoluteredirects;
016
017 import com.liferay.portal.kernel.util.CharPool;
018 import com.liferay.portal.kernel.util.Validator;
019 import com.liferay.portal.util.CookieKeys;
020 import com.liferay.portal.util.PortalUtil;
021
022 import java.io.IOException;
023
024 import javax.servlet.http.HttpServletRequest;
025 import javax.servlet.http.HttpServletResponse;
026 import javax.servlet.http.HttpServletResponseWrapper;
027
028
032 public class AbsoluteRedirectsResponse extends HttpServletResponseWrapper {
033
034 public AbsoluteRedirectsResponse(
035 HttpServletRequest request, HttpServletResponse response) {
036
037 super(response);
038
039 _request = request;
040 }
041
042 @Override
043 public void sendRedirect(String redirect) throws IOException {
044 if (redirect.charAt(0) == CharPool.SLASH) {
045 String portalURL = PortalUtil.getPortalURL(_request);
046
047 if (Validator.isNotNull(portalURL)) {
048 redirect = portalURL.concat(redirect);
049 }
050 }
051
052 if (!CookieKeys.hasSessionId(_request)) {
053 redirect = PortalUtil.getURLWithSessionId(
054 redirect, _request.getSession().getId());
055 }
056
057 _request.setAttribute(
058 AbsoluteRedirectsResponse.class.getName(), redirect);
059
060 super.sendRedirect(redirect);
061 }
062
063 private HttpServletRequest _request;
064
065 }