content: /**
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You under the Apache License, Version 2.0
   * (the "License"); you may not use this file except in compliance with
   * the License.  You may obtain a copy of the License at
   *
   *     http://www.apache.org/licenses/LICENSE-2.0
   *
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  package org.apache.solr.common.util;
  
  import org.slf4j.Logger;
  
  import org.xml.sax.ErrorHandler;
  import org.xml.sax.SAXException;
  import org.xml.sax.SAXParseException;
  import javax.xml.transform.ErrorListener;
  import javax.xml.transform.TransformerException;
  import javax.xml.stream.Location;
  import javax.xml.stream.XMLReporter;
  
  public final class XMLErrorLogger implements ErrorHandler,ErrorListener,XMLReporter {
  
    private final Logger log;
  
    public XMLErrorLogger(Logger log) {
      this.log = log;
    }
  
    // ErrorHandler
  
    public void warning(SAXParseException e) {
      log.warn("XML parse warning in \""+e.getSystemId()+"\", line "+e.getLineNumber()+", column "+e.getColumnNumber()+": "+e.getMessage());
    }
  
    public void error(SAXParseException e) throws SAXException {
      throw e;
    }
  
    public void fatalError(SAXParseException e) throws SAXException {
      throw e;
    }
  
    // ErrorListener
  
    public void warning(TransformerException e) {
      log.warn(e.getMessageAndLocation());
    }
  
    public void error(TransformerException e) throws TransformerException {
      throw e;
    }
  
    public void fatalError(TransformerException e) throws TransformerException {
      throw e;
    }
  
    // XMLReporter
  
    public void report(String message, String errorType, Object relatedInformation, Location loc) {
      final StringBuilder sb = new StringBuilder("XML parser reported ").append(errorType);
      if (loc !=  null) {
        sb.append(" in \"").append(loc.getSystemId()).append("\", line ")
          .append(loc.getLineNumber()).append(", column ").append(loc.getColumnNumber());
      }
      log.warn(sb.append(": ").append(message).toString());
    }
  
  }
  