FilterChain.java
package sprout.core.filter;
import sprout.mvc.http.HttpRequest;
import sprout.mvc.http.HttpResponse;
import java.io.IOException;
import java.util.List;
public class FilterChain {
private final List<Filter> filters;
private final Dispatcher dispatcher;
private int currentFilterIndex = 0;
public FilterChain(List<Filter> filters, Dispatcher dispatcher) {
this.filters = filters;
this.dispatcher = dispatcher;
}
public void doFilter(HttpRequest<?> request, HttpResponse response) throws IOException {
if (currentFilterIndex < filters.size()) {
filters.get(currentFilterIndex++).doFilter(request, response, this);
return;
}
// 모든 필터 실행이 완료된 후에만 디스패처 호출
dispatcher.dispatch(request, response);
}
}