liquibase.servicelocator.StandardServiceLocator Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of liquibase-core Show documentation
Show all versions of liquibase-core Show documentation
Liquibase is a tool for managing and executing database changes.
package liquibase.servicelocator;
import liquibase.Scope;
import liquibase.exception.ServiceNotFoundException;
import liquibase.logging.Logger;
import java.util.*;
public class StandardServiceLocator implements ServiceLocator {
@Override
public int getPriority() {
return PRIORITY_DEFAULT;
}
@Override
public List findInstances(Class interfaceType) throws ServiceNotFoundException {
List allInstances = new ArrayList<>();
final Logger log = Scope.getCurrentScope().getLog(getClass());
final Iterator services = ServiceLoader.load(interfaceType, Scope.getCurrentScope().getClassLoader(true)).iterator();
while (services.hasNext()) {
try {
final T service = services.next();
log.fine("Loaded "+interfaceType.getName()+" instance "+service.getClass().getName());
allInstances.add(service);
} catch (Throwable e) {
log.info("Cannot load service: "+e.getMessage());
log.fine(e.getMessage(), e);
}
}
return Collections.unmodifiableList(allInstances);
}
}