You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by an...@apache.org on 2009/03/12 13:17:53 UTC

svn commit: r752841 - in /jackrabbit/trunk/jackrabbit-webdav/src: main/java/org/apache/jackrabbit/webdav/ main/java/org/apache/jackrabbit/webdav/lock/ test/java/org/apache/jackrabbit/webdav/lock/

Author: angela
Date: Thu Mar 12 12:17:52 2009
New Revision: 752841

URL: http://svn.apache.org/viewvc?rev=752841&view=rev
Log:
JCR-2021 - WebDAV: add support for DAV:lockroot

Added:
    jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/
    jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/ActiveLockTest.java   (with props)
    jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/TestAll.java   (with props)
Modified:
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/DavConstants.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/AbstractActiveLock.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/ActiveLock.java
    jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/LockDiscovery.java

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/DavConstants.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/DavConstants.java?rev=752841&r1=752840&r2=752841&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/DavConstants.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/DavConstants.java Thu Mar 12 12:17:52 2009
@@ -102,6 +102,11 @@
     public static final String XML_LOCKTYPE = "locktype";
     public static final String XML_WRITE = "write";
     public static final String XML_OWNER = "owner";
+    /**
+     * The <code>lockroot</code> XML element
+     * @see <a href="http://www.webdav.org/specs/rfc4918.html#ELEMENT_lockroot">RFC 4818</a>
+     */
+    public static final String XML_LOCKROOT = "lockroot";
 
     //-----------------------------------------------------< Property Names >---
     /*

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/AbstractActiveLock.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/AbstractActiveLock.java?rev=752841&r1=752840&r2=752841&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/AbstractActiveLock.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/AbstractActiveLock.java Thu Mar 12 12:17:52 2009
@@ -26,6 +26,22 @@
  */
 public abstract class AbstractActiveLock implements ActiveLock, DavConstants {
 
+    private String lockroot;
+    
+    /**
+     * @see ActiveLock#getLockroot()
+     */
+    public String getLockroot() {
+        return lockroot;
+    }
+
+    /**
+     * @see ActiveLock#setLockroot(String)
+     */
+    public void setLockroot(String lockroot) {
+        this.lockroot = lockroot;
+    }
+
     /**
      * Returns the default Xml representation of the 'activelock' element
      * as defined by RFC 2518.
@@ -58,6 +74,12 @@
             Element lToken = DomUtil.addChildElement(activeLock, XML_LOCKTOKEN, NAMESPACE);
             lToken.appendChild(DomUtil.hrefToXml(getToken(), document));
         }
+
+        // lock root
+        if (getLockroot() != null) {
+            Element lroot = DomUtil.addChildElement(activeLock, XML_LOCKROOT, NAMESPACE);
+            lroot.appendChild(DomUtil.hrefToXml(getLockroot(), document));
+        }
         return activeLock;
     }
 

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/ActiveLock.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/ActiveLock.java?rev=752841&r1=752840&r2=752841&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/ActiveLock.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/ActiveLock.java Thu Mar 12 12:17:52 2009
@@ -67,7 +67,7 @@
      * or -1 if the timeout is not available (or the client is not allowed
      * to retrieve it).
      *
-     * @return
+     * @return numer of milliseconds.
      */
     public long getTimeout();
 
@@ -93,6 +93,22 @@
     public void setIsDeep(boolean isDeep);
 
     /**
+     * Returns the lockroot.
+     *
+     * @return lockroot
+     * @see <a href="http://www.webdav.org/specs/rfc4918.html#ELEMENT_lockroot">RFC 4818</a>
+     */
+    public String getLockroot();
+
+    /**
+     * Set the lockroot.
+     *
+     * @param lockroot
+     * @see <a href="http://www.webdav.org/specs/rfc4918.html#ELEMENT_lockroot">RFC 4818</a>
+     */
+    public void setLockroot(String lockroot);
+
+    /**
      * Return the type of this lock.
      *
      * @return type

Modified: jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/LockDiscovery.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/LockDiscovery.java?rev=752841&r1=752840&r2=752841&view=diff
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/LockDiscovery.java (original)
+++ jackrabbit/trunk/jackrabbit-webdav/src/main/java/org/apache/jackrabbit/webdav/lock/LockDiscovery.java Thu Mar 12 12:17:52 2009
@@ -207,6 +207,19 @@
             throw new UnsupportedOperationException("Not implemented");
         }
 
+        public String getLockroot() {
+            Element root = DomUtil.getChildElement(alElement, XML_LOCKROOT, NAMESPACE);
+            if (root != null) {
+                return DomUtil.getChildTextTrim(root, XML_HREF, NAMESPACE);
+            }
+            // no lockroot element
+            return null;
+        }
+
+        public void setLockroot(String lockroot) {
+            throw new UnsupportedOperationException("Not implemented");
+        }
+
         public Type getType() {
             return Type.createFromXml(DomUtil.getChildElement(alElement, XML_LOCKTYPE, NAMESPACE));
         }

Added: jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/ActiveLockTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/ActiveLockTest.java?rev=752841&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/ActiveLockTest.java (added)
+++ jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/ActiveLockTest.java Thu Mar 12 12:17:52 2009
@@ -0,0 +1,64 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.webdav.lock;
+
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.w3c.dom.Document;
+import org.apache.jackrabbit.webdav.xml.DomUtil;
+import junit.framework.TestCase;
+
+import javax.xml.parsers.ParserConfigurationException;
+import java.util.List;
+
+/**
+ * <code>ActiveLockTest</code>...
+ */
+public class ActiveLockTest extends TestCase {
+
+    /**
+     * logger instance
+     */
+    private static final Logger log = LoggerFactory.getLogger(ActiveLockTest.class);
+
+    public void testGetLockRoot() {
+        ActiveLock lock = new DefaultActiveLock();
+        lock.setLockroot("lockroot");
+
+        assertEquals("lockroot", lock.getLockroot());
+    }
+
+    public void testParsing() throws ParserConfigurationException {
+        Document doc = DomUtil.BUILDER_FACTORY.newDocumentBuilder().newDocument();
+
+        ActiveLock lock = new DefaultActiveLock();
+        lock.setLockroot("lockroot");
+        lock.setOwner("owner");
+        lock.setIsDeep(true);
+
+        LockDiscovery disc = LockDiscovery.createFromXml(new LockDiscovery(lock).toXml(doc));
+        List l  = (List) disc.getValue();
+
+        assertFalse(l.isEmpty());
+        assertEquals(1, l.size());
+        ActiveLock al = (ActiveLock) l.get(0);
+
+        assertEquals("lockroot", al.getLockroot());
+        assertEquals("owner", al.getOwner());
+        assertTrue(al.isDeep());
+    }
+}
\ No newline at end of file

Propchange: jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/ActiveLockTest.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/ActiveLockTest.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision url

Added: jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/TestAll.java
URL: http://svn.apache.org/viewvc/jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/TestAll.java?rev=752841&view=auto
==============================================================================
--- jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/TestAll.java (added)
+++ jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/TestAll.java Thu Mar 12 12:17:52 2009
@@ -0,0 +1,32 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package org.apache.jackrabbit.webdav.lock;
+
+import junit.framework.Test;
+import junit.framework.TestCase;
+import junit.framework.TestSuite;
+
+public class TestAll extends TestCase {
+
+    public static Test suite() {
+        TestSuite suite = new TestSuite("WebDAV lock tests");
+
+        suite.addTestSuite(ActiveLockTest.class);
+        
+        return suite;
+    }
+}
\ No newline at end of file

Propchange: jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/TestAll.java
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: jackrabbit/trunk/jackrabbit-webdav/src/test/java/org/apache/jackrabbit/webdav/lock/TestAll.java
------------------------------------------------------------------------------
    svn:keywords = author date id revision url