/** * */ package fr.cedrik.util; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import java.util.ServiceLoader; import fr.cedrik.email.spi.SessionSupplier; /** * @author Cédrik LIME */ public final class ServiceLoaderUtil { private ServiceLoaderUtil() { assert false; } public static <S> S getSingle(Class<S> service) throws IllegalStateException { S result; Iterator<S> iterator = ServiceLoader.load(service).iterator(); if (! iterator.hasNext()) { throw new IllegalStateException("Can not find any ServiceProvider for class: " + SessionSupplier.class.getName()); } result = iterator.next(); if (iterator.hasNext()) { throw new IllegalStateException("Multiple providers for ServiceProvider for class: " + SessionSupplier.class.getName()); } return result; } public static <S> List<S> getAll(Class<S> service) { List<S> result = new ArrayList<S>(); for (S s : ServiceLoader.load(service)) { result.add(s); } return result; } }