001    package com.thaiopensource.validate.rng;
002    
003    import com.thaiopensource.util.PropertyMap;
004    import com.thaiopensource.validate.auto.SchemaReceiver;
005    import com.thaiopensource.validate.auto.SchemaReceiverFactory;
006    import com.thaiopensource.relaxng.impl.SchemaReceiverImpl;
007    import com.thaiopensource.relaxng.parse.sax.SAXParseReceiver;
008    import com.thaiopensource.validate.ValidateProperty;
009    import com.thaiopensource.validate.Option;
010    import com.thaiopensource.xml.sax.XMLReaderCreator;
011    import com.thaiopensource.xml.util.WellKnownNamespaces;
012    
013    import org.xml.sax.EntityResolver;
014    import org.xml.sax.ErrorHandler;
015    
016    public class SAXSchemaReceiverFactory implements SchemaReceiverFactory {
017      public SchemaReceiver createSchemaReceiver(String namespaceUri,
018                                                 PropertyMap properties) {
019        // XXX allow namespaces with incorrect version
020        if (!WellKnownNamespaces.RELAX_NG.equals(namespaceUri))
021          return null;
022        XMLReaderCreator xrc = ValidateProperty.XML_READER_CREATOR.get(properties);
023        ErrorHandler eh = ValidateProperty.ERROR_HANDLER.get(properties);
024        EntityResolver er = ValidateProperty.ENTITY_RESOLVER.get(properties);
025        return new SchemaReceiverImpl(new SAXParseReceiver(xrc, eh, er), properties);
026      }
027    
028      public Option getOption(String uri) {
029        return RngProperty.getOption(uri);
030      }
031    }