Added try-catch-finally block for remaining instances of lock releasing.

This commit is contained in:
Winston Li 2015-01-15 23:00:32 +00:00
parent 34185c7067
commit 70808b14b5
3 changed files with 18 additions and 10 deletions

View file

@ -30,12 +30,17 @@ public class WLBridgedProject {
public void buildRepository() throws RepositoryNotFoundException, ServiceMayNotContinueException {
writeLatexDataSource.lockForProject(name);
if (repository.getObjectDatabase().exists()) {
updateRepositoryFromSnapshots(repository);
} else {
buildRepositoryFromScratch(repository);
try {
if (repository.getObjectDatabase().exists()) {
updateRepositoryFromSnapshots(repository);
} else {
buildRepositoryFromScratch(repository);
}
} catch (RuntimeException e) {
throw new ServiceMayNotContinueException(e);
} finally {
writeLatexDataSource.unlockForProject(name);
}
writeLatexDataSource.unlockForProject(name);
}
private void updateRepositoryFromSnapshots(Repository repository) throws RepositoryNotFoundException, ServiceMayNotContinueException {

View file

@ -1,18 +1,20 @@
package uk.ac.ic.wlgitbridge.test;
import uk.ac.ic.wlgitbridge.test.server.MockSnapshotServer;
import uk.ac.ic.wlgitbridge.test.state.SnapshotAPIState;
import uk.ac.ic.wlgitbridge.test.state.SnapshotAPIStateBuilder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
/**
* Created by Winston on 10/01/15.
*/
public class Main {
public static void main(String[] args) {
public static void main(String[] args) throws FileNotFoundException {
MockSnapshotServer server = new MockSnapshotServer(60000, new File("/Users/Roxy/Code/java/writelatex-git-bridge"));
server.setState(new SnapshotAPIState());
server.setState(new SnapshotAPIStateBuilder(new FileInputStream(new File("/Users/Roxy/Desktop/state.json"))).build());
server.start();
}

View file

@ -3,6 +3,7 @@ package uk.ac.ic.wlgitbridge.test.state;
import uk.ac.ic.wlgitbridge.test.response.push.data.SnapshotPushResult;
import uk.ac.ic.wlgitbridge.test.response.push.data.SnapshotPushResultSuccess;
import uk.ac.ic.wlgitbridge.test.response.push.postback.SnapshotPostbackRequest;
import uk.ac.ic.wlgitbridge.test.response.push.postback.SnapshotPostbackRequestInvalidProject;
import uk.ac.ic.wlgitbridge.writelatex.api.request.getdoc.SnapshotGetDocResult;
import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotAttachment;
import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotData;
@ -104,9 +105,9 @@ public class SnapshotAPIState {
}};
postback = new HashMap<String, SnapshotPostbackRequest>() {{
// put("1826rqgsdb", new SnapshotPostbackRequestInvalidFiles(Arrays.<InvalidFileError>asList(new InvalidFileErrorDefault("file1.fff"), new InvalidFileErrorDisallowed("file2.fff"), new InvalidFileErrorUnclean("unclean", "clean"))));
// put("1826rqgsdb", new SnapshotPostbackRequestInvalidFiles(Arrays.<InvalidFileError>asList(new InvalidFileErrorDefault("file1.invalid"), new InvalidFileErrorDisallowed("file2.exe"), new InvalidFileErrorUnclean("hello world.png", "hello_world.png"))));
// put("1826rqgsdb", new SnapshotPostbackRequestOutOfDate());
// put("1826rqgsdb", new SnapshotPostbackRequestInvalidProject(Arrays.asList("line1", "line2")));
put("1826rqgsdb", new SnapshotPostbackRequestInvalidProject(Arrays.asList("Your project is missing main.tex.", "Please name your main latex file main.tex.")));
// put("1826rqgsdb", new SnapshotPostbackRequestError());
}};
}