Source for org.xml.sax.SAXParseException

   1: // SAX exception class.
   2: // http://www.saxproject.org
   3: // No warranty; no copyright -- use this as you will.
   4: // $Id: SAXParseException.java,v 1.1 2004/12/23 22:38:42 mark Exp $
   5: 
   6: package org.xml.sax;
   7: 
   8: /**
   9:  * Encapsulate an XML parse error or warning.
  10:  *
  11:  * <blockquote>
  12:  * <em>This module, both source code and documentation, is in the
  13:  * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
  14:  * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
  15:  * for further information.
  16:  * </blockquote>
  17:  *
  18:  * <p>This exception may include information for locating the error
  19:  * in the original XML document, as if it came from a {@link Locator}
  20:  * object.  Note that although the application
  21:  * will receive a SAXParseException as the argument to the handlers
  22:  * in the {@link org.xml.sax.ErrorHandler ErrorHandler} interface, 
  23:  * the application is not actually required to throw the exception; 
  24:  * instead, it can simply read the information in it and take a 
  25:  * different action.</p>
  26:  *
  27:  * <p>Since this exception is a subclass of {@link org.xml.sax.SAXException 
  28:  * SAXException}, it inherits the ability to wrap another exception.</p>
  29:  *
  30:  * @since SAX 1.0
  31:  * @author David Megginson
  32:  * @version 2.0.1 (sax2r2)
  33:  * @see org.xml.sax.SAXException
  34:  * @see org.xml.sax.Locator
  35:  * @see org.xml.sax.ErrorHandler
  36:  */
  37: public class SAXParseException extends SAXException {
  38:     
  39:     
  40:     //////////////////////////////////////////////////////////////////////
  41:     // Constructors.
  42:     //////////////////////////////////////////////////////////////////////
  43: 
  44: 
  45:     /**
  46:      * Create a new SAXParseException from a message and a Locator.
  47:      *
  48:      * <p>This constructor is especially useful when an application is
  49:      * creating its own exception from within a {@link org.xml.sax.ContentHandler
  50:      * ContentHandler} callback.</p>
  51:      *
  52:      * @param message The error or warning message.
  53:      * @param locator The locator object for the error or warning (may be
  54:      *        null).
  55:      * @see org.xml.sax.Locator
  56:      */
  57:     public SAXParseException (String message, Locator locator) {
  58:     super(message);
  59:     if (locator != null) {
  60:         init(locator.getPublicId(), locator.getSystemId(),
  61:          locator.getLineNumber(), locator.getColumnNumber());
  62:     } else {
  63:         init(null, null, -1, -1);
  64:     }
  65:     }
  66:     
  67:     
  68:     /**
  69:      * Wrap an existing exception in a SAXParseException.
  70:      *
  71:      * <p>This constructor is especially useful when an application is
  72:      * creating its own exception from within a {@link org.xml.sax.ContentHandler
  73:      * ContentHandler} callback, and needs to wrap an existing exception that is not a
  74:      * subclass of {@link org.xml.sax.SAXException SAXException}.</p>
  75:      *
  76:      * @param message The error or warning message, or null to
  77:      *                use the message from the embedded exception.
  78:      * @param locator The locator object for the error or warning (may be
  79:      *        null).
  80:      * @param e Any exception.
  81:      * @see org.xml.sax.Locator
  82:      */
  83:     public SAXParseException (String message, Locator locator,
  84:                   Exception e) {
  85:     super(message, e);
  86:     if (locator != null) {
  87:         init(locator.getPublicId(), locator.getSystemId(),
  88:          locator.getLineNumber(), locator.getColumnNumber());
  89:     } else {
  90:         init(null, null, -1, -1);
  91:     }
  92:     }
  93:     
  94:     
  95:     /**
  96:      * Create a new SAXParseException.
  97:      *
  98:      * <p>This constructor is most useful for parser writers.</p>
  99:      *
 100:      * <p>All parameters except the message are as if
 101:      * they were provided by a {@link Locator}.  For example, if the
 102:      * system identifier is a URL (including relative filename), the
 103:      * caller must resolve it fully before creating the exception.</p>
 104:      *
 105:      *
 106:      * @param message The error or warning message.
 107:      * @param publicId The public identifier of the entity that generated
 108:      *                 the error or warning.
 109:      * @param systemId The system identifier of the entity that generated
 110:      *                 the error or warning.
 111:      * @param lineNumber The line number of the end of the text that
 112:      *                   caused the error or warning.
 113:      * @param columnNumber The column number of the end of the text that
 114:      *                     cause the error or warning.
 115:      */
 116:     public SAXParseException (String message, String publicId, String systemId,
 117:                   int lineNumber, int columnNumber)
 118:     {
 119:     super(message);
 120:     init(publicId, systemId, lineNumber, columnNumber);
 121:     }
 122:     
 123:     
 124:     /**
 125:      * Create a new SAXParseException with an embedded exception.
 126:      *
 127:      * <p>This constructor is most useful for parser writers who
 128:      * need to wrap an exception that is not a subclass of
 129:      * {@link org.xml.sax.SAXException SAXException}.</p>
 130:      *
 131:      * <p>All parameters except the message and exception are as if
 132:      * they were provided by a {@link Locator}.  For example, if the
 133:      * system identifier is a URL (including relative filename), the
 134:      * caller must resolve it fully before creating the exception.</p>
 135:      *
 136:      * @param message The error or warning message, or null to use
 137:      *                the message from the embedded exception.
 138:      * @param publicId The public identifier of the entity that generated
 139:      *                 the error or warning.
 140:      * @param systemId The system identifier of the entity that generated
 141:      *                 the error or warning.
 142:      * @param lineNumber The line number of the end of the text that
 143:      *                   caused the error or warning.
 144:      * @param columnNumber The column number of the end of the text that
 145:      *                     cause the error or warning.
 146:      * @param e Another exception to embed in this one.
 147:      */
 148:     public SAXParseException (String message, String publicId, String systemId,
 149:                   int lineNumber, int columnNumber, Exception e)
 150:     {
 151:     super(message, e);
 152:     init(publicId, systemId, lineNumber, columnNumber);
 153:     }
 154: 
 155: 
 156:     /**
 157:      * Internal initialization method.
 158:      *
 159:      * @param publicId The public identifier of the entity which generated the exception,
 160:      *        or null.
 161:      * @param systemId The system identifier of the entity which generated the exception,
 162:      *        or null.
 163:      * @param lineNumber The line number of the error, or -1.
 164:      * @param columnNumber The column number of the error, or -1.
 165:      */
 166:     private void init (String publicId, String systemId,
 167:                int lineNumber, int columnNumber)
 168:     {
 169:     this.publicId = publicId;
 170:     this.systemId = systemId;
 171:     this.lineNumber = lineNumber;
 172:     this.columnNumber = columnNumber;
 173:     }
 174:     
 175:     
 176:     /**
 177:      * Get the public identifier of the entity where the exception occurred.
 178:      *
 179:      * @return A string containing the public identifier, or null
 180:      *         if none is available.
 181:      * @see org.xml.sax.Locator#getPublicId
 182:      */
 183:     public String getPublicId ()
 184:     {
 185:     return this.publicId;
 186:     }
 187:     
 188:     
 189:     /**
 190:      * Get the system identifier of the entity where the exception occurred.
 191:      *
 192:      * <p>If the system identifier is a URL, it will have been resolved
 193:      * fully.</p>
 194:      *
 195:      * @return A string containing the system identifier, or null
 196:      *         if none is available.
 197:      * @see org.xml.sax.Locator#getSystemId
 198:      */
 199:     public String getSystemId ()
 200:     {
 201:     return this.systemId;
 202:     }
 203:     
 204:     
 205:     /**
 206:      * The line number of the end of the text where the exception occurred.
 207:      *
 208:      * <p>The first line is line 1.</p>
 209:      *
 210:      * @return An integer representing the line number, or -1
 211:      *         if none is available.
 212:      * @see org.xml.sax.Locator#getLineNumber
 213:      */
 214:     public int getLineNumber ()
 215:     {
 216:     return this.lineNumber;
 217:     }
 218:     
 219:     
 220:     /**
 221:      * The column number of the end of the text where the exception occurred.
 222:      *
 223:      * <p>The first column in a line is position 1.</p>
 224:      *
 225:      * @return An integer representing the column number, or -1
 226:      *         if none is available.
 227:      * @see org.xml.sax.Locator#getColumnNumber
 228:      */
 229:     public int getColumnNumber ()
 230:     {
 231:     return this.columnNumber;
 232:     }
 233:     
 234:     
 235:     //////////////////////////////////////////////////////////////////////
 236:     // Internal state.
 237:     //////////////////////////////////////////////////////////////////////
 238: 
 239: 
 240:     /**
 241:      * @serial The public identifier, or null.
 242:      * @see #getPublicId
 243:      */    
 244:     private String publicId;
 245: 
 246: 
 247:     /**
 248:      * @serial The system identifier, or null.
 249:      * @see #getSystemId
 250:      */
 251:     private String systemId;
 252: 
 253: 
 254:     /**
 255:      * @serial The line number, or -1.
 256:      * @see #getLineNumber
 257:      */
 258:     private int lineNumber;
 259: 
 260: 
 261:     /**
 262:      * @serial The column number, or -1.
 263:      * @see #getColumnNumber
 264:      */
 265:     private int columnNumber;
 266:     
 267: }
 268: 
 269: // end of SAXParseException.java