package org.gcube.common.scope.impl; import java.util.Set; import org.gcube.common.scope.api.DefaultScopeProvider; import org.gcube.common.scope.api.ScopeProvider; import org.reflections.Reflections; import org.reflections.scanners.SubTypesScanner; import org.reflections.util.ClasspathHelper; import org.reflections.util.ConfigurationBuilder; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Scans the classpath for a {@link ScopeProvider} implementation. *
* Returns a shared {@link DefaultScopeProvider} by default.
*
* @author Fabio Simeoni
* @see ScopeProvider
* @see ScopeProvider#instance
*/
public class ScopeProviderScanner {
private static Logger log = LoggerFactory.getLogger(ScopeProviderScanner.class);
/**
* Returns the configured provider.
* @return the provider
*/
public static ScopeProvider provider() {
try {
// we include urls specified in manifest files, which is required
// when we run tests in surefire's forked-mode
ConfigurationBuilder builder = new ConfigurationBuilder().setUrls(
ClasspathHelper.forManifest(Utils.urlsToScan())).setScanners(new SubTypesScanner());
Reflections reflections = new Reflections(builder);
Set