KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > dinamica > ErrorHandler


1 package dinamica;
2
3 import java.io.PrintWriter JavaDoc;
4 import java.io.StringWriter JavaDoc;
5
6 /**
7  * Transaction module for the general error manager
8  *
9  * <br>
10  * Creation date: jan/13/2004<br>
11  * Last Update: march/1/2005<br>
12  * (c) 2004 Martin Cordova<br>
13  * This code is released under the LGPL license<br>
14  * @author Martin Cordova
15  * */

16 public class ErrorHandler extends GenericTransaction
17 {
18
19     /* (non-Javadoc)
20      * @see dinamica.GenericTransaction#service(dinamica.Recordset)
21      */

22     public int service(Recordset inputParams) throws Throwable JavaDoc
23     {
24
25         //capture referer page
26
String JavaDoc referer = getRequest().getHeader("Referer");
27         getRequest().setAttribute("dinamica.error.referer", referer);
28         getRequest().setAttribute("dinamica.error.context", getRequest().getContextPath());
29         
30         String JavaDoc date = StringUtil.formatDate(new java.util.Date JavaDoc(), "yyyy-MM-dd HH:mm:ss");
31         String JavaDoc key = "javax.servlet.error.exception";
32         Throwable JavaDoc err = (Throwable JavaDoc)getRequest().getAttribute(key);
33         String JavaDoc errUri = (String JavaDoc)getRequest().getAttribute("javax.servlet.error.request_uri");
34         
35         // default log to STDERR
36
if (err!=null)
37             System.err.println("[Exception@" + date + "] " + err.getMessage()
38                     + " context: " + getRequest().getContextPath()
39                     + " uri:" + errUri
40                     + " referer:" + referer);
41         
42         try
43         {
44             int rc = super.service(inputParams);
45
46             // capture stack trace for exceptions
47
// raised by non-Dinamica Actions
48
String JavaDoc trace = (String JavaDoc)getRequest().getAttribute("dinamica.error.stacktrace");
49             if (trace==null)
50             {
51                 //this exception was not raised by dinamica.Controller
52
//use standard J2EE request attributes
53
if (err!=null)
54                 {
55                     //get stack trace
56
StringWriter JavaDoc s = new StringWriter JavaDoc();
57                     PrintWriter JavaDoc errMsg = new PrintWriter JavaDoc(s);
58                     err.printStackTrace(errMsg);
59                     trace = s.toString();
60                     getRequest().setAttribute("dinamica.error.stacktrace", trace);
61                 }
62                     
63             }
64     
65     
66             //get email config
67
String JavaDoc enabled = getConfig().getConfigValue("//mail/enabled");
68     
69             if (enabled.equals("true"))
70             {
71                 String JavaDoc host = getConfig().getConfigValue("//mail/host");
72                 String JavaDoc subject = getConfig().getConfigValue("//mail/subject");
73                 String JavaDoc from = getConfig().getConfigValue("//mail/from");
74                 String JavaDoc fromName = getConfig().getConfigValue("//mail/from-name");;
75                 String JavaDoc to = getConfig().getConfigValue("//mail/to");
76                 String JavaDoc body = getResource("body.txt");
77     
78                 //build message
79
TemplateEngine t = new TemplateEngine(getContext(),getRequest(), body);
80                 t.replaceDefaultValues();
81                 t.replaceLabels();
82                 t.replaceRequestAttributes();
83                 body = t.toString();
84                 
85                 //send email
86
SimpleMail s = new SimpleMail();
87                 s.send(host,from,fromName,to,subject,body);
88                 
89             }
90
91             return rc;
92
93         }
94         catch (Throwable JavaDoc e)
95         {
96             System.err.println("[WARNING@" + date + "] ErrorHandler failed: " + e.getMessage());
97             throw e;
98         }
99         
100     }
101
102 }
103
Popular Tags