1
22
23 package com.liferay.portal.servlet.filters.header;
24
25 import com.liferay.portal.kernel.servlet.BaseFilter;
26 import com.liferay.portal.kernel.util.GetterUtil;
27 import com.liferay.portal.kernel.util.Validator;
28
29 import java.io.IOException;
30
31 import java.text.DateFormat;
32 import java.text.SimpleDateFormat;
33
34 import java.util.Calendar;
35 import java.util.Enumeration;
36 import java.util.GregorianCalendar;
37 import java.util.Locale;
38 import java.util.TimeZone;
39
40 import javax.servlet.FilterChain;
41 import javax.servlet.FilterConfig;
42 import javax.servlet.ServletException;
43 import javax.servlet.ServletRequest;
44 import javax.servlet.ServletResponse;
45 import javax.servlet.http.HttpServletResponse;
46
47
54 public class HeaderFilter extends BaseFilter {
55
56 public void init(FilterConfig config) throws ServletException {
57 super.init(config);
58
59 _config = config;
60 _timeZone = TimeZone.getTimeZone(_TIME_ZONE);
61 }
62
63 public void doFilter(
64 ServletRequest req, ServletResponse res, FilterChain chain)
65 throws IOException, ServletException {
66
67 HttpServletResponse httpRes = (HttpServletResponse)res;
68
69 Enumeration<String> enu = _config.getInitParameterNames();
70
71 while (enu.hasMoreElements()) {
72 String name = enu.nextElement();
73
74 String value = _config.getInitParameter(name);
75
76 if (name.equals(_EXPIRES) && Validator.isNumber(value)) {
77 int seconds = GetterUtil.getInteger(value);
78
79 Calendar cal = new GregorianCalendar();
80
81 cal.add(Calendar.SECOND, seconds);
82
83 DateFormat dateFormat = new SimpleDateFormat(
84 _DATE_FORMAT, Locale.US);
85
86 dateFormat.setTimeZone(_timeZone);
87
88 value = dateFormat.format(cal.getTime());
89 }
90
91 httpRes.addHeader(name, value);
92 }
93
94 doFilter(HeaderFilter.class, req, res, chain);
95 }
96
97 private static final String _DATE_FORMAT = "EEE, dd MMM yyyy HH:mm:ss z";
98
99 private static final String _EXPIRES = "Expires";
100
101 private static final String _TIME_ZONE = "GMT";
102
103 private FilterConfig _config;
104 private TimeZone _timeZone;
105
106 }