// Programm 5-19a: BSP_ROOT/meinewebapp/WEB-INF/classes/meinefilter/ZeichenFilter.java
package meinefilter;
import javax.servlet.*;
import javax.servlet.http.*;
import java.io.*;
public class ZeichenFilter implements Filter {
  private FilterConfig fc = null;
  public void doFilter(ServletRequest rq, ServletResponse rs, FilterChain ch)
                          throws ServletException, IOException {
    if (fc == null) return;
    MeinResponseWrapper rswrapper =
                    new MeinResponseWrapper((HttpServletResponse) rs);
    ch.doFilter(rq, rswrapper);
    String zeichen, temp;
    String responsestr = rswrapper.toString();
    PrintWriter out = rs.getWriter();
    for (int i = 0; i < responsestr.length(); i++) {
      zeichen = responsestr.substring(i, i + 1);
      temp = fc.getInitParameter(zeichen);
      zeichen = (temp == null) ? zeichen : temp;
      out.write(zeichen);
    }
  }
  public void init(FilterConfig fc) {
    this.fc = fc;
  }
  public void destroy() {
    this.fc = null;
  }
}
class MeinResponseWrapper extends HttpServletResponseWrapper {
  private CharArrayWriter antwort;

  public MeinResponseWrapper(HttpServletResponse rs) {
    super(rs);
    antwort = new CharArrayWriter();
  }
  public PrintWriter getWriter() {
    return new PrintWriter(antwort);
  }
  public String toString() {
    return antwort.toString();
  }
}