package com.thaiopensource.validate;
import com.thaiopensource.util.Service;
import java.util.Iterator;
/**
* A SchemaReaderFactory that automatically discovers SchemaReader implementations.
* For a SchemeaReader implementation to be discoverable by this class, it must have
* a factory class with a no-argument constructor implementing SchemaReaderFactory,
* and the fully-qualified name of this factory class must be listed in the file
* <code>META-INF/services/com.thaiopensource.validate.SchemaReaderFactory</code>.
*/
public class SchemaReaderLoader implements SchemaReaderFactory {
private final Service<SchemaReaderFactory> service = Service.newInstance(SchemaReaderFactory.class);
public SchemaReader createSchemaReader(String namespaceUri) {
for (Iterator<SchemaReaderFactory> iter = service.getProviders(); iter.hasNext();) {
SchemaReaderFactory srf = iter.next();
SchemaReader sr = srf.createSchemaReader(namespaceUri);
if (sr != null)
return sr;
}
return null;
}
public Option getOption(String uri) {
for (Iterator<SchemaReaderFactory> iter = service.getProviders(); iter.hasNext();) {
SchemaReaderFactory srf = iter.next();
Option option = srf.getOption(uri);
if (option != null)
return option;
}
return null;
}
}