KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > displaytag > exception > BaseNestableJspTagException


1 /**
2  * Licensed under the Artistic License; you may not use this file
3  * except in compliance with the License.
4  * You may obtain a copy of the License at
5  *
6  * http://displaytag.sourceforge.net/license.html
7  *
8  * THIS PACKAGE IS PROVIDED "AS IS" AND WITHOUT ANY EXPRESS OR
9  * IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
10  * WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
11  */

12 package org.displaytag.exception;
13
14 import javax.servlet.jsp.JspTagException JavaDoc;
15
16 import org.apache.commons.logging.Log;
17 import org.apache.commons.logging.LogFactory;
18 import org.displaytag.Messages;
19
20
21 /**
22  * Base exception: extendes JspTagException providing logging and exception nesting functionalities.
23  * @author Fabrizio Giustina
24  * @version $Revision: 720 $ ($Author: fgiust $)
25  */

26 public abstract class BaseNestableJspTagException extends JspTagException JavaDoc
27 {
28
29     /**
30      * Class where the exception has been generated.
31      */

32     private final Class JavaDoc sourceClass;
33
34     /**
35      * previous exception.
36      */

37     private Throwable JavaDoc nestedException;
38
39     /**
40      * Instantiate a new BaseNestableJspTagException.
41      * @param source Class where the exception is generated
42      * @param message message
43      */

44     public BaseNestableJspTagException(Class JavaDoc source, String JavaDoc message)
45     {
46         super(message);
47         this.sourceClass = source;
48
49         // log exception
50
Log log = LogFactory.getLog(source);
51
52         // choose appropriate logging method
53
if (getSeverity() == SeverityEnum.DEBUG)
54         {
55             log.debug(toString());
56         }
57         else if (getSeverity() == SeverityEnum.INFO)
58         {
59             log.info(toString());
60         }
61         else if (getSeverity() == SeverityEnum.WARN)
62         {
63             log.warn(toString());
64         }
65         else
66         {
67             // error - default
68
log.error(toString());
69         }
70
71     }
72
73     /**
74      * Instantiate a new BaseNestableJspTagException.
75      * @param source Class where the exception is generated
76      * @param message message
77      * @param cause previous Exception
78      */

79     public BaseNestableJspTagException(Class JavaDoc source, String JavaDoc message, Throwable JavaDoc cause)
80     {
81         super(message);
82         this.sourceClass = source;
83         this.nestedException = cause;
84
85         // log exception
86
Log log = LogFactory.getLog(source);
87
88         // choose appropriate logging method
89
if (getSeverity() == SeverityEnum.DEBUG)
90         {
91             log.debug(toString(), cause);
92         }
93         else if (getSeverity() == SeverityEnum.INFO)
94         {
95             log.info(toString(), cause);
96         }
97         else if (getSeverity() == SeverityEnum.WARN)
98         {
99             log.warn(toString(), cause);
100         }
101         else
102         {
103             // error - default
104
log.error(toString(), cause);
105         }
106
107     }
108
109     /**
110      * returns the previous exception.
111      * @return Throwable previous exception
112      */

113     public Throwable JavaDoc getCause()
114     {
115         return this.nestedException;
116     }
117
118     /**
119      * basic toString. Returns the message plus the previous exception (if a previous exception exists).
120      * @return String
121      */

122     public String JavaDoc toString()
123     {
124         String JavaDoc className = this.sourceClass.getName();
125         className = className.substring(className.lastIndexOf(".")); //$NON-NLS-1$
126

127         if (this.nestedException == null)
128         {
129             return Messages.getString("NestableException.msg", //$NON-NLS-1$
130
new Object JavaDoc[]{className, getMessage()});
131         }
132
133         return Messages.getString("NestableException.msgcause", //$NON-NLS-1$
134
new Object JavaDoc[]{className, getMessage(), this.nestedException.getMessage()});
135     }
136
137     /**
138      * subclasses need to define the getSeverity method to provide correct severity for logging.
139      * @return SeverityEnum exception severity
140      * @see org.displaytag.exception.SeverityEnum
141      */

142     public abstract SeverityEnum getSeverity();
143
144 }
Popular Tags