1 package org.vamsas.test.simpleclient;
3 import java.io.BufferedInputStream;
5 import java.io.InputStream;
6 import java.io.InputStreamReader;
7 import java.io.ObjectOutputStream;
8 import java.io.PrintWriter;
10 import org.apache.commons.logging.Log;
11 import org.apache.commons.logging.LogFactory;
12 import org.vamsas.client.simpleclient.*;
13 import org.vamsas.objects.core.AppDataChoice;
14 import org.vamsas.objects.core.ApplicationData;
15 import org.vamsas.objects.core.User;
16 import org.vamsas.objects.core.VAMSAS;
17 import org.vamsas.objects.core.VamsasDocument;
18 import org.vamsas.test.objects.Core;
20 public class VamsasArchive {
22 * test the org.vamsas.simpleclient.vamsasArchive class
24 static Log log = LogFactory.getLog(VamsasArchive.class);
26 public static void main(String args[]) {
31 av = new File(args[0]);
33 av = new File("test/vamsas.zip");
34 log.info("Opening archive "+av);
35 org.vamsas.client.simpleclient.VamsasArchive varchive = new org.vamsas.client.simpleclient.VamsasArchive(av, true);
37 VAMSAS[] roots = (VAMSAS[]) varchive.getOriginalRoots();
40 log.info("Report on Original roots in archive:");
41 ArchiveReports.rootReport(roots, true);
43 log.info("Getting current vamsas document.");
44 VamsasDocument doc = varchive.getVamsasDocument();
45 ArchiveReports.reportDocument(doc, varchive.getOriginalArchiveReader(), true); // not modified document so references will still be valid
47 log.info("Retrieving backup");
48 File backup = varchive.backupFile();
50 log.info(av+" is a New Archive.");
52 log.info(av+" has been backed up as "+backup);
54 log.info("Backup "+backup+" is being written to.");
55 // open another and...
56 ApplicationData appdata = new ApplicationData();
57 appdata.setName("org.vamsas.test.simpleclient.VamsasArchive");
58 appdata.setAppDataChoice(new AppDataChoice());
59 appdata.getAppDataChoice().setData(new String("this is some test data.").getBytes());
60 User apuser = new User();
61 apuser.setFullname("arnold Bugger esq");
62 apuser.setOrganization("disOrganised");
63 String appdata_ref = "vamsas:org.vamsas.test.simpleclient.VamsasArchive/"+apuser.getOrganization()+"/"+apuser.getFullname();
64 org.vamsas.client.simpleclient.VamsasArchive va = new org.vamsas.client.simpleclient.VamsasArchive(backup, true);
65 log.info("Getting the document from the backup-original.");
67 VamsasArchiveReader vread = va.getOriginalArchiveReader();
69 vadoc = va.getVamsasDocument();
70 log.info("Got document. Adding stuff.");
72 if (vread.getAppdataStream(appdata_ref)!=null) {
74 while (vread.getAppdataStream(appdata_ref+"/"+Integer.toString(++i))!=null)
76 appdata_ref+="/"+Integer.toString(i);
78 log.info("Writing an apdata reference using AppDataStream interface.");
79 apuser.setAppDataChoice(new AppDataChoice());
80 apuser.getAppDataChoice().setDataReference(appdata_ref);
81 ObjectOutputStream apdos = new ObjectOutputStream(va.getAppDataStream(appdata_ref));
82 apdos.writeObject(appdata_ref);
83 apdos.writeObject(apuser); // some random content
84 apdos.close(); // this should *not* close the archive!
85 log.info("Written Appdata Stream");
86 log.info("Preparing to write new document.");
87 doc.addApplicationData(appdata);
88 doc.addVAMSAS(Core.getDemoVamsas());
89 va.putVamsasDocument(doc); // gets stream and puts it.
90 // TODO: verify that the vxml stream close method overridden ?
92 log.info("Dump of new vamsas document :");
93 va = new org.vamsas.client.simpleclient.VamsasArchive(backup, true); // TODO - refactor Reader class to have deserializing helpers
94 ArchiveReports.reportDocument(va.getVamsasDocument(), va.getOriginalArchiveReader(), true);
95 // backup.delete(); // tidy up
97 log.info("Now Cancelling write to original archive "+av);
98 varchive.cancelArchive();
100 } catch (Exception e) {
101 e.printStackTrace(System.err);