001 package com.thaiopensource.validate.jarv; 002 003 import com.thaiopensource.util.PropertyMap; 004 import com.thaiopensource.validate.ValidateProperty; 005 import com.thaiopensource.validate.Validator; 006 import org.iso_relax.verifier.Verifier; 007 import org.xml.sax.ContentHandler; 008 import org.xml.sax.DTDHandler; 009 import org.xml.sax.EntityResolver; 010 import org.xml.sax.SAXException; 011 import org.xml.sax.helpers.DefaultHandler; 012 013 public class VerifierValidator implements Validator { 014 private final Verifier verifier; 015 private ContentHandler handler; 016 017 private static class ExceptionReportHandler extends DefaultHandler { 018 private final SAXException storedException; 019 020 ExceptionReportHandler(SAXException storedException) { 021 this.storedException = storedException; 022 } 023 024 public void startDocument() 025 throws SAXException { 026 throw storedException; 027 } 028 } 029 030 public VerifierValidator(Verifier verifier, PropertyMap properties) { 031 this.verifier = verifier; 032 verifier.setErrorHandler(ValidateProperty.ERROR_HANDLER.get(properties)); 033 EntityResolver er = ValidateProperty.ENTITY_RESOLVER.get(properties); 034 if (er != null) 035 verifier.setEntityResolver(er); 036 try { 037 handler = verifier.getVerifierHandler(); 038 } 039 catch (SAXException e) { 040 handler = new ExceptionReportHandler(e); 041 } 042 } 043 044 public void reset() { 045 try { 046 handler = verifier.getVerifierHandler(); 047 } 048 catch (SAXException e) { 049 handler = new ExceptionReportHandler(e); 050 } 051 } 052 053 public ContentHandler getContentHandler() { 054 return handler; 055 } 056 057 public DTDHandler getDTDHandler() { 058 return null; 059 } 060 }