001
014
015 package com.liferay.portal.servlet.filters.etag;
016
017 import com.liferay.portal.kernel.servlet.BufferCacheServletResponse;
018 import com.liferay.portal.kernel.util.ParamUtil;
019 import com.liferay.portal.servlet.filters.BasePortalFilter;
020
021 import java.nio.ByteBuffer;
022
023 import javax.servlet.FilterChain;
024 import javax.servlet.http.HttpServletRequest;
025 import javax.servlet.http.HttpServletResponse;
026
027
033 public class ETagFilter extends BasePortalFilter {
034
035 @Override
036 public boolean isFilterEnabled(
037 HttpServletRequest request, HttpServletResponse response) {
038
039 if (ParamUtil.getBoolean(request, _ETAG, true)) {
040 return true;
041 }
042 else {
043 return false;
044 }
045 }
046
047 @Override
048 protected void processFilter(
049 HttpServletRequest request, HttpServletResponse response,
050 FilterChain filterChain)
051 throws Exception {
052
053 BufferCacheServletResponse bufferCacheServletResponse =
054 new BufferCacheServletResponse(response);
055
056 processFilter(
057 ETagFilter.class, request, bufferCacheServletResponse, filterChain);
058
059 ByteBuffer byteBuffer = bufferCacheServletResponse.getByteBuffer();
060
061 if (!ETagUtil.processETag(request, response, byteBuffer)) {
062 bufferCacheServletResponse.finishResponse();
063 bufferCacheServletResponse.outputBuffer();
064 }
065 }
066
067 private static final String _ETAG = "etag";
068
069 }