1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// SAX exception class.
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// http://www.saxproject.org
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// No warranty; no copyright -- use this as you will.
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// $Id: SAXException.java,v 1.7 2002/01/30 21:13:48 dbrownell Exp $
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.xml.sax;
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/**
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Encapsulate a general SAX error or warning.
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <blockquote>
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <em>This module, both source code and documentation, is in the
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Public Domain, and comes with <strong>NO WARRANTY</strong>.</em>
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See <a href='http://www.saxproject.org'>http://www.saxproject.org</a>
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * for further information.
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * </blockquote>
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p>This class can contain basic error or warning information from
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * either the XML parser or the application: a parser writer or
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * application writer can subclass it to provide additional
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * functionality.  SAX handlers may throw this exception or
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * any exception subclassed from it.</p>
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p>If the application needs to pass through other types of
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * exceptions, it must wrap those exceptions in a SAXException
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * or an exception derived from a SAXException.</p>
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * <p>If the parser or application needs to include information about a
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * specific location in an XML document, it should use the
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@link org.xml.sax.SAXParseException SAXParseException} subclass.</p>
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project *
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @since SAX 1.0
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @author David Megginson
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @version 2.0.1 (sax2r2)
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see org.xml.sax.SAXParseException
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class SAXException extends Exception {
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Create a new SAXException.
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public SAXException ()
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    super();
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    this.exception = null;
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Create a new SAXException.
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @param message The error or warning message.
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public SAXException (String message) {
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    super(message);
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    this.exception = null;
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Create a new SAXException wrapping an existing exception.
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * <p>The existing exception will be embedded in the new
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * one, and its message will become the default message for
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * the SAXException.</p>
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @param e The exception to be wrapped in a SAXException.
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public SAXException (Exception e)
71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    super();
73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    this.exception = e;
74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
78f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Create a new SAXException from an existing exception.
79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * <p>The existing exception will be embedded in the new
81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * one, but the new exception will have its own message.</p>
82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @param message The detail message.
84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @param e The exception to be wrapped in a SAXException.
85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public SAXException (String message, Exception e)
87f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    super(message);
89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    this.exception = e;
90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Return a detail message for this exception.
95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
96f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * <p>If there is an embedded exception, and if the SAXException
97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * has no detail message of its own, this method will return
98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * the detail message from the embedded exception.</p>
99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return The error or warning message.
101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public String getMessage ()
103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    String message = super.getMessage();
105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
106f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    if (message == null && exception != null) {
107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return exception.getMessage();
108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    } else {
109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return message;
110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
113f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
114f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
115f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Return the embedded exception, if any.
116f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
117f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return The embedded exception, or null if there is none.
118f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
119f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public Exception getException ()
120f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
121f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    return exception;
122f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
123f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
124f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
125f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
126f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Override toString to pick up any embedded exception.
127f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *
128f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @return A string representation of this exception.
129f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
130f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public String toString ()
131f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
132f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    if (exception != null) {
133f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return exception.toString();
134f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    } else {
135f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return super.toString();
136f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
137f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
138f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
139f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
140f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
141f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    //////////////////////////////////////////////////////////////////////
142f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    // Internal state.
143f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    //////////////////////////////////////////////////////////////////////
144f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
145f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
146f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
147f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * @serial The embedded exception if tunnelling, or null.
148f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
149f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    private Exception exception;
150f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
151f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
152f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
153f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project// end of SAXException.java
154