Readers.java
package org.cugos.wkg;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.ServiceLoader;
/**
* Get a list of Readers or find a Reader by name.
* Readers uses the Service Provider Interface (SPI) to look up registered Readers
* @author Jared Erickson
*/
public class Readers {
/**
* Get a list of all registered Readers
* @return A List of Readers
*/
public static List<Reader> list() {
List<Reader> readers = new ArrayList<>();
ServiceLoader<Reader> serviceLoader = ServiceLoader.load(Reader.class);
Iterator<Reader> iterator = serviceLoader.iterator();
while(iterator.hasNext()) {
readers.add(iterator.next());
}
return readers;
}
/**
* Find a Reader by name or return null
* @param name The name
* @return A Reader or null
*/
public static Reader find(String name) {
List<Reader> readers = list();
for(Reader reader : readers) {
if (reader.getName().equalsIgnoreCase(name)) {
return reader;
}
}
return null;
}
}