package de.bechte.junit.runners.context.statements.builder;
import java.util.Collections;
import java.util.LinkedList;
import java.util.List;
/**
* The {@link DefaultStatementBuilderFactory} resolves a {@link List} of {@link ClassStatementBuilder}s for classes and
* {@link MethodStatementBuilder}s for methods. These two types might differ, as they require different processing.
*/
public class DefaultStatementBuilderFactory extends StatementBuilderFactory {
private List<ClassStatementBuilder> classStatementBuilders;
private List<MethodStatementBuilder> methodStatementBuilders;
public DefaultStatementBuilderFactory() {
super();
classStatementBuilders = Collections.unmodifiableList(getClassStatementBuilders());
methodStatementBuilders = Collections.unmodifiableList(getMethodStatementBuilders());
}
protected List<ClassStatementBuilder> getClassStatementBuilders() {
final List<ClassStatementBuilder> builders = new LinkedList<ClassStatementBuilder>();
builders.add(new BeforeClassStatementBuilder());
builders.add(new AfterClassStatementBuilder());
builders.add(new ClassRuleStatementBuilder());
return builders;
}
protected List<MethodStatementBuilder> getMethodStatementBuilders() {
final List<MethodStatementBuilder> builders = new LinkedList<MethodStatementBuilder>();
builders.add(new ExpectExceptionStatementBuilder());
builders.add(new FailOnTimeoutStatementBuilder());
builders.add(new HierarchicalRunBeforeStatementBuilder());
builders.add(new HierarchicalRunAfterStatementBuilder());
builders.add(new HierarchicalRunRulesStatementBuilder());
return builders;
}
public List<ClassStatementBuilder> getBuildersForClasses() {
return classStatementBuilders;
}
public List<MethodStatementBuilder> getBuildersForMethods() {
return methodStatementBuilders;
}
}