KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > net > sourceforge > ejosa > piggybank > presentation > enhydra > ErrorHandler


1 /**
2  * Title: OpenUSS - Open Source University Support System
3  * My Piggy Bank Example
4  * Description: Enhydra Presentation Object
5  * Copyright: Copyright (c) 2003 by B. Lofi Dewanto, T. Menzel
6  * Company: University of Muenster, HTWK Leipzig
7  * @author B. Lofi Dewanto, T. Menzel
8  * @version 1.1
9  */

10 package net.sourceforge.ejosa.piggybank.presentation.enhydra;
11
12 import com.lutris.appserver.server.*;
13 import com.lutris.appserver.server.httpPresentation.*;
14
15 import com.lutris.logging.*;
16
17 import java.io.*;
18
19 import java.text.*;
20
21 import java.util.*;
22
23 import org.openuss.utility.*;
24
25 import org.w3c.dom.*;
26 import org.w3c.dom.html.*;
27
28
29 /**
30  * Class to handle exceptions not caught anywhere else in the
31  * framework of our application
32  *
33  * @author B. Lofi Dewanto, T. Menzel
34  * @version 1.1
35  */

36 public class ErrorHandler implements HttpPresentation {
37     // Page width
38
private static int PAGE_WIDTH = 50;
39
40     /**
41      * Handling the error and special handling for FilePresentationException.
42      * @author B. Lofi Dewanto
43      */

44     public void run(HttpPresentationComms comms)
45              throws HttpPresentationException {
46         // Check for exception
47
if (comms.exception != null) {
48             // --- Check for file not found exeception ---
49
// This only happens if a html file has many links on
50
// it and try to get the file from the server...
51
if (comms.exception instanceof FilePresentationException) {
52                 // Do nothing
53
} else {
54                 // --- Handle the rest of the error ---
55
// Create the error page
56
ErrorHTML errorPage = (ErrorHTML) comms.xmlcFactory.create(
57                                               ErrorHTML.class);
58
59                 StringWriter stringWriter = new StringWriter();
60                 comms.exception.printStackTrace(new PrintWriter(stringWriter));
61
62                 LogChannel logChannel = Enhydra.getLogChannel();
63
64                 // Use "ERROR" when going into release mode
65
// int level = logChannel.getLevel("ERROR");
66
int level = logChannel.getLevel("DEBUG");
67
68                 logChannel.write(level, "EJOSA error = ");
69                 logChannel.write(level, stringWriter.toString());
70                 logChannel.write(level,
71                                  "EJOSA caught an exception - " +
72                                  comms.exception.toString(), comms.exception);
73
74                 System.out.println(comms.exception);
75
76                 // Text message
77
Element elementTextErrorMessaqeFormatted =
78                         EnhydraPresentationUtility.formatTextToHtml(
79                                 comms.exception.getMessage(), errorPage,
80                                 PAGE_WIDTH);
81
82                 Element elementTextErrorMessaqe = errorPage.getElementErrorMessage();
83                 elementTextErrorMessaqe.removeAttribute("id");
84
85                 Node deleteNode = elementTextErrorMessaqe.getFirstChild();
86                 elementTextErrorMessaqe.removeChild(deleteNode);
87                 elementTextErrorMessaqe.appendChild(
88                         elementTextErrorMessaqeFormatted);
89
90                 // Stack trace message
91
Element elementStackTraceFormatted = EnhydraPresentationUtility.formatTextToHtml(
92                                                              stringWriter.toString(),
93                                                              errorPage,
94                                                              PAGE_WIDTH);
95
96                 Element elementTextStackTrace = errorPage.getElementStackTrace();
97                 elementTextStackTrace.removeAttribute("id");
98
99                 deleteNode = elementTextStackTrace.getFirstChild();
100                 elementTextStackTrace.removeChild(deleteNode);
101                 elementTextStackTrace.appendChild(elementStackTraceFormatted);
102
103
104                 // Write this out
105
comms.response.writeHTML(errorPage.toDocument());
106             }
107         }
108     }
109 }
Popular Tags