/* |
|
* Copyright (c) 2000, 2019, Oracle and/or its affiliates. All rights reserved. |
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
|
* |
|
* This code is free software; you can redistribute it and/or modify it |
|
* under the terms of the GNU General Public License version 2 only, as |
|
* published by the Free Software Foundation. Oracle designates this |
|
* particular file as subject to the "Classpath" exception as provided |
|
* by Oracle in the LICENSE file that accompanied this code. |
|
* |
|
* This code is distributed in the hope that it will be useful, but WITHOUT |
|
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
|
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License |
|
* version 2 for more details (a copy is included in the LICENSE file that |
|
* accompanied this code). |
|
* |
|
* You should have received a copy of the GNU General Public License version |
|
* 2 along with this work; if not, write to the Free Software Foundation, |
|
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. |
|
* |
|
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA |
|
* or visit www.oracle.com if you need additional information or have any |
|
* questions. |
|
*/ |
|
package org.xml.sax; |
|
/** |
|
* Encapsulate an XML parse error or warning. |
|
* |
|
* <p>This exception may include information for locating the error |
|
* in the original XML document, as if it came from a {@link Locator} |
|
* object. Note that although the application |
|
* will receive a SAXParseException as the argument to the handlers |
|
* in the {@link org.xml.sax.ErrorHandler 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 {@link org.xml.sax.SAXException |
|
* SAXException}, it inherits the ability to wrap another exception.</p> |
|
* |
|
* @since 1.4, SAX 1.0 |
|
* @author David Megginson |
|
* @version 2.0.1 (sax2r2) |
|
* @see org.xml.sax.SAXException |
|
* @see org.xml.sax.Locator |
|
* @see org.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 {@link org.xml.sax.ContentHandler |
|
* ContentHandler} callback.</p> |
|
* |
|
* @param message The error or warning message. |
|
* @param locator The locator object for the error or warning (may be |
|
* null). |
|
* @see org.xml.sax.Locator |
|
*/ |
|
public SAXParseException (String message, Locator locator) { |
|
super(message); |
|
if (locator != null) { |
|
init(locator.getPublicId(), locator.getSystemId(), |
|
locator.getLineNumber(), locator.getColumnNumber()); |
|
} else { |
|
init(null, null, -1, -1); |
|
} |
|
} |
|
/** |
|
* Wrap an existing exception in a SAXParseException. |
|
* |
|
* <p>This constructor is especially useful when an application is |
|
* creating its own exception from within a {@link org.xml.sax.ContentHandler |
|
* ContentHandler} callback, and needs to wrap an existing exception that is not a |
|
* subclass of {@link org.xml.sax.SAXException 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 (may be |
|
* null). |
|
* @param e Any exception. |
|
* @see org.xml.sax.Locator |
|
*/ |
|
public SAXParseException (String message, Locator locator, |
|
Exception e) { |
|
super(message, e); |
|
if (locator != null) { |
|
init(locator.getPublicId(), locator.getSystemId(), |
|
locator.getLineNumber(), locator.getColumnNumber()); |
|
} else { |
|
init(null, null, -1, -1); |
|
} |
|
} |
|
/** |
|
* Create a new SAXParseException. |
|
* |
|
* <p>This constructor is most useful for parser writers.</p> |
|
* |
|
* <p>All parameters except the message are as if |
|
* they were provided by a {@link Locator}. For example, if the |
|
* system identifier is a URL (including relative filename), the |
|
* caller must resolve it fully before creating the exception.</p> |
|
* |
|
* |
|
* @param message The error or warning message. |
|
* @param publicId The public identifier of the entity that generated |
|
* the error or warning. |
|
* @param systemId The system identifier 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. |
|
*/ |
|
public SAXParseException (String message, String publicId, String systemId, |
|
int lineNumber, int columnNumber) |
|
{ |
|
super(message); |
|
init(publicId, systemId, lineNumber, 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 |
|
* {@link org.xml.sax.SAXException SAXException}.</p> |
|
* |
|
* <p>All parameters except the message and exception are as if |
|
* they were provided by a {@link Locator}. For example, if the |
|
* system identifier is a URL (including relative filename), the |
|
* caller 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 identifier of the entity that generated |
|
* the error or warning. |
|
* @param systemId The system identifier 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. |
|
*/ |
|
public SAXParseException (String message, String publicId, String systemId, |
|
int lineNumber, int columnNumber, Exception e) |
|
{ |
|
super(message, e); |
|
init(publicId, systemId, lineNumber, columnNumber); |
|
} |
|
/** |
|
* Internal initialization method. |
|
* |
|
* @param publicId The public identifier of the entity which generated the exception, |
|
* or null. |
|
* @param systemId The system identifier of the entity which generated the exception, |
|
* or null. |
|
* @param lineNumber The line number of the error, or -1. |
|
* @param columnNumber The column number of the error, or -1. |
|
*/ |
|
private void init (String publicId, String systemId, |
|
int lineNumber, int columnNumber) |
|
{ |
|
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 org.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 have been resolved |
|
* fully.</p> |
|
* |
|
* @return A string containing the system identifier, or null |
|
* if none is available. |
|
* @see org.xml.sax.Locator#getSystemId |
|
*/ |
|
public String getSystemId () |
|
{ |
|
return this.systemId; |
|
} |
|
/** |
|
* The line number of the end of the text where the exception occurred. |
|
* |
|
* <p>The first line is line 1.</p> |
|
* |
|
* @return An integer representing the line number, or -1 |
|
* if none is available. |
|
* @see org.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 org.xml.sax.Locator#getColumnNumber |
|
*/ |
|
public int getColumnNumber () |
|
{ |
|
return this.columnNumber; |
|
} |
|
/** |
|
* Override toString to provide more detailed error message. |
|
* |
|
* @return A string representation of this exception. |
|
*/ |
|
public String toString() { |
|
StringBuilder buf = new StringBuilder(getClass().getName()); |
|
String message = getLocalizedMessage(); |
|
if (publicId!=null) buf.append("publicId: ").append(publicId); |
|
if (systemId!=null) buf.append("; systemId: ").append(systemId); |
|
if (lineNumber!=-1) buf.append("; lineNumber: ").append(lineNumber); |
|
if (columnNumber!=-1) buf.append("; columnNumber: ").append(columnNumber); |
|
//append the exception message at the end |
|
if (message!=null) buf.append("; ").append(message); |
|
return buf.toString(); |
|
} |
|
////////////////////////////////////////////////////////////////////// |
|
// Internal state. |
|
////////////////////////////////////////////////////////////////////// |
|
/** |
|
* @serial The public identifier, or null. |
|
* @see #getPublicId |
|
*/ |
|
private String publicId; |
|
/** |
|
* @serial The system identifier, or null. |
|
* @see #getSystemId |
|
*/ |
|
private String systemId; |
|
/** |
|
* @serial The line number, or -1. |
|
* @see #getLineNumber |
|
*/ |
|
private int lineNumber; |
|
/** |
|
* @serial The column number, or -1. |
|
* @see #getColumnNumber |
|
*/ |
|
private int columnNumber; |
|
// Added serialVersionUID to preserve binary compatibility |
|
static final long serialVersionUID = -5651165872476709336L; |
|
} |
|
// end of SAXParseException.java |