public class FilterChain {
  // acuch filtrw 
  private Vector myFilters = new Vector();

  // Tworzenie nowego obiektu FilterChain 
  public FilterChain() 	{
    // Dodawanie filtrw do acucha. 
    // Powinno to by wykonywane w 
    // FilterManager, ale dla celw przykadu 
    // wykonujemy to tutaj.
    addFilter(new DebugFilter());
    addFilter(new LoginFilter());
    addFilter(new AuditFilter());
  }

  public void processFilter(javax.servlet.http.HttpServletRequest request,
                            javax.servlet.http.HttpServletResponse response)
                            throws javax.servlet.ServletException, 
                            java.io.IOException {
    Filter filter;

    // uycie filtrw
    Iterator filters = myFilters.iterator();
    while (filters.hasNext())
    {
      filter = (Filter)filters.next();
      // przekazanie dania i odpowiedzi przez filtry 
      filter.execute(request, response);
    }
  }

  public void addFilter(Filter filter) 	{
    myFilters.add(filter);
  }
}
