001    package com.thaiopensource.relaxng.jarv;
002    
003    import com.thaiopensource.relaxng.impl.Pattern;
004    import com.thaiopensource.relaxng.impl.ValidatorPatternBuilder;
005    import com.thaiopensource.xml.sax.CountingErrorHandler;
006    import org.iso_relax.verifier.VerifierConfigurationException;
007    import org.iso_relax.verifier.VerifierHandler;
008    import org.xml.sax.ErrorHandler;
009    import org.xml.sax.SAXException;
010    
011    class VerifierImpl extends org.iso_relax.verifier.impl.VerifierImpl {
012      private final VerifierHandlerImpl vhi;
013      private boolean needReset = false;
014    
015      VerifierImpl(Pattern start, ValidatorPatternBuilder builder) throws VerifierConfigurationException {
016        vhi = new VerifierHandlerImpl(start, builder,
017                                      new CountingErrorHandler(errorHandler));
018        reader.setDTDHandler(vhi);
019      }
020    
021      public VerifierHandler getVerifierHandler() throws SAXException {
022        if (needReset)
023          vhi.reset();
024        else
025          needReset = true;
026        return vhi;
027      }
028    
029      public void setErrorHandler(ErrorHandler handler) {
030        vhi.setErrorHandler(handler);
031        super.setErrorHandler(handler);
032      }
033    
034    }