package org.needle4j.junit;
import java.util.ArrayList;
import java.util.List;
import org.junit.rules.MethodRule;
import org.needle4j.injection.InjectionConfiguration;
import org.needle4j.injection.InjectionProvider;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public class NeedleRuleBuilder extends AbstractNeedleRuleBuilder<NeedleRuleBuilder, NeedleRule> {
static final Logger LOG = LoggerFactory.getLogger(NeedleRuleBuilder.class);
private final List<MethodRule> methodRuleChain = new ArrayList<MethodRule>();
public AbstractNeedleRuleBuilder<NeedleRuleBuilder, NeedleRule> withOuter(final MethodRule rule) {
methodRuleChain.add(0, rule);
return this;
}
@Override
protected NeedleRule build(final InjectionConfiguration injectionConfiguration,
final InjectionProvider<?>... injectionProvider) {
final NeedleRule needleRule = new NeedleRule(injectionConfiguration, injectionProvider);
for (final MethodRule rule : methodRuleChain) {
needleRule.withOuter(rule);
}
return needleRule;
}
}