Procházet zdrojové kódy

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

Winston Li před 11 roky
rodič
revize
70808b14b5

+ 10 - 5
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/bridge/WLBridgedProject.java

@@ -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 {

+ 5 - 3
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/test/Main.java

@@ -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();
     }
 

+ 3 - 2
services/git-bridge/src/main/java/uk/ac/ic/wlgitbridge/test/state/SnapshotAPIState.java

@@ -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());
         }};
     }