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 { public void buildRepository() throws RepositoryNotFoundException, ServiceMayNotContinueException {
writeLatexDataSource.lockForProject(name); writeLatexDataSource.lockForProject(name);
if (repository.getObjectDatabase().exists()) { try {
updateRepositoryFromSnapshots(repository); if (repository.getObjectDatabase().exists()) {
} else { updateRepositoryFromSnapshots(repository);
buildRepositoryFromScratch(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 { private void updateRepositoryFromSnapshots(Repository repository) throws RepositoryNotFoundException, ServiceMayNotContinueException {

View file

@ -1,18 +1,20 @@
package uk.ac.ic.wlgitbridge.test; package uk.ac.ic.wlgitbridge.test;
import uk.ac.ic.wlgitbridge.test.server.MockSnapshotServer; 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.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
/** /**
* Created by Winston on 10/01/15. * Created by Winston on 10/01/15.
*/ */
public class Main { 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")); 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(); 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.SnapshotPushResult;
import uk.ac.ic.wlgitbridge.test.response.push.data.SnapshotPushResultSuccess; 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.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.getdoc.SnapshotGetDocResult;
import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotAttachment; import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotAttachment;
import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotData; import uk.ac.ic.wlgitbridge.writelatex.api.request.getforversion.SnapshotData;
@ -104,9 +105,9 @@ public class SnapshotAPIState {
}}; }};
postback = new HashMap<String, SnapshotPostbackRequest>() {{ 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 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()); // put("1826rqgsdb", new SnapshotPostbackRequestError());
}}; }};
} }