package cz.cuni.mff.d3s.been.datastore; import java.util.Iterator; import java.util.ServiceLoader; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * A factory meant for dynamic loading of the current * {@link SoftwareStoreBuilder} implementation. */ public final class SoftwareStoreBuilderFactory { private static final Logger log = LoggerFactory.getLogger(SoftwareStoreBuilderFactory.class); /** * Dynamically load a {@link SoftwareStoreBuilder} according to current * classpath. * * @return The builder */ public static SoftwareStoreBuilder getSoftwareStoreBuilder() { ServiceLoader<SoftwareStoreBuilder> dataStoreLoader = ServiceLoader.load(SoftwareStoreBuilder.class); Iterator<SoftwareStoreBuilder> storeBuilderIterator = dataStoreLoader.iterator(); if (!storeBuilderIterator.hasNext()) { log.error(String.format( "Could not find implementation for %s. Software repository will not start.", SoftwareStore.class.toString())); return null; } return storeBuilderIterator.next(); } }