package org.test4j.junit.extend.demo;
import java.util.ArrayList;
import java.util.List;
import org.junit.runners.model.Statement;
public class InterceptorStatement extends Statement {
private final Statement invoker;
private List<Interceptor> interceptors = new ArrayList<Interceptor>();
public InterceptorStatement(Statement invoker) {
this.invoker = invoker;
}
@Override
public void evaluate() throws Throwable {
for (Interceptor interceptor : interceptors) {
interceptor.interceptBefore();
}
invoker.evaluate();
for (Interceptor interceptor : interceptors) {
interceptor.interceptAfter();
}
}
public void addInterceptor(Interceptor interceptor) {
interceptors.add(interceptor);
}
}