All Downloads are FREE. Search and download functionalities are using the official Maven repository.

liquibase.servicelocator.StandardServiceLocator Maven / Gradle / Ivy

There is a newer version: 4.30.0
Show newest version
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);

    }
}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy