package net.thucydides.core.statistics.service;
import com.google.common.collect.Lists;
import net.thucydides.core.requirements.CoreTagProvider;
import net.thucydides.core.requirements.OverridableTagProvider;
import java.util.List;
public class TagProviderFilter<T extends TagProvider> {
public List<T> removeOverriddenProviders(List<T> providers) {
if (additionalTagProvidersArePresentIn(providers)) {
return removeOverridableProvidersFrom(providers);
} else {
return providers;
}
}
private boolean additionalTagProvidersArePresentIn(List<T> providers) {
for(TagProvider provider : providers) {
if (!(CoreTagProvider.class.isAssignableFrom(provider.getClass()))) {
return true;
}
}
return false;
}
private List<T> removeOverridableProvidersFrom(List<T> providers) {
List<T> retainedProviders = Lists.newArrayList();
for(T provider : providers) {
if (!OverridableTagProvider.class.isAssignableFrom(provider.getClass())) {
retainedProviders.add(provider);
}
}
return retainedProviders;
}
}