package com.googlecode.mycontainer.commons; import java.io.IOException; import java.util.Enumeration; import java.util.Map.Entry; import java.util.Set; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.ServletException; import javax.servlet.ServletInputStream; import javax.servlet.ServletOutputStream; import javax.servlet.ServletRequest; import javax.servlet.ServletResponse; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import com.googlecode.mycontainer.commons.io.IOUtil; public class ReplyFilter implements Filter { public void init(FilterConfig filterConfig) throws ServletException { } @SuppressWarnings("unchecked") public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { HttpServletRequest req = (HttpServletRequest) request; HttpServletResponse resp = (HttpServletResponse) response; resp.addHeader("X-RP-Method", req.getMethod()); resp.addHeader("X-RP-QueryString", req.getQueryString()); Set<Entry<String, String[]>> map = req.getParameterMap().entrySet(); for (Entry<String, String[]> entry : map) { String[] array = entry.getValue(); for (String value : array) { resp.addHeader("X-RP-Param-" + entry.getKey(), value); } } Enumeration<String> headerNames = req.getHeaderNames(); while (headerNames.hasMoreElements()) { String name = headerNames.nextElement(); Enumeration<String> headers = req.getHeaders(name); while (headers.hasMoreElements()) { String header = headers.nextElement(); resp.addHeader("X-RP-Header-" + name, header); } } ServletOutputStream out = resp.getOutputStream(); ServletInputStream in = req.getInputStream(); IOUtil.copy(in, out, new byte[5 * 1024]); } public void destroy() { } }