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

michi at wyona.com michi at wyona.com
Sun Apr 13 00:04:08 CEST 2008


Author: michi
Date: 2008-04-13 00:04:07 +0200 (Sun, 13 Apr 2008)
New Revision: 35300

Modified:
   public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
Log:
use 404 resource, whereas some TODOs left

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-12 22:02:02 UTC (rev 35299)
+++ public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java	2008-04-12 22:04:07 UTC (rev 35300)
@@ -1847,6 +1847,7 @@
             response.setStatus(javax.servlet.http.HttpServletResponse.SC_NOT_FOUND);
             return;
         } else if (path.indexOf("user-mgmt/list-users.html") >= 0) {
+            log.warn("TODO: Implementation not finished yet!");
         } else if (path.indexOf("about.html") >= 0) {
             response.setStatus(javax.servlet.http.HttpServletResponse.SC_OK);
             StringBuffer sb = new StringBuffer("<html>");
@@ -2478,13 +2479,38 @@
      */
     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;
+        String message = "No such node/resource 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;
+*/
+
+        // TODO: Finish the XML (as it used to be before) and setStatus to 404!
+        try {
+            Realm realm = yanel.getMap().getRealm(request.getServletPath());
+            File pnfResConfigFile = getGlobalResourceConfiguration("404_yanel-rc.xml", realm);
+            ResourceConfiguration rc = new ResourceConfiguration(new java.io.FileInputStream(pnfResConfigFile));
+            String path = getResource(request, response).getPath();
+            Resource pageNotFoundResource = yanel.getResourceManager().getResource(getEnvironment(request, response), realm, path, rc);
+            String viewId = request.getParameter(VIEW_ID_PARAM_NAME);
+            if (request.getParameter("yanel.format") != null) { // backwards compatible
+                viewId = request.getParameter("yanel.format");
+            }
+            View view = ((ViewableV2) pageNotFoundResource).getView(viewId);
+            if (view != null) {
+                if (generateResponse(view, pageNotFoundResource, request, response, getDocument(NAMESPACE, "yanel"), -1, -1) != null) return;
+            }
+            log.error("404 seems to be broken!");
+            return;
+        } catch (Exception e) {
+            log.error(e, e);
+            return;
+        }
     }
 }



More information about the Yanel-commits mailing list