KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jaxen > saxpath > SAXPathException


1 /*
2  * $Header: /home/projects/jaxen/scm/jaxen/src/java/main/org/jaxen/saxpath/SAXPathException.java,v 1.10 2005/06/21 12:33:13 elharo Exp $
3  * $Revision: 1.10 $
4  * $Date: 2005/06/21 12:33:13 $
5  *
6  * ====================================================================
7  *
8  * Copyright (C) 2000-2002 bob mcwhirter & James Strachan.
9  * All rights reserved.
10  *
11  * Redistribution and use in source and binary forms, with or without
12  * modification, are permitted provided that the following conditions
13  * are met:
14  *
15  * 1. Redistributions of source code must retain the above copyright
16  * notice, this list of conditions, and the following disclaimer.
17  *
18  * 2. Redistributions in binary form must reproduce the above copyright
19  * notice, this list of conditions, and the disclaimer that follows
20  * these conditions in the documentation and/or other materials
21  * provided with the distribution.
22  *
23  * 3. The name "Jaxen" must not be used to endorse or promote products
24  * derived from this software without prior written permission. For
25  * written permission, please contact license@jaxen.org.
26  *
27  * 4. Products derived from this software may not be called "Jaxen", nor
28  * may "Jaxen" appear in their name, without prior written permission
29  * from the Jaxen Project Management (pm@jaxen.org).
30  *
31  * In addition, we request (but do not require) that you include in the
32  * end-user documentation provided with the redistribution and/or in the
33  * software itself an acknowledgement equivalent to the following:
34  * "This product includes software developed by the
35  * Jaxen Project (http://www.jaxen.org/)."
36  * Alternatively, the acknowledgment may be graphical using the logos
37  * available at http://www.jaxen.org/
38  *
39  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
40  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
41  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
42  * DISCLAIMED. IN NO EVENT SHALL THE Jaxen AUTHORS OR THE PROJECT
43  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
44  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
45  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
46  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
47  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
48  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
49  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
50  * SUCH DAMAGE.
51  *
52  * ====================================================================
53  * This software consists of voluntary contributions made by many
54  * individuals on behalf of the Jaxen Project and was originally
55  * created by bob mcwhirter <bob@werken.com> and
56  * James Strachan <jstrachan@apache.org>. For more information on the
57  * Jaxen Project, please see <http://www.jaxen.org/>.
58  *
59  * $Id: SAXPathException.java,v 1.10 2005/06/21 12:33:13 elharo Exp $
60  */

61
62 package org.jaxen.saxpath;
63
64 import java.io.PrintStream JavaDoc;
65 import java.io.PrintWriter JavaDoc;
66
67 /** Base of all SAXPath exceptions.
68  *
69  * @author bob mcwhirter (bob@werken.com)
70  */

71 public class SAXPathException extends Exception JavaDoc
72 {
73     
74     static double javaVersion = 1.4;
75     
76     static {
77         try {
78             String JavaDoc versionString = System.getProperty("java.version");
79             versionString = versionString.substring(0, 3);
80             javaVersion = Double.valueOf(versionString).doubleValue();
81         }
82         catch (Exception JavaDoc ex) {
83             // The version string format changed so presumably it's
84
// 1.4 or later.
85
}
86     }
87     
88     /** Create a new SAXPathException with a given message.
89      *
90      * @param message the error message
91      */

92     public SAXPathException(String JavaDoc message)
93     {
94         super( message );
95     }
96
97     /** Create a new SAXPathException based on another exception
98      *
99      * @param cause the error source
100      */

101     public SAXPathException(Throwable JavaDoc cause)
102     {
103         super ( cause.getMessage() );
104         initCause(cause);
105     }
106
107     /**
108      * Create a new SAXPathException with the specified detail message
109      * and root cause.
110      *
111      * @param message the detail message
112      * @param cause the cause of this exception
113      */

114     public SAXPathException(String JavaDoc message, Throwable JavaDoc cause) {
115         super( message );
116         initCause(cause);
117     }
118     
119     
120     private Throwable JavaDoc cause;
121     private boolean causeSet = false;
122
123     /**
124      * Returns the exception that caused this exception.
125      * This is necessary to implement Java 1.4 chained exception
126      * functionality in a Java 1.3-compatible way.
127      *
128      * @return the exception that caused this exception
129      */

130     public Throwable JavaDoc getCause() {
131         return cause;
132     }
133     
134
135     /**
136      * Sets the exception that caused this exception.
137      * This is necessary to implement Java 1.4 chained exception
138      * functionality in a Java 1.3-compatible way.
139      *
140      * @param cause the exception wrapped in this runtime exception
141      *
142      * @return this exception
143      */

144     public Throwable JavaDoc initCause(Throwable JavaDoc cause) {
145         if (causeSet) throw new IllegalStateException JavaDoc("Cause cannot be reset");
146         if (cause == this) throw new IllegalArgumentException JavaDoc("Exception cannot be its own cause");
147         causeSet = true;
148         this.cause = cause;
149         return this;
150     }
151
152     /** Print this exception's stack trace, followed by the
153      * source exception's trace, if any.
154      *
155      * @param s the stream on which to print the stack trace
156      */

157     public void printStackTrace ( PrintStream JavaDoc s )
158     {
159         super.printStackTrace ( s );
160         if (javaVersion < 1.4 && getCause() != null) {
161             s.print( "Caused by: " );
162             getCause().printStackTrace( s );
163         }
164     }
165
166     /** Print this exception's stack trace, followed by the
167      * source exception's stack trace, if any.
168      *
169      * @param s the writer on which to print the stack trace
170      */

171     public void printStackTrace ( PrintWriter JavaDoc s )
172     {
173         super.printStackTrace( s );
174         if (javaVersion < 1.4 && getCause() != null) {
175             s.print( "Caused by: " );
176             getCause().printStackTrace( s );
177         }
178     }
179
180 }
181
Popular Tags