X-Git-Url: http://source.jalview.org/gitweb/?a=blobdiff_plain;f=src%2Forg%2Fvamsas%2Ftest%2Fsimpleclient%2FVamsasArchive.java;h=ccef739cdc3362039d4c389a04830c0659c25f99;hb=ed3c3a256f9dc365f9e287eb8b05cd7930fff568;hp=94d702bd97949e4c82b9af0977e0885b1311d964;hpb=c513d5195afea00b40a8d157e26df71c2277d68b;p=vamsas.git diff --git a/src/org/vamsas/test/simpleclient/VamsasArchive.java b/src/org/vamsas/test/simpleclient/VamsasArchive.java index 94d702b..ccef739 100644 --- a/src/org/vamsas/test/simpleclient/VamsasArchive.java +++ b/src/org/vamsas/test/simpleclient/VamsasArchive.java @@ -5,8 +5,11 @@ import java.io.ObjectOutputStream; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; +import org.vamsas.client.simpleclient.Lock; +import org.vamsas.client.simpleclient.SessionFile; import org.vamsas.client.simpleclient.SimpleDocument; import org.vamsas.client.simpleclient.VamsasArchiveReader; +import org.vamsas.client.simpleclient.VamsasFile; import org.vamsas.objects.core.ApplicationData; import org.vamsas.objects.core.User; import org.vamsas.objects.core.VAMSAS; @@ -114,14 +117,15 @@ public class VamsasArchive { else log.info(av+" has been backed up as "+backup); File newf=new File(av.getAbsolutePath()+"_new.zip"); - if (newf.exists()) { + VamsasFile sfile = new VamsasFile(newf); + /* if (newf.exists()) { int q=1; do { newf=new File(av.getAbsolutePath()+"_"+q+++"_new.zip"); } while (newf.exists()); - } - log.info("Now writing new Archive "+newf.getAbsolutePath()); + } */ + 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, @@ -129,17 +133,21 @@ public class VamsasArchive { log.info("Preparing to write new document."); doc.addApplicationData(appdata); doc.addVAMSAS(Core.getDemoVamsas()); - // TODO: ensure all jar entries are transferred over (at least those that are referenced - make a flag for 'tidy zip manifest'. va.putVamsasDocument(doc); // gets stream and puts it. - // TODO: verify that the vxml stream close method overridden ? va.closeArchive(); - log.info("Dump of new vamsas document :"); log.info("Testing update: "); - VamsasArchiveReader vreader = new VamsasArchiveReader(newf); - SimpleDocument sdoc = new SimpleDocument("testing new vamsas write"); - ArchiveReports.reportDocument(sdoc.getVamsasDocument(vreader), vreader, true, System.out); - + { + Lock lock=sfile.getLock(); + if (lock==null) + while ((lock=sfile.getLock())!=null) + log.info("Waiting for lock."); + 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; + } // backup.delete(); // tidy up log.info("Now Cancelling write to original archive "+av); @@ -149,7 +157,7 @@ public class VamsasArchive { log.info("Didn't cancel."); log.info("Now testing archive update."); - va = new org.vamsas.client.simpleclient.VamsasArchive(newf, true); // TODO - refactor Reader class to have deserializing helpers + va = new org.vamsas.client.simpleclient.VamsasArchive(newf, true); doc = va.getVamsasDocument(); doc.addVAMSAS(Core.getDemoVamsas()); doc.addApplicationData(makeDemoAppdata(va, @@ -161,9 +169,17 @@ public class VamsasArchive { va.putVamsasDocument(doc); va.closeArchive(); log.info("Testing update: "); - vreader = new VamsasArchiveReader(newf); - sdoc = new SimpleDocument("testing vamsas update"); - ArchiveReports.reportDocument(sdoc.getVamsasDocument(vreader), vreader, true, System.out); + { + Lock lock=sfile.getLock(); + if (lock==null) + while ((lock=sfile.getLock())!=null) + log.info("Waiting for lock."); + VamsasArchiveReader vreader = new VamsasArchiveReader(newf); + SimpleDocument sdoc = new SimpleDocument("testing vamsas update"); + ArchiveReports.reportDocument(sdoc.getVamsasDocument(vreader), vreader, true, System.out); + lock.release(); + lock = null; + } } catch (Exception e) { e.printStackTrace(System.err); }