common-configuration-scanner/src/main/java/org/gcube/common/scan/ClasspathScannerFactory.java

48 lines
1.1 KiB
Java

package org.gcube.common.scan;
import java.net.URL;
import java.util.Collection;
/**
* Creates {@link ClasspathScanner}s for given URLs.
*
* @author Fabio Simeoni
*
*/
public class ClasspathScannerFactory {
private static ClasspathScanner scanner;
/**
* Returns a {@link ClasspathScanner} defined over all the URLs visible to the context classloader and its parents, up to the application
* classloader.
* @return the scanner
*/
public synchronized static ClasspathScanner scanner() {
if (scanner==null)
scanner = new DefaultScanner();
return scanner;
}
/**
* Returns a {@link ClasspathScanner} defined over a given collection of URLs.
* @param the URLs
* @return the scanner
*/
public synchronized static ClasspathScanner scanner(Collection<URL> urls) {
if (scanner==null)
scanner = new DefaultScanner(urls);
return scanner;
}
//test facility
/**
* Sets the scanner to return from {@link #scanner()} and {@link #scanner(Collection)} for testing purposes.
* @param scanner the scanner
*/
public static void setScanner(ClasspathScanner scanner) {
ClasspathScannerFactory.scanner=scanner;
}
}