public boolean isLockOwner() { String lt = activeLock.getToken(); if (lt == null) { return false; } else { return sessionLockTokens.contains(lt); } }
/** * Looks for a valid lock at the given path or a deep lock present with * a parent path. * * @param path * @return */ private ActiveLock getLock(String path) { ActiveLock lock = locks.get(path); if (lock != null) { // check if not expired if (lock.isExpired()) { lock = null; } } if (lock == null) { // check, if child of deep locked parent if (!path.equals("/")) { ActiveLock parentLock = getLock(getParentPath(path)); if (parentLock != null && parentLock.isDeep()) { lock = parentLock; } } } return lock; }
public boolean isSessionScoped() { return ItemResourceConstants.EXCLUSIVE_SESSION.equals(activeLock.getScope()); }
/** * @param lockInfo lock info * @param lockToken lock token * @param resource resource * @return lock * @throws DavException ex * @see DavResource#refreshLock(org.apache.jackrabbit.webdav.lock.LockInfo, String) */ public ActiveLock refreshLock(LockInfo lockInfo, String lockToken, DavResource resource) throws DavException { ActiveLock lock = getLock(lockInfo.getType(), lockInfo.getScope(), resource); if (lock == null) { throw new DavException(DavServletResponse.SC_PRECONDITION_FAILED); } else if (!lock.getToken().equals(lockToken)) { throw new DavException(DavServletResponse.SC_LOCKED); } lock.setTimeout(lockInfo.getTimeout()); return lock; }
ActiveLock activeLock = null; for (ActiveLock l : activeLocks) { Scope sc = l.getScope(); if (l.getType() == Type.WRITE && (Scope.EXCLUSIVE.equals(sc) || sc == ItemResourceConstants.EXCLUSIVE_SESSION)) { if (activeLock != null) { throw new RepositoryException("Node " + saveGetIdString(nodeId, sessionInfo) + " contains multiple exclusive write locks."); String lockroot = activeLock.getLockroot(); if (activeLock.getLockroot() != null) { holder = uriResolver.getNodeId(lockroot, sessionInfo); if (activeLock.isDeep() && holder == null && parentId != null) {
for (ActiveLock activeLock : activeLocks) { lockInfo.setType(activeLock.getType()); lockInfo.setScope(activeLock.getScope()); if (request.matchesIfHeader(resource.getHref(), activeLock.getToken(), etag)) { lList.add(resource.refreshLock(lockInfo, activeLock.getToken())); DavConstants.HEADER_LOCK_TOKEN, lock.getToken()); response.setHeader(header.getHeaderName(), header.getHeaderValue());
public boolean isDeep() { return activeLock.isDeep(); }
@Override public void unlock(String lockToken) throws DavException { ActiveLock lock = getLock(Type.WRITE, Scope.EXCLUSIVE); if (lock != null && lock.isLockedByToken(lockToken)) { getContext().getLockManager().releaseLock(lockToken, this); } }
if (Type.WRITE.equals(lock.getType())) { try { Lock jcrLock = ((Node) item).getLock();
/** * Creates a JDOM <code><lockdiscovery></code> element in order to respond to a LOCK * request or to the lockdiscovery property of a PROPFIND request.<br> * NOTE: if the {@link #activeLocks} list is empty an empty lockdiscovery * property is created ( <code><lockdiscovery/></code>) * @return A JDOM element of the <active> lock tag. * @param document */ public Element toXml(Document document) { Element lockdiscovery = getName().toXml(document); Iterator it = activeLocks.iterator(); while (it.hasNext()) { ActiveLock lock = (ActiveLock) it.next(); lockdiscovery.appendChild(lock.toXml(document)); } return lockdiscovery; }
/** * * @param lockInfo * @param lockToken * @param resource * @return * @throws DavException * @see DavResource#refreshLock(org.apache.jackrabbit.webdav.lock.LockInfo, String) */ public ActiveLock refreshLock(LockInfo lockInfo, String lockToken, DavResource resource) throws DavException { ActiveLock lock = getLock(lockInfo.getType(), lockInfo.getScope(), resource); if (lock == null) { throw new DavException(DavServletResponse.SC_PRECONDITION_FAILED); } else if (!lock.getToken().equals(lockToken)) { throw new DavException(DavServletResponse.SC_LOCKED); } lock.setTimeout(lockInfo.getTimeout()); return lock; }
ActiveLock activeLock = null; for (ActiveLock l : activeLocks) { Scope sc = l.getScope(); if (l.getType() == Type.WRITE && (Scope.EXCLUSIVE.equals(sc) || sc == ItemResourceConstants.EXCLUSIVE_SESSION)) { if (activeLock != null) { throw new RepositoryException("Node " + saveGetIdString(nodeId, sessionInfo) + " contains multiple exclusive write locks."); String lockroot = activeLock.getLockroot(); if (activeLock.getLockroot() != null) { holder = uriResolver.getNodeId(lockroot, sessionInfo); if (activeLock.isDeep() && holder == null && parentId != null) {
for (ActiveLock activeLock : activeLocks) { lockInfo.setType(activeLock.getType()); lockInfo.setScope(activeLock.getScope()); if (request.matchesIfHeader(resource.getHref(), activeLock.getToken(), etag)) { lList.add(resource.refreshLock(lockInfo, activeLock.getToken())); DavConstants.HEADER_LOCK_TOKEN, lock.getToken()); response.setHeader(header.getHeaderName(), header.getHeaderValue());
public boolean isDeep() { return activeLock.isDeep(); }
@Override public void unlock( String lockToken ) throws DavException { ActiveLock lock = getLock( Type.WRITE, Scope.EXCLUSIVE ); if ( lock == null ) { throw new DavException( HttpServletResponse.SC_PRECONDITION_FAILED ); } else if ( lock.isLockedByToken( lockToken ) ) { lockManager.releaseLock( lockToken, this ); } else { throw new DavException( DavServletResponse.SC_LOCKED ); } }
/** * Creates a <code><lockdiscovery></code> element in response * to a LOCK request or to the lockdiscovery property of a PROPFIND request.<br> * NOTE: if the {@link #activeLocks} list is empty an empty lockdiscovery * property is created ( <code><lockdiscovery/></code>) * @return A <code><lockdiscovery></code> element. * @param document */ @Override public Element toXml(Document document) { Element lockdiscovery = getName().toXml(document); for (ActiveLock lock : activeLocks) { lockdiscovery.appendChild(lock.toXml(document)); } return lockdiscovery; }
public boolean isLockOwner() { String lt = activeLock.getToken(); if (lt == null) { return false; } else { return sessionLockTokens.contains(lt); } }
/** * Looks for a valid lock at the given path or a deep lock present with * a parent path. * * @param path * @return */ private ActiveLock getLock(String path) { ActiveLock lock = locks.get(path); if (lock != null) { // check if not expired if (lock.isExpired()) { lock = null; } } if (lock == null) { // check, if child of deep locked parent if (!path.equals("/")) { ActiveLock parentLock = getLock(getParentPath(path)); if (parentLock != null && parentLock.isDeep()) { lock = parentLock; } } } return lock; }
/** * * @param lockInfo * @param lockToken * @param resource * @return * @throws DavException * @see DavResource#refreshLock(org.apache.jackrabbit.webdav.lock.LockInfo, String) */ public ActiveLock refreshLock(LockInfo lockInfo, String lockToken, DavResource resource) throws DavException { ActiveLock lock = getLock(lockInfo.getType(), lockInfo.getScope(), resource); if (lock == null) { throw new DavException(DavServletResponse.SC_PRECONDITION_FAILED); } else if (!lock.getToken().equals(lockToken)) { throw new DavException(DavServletResponse.SC_LOCKED); } lock.setTimeout(lockInfo.getTimeout()); return lock; }
/** * @see DavResource#unlock(String) */ public void unlock(String lockToken) throws DavException { ActiveLock lock = getLock(Type.WRITE, Scope.EXCLUSIVE); if (lock == null) { throw new DavException(DavServletResponse.SC_PRECONDITION_FAILED); } else if (lock.isLockedByToken(lockToken)) { if (lock instanceof JcrActiveLock) { try { node.unlock(); } catch (RepositoryException e) { throw new JcrDavException(e); } } else { lockManager.releaseLock(lockToken, this); } } else { throw new DavException(DavServletResponse.SC_LOCKED); } }