[Yanel-commits] rev 56541 - public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources

michi at wyona.com michi at wyona.com
Sat Feb 5 22:13:47 CET 2011


Author: michi
Date: 2011-02-05 22:13:47 +0100 (Sat, 05 Feb 2011)
New Revision: 56541

Added:
   public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/BasicGenericExceptionHandlerResource.java
Log:
generic exception handler resource added

Added: public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/BasicGenericExceptionHandlerResource.java
===================================================================
--- public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/BasicGenericExceptionHandlerResource.java	                        (rev 0)
+++ public/yanel/trunk/src/impl/java/org/wyona/yanel/impl/resources/BasicGenericExceptionHandlerResource.java	2011-02-05 21:13:47 UTC (rev 56541)
@@ -0,0 +1,81 @@
+/*
+ * Copyright 2011 Wyona
+ */
+
+package org.wyona.yanel.impl.resources;
+
+import org.wyona.yanel.impl.resources.BasicXMLResource;
+
+import org.wyona.commons.xml.XMLHelper;
+
+import java.io.ByteArrayInputStream;
+import java.io.InputStream;
+
+import java.lang.Throwable;
+import java.lang.StackTraceElement;
+
+import org.apache.log4j.Logger;
+
+/**
+ * A generic exception handler.
+ */
+public class BasicGenericExceptionHandlerResource extends BasicXMLResource {
+    private static Logger log = Logger.getLogger(BasicGenericExceptionHandlerResource.class);
+
+    private Exception e;
+
+    /**
+     *
+     */
+    public void setException(Exception e) {
+        this.e = e;
+    }
+
+    /**
+     *
+     */
+    public Exception getException() {
+        return e;
+    }
+
+    /**
+     * Generate XML
+     * @param viewid Ignored.
+     * @see org.wyona.yanel.core.Resource
+     */
+    @Override
+    protected InputStream getContentXML(String viewId) throws Exception {
+        String NAMESPACE = "http://www.wyona.org/yanel/1.0";
+
+        org.w3c.dom.Document doc = XMLHelper.createDocument(NAMESPACE, "yanel");
+
+        org.w3c.dom.Element rootElement = doc.getDocumentElement();
+
+        org.w3c.dom.Element requestElement = doc.createElementNS(NAMESPACE, "request");
+        requestElement.setAttributeNS(NAMESPACE, "servlet-path", getPath());
+        requestElement.setAttributeNS(NAMESPACE, "uri", getPath());
+        rootElement.appendChild(requestElement);
+
+        if (e != null) {
+            log.error(e, e);
+            org.w3c.dom.Element exceptionElement = doc.createElementNS(NAMESPACE, "exception");
+            exceptionElement.setAttributeNS(NAMESPACE, "message", e.getMessage());
+            rootElement.appendChild(exceptionElement);
+            exceptionElement.appendChild(doc.createTextNode(getStackTrace(e)));
+        } else {
+            log.error("No exception has been set!");
+        }
+
+        return XMLHelper.getInputStream(doc, false, true, null);
+    }
+
+    /**
+     * Get stack trace of exception
+     * @param e The exception to handle.
+     */
+    private String getStackTrace(Exception e) {
+        java.io.StringWriter sw = new java.io.StringWriter();
+        e.printStackTrace(new java.io.PrintWriter(sw));
+        return sw.toString();
+    }
+}



More information about the Yanel-commits mailing list