package org.iso_relax.ant;
import java.io.PrintWriter;
import java.io.StringWriter;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.Task;
import org.xml.sax.ErrorHandler;
import org.xml.sax.SAXException;
import org.xml.sax.SAXParseException;
/**
* Error handler implementation that reports errors through
* the logging mechanism of Ant task.
*
* @author Kohsuke Kawaguchi (kk@kohsuke.org)
*/
public class ErrorHandlerImpl implements ErrorHandler {
private final Task task;
boolean hadError = false;
public ErrorHandlerImpl( Task t ) {
this.task = t;
}
public void warning(SAXParseException e) throws SAXException {
print( e, Project.MSG_WARN );
}
public void error(SAXParseException e) throws SAXException {
print( e, Project.MSG_ERR );
hadError = true;
}
public void fatalError(SAXParseException e) throws SAXException {
print( e, Project.MSG_ERR );
hadError = true;
}
private void print( SAXParseException e, int msgLevel ) {
task.log( e.getMessage(), msgLevel );
StringWriter sw = new StringWriter();
PrintWriter pw = new PrintWriter(sw);
e.printStackTrace(pw);
pw.close();
task.log( sw.toString(), Project.MSG_VERBOSE );
}
}