// SAX exception class. // No warranty; no copyright -- use this as you will. // $Id: SAXParseException.java,v 1.2 2004/09/13 21:00:18 damon Exp $ package ewesoft.xml.sax; /** * Encapsulate an XML parse error or warning. * * <p>This exception will include information for locating the error * in the original XML document. Note that although the application * will receive a SAXParseException as the argument to the handlers * in the ErrorHandler interface, the application is not actually * required to throw the exception; instead, it can simply read the * information in it and take a different action.</p> * * <p>Since this exception is a subclass of SAXException, it * inherits the ability to wrap another exception.</p> * * @author David Megginson (ak117@freenet.carleton.ca) * @version 1.0 * @see ewesoft.xml.sax.SAXException * @see ewesoft.xml.sax.Locator * @see ewesoft.xml.sax.ErrorHandler */ public class SAXParseException extends SAXException { ////////////////////////////////////////////////////////////////////// // Constructors. ////////////////////////////////////////////////////////////////////// /** * Create a new SAXParseException from a message and a Locator. * * <p>This constructor is especially useful when an application is * creating its own exception from within a DocumentHandler * callback.</p> * * @param message The error or warning message. * @param locator The locator object for the error or warning. * @see ewesoft.xml.sax.Locator * @see ewesoft.xml.sax.Parser#setLocale */ public SAXParseException (String message, Locator locator) { super(message); this.publicId = locator.getPublicId(); this.systemId = locator.getSystemId(); this.lineNumber = locator.getLineNumber(); this.columnNumber = locator.getColumnNumber(); } /** * Wrap an existing exception in a SAXParseException. * * <p>This constructor is especially useful when an application is * creating its own exception from within a DocumentHandler * callback, and needs to wrap an existing exception that is not a * subclass of SAXException.</p> * * @param message The error or warning message, or null to * use the message from the embedded exception. * @param locator The locator object for the error or warning. * @param e Any exception * @see ewesoft.xml.sax.Locator * @see ewesoft.xml.sax.Parser#setLocale */ public SAXParseException (String message, Locator locator, Exception e) { super(message, e); this.publicId = locator.getPublicId(); this.systemId = locator.getSystemId(); this.lineNumber = locator.getLineNumber(); this.columnNumber = locator.getColumnNumber(); } /** * Create a new SAXParseException. * * <p>This constructor is most useful for parser writers.</p> * * <p>If the system identifier is a URL, the parser must resolve it * fully before creating the exception.</p> * * @param message The error or warning message. * @param publicId The public identifer of the entity that generated * the error or warning. * @param systemId The system identifer of the entity that generated * the error or warning. * @param lineNumber The line number of the end of the text that * caused the error or warning. * @param columnNumber The column number of the end of the text that * cause the error or warning. * @see ewesoft.xml.sax.Parser#setLocale */ public SAXParseException (String message, String publicId, String systemId, int lineNumber, int columnNumber) { super(message); this.publicId = publicId; this.systemId = systemId; this.lineNumber = lineNumber; this.columnNumber = columnNumber; } /** * Create a new SAXParseException with an embedded exception. * * <p>This constructor is most useful for parser writers who * need to wrap an exception that is not a subclass of * SAXException.</p> * * <p>If the system identifier is a URL, the parser must resolve it * fully before creating the exception.</p> * * @param message The error or warning message, or null to use * the message from the embedded exception. * @param publicId The public identifer of the entity that generated * the error or warning. * @param systemId The system identifer of the entity that generated * the error or warning. * @param lineNumber The line number of the end of the text that * caused the error or warning. * @param columnNumber The column number of the end of the text that * cause the error or warning. * @param e Another exception to embed in this one. * @see ewesoft.xml.sax.Parser#setLocale */ public SAXParseException (String message, String publicId, String systemId, int lineNumber, int columnNumber, Exception e) { super(message, e); this.publicId = publicId; this.systemId = systemId; this.lineNumber = lineNumber; this.columnNumber = columnNumber; } /** * Get the public identifier of the entity where the exception occurred. * * @return A string containing the public identifier, or null * if none is available. * @see ewesoft.xml.sax.Locator#getPublicId */ public String getPublicId () { return this.publicId; } /** * Get the system identifier of the entity where the exception occurred. * * <p>If the system identifier is a URL, it will be resolved * fully.</p> * * @return A string containing the system identifier, or null * if none is available. * @see ewesoft.xml.sax.Locator#getSystemId */ public String getSystemId () { return this.systemId; } /** * The line number of the end of the text where the exception occurred. * * @return An integer representing the line number, or -1 * if none is available. * @see ewesoft.xml.sax.Locator#getLineNumber */ public int getLineNumber () { return this.lineNumber; } /** * The column number of the end of the text where the exception occurred. * * <p>The first column in a line is position 1.</p> * * @return An integer representing the column number, or -1 * if none is available. * @see ewesoft.xml.sax.Locator#getColumnNumber */ public int getColumnNumber () { return this.columnNumber; } ////////////////////////////////////////////////////////////////////// // Internal state. ////////////////////////////////////////////////////////////////////// private String publicId; private String systemId; private int lineNumber; private int columnNumber; }