1
14
15 package com.liferay.portal.servlet.filters.etag;
16
17 import com.liferay.portal.kernel.util.ParamUtil;
18 import com.liferay.portal.kernel.util.StringPool;
19 import com.liferay.portal.servlet.filters.BasePortalFilter;
20 import com.liferay.util.servlet.filters.CacheResponse;
21 import com.liferay.util.servlet.filters.CacheResponseData;
22 import com.liferay.util.servlet.filters.CacheResponseUtil;
23
24 import javax.servlet.FilterChain;
25 import javax.servlet.http.HttpServletRequest;
26 import javax.servlet.http.HttpServletResponse;
27
28
35 public class ETagFilter extends BasePortalFilter {
36
37 protected void processFilter(
38 HttpServletRequest request, HttpServletResponse response,
39 FilterChain filterChain)
40 throws Exception {
41
42 boolean etag = ParamUtil.getBoolean(request, _ETAG, true);
43
44 if (etag) {
45 CacheResponse cacheResponse = new CacheResponse(
46 response, StringPool.UTF8);
47
48 processFilter(
49 ETagFilter.class, request, cacheResponse, filterChain);
50
51 CacheResponseData cacheResponseData = new CacheResponseData(
52 cacheResponse.unsafeGetData(), cacheResponse.getContentLength(),
53 cacheResponse.getContentType(), cacheResponse.getHeaders());
54
55 if (!ETagUtil.processETag(
56 request, response, cacheResponse.unsafeGetData(),
57 cacheResponse.getContentLength())) {
58
59 CacheResponseUtil.write(response, cacheResponseData);
60 }
61 }
62 else {
63 processFilter(
64 ETagFilter.class, request, response, filterChain);
65 }
66 }
67
68 private static final String _ETAG = "etag";
69
70 }