[Yanel-commits] rev 35149 - public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet

michi at wyona.com michi at wyona.com
Thu Apr 10 01:56:21 CEST 2008


Author: michi
Date: 2008-04-10 01:56:20 +0200 (Thu, 10 Apr 2008)
New Revision: 35149

Modified:
   public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
Log:
404 refactored

Modified: public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
===================================================================
--- public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java	2008-04-09 23:15:51 UTC (rev 35148)
+++ public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java	2008-04-09 23:56:20 UTC (rev 35149)
@@ -413,15 +413,7 @@
                         try {
                             view = ((ViewableV1) res).getView(request, viewId);
                         } catch(org.wyona.yarep.core.NoSuchNodeException e) {
-                            // TODO: Log all 404 within a dedicated file (with client info attached) such that an admin can react to it ...
-                            String message = "No such node exception: " + e;
-                            log.warn(e);
-                            //log.error(e.getMessage(), e);
-                            Element exceptionElement = (Element) rootElement.appendChild(doc.createElementNS(NAMESPACE, "exception"));
-                            exceptionElement.appendChild(doc.createTextNode(message));
-                            exceptionElement.setAttributeNS(NAMESPACE, "status", "404");
-                            response.setStatus(javax.servlet.http.HttpServletResponse.SC_NOT_FOUND);
-                            setYanelOutput(request, response, doc);
+                            do404(request, response, doc, e.getMessage());
                             return;
                         } catch(Exception e) {
                             log.error(e.getMessage(), e);
@@ -438,7 +430,10 @@
                         if (log.isDebugEnabled()) log.debug("Resource is viewable V2");
 
                         if (!((ViewableV2) res).exists()) {
-                            log.warn("No such resource: " + res.getPath() + " (TODO: Send 404!)");
+                            //log.warn("No such ViewableV2 resource: " + res.getPath());
+                            //log.warn("TODO: It seems like many ViewableV2 resources are not implementing exists() properly!");
+                            //do404(request, response, doc, res.getPath());
+                            //return;
                         }
 
                         String viewId = request.getParameter(VIEW_ID_PARAM_NAME);
@@ -469,27 +464,18 @@
                                 if (workflowable.isLive()) {
                                     view = workflowable.getLiveView(viewId);
                                 } else {
-                                    String message = "This document has not been published yet.";
+                                    String message = "This document has not been published yet: " + res.getPath();
                                     log.warn(message);
-                                    Element exceptionElement = (Element) rootElement.appendChild(doc.createElementNS(NAMESPACE, "exception"));
-                                    exceptionElement.appendChild(doc.createTextNode(message));
-                                    exceptionElement.setAttributeNS(NAMESPACE, "status", "404");
-                                    response.setStatus(javax.servlet.http.HttpServletResponse.SC_NOT_FOUND);
-                                    setYanelOutput(request, response, doc);
+                                    do404(request, response, doc, message);
                                     return;
                                 }
                             } else {
                                 view = ((ViewableV2) res).getView(viewId);
                             }
                         } catch(org.wyona.yarep.core.NoSuchNodeException e) {
-                            // TODO: Log all 404 within a dedicated file (with client info attached) such that an admin can react to it ...
-                            String message = "No such node exception: " + e;
-                            log.warn(e);
-                            Element exceptionElement = (Element) rootElement.appendChild(doc.createElementNS(NAMESPACE, "exception"));
-                            exceptionElement.appendChild(doc.createTextNode(message));
-                            exceptionElement.setAttributeNS(NAMESPACE, "status", "404");
-                            response.setStatus(javax.servlet.http.HttpServletResponse.SC_NOT_FOUND);
-                            setYanelOutput(request, response, doc);
+                            String message = "" + e;
+                            log.warn(message);
+                            do404(request, response, doc, message);
                             return;
                         }
                     } else {
@@ -576,16 +562,9 @@
                         Element resourceIsNullElement = (Element) rootElement.appendChild(doc.createElement("resource-is-null"));
                 }
             } catch(org.wyona.yarep.core.NoSuchNodeException e) {
-                // TODO: Log all 404 within a dedicated file (with client info attached) such that an admin can react to it ...
-                String message = "No such node exception: " + e;
+                String message = "" + e;
                 log.warn(e, e);
-                // Show the stack trace
-                //log.warn(e.getMessage(), e);
-                Element exceptionElement = (Element) rootElement.appendChild(doc.createElementNS(NAMESPACE, "exception"));
-                exceptionElement.appendChild(doc.createTextNode(message));
-                exceptionElement.setAttributeNS(NAMESPACE, "status", "404");
-                response.setStatus(javax.servlet.http.HttpServletResponse.SC_NOT_FOUND);
-                setYanelOutput(request, response, doc);
+                do404(request, response, doc, message);
                 return;
             } catch(Exception e) {
                 log.error(e.getMessage(), e);
@@ -2472,4 +2451,19 @@
         e.printStackTrace(new java.io.PrintWriter(sw));
         return sw.toString();
     }
+
+    /**
+     *
+     */
+    private void do404(HttpServletRequest request, HttpServletResponse response, Document doc, String exceptionMessage) throws ServletException {
+        // TODO: Log all 404 within a dedicated file (with client info attached) such that an admin can react to it ...
+        String message = "No such node exception: " + exceptionMessage;
+        log.warn(message);
+        Element exceptionElement = (Element) doc.getDocumentElement().appendChild(doc.createElementNS(NAMESPACE, "exception"));
+        exceptionElement.appendChild(doc.createTextNode(message));
+        exceptionElement.setAttributeNS(NAMESPACE, "status", "404");
+        response.setStatus(javax.servlet.http.HttpServletResponse.SC_NOT_FOUND);
+        setYanelOutput(request, response, doc);
+        return;
+    }
 }



More information about the Yanel-commits mailing list