Files
Verso/services/git-bridge/src/uk/ac/ic/wlgitbridge/writelatex/ProjectLock.java
T
2014-11-20 10:54:16 +00:00

39 lines
1.0 KiB
Java

package uk.ac.ic.wlgitbridge.writelatex;
import java.util.HashMap;
import java.util.Map;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
/**
* Created by Winston on 20/11/14.
*/
public class ProjectLock {
private final Map<String, Lock> projectLocks;
public ProjectLock() {
projectLocks = new HashMap<String, Lock>();
}
public void lockForProject(String projectName) {
System.out.println("Locking for: " + Thread.currentThread().getId());
getLockForProjectName(projectName).lock();
}
public void unlockForProject(String projectName) {
System.out.println("Unlocking for: " + Thread.currentThread().getId());
getLockForProjectName(projectName).unlock();
}
private synchronized Lock getLockForProjectName(String projectName) {
Lock lock = projectLocks.get(projectName);
if (lock == null) {
lock = new ReentrantLock();
projectLocks.put(projectName, lock);
}
return lock;
}
}