fixed update of existing appdata jar entry bug (raised a Duplicate zipEnty exception)
[vamsas.git] / src / uk / ac / vamsas / client / simpleclient / VamsasArchive.java
index b6854cf..0cb8909 100644 (file)
@@ -19,11 +19,8 @@ import java.util.jar.Manifest;
 
 import org.apache.commons.logging.Log;
 import org.apache.commons.logging.LogFactory;
-import org.vamsas.objects.utils.AppDataReference;
-import org.vamsas.objects.utils.DocumentStuff;
-import org.vamsas.objects.utils.ProvenanceStuff;
-import org.vamsas.objects.utils.document.VersionEntries;
 
+import uk.ac.vamsas.client.AppDataOutputStream;
 import uk.ac.vamsas.client.ClientHandle;
 import uk.ac.vamsas.client.IVorbaIdFactory;
 import uk.ac.vamsas.client.SessionHandle;
@@ -34,6 +31,10 @@ import uk.ac.vamsas.client.VorbaXmlBinder;
 import uk.ac.vamsas.objects.core.ApplicationData;
 import uk.ac.vamsas.objects.core.VAMSAS;
 import uk.ac.vamsas.objects.core.VamsasDocument;
+import uk.ac.vamsas.objects.utils.AppDataReference;
+import uk.ac.vamsas.objects.utils.DocumentStuff;
+import uk.ac.vamsas.objects.utils.ProvenanceStuff;
+import uk.ac.vamsas.objects.utils.document.VersionEntries;
 
 /**
  * Class for high-level io and Jar manipulation involved in creating 
@@ -277,8 +278,12 @@ public class VamsasArchive {
    * @return true if entry was unique and was added.
    */
   private boolean addEntry(String entry) {
-    if (entries!=null)
+    if (entries==null)
       entries=new Hashtable();
+    if (log.isDebugEnabled())
+    {   
+      log.debug("validating '"+entry+"' in hash for "+this);
+    }
     if (entries.containsKey(entry))
       return false;
     entries.put(entry, new Integer(entries.size()));
@@ -307,7 +312,7 @@ public class VamsasArchive {
     
     if (!virginArchive) {
       makeBackup();
-      donotdeletebackup=false; // external reference has been made.
+      donotdeletebackup=true; // external reference has been made.
       return ((original!=null) ? originalBackup : null);
     }
     return null;