package fr.mch.mdo.restaurant.web; import java.io.IOException; import java.util.LinkedHashMap; import java.util.Map; import java.util.Set; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletResponse; import fr.mch.mdo.logs.ILogger; import fr.mch.mdo.restaurant.ioc.spring.MdoBeanFactory; public class HeaderFilter implements Filter { private static ILogger logger = MdoBeanFactory.getInstance().getLogger(ForbiddenDirectAccessJspFilter.class.getName()); private FilterConfig filterConfig; private Map<String, String> headersMap; public void init(FilterConfig filterConfig) throws ServletException { this.filterConfig = filterConfig; String headerParam = filterConfig.getInitParameter("header"); if (headerParam == null) { logger.info("No headers were found in the web.xml (init-param) for the HeaderFilter !"); return; } this.headersMap = new LinkedHashMap<String, String>(); if (headerParam.contains("|")) { String[] headers = headerParam.split("\\|"); for (String header : headers) parseHeader(header); } else { parseHeader(headerParam); } logger.info("The following headers were registered in the HeaderFilter :"); Set<Map.Entry<String, String>> headers = this.headersMap.entrySet(); for (Map.Entry<String, String> item : headers) logger.info((String) item.getKey() + ':' + (String) item.getValue()); } public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { if (this.headersMap != null) { Set<Map.Entry<String, String>> headers = this.headersMap.entrySet(); for (Map.Entry<String, String> header : headers) { ((HttpServletResponse) response).setHeader((String) header.getKey(), (String) header.getValue()); } } chain.doFilter(request, response); } public void destroy() { this.filterConfig = null; this.headersMap = null; } private void parseHeader(String header) { String headerName = header.substring(0, header.indexOf(":")); if (!this.headersMap.containsKey(headerName)) this.headersMap.put(headerName, header.substring(header.indexOf(":") + 1)); } }