[Yanel-commits] rev 25248 - in public/yanel/trunk/src:
core/java/org/wyona/yanel/core/api/attributes
resources/file/src/java/org/wyona/yanel/impl/resources
resources/xml/src/java/org/wyona/yanel/impl/resources
webapp/src/java/org/wyona/yanel/servlet
simon at wyona.com
simon at wyona.com
Wed Jun 20 16:55:26 CEST 2007
Author: simon
Date: 2007-06-20 16:55:25 +0200 (Wed, 20 Jun 2007)
New Revision: 25248
Modified:
public/yanel/trunk/src/core/java/org/wyona/yanel/core/api/attributes/VersionableV2.java
public/yanel/trunk/src/resources/file/src/java/org/wyona/yanel/impl/resources/NodeResource.java
public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java
public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java
Log:
Implement releasing a lock see bug#5390. thanks to jonathan!
Modified: public/yanel/trunk/src/core/java/org/wyona/yanel/core/api/attributes/VersionableV2.java
===================================================================
--- public/yanel/trunk/src/core/java/org/wyona/yanel/core/api/attributes/VersionableV2.java 2007-06-20 13:46:31 UTC (rev 25247)
+++ public/yanel/trunk/src/core/java/org/wyona/yanel/core/api/attributes/VersionableV2.java 2007-06-20 14:55:25 UTC (rev 25248)
@@ -62,6 +62,10 @@
*/
public void checkin(String comment) throws Exception;
+ /**
+ *
+ */
+ public void cancelCheckout() throws Exception;
/**
* Indicates whether this resource is checked out.
Modified: public/yanel/trunk/src/resources/file/src/java/org/wyona/yanel/impl/resources/NodeResource.java
===================================================================
--- public/yanel/trunk/src/resources/file/src/java/org/wyona/yanel/impl/resources/NodeResource.java 2007-06-20 13:46:31 UTC (rev 25247)
+++ public/yanel/trunk/src/resources/file/src/java/org/wyona/yanel/impl/resources/NodeResource.java 2007-06-20 14:55:25 UTC (rev 25248)
@@ -275,6 +275,11 @@
}
*/
}
+
+ public void cancelCheckout() throws Exception {
+ Node node = getRealm().getRepository().getNode(getPath());
+ node.cancelCheckout();
+ }
public void restore(String revisionName) throws Exception {
getRealm().getRepository().getNode(getPath()).restore(revisionName);
@@ -376,6 +381,7 @@
buf.append("<edit mime-type=\"" + this.getMimeType(null) + "\">");
buf.append("<checkout url=\"?yanel.resource.usecase=checkout\" method=\"GET\"/>");
buf.append("<checkin url=\"?yanel.resource.usecase=checkin\" method=\"PUT\"/>");
+ buf.append("<release-lock url=\"?yanel.resource.usecase=release-lock\" method=\"GET\"/>");
buf.append("</edit>");
buf.append(getWorkflowIntrospection());
Modified: public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java
===================================================================
--- public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java 2007-06-20 13:46:31 UTC (rev 25247)
+++ public/yanel/trunk/src/resources/xml/src/java/org/wyona/yanel/impl/resources/XMLResource.java 2007-06-20 14:55:25 UTC (rev 25248)
@@ -387,6 +387,11 @@
}
*/
}
+
+ public void cancelCheckout() throws Exception {
+ Node node = getRealm().getRepository().getNode(getPath());
+ node.cancelCheckout();
+ }
public void restore(String revisionName) throws Exception {
getRealm().getRepository().getNode(getPath()).restore(revisionName);
@@ -564,6 +569,7 @@
sb.append("\n <edit mime-type=\"application/xhtml+xml\">");
sb.append("\n <checkout url=\"" + name + "?yanel.resource.viewid=source&yanel.resource.usecase=checkout\" method=\"GET\"/>");
sb.append("\n <checkin url=\"" + name + "?yanel.resource.usecase=checkin\" method=\"PUT\"/>");
+ sb.append("\n <release-lock url=\"" + name + "?yanel.resource.usecase=release-lock\" method=\"GET\"/>");
sb.append("\n </edit>");
sb.append("\n </resource>");
sb.append("\n</introspection>");
@@ -588,6 +594,7 @@
sb.append("<edit mime-type=\"" + this.getMimeType(null) + "\">");
sb.append("<checkout url=\"?yanel.resource.viewid=source&yanel.resource.usecase=checkout\" method=\"GET\"/>");
sb.append("<checkin url=\"?yanel.resource.usecase=checkin\" method=\"PUT\"/>");
+ sb.append("<release-lock url=\"?yanel.resource.usecase=release-lock\" method=\"GET\"/>");
sb.append("</edit>");
sb.append(getWorkflowIntrospection());
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 2007-06-20 13:46:31 UTC (rev 25247)
+++ public/yanel/trunk/src/webapp/src/java/org/wyona/yanel/servlet/YanelServlet.java 2007-06-20 14:55:25 UTC (rev 25248)
@@ -218,10 +218,28 @@
log.error("DEBUG: WebDAV client (" + request.getHeader("User-Agent") + ") requests to \"edit\" a resource: " + resource.getRealm() + ", " + resource.getPath());
//return;
}
+
+ String value = request.getParameter("yanel.resource.usecase");
try {
- getContent(request, response);
- return;
+ if (value != null && value.equals("release-lock")) {
+ log.debug("Release lock ...");
+
+ if (ResourceAttributeHelper.hasAttributeImplemented(resource, "Versionable", "2")) {
+ VersionableV2 versionable = (VersionableV2)resource;
+ try {
+ versionable.cancelCheckout();
+ } catch (Exception e) {
+ log.error(e.getMessage(), e);
+ throw new ServletException("Releasing of lock failed because of: " + resource.getPath()
+ + " " + e.getMessage(), e);
+ }
+ }
+ return;
+ } else {
+ getContent(request, response);
+ return;
+ }
} catch (Exception e) {
log.error(e.getMessage(), e);
throw new ServletException(e.getMessage(), e);
More information about the Yanel-commits
mailing list