Update of /var/cvs/src/org/mmbase/framework
In directory james.mmbase.org:/tmp/cvs-serv751

Modified Files:
        ErrorRenderer.java 
Log Message:
Refactored ErrorRenderer.Error a bit, for easier reusage


See also: http://cvs.mmbase.org/viewcvs/src/org/mmbase/framework


Index: ErrorRenderer.java
===================================================================
RCS file: /var/cvs/src/org/mmbase/framework/ErrorRenderer.java,v
retrieving revision 1.15
retrieving revision 1.16
diff -u -b -r1.15 -r1.16
--- ErrorRenderer.java  26 Aug 2008 07:48:38 -0000      1.15
+++ ErrorRenderer.java  30 Aug 2008 09:18:16 -0000      1.16
@@ -28,7 +28,7 @@
  * share code.
  *
  * @author Michiel Meeuwissen
- * @version $Id: ErrorRenderer.java,v 1.15 2008/08/26 07:48:38 michiel Exp $
+ * @version $Id: ErrorRenderer.java,v 1.16 2008/08/30 09:18:16 michiel Exp $
  * @since MMBase-1.9
  */
 
@@ -96,16 +96,18 @@
     public static class Error {
         public int status;
         public final Throwable exception;
+        protected String title = null;
+
         public Error(int s, Throwable e) {
             status = s; exception = e;
         }
-        public Writer getErrorReport(Writer msg, final HttpServletRequest 
request, CharTransformer escape) throws IOException {
 
-            String ticket = new Date().toString();
+
+        protected LinkedList<Throwable> getStack() {
             Throwable e = exception;
-            Stack stack = new Stack();
+            LinkedList<Throwable> stack = new LinkedList<Throwable>();
             while (e != null) {
-                stack.push(e);
+                stack.addFirst(e);
                 if (e instanceof NotFoundException) {
                     status = HttpServletResponse.SC_NOT_FOUND;
                 }
@@ -121,6 +123,34 @@
                     e = e.getCause();
                 }
             }
+            return stack;
+        }
+
+        protected String getTitle(Throwable t) {
+            String message = t.getMessage();
+            String title = message;
+            if (title == null) {
+                StackTraceElement el = t.getStackTrace()[0];
+                title = 
t.getClass().getName().substring(t.getClass().getPackage().getName().length() + 
1) + " " + el.getFileName() + ":" + el.getLineNumber();
+            }
+            return title;
+        }
+
+        public String getTitle() {
+            LinkedList<Throwable> stack = getStack();
+            if (stack.isEmpty()) {
+                return "NO EXCEPTION";
+            } else {
+                return getTitle(stack.removeFirst());
+            }
+        }
+
+
+
+        public Writer getErrorReport(Writer msg, final HttpServletRequest 
request, CharTransformer escape) throws IOException {
+            LinkedList<Throwable> stack = getStack();
+            String ticket = new Date().toString();
+
 
             if (request != null) {
                 msg.append("Headers\n----------\n");
@@ -165,15 +195,10 @@
 
             while (! stack.isEmpty()) {
 
-                Throwable t = (Throwable) stack.pop();
+                Throwable t = stack.removeFirst();
                 // add stack stacktraces
                 if (t != null) {
                     String message = t.getMessage();
-                    String title = message;
-                    if (title == null) {
-                        StackTraceElement el = t.getStackTrace()[0];
-                        title = 
t.getClass().getName().substring(t.getClass().getPackage().getName().length() + 
1) + " " + el.getFileName() + ":" + el.getLineNumber();
-                    }
                     msg.append(escape.transform(message)).append("\n");
                     
msg.append(escape.transform(org.mmbase.util.logging.Logging.stackTrace(t)));
                     if (! stack.isEmpty()) {
_______________________________________________
Cvs mailing list
[email protected]
http://lists.mmbase.org/mailman/listinfo/cvs

Reply via email to