You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@jackrabbit.apache.org by re...@apache.org on 2013/07/29 15:52:10 UTC
svn commit: r1508069 - in /jackrabbit/branches/2.6: ./
jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/lock/OpenScopedLockTest.java
jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
Author: reschke
Date: Mon Jul 29 13:52:10 2013
New Revision: 1508069
URL: http://svn.apache.org/r1508069
Log:
JCR-3633: If header field sent with PROPFIND (for lock discovery) (ported to 2.6)
Modified:
jackrabbit/branches/2.6/ (props changed)
jackrabbit/branches/2.6/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/lock/OpenScopedLockTest.java
jackrabbit/branches/2.6/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
Propchange: jackrabbit/branches/2.6/
------------------------------------------------------------------------------
Merged /jackrabbit/trunk:r1508053
Modified: jackrabbit/branches/2.6/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/lock/OpenScopedLockTest.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.6/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/lock/OpenScopedLockTest.java?rev=1508069&r1=1508068&r2=1508069&view=diff
==============================================================================
--- jackrabbit/branches/2.6/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/lock/OpenScopedLockTest.java (original)
+++ jackrabbit/branches/2.6/jackrabbit-jcr2spi/src/test/java/org/apache/jackrabbit/jcr2spi/lock/OpenScopedLockTest.java Mon Jul 29 13:52:10 2013
@@ -18,8 +18,11 @@ package org.apache.jackrabbit.jcr2spi.lo
import javax.jcr.Node;
import javax.jcr.RepositoryException;
+import javax.jcr.Session;
import javax.jcr.lock.Lock;
import javax.jcr.lock.LockException;
+import javax.jcr.lock.LockManager;
+import javax.jcr.nodetype.NodeType;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
@@ -216,4 +219,64 @@ public class OpenScopedLockTest extends
throw e;
}
}
+
+ public void testIsLockedWhileAnotherLockIsPresent() throws Exception {
+
+ Session s = lockedNode.getSession();
+ LockManager lm = s.getWorkspace().getLockManager();
+
+ String l2token = null;
+ String l2path = null;
+
+ String path = lockedNode.getPath();
+ String lockToken = lock.getLockToken();
+ assertTrue(lm.isLocked(path));
+ assertTrue(lm.holdsLock(path));
+ lm.removeLockToken(lockToken);
+
+ Session anotherSession = null;
+ try {
+ // check lock is seen by new session
+ anotherSession = getHelper().getSuperuserSession();
+ LockManager anotherLockManager = anotherSession.getWorkspace().getLockManager();
+ assertTrue(anotherLockManager.isLocked(path));
+ assertTrue(anotherLockManager.holdsLock(path));
+
+ // create a second lock
+ Node l2node = anotherSession.getNode(path).getParent().addNode("second-lock");
+ l2node.addMixin(NodeType.MIX_LOCKABLE);
+ anotherSession.save();
+ l2path = l2node.getPath();
+
+ Lock l2 = anotherLockManager.lock(l2path, false, false, Long.MAX_VALUE, "foobar");
+ l2token = l2.getLockToken();
+ assertNotNull(l2token);
+ anotherSession.save();
+
+ anotherSession.refresh(false);
+ assertTrue(anotherLockManager.isLocked(path));
+ assertTrue(anotherLockManager.holdsLock(path));
+
+ // try to unlock the lock obtained from the other session
+ anotherLockManager.addLockToken(lockToken);
+ anotherLockManager.unlock(path);
+ anotherSession.save();
+
+ // unlock "my" lock
+ anotherLockManager.unlock(l2path);
+ anotherSession.save();
+ l2path = null;
+ }
+ finally {
+ if (anotherSession != null) {
+ anotherSession.logout();
+ }
+ if (l2path != null && l2token != null) {
+ superuser.refresh(false);
+ LockManager sulm = superuser.getWorkspace().getLockManager();
+ sulm.addLockToken(l2token);
+ sulm.unlock(l2path);
+ }
+ }
+ }
}
\ No newline at end of file
Modified: jackrabbit/branches/2.6/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java
URL: http://svn.apache.org/viewvc/jackrabbit/branches/2.6/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java?rev=1508069&r1=1508068&r2=1508069&view=diff
==============================================================================
--- jackrabbit/branches/2.6/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java (original)
+++ jackrabbit/branches/2.6/jackrabbit-spi2dav/src/main/java/org/apache/jackrabbit/spi2dav/RepositoryServiceImpl.java Mon Jul 29 13:52:10 2013
@@ -1516,8 +1516,7 @@ public class RepositoryServiceImpl imple
try {
String uri = getItemUri(nodeId, sessionInfo);
method = new PropFindMethod(uri, nameSet, DEPTH_0);
- // TODO: not correct. pass tokens in order avoid new session to be created TOBEFIXED
- initMethod(method, sessionInfo, true);
+ initMethod(method, sessionInfo, false);
getClient(sessionInfo).executeMethod(method);
method.checkSuccess();