org.apache.xml.resolver.apps.XParseError Maven / Gradle / Ivy
// XParseError.java - An error handler for xparse
/*
* 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.xml.resolver.apps;
import java.net.URL;
import java.net.MalformedURLException;
import org.xml.sax.SAXParseException;
import org.xml.sax.ErrorHandler;
import org.apache.xml.resolver.helpers.FileURL;
/**
* An ErrorHandler for xparse.
*
* This class is just the error handler for xparse.
*
* @see xparse
*
* @author Norman Walsh
* [email protected]
*
* @version 1.0
*/
public class XParseError implements ErrorHandler {
/** Show errors? */
private boolean showErrors = true;
/** Show warnings? */
private boolean showWarnings = false;
/** How many messages should be presented? */
private int maxMessages = 10;
/** The number of fatal errors seen so far. */
private int fatalCount = 0;
/** The number of errors seen so far. */
private int errorCount = 0;
/** The number of warnings seen so far. */
private int warningCount = 0;
/** The base URI of the running application. */
private String baseURI = "";
/** Constructor */
public XParseError(boolean errors, boolean warnings) {
showErrors = errors;
showWarnings = warnings;
try {
URL url = FileURL.makeURL("basename");
baseURI = url.toString();
} catch (MalformedURLException mue) {
// nop;
}
}
/** Return the error count */
public int getErrorCount() {
return errorCount;
}
/** Return the fatal error count */
public int getFatalCount() {
return fatalCount;
}
/** Return the warning count */
public int getWarningCount() {
return warningCount;
}
/** Return the number of messages to display */
public int getMaxMessages() {
return maxMessages;
}
/** Set the number of messages to display */
public void setMaxMessages(int max) {
maxMessages = max;
}
/** SAX2 API */
public void error(SAXParseException exception) {
errorCount++;
if (showErrors && (errorCount+warningCount < maxMessages)) {
message("Error", exception);
}
}
/** SAX2 API */
public void fatalError(SAXParseException exception) {
errorCount++;
fatalCount++;
if (showErrors && (errorCount+warningCount < maxMessages)) {
message("Fatal error", exception);
}
}
/** SAX2 API */
public void warning(SAXParseException exception) {
warningCount++;
if (showWarnings && (errorCount+warningCount < maxMessages)) {
message("Warning", exception);
}
}
/** Display a message to the user */
private void message(String type, SAXParseException exception) {
String filename = exception.getSystemId();
if (filename.startsWith(baseURI)) {
filename = filename.substring(baseURI.length());
}
System.out.print(type
+ ":"
+ filename
+ ":"
+ exception.getLineNumber());
if (exception.getColumnNumber() > 0) {
System.out.print(":" + exception.getColumnNumber());
}
System.out.println(":" + exception.getMessage());
}
}