--- /dev/null
+package org.vamsas.test.simpleclient;
+
+import java.io.File;
+
+import org.apache.commons.logging.Log;
+import org.apache.commons.logging.LogFactory;
+import org.vamsas.client.simpleclient.FileWatcher;
+import org.vamsas.client.simpleclient.Lock;
+import org.vamsas.client.simpleclient.SimpleDocument;
+import org.vamsas.client.simpleclient.VamsasArchiveReader;
+import org.vamsas.objects.core.VamsasDocument;
+/**
+ * demo of archive watching process - should mimic the clientsfileTest watcher/monitor process.
+ * @author jimp
+ *
+ */
+public class ArchiveWatcher {
+ private static Log log = LogFactory.getLog(ArchiveWatcher.class);
+ public static void main(String[] args) {
+ try {
+ if (args!=null && args.length>0) {
+
+ File archive = new File(args[0]);
+ log.info("Watching file "+args[0]);
+/* if (!archive.exists())
+ archive.createNewFile();
+ */ // watch the new file... - taken straight from ClientsFileTest
+ FileWatcher w = new FileWatcher(archive);
+ while (archive.exists()) {
+
+ // get watcher's lock to ensure state change is fixed for retrieval
+ Lock chlock = w.getChangedState();
+ if (chlock != null)
+ if (archive.length()>0) {
+ log.info("Noticed Testing update: ");
+ VamsasArchiveReader vreader = new VamsasArchiveReader(archive);
+ SimpleDocument sdoc = new SimpleDocument("testing vamsas watcher");
+ try {
+ VamsasDocument d = sdoc.getVamsasDocument(vreader);
+ if (d!=null) {
+ ArchiveReports.reportDocument(d, vreader, false, System.out);
+ }
+ System.out.println("Update at "+System.currentTimeMillis()+"\n\n********************************************************\n");
+ } catch (Exception e) {
+ log.error("Unmarshalling failed.",e);
+ }
+ vreader.close();
+ }
+ }
+ }
+ } catch (Exception e) {
+ log.error(e);
+ }
+
+ }
+}
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;
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,
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);
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,
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);
}