package org.tmatesoft.svn.core.wc2;
import org.tmatesoft.svn.core.SVNLock;
/**
* Represents operation for unlocking files.
* Unlocks file items in a working copy as well as in a repository.
*
* <p/>
* {@link #run()} method returns {@link SVNLock} object that represents information of lock.
* {@link #run()} method @throws {@link org.tmatesoft.svn.core.SVNException} if one of the following is true:
* <ul>
* <li>a <code>target</code>'s path is not under version control
* <li>can not obtain a URL of a local <code>target</code>'s path to unlock it in the
* repository - there's no such entry
* <li>if a path is not locked in the working copy and
* <code>breakLock</code> is <code>false</code>
* <li><code>targets</code> to be unlocked belong to different
* repositories
* </ul>
*
* @author TMate Software Ltd.
* @version 1.7
*/
public class SvnUnlock extends SvnReceivingOperation<SVNLock> {
private boolean breakLock;
protected SvnUnlock(SvnOperationFactory factory) {
super(factory);
}
/**
* Gets whether or not the locks belonging to different users should be also unlocked ("broken")
*
* @return <code>true</code> if other users locks should be "broken", otherwise <code>false</code>
*/
public boolean isBreakLock() {
return breakLock;
}
/**
* Sets whether or not the locks belonging to different users should be also unlocked ("broken")
*
* @param breakLock <code>true</code> if other users locks should be "broken", otherwise <code>false</code>
*/
public void setBreakLock(boolean breakLock) {
this.breakLock = breakLock;
}
@Override
protected int getMaximumTargetsCount() {
return Integer.MAX_VALUE;
}
/**
* Gets whether the operation changes working copy
* @return <code>true</code> if the operation changes the working copy, otherwise <code>false</code>
*/
@Override
public boolean isChangesWorkingCopy() {
return true;
}
}