1
22
23 package com.liferay.portal.servlet.filters.etag;
24
25 import com.liferay.portal.kernel.util.ParamUtil;
26 import com.liferay.portal.kernel.util.StringPool;
27 import com.liferay.portal.servlet.filters.BasePortalFilter;
28 import com.liferay.util.servlet.filters.CacheResponse;
29 import com.liferay.util.servlet.filters.CacheResponseData;
30 import com.liferay.util.servlet.filters.CacheResponseUtil;
31
32 import javax.servlet.FilterChain;
33 import javax.servlet.http.HttpServletRequest;
34 import javax.servlet.http.HttpServletResponse;
35
36
43 public class ETagFilter extends BasePortalFilter {
44
45 protected void processFilter(
46 HttpServletRequest request, HttpServletResponse response,
47 FilterChain filterChain)
48 throws Exception {
49
50 boolean etag = ParamUtil.getBoolean(request, _ETAG, true);
51
52 if (etag) {
53 CacheResponse cacheResponse = new CacheResponse(
54 response, StringPool.UTF8);
55
56 processFilter(
57 ETagFilter.class, request, cacheResponse, filterChain);
58
59 CacheResponseData cacheResponseData = new CacheResponseData(
60 cacheResponse.getData(), cacheResponse.getContentType(),
61 cacheResponse.getHeaders());
62
63 if (!ETagUtil.processETag(
64 request, response, cacheResponse.getData())) {
65
66 CacheResponseUtil.write(response, cacheResponseData);
67 }
68 }
69 else {
70 processFilter(
71 ETagFilter.class, request, response, filterChain);
72 }
73 }
74
75 private static final String _ETAG = "etag";
76
77 }