VamsasArchive tested. Locked IO routines to be implemented in ArchiveFile
[vamsas.git] / src / org / vamsas / test / simpleclient / VamsasArchive.java
index ccef739..354f9af 100644 (file)
@@ -126,15 +126,21 @@ public class VamsasArchive {
         while (newf.exists()); 
       } */
       log.info("Now writing new Archive into "+newf.getAbsolutePath());
-      org.vamsas.client.simpleclient.VamsasArchive va = new org.vamsas.client.simpleclient.VamsasArchive(newf, true);
-      // open another and...
-      ApplicationData appdata = makeDemoAppdata(va, 
-          "org.vamsas.test.simpleclient.VamsasArchive", "arnold Bugger esq", "disOrganised");
-      log.info("Preparing to write new document.");
-      doc.addApplicationData(appdata);
-      doc.addVAMSAS(Core.getDemoVamsas());
-      va.putVamsasDocument(doc); // gets stream and puts it.
-      va.closeArchive();
+      org.vamsas.client.simpleclient.VamsasArchive va=null;
+      { // hold lock over deletion and write of new archive.
+        Lock wlock = sfile.getLock();
+        newf.delete(); // clear out old file.
+        va = new org.vamsas.client.simpleclient.VamsasArchive(newf, true, wlock);
+        // open another and...
+        ApplicationData appdata = makeDemoAppdata(va, 
+            "org.vamsas.test.simpleclient.VamsasArchive", "arnold Bugger esq", "disOrganised");
+        log.info("Preparing to write new document.");
+        doc.addApplicationData(appdata);
+        doc.addVAMSAS(Core.getDemoVamsas());
+        va.putVamsasDocument(doc); // gets stream and puts it.
+        va.closeArchive();
+        sfile.unLock();
+      }
       log.info("Dump of new vamsas document :");
       log.info("Testing update: ");
       {
@@ -145,8 +151,7 @@ public class VamsasArchive {
         VamsasArchiveReader vreader = new VamsasArchiveReader(newf);
         SimpleDocument sdoc = new SimpleDocument("testing new vamsas write");
         ArchiveReports.reportDocument(sdoc.getVamsasDocument(vreader), vreader, true, System.out);
-        lock.release();
-        lock = null;
+        sfile.unLock();
       }
       // backup.delete(); // tidy up