KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > nu > xom > xinclude > XPointerException


1 /* Copyright 2003, 2004 Elliotte Rusty Harold
2    
3    This library is free software; you can redistribute it and/or modify
4    it under the terms of version 2.1 of the GNU Lesser General Public
5    License as published by the Free Software Foundation.
6    
7    This library is distributed in the hope that it will be useful,
8    but WITHOUT ANY WARRANTY; without even the implied warranty of
9    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
10    GNU Lesser General Public License for more details.
11    
12    You should have received a copy of the GNU Lesser General Public
13    License along with this library; if not, write to the
14    Free Software Foundation, Inc., 59 Temple Place, Suite 330,
15    Boston, MA 02111-1307 USA
16    
17    You can contact Elliotte Rusty Harold by sending e-mail to
18    elharo@metalab.unc.edu. Please include the word "XOM" in the
19    subject line. The XOM home page is located at http://www.xom.nu/
20 */

21
22 package nu.xom.xinclude;
23
24 /**
25  * <p>
26  * Indicates an error as defined by the XPoiner specification.
27  * </p>
28  *
29  * @author Elliotte Rusty Harold
30  * @version 1.0
31  */

32 class XPointerException extends Exception JavaDoc {
33
34     private Throwable JavaDoc cause = null;
35
36     /**
37      * <p>
38      * Constructs an <code>XPointerException</code> with the
39      * specified detail message.
40      * </p>
41      *
42      * @param message a string indicating the specific problem
43      */

44     XPointerException(String JavaDoc message) {
45         super(message);
46     }
47
48     
49     /**
50      * <p>
51      * Constructs an <code>XPointerException</code> with the
52      * specified detail message and root cause.
53      * </p>
54      *
55      * @param message a string indicating the specific problem
56      * @param cause the initial exception which caused this
57      * <code>XPointerException</code>
58      */

59     XPointerException(String JavaDoc message, Throwable JavaDoc cause) {
60         super(message);
61         initCause(cause);
62     }
63
64     
65     /**
66      * <p>
67      * When an <code>IOException</code>,
68      * <code>MalformedURLException</code>, or other generic
69      * exception is thrown while processing an XML document
70      * for XPointer, it is customarily replaced
71      * by some form of <code>XPointerSyntaxException</code>.
72      * This method allows you to retrieve the original exception.
73      * It returns null if no such exception caused this
74      * <code>XPointerSyntaxException</code>.
75      *</p>
76      *
77      * @return the underlying exception which
78      * caused this XPointerSyntaxException to be thrown
79      */

80     public Throwable JavaDoc getCause() {
81         return this.cause;
82     }
83
84     
85     // null is insufficient for detecting an uninitialized cause.
86
// The cause may be set to null which may not then be reset.
87
private boolean causeSet = false;
88
89     
90     /**
91      * <p>
92      * When an <code>IOException</code>,
93      * <code>MalformedURLException</code>, or other generic exception
94      * is thrown while processing an XML document
95      * for XPointers, it is customarily replaced
96      * by some form of <code>XPointerException</code>.
97      * This method allows you to store the original exception.
98      * </p>
99      *
100      * @param cause the root cause of this exception
101      *
102      * @return this <code>XPointerException</code>
103      *
104      * @throws IllegalArgumentException if the cause is this exception
105      * (An exception cannot be its own cause.)
106      * @throws IllegalStateException if this method is called twice
107      */

108     public Throwable JavaDoc initCause(Throwable JavaDoc cause) {
109         if (causeSet) {
110             throw new IllegalStateException JavaDoc("Can't overwrite cause");
111         }
112         else if (cause == this) {
113             throw new IllegalArgumentException JavaDoc("Self-causation not permitted");
114         }
115         else this.cause = cause;
116         causeSet = true;
117         return this;
118     }
119
120     
121 }
122
Popular Tags