public SVNLock lockPath(String path, String token, String username, String comment, Date expirationDate, long currentRevision, boolean stealLock) throws SVNException {
String[] paths = {path};
if (username == null) {
SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.FS_NO_USER, "Cannot lock path ''{0}'', no authenticated username available.", path);
SVNErrorManager.error(err);
}
FSHooks.runPreLockHook(myRepositoryRoot, path, username);
SVNLock lock = null;
FSWriteLock writeLock = FSWriteLock.getWriteLock(this);
synchronized (writeLock) {
try {
writeLock.lock();
lock = lock(path, token, username, comment, expirationDate, currentRevision, stealLock);
} finally {
writeLock.unlock();
FSWriteLock.realease(writeLock);
}
}
try {
FSHooks.runPostLockHook(myRepositoryRoot, paths, username);
} catch (SVNException svne) {
SVNErrorMessage err = SVNErrorMessage.create(SVNErrorCode.REPOS_POST_LOCK_HOOK_FAILED, "Lock succeeded, but post-lock hook failed");
err.setChildErrorMessage(svne.getErrorMessage());
SVNErrorManager.error(err, svne);
}
return lock;
}