package net.thucydides.core.statistics.service;
import com.google.common.collect.Lists;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.util.List;
import java.util.ServiceLoader;
public class ClasspathTagProviderService implements TagProviderService {
private final Logger logger = LoggerFactory.getLogger(ClasspathTagProviderService.class);
private List<TagProvider> tagProviders;
private TagProviderFilter<TagProvider> filter = new TagProviderFilter<>();
public ClasspathTagProviderService() {
}
@Override
public List<TagProvider> getTagProviders() {
if (tagProviders == null) {
List<TagProvider> newTagProviders = Lists.newArrayList();
Iterable<TagProvider> tagProviderServiceLoader = loadTagProvidersFromPath();
for (TagProvider tagProvider : tagProviderServiceLoader) {
newTagProviders.add(tagProvider);
}
tagProviders = filter.removeOverriddenProviders(newTagProviders);
}
return tagProviders;
}
protected Iterable<TagProvider> loadTagProvidersFromPath() {
return ServiceLoader.load(TagProvider.class);
}
}