KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > jaxen > JaxenRuntimeException


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

66
67 /**
68  * This class exists to wrap Jaxen exceptions that otherwise wouldn't be propagated
69  * up through the axis iterators.
70  */

71 public class JaxenRuntimeException extends RuntimeException JavaDoc
72 {
73     private Throwable JavaDoc cause;
74     private boolean causeSet = false;
75
76     /**
77      * Create a new JaxenRuntimeException.
78      *
79      * @param cause the nested exception that's wrapped
80      * inside this exception
81      */

82     public JaxenRuntimeException(Throwable JavaDoc cause)
83     {
84         super(cause.getMessage());
85         initCause(cause);
86     }
87
88     /**
89      * Create a new JaxenRuntimeException.
90      *
91      * @param message the detail message
92      */

93     public JaxenRuntimeException(String JavaDoc message) {
94         super(message);
95     }
96
97     /**
98      * Returns the exception that caused this exception.
99      * This is necessary to implement Java 1.4 chained exception
100      * functionality in a Java 1.3-compatible way.
101      *
102      * @return the exception that caused this exception
103      */

104     public Throwable JavaDoc getCause() {
105         return cause;
106     }
107     
108
109     /**
110      * Sets the exception that caused this exception.
111      * This is necessary to implement Java 1.4 chained exception
112      * functionality in a Java 1.3-compatible way.
113      *
114      * @param cause the exception wrapped in this runtime exception
115      *
116      * @return this exception
117      */

118     public Throwable JavaDoc initCause(Throwable JavaDoc cause) {
119         if (causeSet) throw new IllegalStateException JavaDoc("Cause cannot be reset");
120         if (cause == this) throw new IllegalArgumentException JavaDoc("Exception cannot be its own cause");
121         causeSet = true;
122         this.cause = cause;
123         return this;
124     }
125
126     /** Print this exception's stack trace, followed by the
127      * source exception's trace, if any.
128      *
129      * @param s the stream on which to print the stack trace
130      */

131     public void printStackTrace ( PrintStream JavaDoc s )
132     {
133         super.printStackTrace ( s );
134         if (JaxenException.javaVersion < 1.4 && getCause() != null) {
135             s.print( "Caused by: " );
136             getCause().printStackTrace( s );
137         }
138     }
139
140     /** Print this exception's stack trace, followed by the
141      * source exception's stack trace, if any.
142      *
143      * @param s the writer on which to print the stack trace
144      */

145     public void printStackTrace ( PrintWriter JavaDoc s )
146     {
147         super.printStackTrace( s );
148         if (JaxenException.javaVersion < 1.4 && getCause() != null) {
149             s.print( "Caused by: " );
150             getCause().printStackTrace( s );
151         }
152     }
153     
154 }
155
Popular Tags