diff --git a/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/lock/LockTokenMapper.java b/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/lock/LockTokenMapper.java index 2daba0a08..9478cb71c 100644 --- a/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/lock/LockTokenMapper.java +++ b/jackrabbit-jcr-server/src/main/java/org/apache/jackrabbit/webdav/jcr/lock/LockTokenMapper.java @@ -55,6 +55,8 @@ public class LockTokenMapper { if (jcrLockToken == null) { return SESSPREFIX + Text.escape(lock.getNode().getIdentifier()); + } else if (jcrLockToken.startsWith(SESSPREFIX) || jcrLockToken.startsWith(OPENPREFIX)) { + return jcrLockToken; } else { return OPENPREFIX + Text.escape(jcrLockToken); } diff --git a/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java b/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java index 9e53b93d4..3d7305c17 100644 --- a/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java +++ b/jackrabbit-jcr2spi/src/main/java/org/apache/jackrabbit/jcr2spi/lock/LockManagerImpl.java @@ -401,6 +401,7 @@ public class LockManagerImpl implements LockStateManager, SessionListener { } else { Item lockHoldingNode = itemManager.getItem(lState.lockHoldingState.getHierarchyEntry()); lock = new LockImpl(lState, (Node)lockHoldingNode); + lock.getLockToken(); } // test if lock applies to the original nodestate if (lState.appliesToNodeState(nodeState)) {