package org.kohsuke.bali.datatype;
import org.relaxng.datatype.Datatype;
import org.relaxng.datatype.DatatypeBuilder;
import org.relaxng.datatype.DatatypeException;
import org.relaxng.datatype.DatatypeLibrary;
import org.relaxng.datatype.helpers.DatatypeLibraryLoader;
import com.sun.msv.grammar.relaxng.datatype.BuiltinDatatypeLibrary;
/**
*
*
* @author Kohsuke Kawaguchi (kk@kohsuke.org)
*/
public class DatatypeLibraryImpl implements DatatypeLibrary {
public DatatypeLibraryImpl( String nsURI ) {
this.nsURI = nsURI;
if(nsURI.length()==0)
realLib = BuiltinDatatypeLibrary.theInstance;
else
realLib = new DatatypeLibraryLoader().createDatatypeLibrary(nsURI);
}
/** Datatype libarry URI. */
private final String nsURI;
/** Actual datatype library implementation. */
protected final DatatypeLibrary realLib;
public DatatypeBuilder createDatatypeBuilder(String dtName)
throws DatatypeException {
return new DatatypeBuilderImpl(nsURI,dtName,
realLib.createDatatypeBuilder(dtName));
}
public Datatype createDatatype(String dtName) throws DatatypeException {
return createDatatypeBuilder(dtName).createDatatype();
}
}