[Yanel-dev] YanelServlet delete node patch

Jonathan Addison jon at wyona.com
Tue Oct 30 10:39:51 CET 2007


This is a patch which allows for deleting nodes (except the root node) =

and outputs the status of the deletion as html instead of just returning =

a response code.  After the status has been shown it will redirect back =

to the homepage of the realm.  There used to be a bug for this but I =

can't seem to find it now.

Jonathan
-------------- next part --------------
Index: src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
--- src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java	(revision=
 28244)
+++ src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java	(working =
copy)
@@ -193,11 +193,89 @@
         =

         // Delete node
         String value =3D request.getParameter("yanel.resource.usecase");
+        String backToRealm =3D org.wyona.yanel.core.util.PathUtil.backToRe=
alm(path);
         if (value !=3D null && value.equals("delete")) {
+        =

             log.warn("DEBUG: delete " + path);
-            doDelete(request, response);
-            // TODO: Implement a response
-            return;
+            try {
+                if (path.equals("/") || path.equals("/index.html")) {
+                log.error("Resource '" + resource + "' has interface Modif=
iableV2 not implemented." );
+                    StringBuffer sb =3D new StringBuffer();
+                    sb.append("<?xml version=3D\"1.0\"?>");
+                    sb.append("<html xmlns=3D\"http://www.w3.org/1999/xhtm=
l\">");
+                    sb.append("<head>");
+                    sb.append("  <title>Delete node not implemented</title=
>");
+                    sb.append("</head>");
+                    sb.append("<body>");
+                    sb.append("  <h3>Delete is not a valid operation for t=
his node</h3>");
+                    sb.append("  <p>Please click the link below to return =
to the previous page.</p>");
+                    sb.append("  <p><a href=3D\"" + backToRealm + "\">Retu=
rn to Realm</a></p>");
+                    sb.append("</body>");
+                    sb.append("</html>");
+                    PrintWriter w =3D response.getWriter();
+                    w.print(sb);
+                    return;
+                } else if (ResourceAttributeHelper.hasAttributeImplemented=
(resource, "Modifiable", "2")) {
+                    if (((ModifiableV2) resource).delete()) {
+                        log.debug("Resource has been deleted: " + resource=
);
+                        StringBuffer sb =3D new StringBuffer();
+                        sb.append("<?xml version=3D\"1.0\"?>");
+                        sb.append("<html xmlns=3D\"http://www.w3.org/1999/=
xhtml\">");
+                        sb.append("<head>");
+                        sb.append("  <title>Delete node completed successf=
ully</title>");
+                        sb.append("</head>");
+                        sb.append("<body>");
+                        sb.append("  <h3>Deletion of the node was complete=
d successfully ...</h3>");
+                        sb.append("  <p>If you are not automatically redir=
ected within several seconds, please click the link below.</p>");
+                        sb.append("  <p><a href=3D\"" + backToRealm + "\">=
Return to Realm</a></p>");
+                        sb.append("</body>");
+                        sb.append("</html>");
+                        PrintWriter w =3D response.getWriter();
+                        w.print(sb);
+                        response.setHeader("Refresh", "5; URL=3D" + backTo=
Realm);
+                        return;
+                    } else {
+                        log.warn("Resource could not be deleted: " + resou=
rce);
+                        StringBuffer sb =3D new StringBuffer();
+                        sb.append("<?xml version=3D\"1.0\"?>");
+                        sb.append("<html xmlns=3D\"http://www.w3.org/1999/=
xhtml\">");
+                        sb.append("<head>");
+                        sb.append("  <title>Delete node could not be compl=
eted</title>");
+                        sb.append("</head>");
+                        sb.append("<body>");
+                        sb.append("  <h3>Deletion of the node could not be=
 completed ...</h3>");
+                        sb.append("  <p>If you are not automatically redir=
ected within several seconds, please click the link below.</p>");
+                        sb.append("  <p><a href=3D\"" + backToRealm + "\">=
Return to Realm</a></p>");
+                        sb.append("</body>");
+                        sb.append("</html>");
+                        PrintWriter w =3D response.getWriter();
+                        w.print(sb);
+                        response.setHeader("Refresh", "5; URL=3D" + backTo=
Realm);
+                        return;
+                    }
+                } else {
+                    log.error("Resource '" + resource + "' has interface M=
odifiableV2 not implemented." );
+                    StringBuffer sb =3D new StringBuffer();
+                    sb.append("<?xml version=3D\"1.0\"?>");
+                    sb.append("<html xmlns=3D\"http://www.w3.org/1999/xhtm=
l\">");
+                    sb.append("<head>");
+                    sb.append("  <title>Delete node not implemented</title=
>");
+                    sb.append("</head>");
+                    sb.append("<body>");
+                    sb.append("  <h3>Delete is not a valid operation for t=
his node</h3>");
+                    sb.append("  <p>If you are not automatically redirecte=
d within several seconds, please click the link below.</p>");
+                    sb.append("  <p><a href=3D\"" + backToRealm + "\">Retu=
rn to Realm</a></p>");
+                    sb.append("</body>");
+                    sb.append("</html>");
+                    PrintWriter w =3D response.getWriter();
+                    w.print(sb);
+                    response.setHeader("Refresh", "5; URL=3D" + backToReal=
m);
+                    return;
+                }
+            } catch (Exception e) {
+                log.error("Could not delete resource with URL " + request.=
getRequestURL() + " " + e.getMessage(), e);
+                throw new ServletException(e.getMessage(), e);
+            }
         }
 =

         // Delegate ...


More information about the Yanel-development mailing list