1 /*
   2  * reserved comment block
   3  * DO NOT REMOVE OR ALTER!
   4  */
   5 /*
   6  * Licensed to the Apache Software Foundation (ASF) under one or more
   7  * contributor license agreements.  See the NOTICE file distributed with
   8  * this work for additional information regarding copyright ownership.
   9  * The ASF licenses this file to You under the Apache License, Version 2.0
  10  * (the "License"); you may not use this file except in compliance with
  11  * the License.  You may obtain a copy of the License at
  12  *
  13  *      http://www.apache.org/licenses/LICENSE-2.0
  14  *
  15  * Unless required by applicable law or agreed to in writing, software
  16  * distributed under the License is distributed on an "AS IS" BASIS,
  17  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  18  * See the License for the specific language governing permissions and
  19  * limitations under the License.
  20  */
  21 
  22 package com.sun.org.apache.xerces.internal.jaxp.validation;
  23 
  24 import com.sun.org.apache.xerces.internal.xni.parser.XMLErrorHandler;
  25 import com.sun.org.apache.xerces.internal.xni.parser.XMLParseException;
  26 import org.xml.sax.ErrorHandler;
  27 import org.xml.sax.SAXException;
  28 
  29 /**
  30  * Receives errors through Xerces {@link XMLErrorHandler}
  31  * and pass them down to SAX {@link ErrorHandler}.
  32  *
  33  * @author
  34  *     Kohsuke Kawaguchi
  35  */
  36 public abstract class ErrorHandlerAdaptor implements XMLErrorHandler
  37 {
  38     /** set to true if there was any error. */
  39     private boolean hadError = false;
  40 
  41     /**
  42      * returns if there was an error since the last invocation of
  43      * the resetError method.
  44      */
  45     public boolean hadError() { return hadError; }
  46     /** resets the error flag. */
  47     public void reset() { hadError = false; }
  48 
  49     /**
  50      * Implemented by the derived class to return the actual
  51      * {@link ErrorHandler} to which errors are sent.
  52      *
  53      * @return always return non-null valid object.
  54      */
  55     protected abstract ErrorHandler getErrorHandler();
  56 
  57     public void fatalError( String domain, String key, XMLParseException e ) {
  58         try {
  59             hadError = true;
  60             getErrorHandler().fatalError( Util.toSAXParseException(e) );
  61         } catch( SAXException se ) {
  62             throw new WrappedSAXException(se);
  63         }
  64     }
  65 
  66     public void error( String domain, String key, XMLParseException e ) {
  67         try {
  68             hadError = true;
  69             getErrorHandler().error( Util.toSAXParseException(e) );
  70         } catch( SAXException se ) {
  71             throw new WrappedSAXException(se);
  72         }
  73     }
  74 
  75     public void warning( String domain, String key, XMLParseException e ) {
  76         try {
  77             getErrorHandler().warning( Util.toSAXParseException(e) );
  78         } catch( SAXException se ) {
  79             throw new WrappedSAXException(se);
  80         }
  81     }
  82 
  83 }