com.digitalreasoning.herman.ServiceLoaderStrategy Maven / Gradle / Ivy
package com.digitalreasoning.herman;
import java.io.IOException;
import java.net.URL;
import java.util.Enumeration;
import java.util.ServiceLoader;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
public interface ServiceLoaderStrategy
{
Iterable runLoader(Class serviceType, ClassLoader classLoader);
public static class Default implements ServiceLoaderStrategy
{
private static final Logger logger = LoggerFactory.getLogger(Default.class);
@Override
public Iterable runLoader(final Class serviceType, final ClassLoader classLoader)
{
logger.debug("Looking for services in classloader: " + classLoader);
try
{
final Enumeration resources = classLoader.getResources("META-INF/services/" + serviceType.getName());
while(resources.hasMoreElements())
{
logger.debug("Looking for services in resource " + resources.nextElement());
}
}
catch (IOException e)
{
throw new RuntimeException("Failed to load services: " + serviceType, e);
}
return ServiceLoader.load(serviceType, classLoader);
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy