[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