001
014
015 package com.liferay.portal.servlet;
016
017 import com.liferay.portal.kernel.util.WebKeys;
018
019 import java.io.IOException;
020
021 import javax.servlet.RequestDispatcher;
022 import javax.servlet.ServletException;
023 import javax.servlet.ServletRequest;
024 import javax.servlet.ServletResponse;
025
026
029 public class DirectServletPathRegisterDispatcher implements RequestDispatcher {
030
031 public DirectServletPathRegisterDispatcher(
032 String path, RequestDispatcher requestDispatcher) {
033
034 _path = path;
035 _requestDispatcher = requestDispatcher;
036 }
037
038 @Override
039 public void forward(
040 ServletRequest servletRequest, ServletResponse servletResponse)
041 throws IOException, ServletException {
042
043 servletRequest.setAttribute(WebKeys.SERVLET_PATH, _path);
044
045 _requestDispatcher.forward(servletRequest, servletResponse);
046 }
047
048 @Override
049 public void include(
050 ServletRequest servletRequest, ServletResponse servletResponse)
051 throws IOException, ServletException {
052
053 String includePathInfo = (String)servletRequest.getAttribute(
054 RequestDispatcher.INCLUDE_PATH_INFO);
055
056 servletRequest.setAttribute(RequestDispatcher.INCLUDE_PATH_INFO, null);
057
058 String includeServletPath = (String)servletRequest.getAttribute(
059 RequestDispatcher.INCLUDE_SERVLET_PATH);
060
061 servletRequest.setAttribute(
062 RequestDispatcher.INCLUDE_SERVLET_PATH, _path);
063
064 servletRequest.setAttribute(WebKeys.SERVLET_PATH, _path);
065
066 try {
067 _requestDispatcher.include(servletRequest, servletResponse);
068 }
069 finally {
070 servletRequest.setAttribute(
071 RequestDispatcher.INCLUDE_PATH_INFO, includePathInfo);
072 servletRequest.setAttribute(
073 RequestDispatcher.INCLUDE_SERVLET_PATH, includeServletPath);
074 }
075 }
076
077 private final String _path;
078 private final RequestDispatcher _requestDispatcher;
079
080 }