Start line:  
End line:  

Snippet Preview

Snippet HTML Code

Stack Overflow Questions
  package com.thaiopensource.validate.schematron;
  
 
 
 class ValidatorImpl extends DelegatingContentHandler implements Validator {
   private final Transformer transformer;
   private Locator locator;
 
   private final Object contentHandlerMonitor = new Object();
   private final Object parseMonitor = new Object();
   private final Object transformMonitor = new Object();
   private Thread transformThread;
   private final ContentHandler outputHandler;
 
   class BlockingReader extends XMLReaderImpl {
     public void parse(InputSource inthrows SAXException {
       synchronized () {
         synchronized () {
           .notify();
         }
         try {
           .wait();
         }
         catch (InterruptedException e) {
           throw new SAXException(e);
         }
       }
     }
 
     public void setContentHandler(ContentHandler handler) {
       setDelegate(handler);
     }
 
     public ContentHandler getContentHandler() {
       return getDelegate();
     }
 
   }
 
   ValidatorImpl(Templates templatesPropertyMap properties) {
     ErrorHandler eh = ..get(properties);
      = new OutputHandler(eh);
     try {
        = templates.newTransformer();
       // XXX set up transformer with a resolver that uses the resolver
       // XXX and XMLReaderCreator from properties
       // XXX set up transformer with an ErrorListener that just throws
     }
     catch (TransformerConfigurationException e) {
       throw new RuntimeException("could not create transformer");
     }
   }
 
     return this;
   }
 
   public DTDHandler getDTDHandler() {
     return null;
   }
 
   public void reset() {
     if ( != null) {
       synchronized () {
         .interrupt();
         try {
           .wait();
         }
         catch (InterruptedException e) { }
          = null;
       }
     }
      = null;
      = null;
   }
 
   public void setDocumentLocator(Locator locator) {
     this. = locator;
   }
 
   public void startDocument()
           throws SAXException {
    final SAXSource source = new SAXSource(new BlockingReader(),
                                           new InputSource(""));
     = new Thread(new Runnable() {
      public void run() {
        try {
          .transform(sourcenew SAXResult());
        }
        catch (TransformerException e) {
           = e;
        }
        finally {
          synchronized () {
            .notify();
          }
        }
      }
    }, "Transform");
    synchronized () {
      .start();
      try {
        .wait();
      }
      catch (InterruptedException e) {
        throw new SAXException(e);
      }
    }
    if ( != null)
      super.setDocumentLocator();
    super.startDocument();
  }
  public void endDocument()
          throws SAXException {
    super.endDocument();
    synchronized () {
      synchronized () {
        .notify();
      }
      try {
        .wait();
      }
      catch (InterruptedException e) {
        throw new SAXException(e);
      }
      finally {
         = null;
      }
    }
    if ( != null)
  }
  static SAXException toSAXException(TransformerException transformerException) {
    // Unwrap where possible
    Throwable wrapped = transformerException.getException();
    if (wrapped instanceof SAXException)
      return (SAXException)wrapped;
    if (wrapped instanceof RuntimeException)
      throw (RuntimeException)wrapped;
    if (wrapped instanceof Exception)
      return new SAXException((Exception)wrapped);
    return new SAXException(transformerException);
  }
New to GrepCode? Check out our FAQ X