001
014
015 package com.liferay.portal.kernel.servlet;
016
017 import com.liferay.portal.kernel.util.GetterUtil;
018 import com.liferay.portal.kernel.util.ObjectValuePair;
019
020 import java.util.Enumeration;
021
022 import javax.servlet.RequestDispatcher;
023 import javax.servlet.http.HttpServletRequest;
024 import javax.servlet.http.HttpServletRequestWrapper;
025 import javax.servlet.http.HttpServletResponse;
026
027
030 public class RequestDispatcherUtil {
031
032 public static ObjectValuePair<String, Long> getContentAndLastModifiedTime(
033 RequestDispatcher requestDispatcher, HttpServletRequest request,
034 HttpServletResponse response)
035 throws Exception {
036
037 BufferCacheServletResponse bufferCacheServletResponse =
038 new BufferCacheServletResponse(response);
039
040 requestDispatcher.include(
041 new HttpServletRequestWrapper(request) {
042
043 @Override
044 public long getDateHeader(String name) {
045 if (name.equals(HttpHeaders.IF_MODIFIED_SINCE)) {
046 return -1;
047 }
048
049 return super.getDateHeader(name);
050 }
051
052 @Override
053 public String getHeader(String name) {
054 if (name.equals(HttpHeaders.IF_MODIFIED_SINCE) ||
055 name.equals(HttpHeaders.IF_NONE_MATCH) ||
056 name.equals(HttpHeaders.LAST_MODIFIED)) {
057
058 return null;
059 }
060
061 return super.getHeader(name);
062 }
063
064 @Override
065 public Enumeration<String> getHeaders(String name) {
066 if (name.equals(HttpHeaders.IF_MODIFIED_SINCE) ||
067 name.equals(HttpHeaders.IF_NONE_MATCH) ||
068 name.equals(HttpHeaders.LAST_MODIFIED)) {
069
070 return null;
071 }
072
073 return super.getHeaders(name);
074 }
075
076 @Override
077 public String getMethod() {
078 return HttpMethods.GET;
079 }
080
081 }, bufferCacheServletResponse);
082
083 return new ObjectValuePair<>(
084 bufferCacheServletResponse.getString(),
085 GetterUtil.getLong(
086 bufferCacheServletResponse.getHeader(HttpHeaders.LAST_MODIFIED),
087 -1));
088 }
089
090 public static long getLastModifiedTime(
091 RequestDispatcher requestDispatcher, HttpServletRequest request,
092 HttpServletResponse response)
093 throws Exception {
094
095 MetaInfoCacheServletResponse metaInfoCacheServletResponse =
096 new MetaInfoCacheServletResponse(response);
097
098 requestDispatcher.include(
099 new HttpServletRequestWrapper(request) {
100
101 @Override
102 public String getMethod() {
103 return HttpMethods.HEAD;
104 }
105
106 }, metaInfoCacheServletResponse);
107
108 return GetterUtil.getLong(
109 metaInfoCacheServletResponse.getHeader(HttpHeaders.LAST_MODIFIED),
110 -1);
111 }
112
113 }