%line | %branch | |||||||||
---|---|---|---|---|---|---|---|---|---|---|
org.apache.commons.jelly.JellyException |
|
|
1 | /* |
|
2 | * Copyright 2002,2004 The Apache Software Foundation. |
|
3 | * |
|
4 | * Licensed under the Apache License, Version 2.0 (the "License"); |
|
5 | * you may not use this file except in compliance with the License. |
|
6 | * You may obtain a copy of the License at |
|
7 | * |
|
8 | * http://www.apache.org/licenses/LICENSE-2.0 |
|
9 | * |
|
10 | * Unless required by applicable law or agreed to in writing, software |
|
11 | * distributed under the License is distributed on an "AS IS" BASIS, |
|
12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
|
13 | * See the License for the specific language governing permissions and |
|
14 | * limitations under the License. |
|
15 | */ |
|
16 | ||
17 | package org.apache.commons.jelly; |
|
18 | ||
19 | import java.io.PrintStream; |
|
20 | import java.io.PrintWriter; |
|
21 | ||
22 | /** |
|
23 | * <p><code>JellyException</code> is the root of all Jelly exceptions.</p> |
|
24 | * |
|
25 | * @author <a href="mailto:jstrachan@apache.org">James Strachan</a> |
|
26 | * @version $Revision: 1.17 $ |
|
27 | */ |
|
28 | ||
29 | public class JellyException extends Exception implements LocationAware { |
|
30 | ||
31 | /** the underlying cause of the exception */ |
|
32 | private Throwable cause; |
|
33 | ||
34 | /** the Jelly file which caused the problem */ |
|
35 | private String fileName; |
|
36 | ||
37 | /** the tag name which caused the problem */ |
|
38 | private String elementName; |
|
39 | ||
40 | /** the line number in the script of the error */ |
|
41 | 74 | private int lineNumber = -1; |
42 | ||
43 | /** the column number in the script of the error */ |
|
44 | 74 | private int columnNumber = -1; |
45 | ||
46 | 0 | public JellyException() { |
47 | 0 | } |
48 | ||
49 | public JellyException(String message) { |
|
50 | 62 | super(message); |
51 | 62 | } |
52 | ||
53 | public JellyException(String message, Throwable cause) { |
|
54 | 12 | super(message); |
55 | 12 | this.cause = cause; |
56 | 12 | } |
57 | ||
58 | public JellyException(Throwable cause) { |
|
59 | 0 | super(cause.getLocalizedMessage()); |
60 | 0 | this.cause = cause; |
61 | 0 | } |
62 | ||
63 | public JellyException(Throwable cause, String fileName, String elementName, int columnNumber, class="keyword">int lineNumber) { |
|
64 | 0 | this(cause.getLocalizedMessage(), cause, fileName, elementName, columnNumber, lineNumber); |
65 | 0 | } |
66 | ||
67 | public JellyException(String reason, Throwable cause, String fileName, String elementName, int columnNumber, class="keyword">int lineNumber) { |
|
68 | 0 | super( (reason==null?cause.getClass().getName():reason) ); |
69 | 0 | this.cause = cause; |
70 | 0 | this.fileName = fileName; |
71 | 0 | this.elementName = elementName; |
72 | 0 | this.columnNumber = columnNumber; |
73 | 0 | this.lineNumber = lineNumber; |
74 | 0 | } |
75 | ||
76 | public JellyException(String reason, String fileName, String elementName, int columnNumber, class="keyword">int lineNumber) { |
|
77 | 0 | super(reason); |
78 | 0 | this.fileName = fileName; |
79 | 0 | this.elementName = elementName; |
80 | 0 | this.columnNumber = columnNumber; |
81 | 0 | this.lineNumber = lineNumber; |
82 | 0 | } |
83 | ||
84 | public Throwable getCause() { |
|
85 | 8 | return cause; |
86 | } |
|
87 | ||
88 | ||
89 | /** |
|
90 | * @return the line number of the tag |
|
91 | */ |
|
92 | public int getLineNumber() { |
|
93 | 98 | return lineNumber; |
94 | } |
|
95 | ||
96 | /** |
|
97 | * Sets the line number of the tag |
|
98 | */ |
|
99 | public void setLineNumber(int lineNumber) { |
|
100 | 52 | this.lineNumber = lineNumber; |
101 | 52 | } |
102 | ||
103 | /** |
|
104 | * @return the column number of the tag |
|
105 | */ |
|
106 | public int getColumnNumber() { |
|
107 | 0 | return columnNumber; |
108 | } |
|
109 | ||
110 | /** |
|
111 | * Sets the column number of the tag |
|
112 | */ |
|
113 | public void setColumnNumber(int columnNumber) { |
|
114 | 52 | this.columnNumber = columnNumber; |
115 | 52 | } |
116 | ||
117 | /** |
|
118 | * @return the Jelly file which caused the problem |
|
119 | */ |
|
120 | public String getFileName() { |
|
121 | 98 | return fileName; |
122 | } |
|
123 | ||
124 | /** |
|
125 | * Sets the Jelly file which caused the problem |
|
126 | */ |
|
127 | public void setFileName(String fileName) { |
|
128 | 52 | this.fileName = fileName; |
129 | 52 | } |
130 | ||
131 | ||
132 | /** |
|
133 | * @return the element name which caused the problem |
|
134 | */ |
|
135 | public String getElementName() { |
|
136 | 98 | return elementName; |
137 | } |
|
138 | ||
139 | /** |
|
140 | * Sets the element name which caused the problem |
|
141 | */ |
|
142 | public void setElementName(String elementName) { |
|
143 | 52 | this.elementName = elementName; |
144 | 52 | } |
145 | ||
146 | ||
147 | public String getMessage() { |
|
148 | 12 | return fileName + ":" + lineNumber + ":" + columnNumber + ": <" + elementName + "> " + getReason(); |
149 | } |
|
150 | ||
151 | public String getReason() { |
|
152 | 12 | return super.getMessage(); |
153 | } |
|
154 | ||
155 | // #### overload the printStackTrace methods... |
|
156 | public void printStackTrace(PrintWriter s) { |
|
157 | 0 | synchronized (s) { |
158 | 0 | super.printStackTrace(s); |
159 | 0 | if (cause != null) { |
160 | 0 | s.println("Root cause"); |
161 | 0 | cause.printStackTrace(s); |
162 | } |
|
163 | 0 | } |
164 | 0 | } |
165 | ||
166 | public void printStackTrace(PrintStream s) { |
|
167 | 0 | synchronized (s) { |
168 | 0 | super.printStackTrace(s); |
169 | 0 | if (cause != null) { |
170 | 0 | s.println("Root cause"); |
171 | 0 | cause.printStackTrace(s); |
172 | } |
|
173 | 0 | } |
174 | 0 | } |
175 | ||
176 | public void printStackTrace() { |
|
177 | 0 | super.printStackTrace(); |
178 | 0 | if (cause != null) { |
179 | 0 | System.out.println("Root cause"); |
180 | 0 | cause.printStackTrace(); |
181 | } |
|
182 | 0 | } |
183 | ||
184 | } |
This report is generated by jcoverage, Maven and Maven JCoverage Plugin. |