mirror of
https://github.com/yu-i-i/overleaf-cep.git
synced 2026-05-31 21:01:33 +02:00
@@ -1,10 +1,13 @@
|
||||
package uk.ac.ic.wlgitbridge.snapshot.push;
|
||||
|
||||
import uk.ac.ic.wlgitbridge.snapshot.push.exception.*;
|
||||
import uk.ac.ic.wlgitbridge.util.Log;
|
||||
import com.google.common.base.Preconditions;
|
||||
import uk.ac.ic.wlgitbridge.snapshot.push.exception.InvalidPostbackKeyException;
|
||||
import uk.ac.ic.wlgitbridge.snapshot.push.exception.SnapshotPostException;
|
||||
import uk.ac.ic.wlgitbridge.snapshot.push.exception.UnexpectedPostbackException;
|
||||
|
||||
import java.math.BigInteger;
|
||||
import java.security.SecureRandom;
|
||||
import java.util.Collections;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
@@ -14,11 +17,17 @@ import java.util.Map;
|
||||
public class PostbackManager {
|
||||
|
||||
private final SecureRandom random;
|
||||
private final Map<String, PostbackPromise> postbackContentsTable;
|
||||
final Map<String, PostbackPromise> postbackContentsTable;
|
||||
|
||||
PostbackManager(SecureRandom random) {
|
||||
this.random = random;
|
||||
postbackContentsTable = Collections.synchronizedMap(
|
||||
new HashMap<String, PostbackPromise>()
|
||||
);
|
||||
}
|
||||
|
||||
public PostbackManager() {
|
||||
random = new SecureRandom();
|
||||
postbackContentsTable = new HashMap<String, PostbackPromise>();
|
||||
this(new SecureRandom());
|
||||
}
|
||||
|
||||
public int waitForVersionIdOrThrow(String projectName)
|
||||
@@ -26,10 +35,7 @@ public class PostbackManager {
|
||||
try {
|
||||
PostbackPromise postbackPromise =
|
||||
postbackContentsTable.get(projectName);
|
||||
if (postbackPromise == null) {
|
||||
Log.warn("[{}] PostbackPromise was null.", projectName);
|
||||
throw new InternalErrorException();
|
||||
}
|
||||
Preconditions.checkNotNull(postbackPromise);
|
||||
return postbackPromise.waitForPostback();
|
||||
} finally {
|
||||
postbackContentsTable.remove(projectName);
|
||||
@@ -56,7 +62,7 @@ public class PostbackManager {
|
||||
|
||||
private PostbackPromise getPostbackForProject(String projectName)
|
||||
throws UnexpectedPostbackException {
|
||||
PostbackPromise contents = postbackContentsTable.remove(projectName);
|
||||
PostbackPromise contents = postbackContentsTable.get(projectName);
|
||||
if (contents == null) {
|
||||
throw new UnexpectedPostbackException();
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user