1 /*
2 * $Header: /home/cvs/jakarta-commons-sandbox/jelly/src/java/org/apache/commons/jelly/JellyException.java,v 1.9 2002/07/15 16:18:15 werken Exp $
3 * $Revision: 1.9 $
4 * $Date: 2002/07/15 16:18:15 $
5 *
6 * ====================================================================
7 *
8 * The Apache Software License, Version 1.1
9 *
10 * Copyright (c) 1999-2002 The Apache Software Foundation. All rights
11 * reserved.
12 *
13 * Redistribution and use in source and binary forms, with or without
14 * modification, are permitted provided that the following conditions
15 * are met:
16 *
17 * 1. Redistributions of source code must retain the above copyright
18 * notice, this list of conditions and the following disclaimer.
19 *
20 * 2. Redistributions in binary form must reproduce the above copyright
21 * notice, this list of conditions and the following disclaimer in
22 * the documentation and/or other materials provided with the
23 * distribution.
24 *
25 * 3. The end-user documentation included with the redistribution, if
26 * any, must include the following acknowlegement:
27 * "This product includes software developed by the
28 * Apache Software Foundation (http://www.apache.org/)."
29 * Alternately, this acknowlegement may appear in the software itself,
30 * if and wherever such third-party acknowlegements normally appear.
31 *
32 * 4. The names "The Jakarta Project", "Commons", and "Apache Software
33 * Foundation" must not be used to endorse or promote products derived
34 * from this software without prior written permission. For written
35 * permission, please contact apache@apache.org.
36 *
37 * 5. Products derived from this software may not be called "Apache"
38 * nor may "Apache" appear in their names without prior written
39 * permission of the Apache Group.
40 *
41 * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
42 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
43 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
44 * DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
45 * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
46 * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
47 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
48 * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
49 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
50 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
51 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
52 * SUCH DAMAGE.
53 * ====================================================================
54 *
55 * This software consists of voluntary contributions made by many
56 * individuals on behalf of the Apache Software Foundation. For more
57 * information on the Apache Software Foundation, please see
58 * <http://www.apache.org/>.
59 *
60 * $Id: JellyException.java,v 1.9 2002/07/15 16:18:15 werken Exp $
61 */
62
63 package org.apache.commons.jelly;
64
65 import java.io.PrintStream;
66 import java.io.PrintWriter;
67
68 /***
69 * <p><code>JellyException</code> is the root of all Jelly exceptions.</p>
70 *
71 * @author <a href="mailto:jstrachan@apache.org">James Strachan</a>
72 * @version $Revision: 1.9 $
73 */
74
75 public class JellyException extends Exception {
76
77 /*** the underlying cause of the exception */
78 private Throwable cause;
79
80 /*** the Jelly file which caused the problem */
81 private String fileName;
82
83 /*** the tag name which caused the problem */
84 private String elementName;
85
86 /*** the line number in the script of the error */
87 private int lineNumber = -1;
88
89 /*** the column number in the script of the error */
90 private int columnNumber = -1;
91
92 public JellyException() {
93 }
94
95 public JellyException(String message) {
96 super(message);
97 }
98
99 public JellyException(String message, Throwable cause) {
100 super(message);
101 this.cause = cause;
102 }
103
104 public JellyException(Throwable cause) {
105 super(cause.getLocalizedMessage());
106 this.cause = cause;
107 }
108
109 public JellyException(Throwable cause, String fileName, String elementName, int columnNumber, int lineNumber) {
110 this(cause.getLocalizedMessage(), cause, fileName, elementName, columnNumber, lineNumber);
111 }
112
113 public JellyException(String reason, Throwable cause, String fileName, String elementName, int columnNumber, int lineNumber) {
114 super( (reason==null?cause.getClass().getName():reason) );
115 this.cause = cause;
116 this.fileName = fileName;
117 this.elementName = elementName;
118 this.columnNumber = columnNumber;
119 this.lineNumber = lineNumber;
120 }
121
122 public JellyException(String reason, String fileName, String elementName, int columnNumber, int lineNumber) {
123 super(reason);
124 this.fileName = fileName;
125 this.elementName = elementName;
126 this.columnNumber = columnNumber;
127 this.lineNumber = lineNumber;
128 }
129
130 public Throwable getCause() {
131 return cause;
132 }
133
134
135 /***
136 * @return the line number of the tag
137 */
138 public int getLineNumber() {
139 return lineNumber;
140 }
141
142 /***
143 * Sets the line number of the tag
144 */
145 public void setLineNumber(int lineNumber) {
146 this.lineNumber = lineNumber;
147 }
148
149 /***
150 * @return the column number of the tag
151 */
152 public int getColumnNumber() {
153 return columnNumber;
154 }
155
156 /***
157 * Sets the column number of the tag
158 */
159 public void setColumnNumber(int columnNumber) {
160 this.columnNumber = columnNumber;
161 }
162
163 /***
164 * @return the Jelly file which caused the problem
165 */
166 public String getFileName() {
167 return fileName;
168 }
169
170 /***
171 * Sets the Jelly file which caused the problem
172 */
173 public void setFileName(String fileName) {
174 this.fileName = fileName;
175 }
176
177
178 /***
179 * @return the element name which caused the problem
180 */
181 public String getElementName() {
182 return elementName;
183 }
184
185 /***
186 * Sets the element name which caused the problem
187 */
188 public void setElementName(String elementName) {
189 this.elementName = elementName;
190 }
191
192
193 public String getMessage() {
194 return super.getMessage() + " File: " + fileName + " At tag <" + elementName + ">: line: "
195 + lineNumber + " column: " + columnNumber;
196 }
197
198 public String getReason() {
199 return super.getMessage();
200 }
201
202 // #### overload the printStackTrace methods...
203 public void printStackTrace(PrintWriter s) {
204 super.printStackTrace(s);
205 if (cause != null) {
206 s.println("Root cause");
207 cause.printStackTrace(s);
208 }
209 }
210
211 public void printStackTrace(PrintStream s) {
212 super.printStackTrace(s);
213 if (cause != null) {
214 s.println("Root cause");
215 cause.printStackTrace(s);
216 }
217 }
218
219 /*
220 public void printStackTrace() {
221 super.printStackTrace();
222 if ( cause != null ) {
223 System.err.println("Root cause");
224 cause.printStackTrace();
225 }
226 }
227 */
228 }
This page was automatically generated by Maven