/*
* Copyright (c) 1999 World Wide Web Consortium
* (Massachusetts Institute of Technology, Institut National de Recherche
* en Informatique et en Automatique, Keio University).
* All Rights Reserved. http://www.w3.org/Consortium/Legal/
*
* The original version of this interface comes from SAX :
* http://www.megginson.com/SAX/
*
* $Id: CSSParseException.java 477010 2006-11-20 02:54:38Z mrglavas $
*/
package org.w3c.css.sac;
/**
* Encapsulate a CSS parse error or warning.
*
* <p>
* This exception will include information for locating the error in the
* original CSS document. Note that although the application will receive a
* CSSParseException 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 CSSException, it inherits the ability
* to wrap another exception.
* </p>
*
* @author Philippe Le Hegaret
* @version $Revision: 477010 $
*/
public class CSSParseException extends CSSException {
/**
*
*/
private static final long serialVersionUID = 1L;
/** The uri. */
private String uri;
/** The line number. */
private int lineNumber;
/** The column number. */
private int columnNumber;
/**
* Create a new CSSParseException 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 Locator
* @see Parser#setLocale
*/
public CSSParseException(String message, Locator locator) {
super(message);
this.code = SAC_SYNTAX_ERR;
this.uri = locator.getURI();
this.lineNumber = locator.getLineNumber();
this.columnNumber = locator.getColumnNumber();
}
/**
*
* Wrap an existing exception in a CSSParseException.
*
* <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 CSSException.
* </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 Locator
* @see Parser#setLocale
*/
public CSSParseException(String message, Locator locator, Exception e) {
super(SAC_SYNTAX_ERR, message, e);
this.uri = locator.getURI();
this.lineNumber = locator.getLineNumber();
this.columnNumber = locator.getColumnNumber();
}
/**
* Create a new CSSParseException.
*
* <p>
* This constructor is most useful for parser writers.
* </p>
*
* <p>
* the parser must resolve the URI fully before creating the exception.
* </p>
*
* @param message
* The error or warning message.
* @param uri
* The URI of the document 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 Parser#setLocale
*/
public CSSParseException(String message, String uri, int lineNumber,
int columnNumber) {
super(message);
this.code = SAC_SYNTAX_ERR;
this.uri = uri;
this.lineNumber = lineNumber;
this.columnNumber = columnNumber;
}
/**
* Create a new CSSParseException 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 CSSException.
* </p>
*
* <p>
* The parser must resolve the URI fully before creating the exception.
* </p>
*
* @param message
* The error or warning message, or null to use the message from
* the embedded exception.
* @param uri
* The URI of the document 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 Parser#setLocale
*/
public CSSParseException(String message, String uri, int lineNumber,
int columnNumber, Exception e) {
super(SAC_SYNTAX_ERR, message, e);
this.uri = uri;
this.lineNumber = lineNumber;
this.columnNumber = columnNumber;
}
/**
* Get the URI of the document where the exception occurred.
*
* <p>
* The URI will be resolved fully.
* </p>
*
* @return A string containing the URI, or null if none is available.
* @see Locator#getURI
*/
public String getURI() {
return this.uri;
}
/**
* 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 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 Locator#getColumnNumber
*/
public int getColumnNumber() {
return this.columnNumber;
}
}