broker = factory.getBrokerPool().get(user);
doc = broker.getXMLResource(docURI, Lock.WRITE_LOCK);
if (doc == null)
{throw new EXistException("Resource " + docURI + " not found");}
if (!doc.getPermissions().validate(user, Permission.WRITE))
{throw new PermissionDeniedException("User is not allowed to lock resource " + docURI);}
final SecurityManager manager = factory.getBrokerPool().getSecurityManager();
final Account lockOwner = doc.getUserLock();
if(lockOwner != null && (!lockOwner.equals(user)) && (!manager.hasAdminPrivileges(user)))
{throw new PermissionDeniedException("Resource is already locked by user " +
lockOwner.getName());}
transaction = transact.beginTransaction();
doc.setUserLock(null);
broker.storeXMLResource(transaction, doc);
transact.commit(transaction);