[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&amp;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&amp;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