1
22
23 package com.liferay.portal.servlet.filters.header;
24
25 import com.liferay.portal.kernel.servlet.HttpHeaders;
26 import com.liferay.portal.kernel.util.GetterUtil;
27 import com.liferay.portal.kernel.util.StringPool;
28 import com.liferay.portal.kernel.util.Validator;
29 import com.liferay.portal.servlet.filters.BasePortalFilter;
30
31 import java.io.IOException;
32
33 import java.text.DateFormat;
34 import java.text.SimpleDateFormat;
35
36 import java.util.Calendar;
37 import java.util.Enumeration;
38 import java.util.GregorianCalendar;
39 import java.util.Locale;
40 import java.util.TimeZone;
41
42 import javax.servlet.FilterChain;
43 import javax.servlet.FilterConfig;
44 import javax.servlet.ServletException;
45 import javax.servlet.http.HttpServletRequest;
46 import javax.servlet.http.HttpServletResponse;
47 import javax.servlet.http.HttpSession;
48
49
56 public class HeaderFilter extends BasePortalFilter {
57
58 public void init(FilterConfig filterConfig) {
59 super.init(filterConfig);
60
61 _filterConfig = filterConfig;
62 _timeZone = TimeZone.getTimeZone(_TIME_ZONE);
63 }
64
65 protected void processFilter(
66 HttpServletRequest request, HttpServletResponse response,
67 FilterChain filterChain)
68 throws IOException, ServletException {
69
70 Enumeration<String> enu = _filterConfig.getInitParameterNames();
71
72 while (enu.hasMoreElements()) {
73 String name = enu.nextElement();
74
75 String value = _filterConfig.getInitParameter(name);
76
77 if (name.equals(_EXPIRES) && Validator.isNumber(value)) {
78 int seconds = GetterUtil.getInteger(value);
79
80 Calendar cal = new GregorianCalendar();
81
82 cal.add(Calendar.SECOND, seconds);
83
84 DateFormat dateFormat = new SimpleDateFormat(
85 _DATE_FORMAT, Locale.US);
86
87 dateFormat.setTimeZone(_timeZone);
88
89 value = dateFormat.format(cal.getTime());
90 }
91
92
94 boolean addHeader = true;
95
96 if (name.equalsIgnoreCase(HttpHeaders.CACHE_CONTROL)) {
97 HttpSession session = request.getSession(false);
98
99 if ((session == null) || session.isNew()) {
100 addHeader = false;
101 }
102 }
103
104 if (addHeader) {
105 response.addHeader(name, value);
106 }
107 }
108
109 processFilter(HeaderFilter.class, request, response, filterChain);
110 }
111
112 private static final String _DATE_FORMAT = "EEE, dd MMM yyyy HH:mm:ss z";
113
114 private static final String _EXPIRES = "Expires";
115
116 private static final String _TIME_ZONE = StringPool.UTC;
117
118 private FilterConfig _filterConfig;
119 private TimeZone _timeZone;
120
121 }