You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@commons.apache.org by gr...@apache.org on 2009/04/10 22:45:12 UTC

svn commit: r764045 - in /commons/proper/compress/trunk/src: main/java/org/apache/commons/compress/changes/ test/java/org/apache/commons/compress/changes/

Author: grobmeier
Date: Fri Apr 10 20:45:11 2009
New Revision: 764045

URL: http://svn.apache.org/viewvc?rev=764045&view=rev
Log:
added deleteDir method to ChangeSet to avoid confusion with delete for files
fixed ClassCastException in testcases which raised due to this fix 

Modified:
    commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/Change.java
    commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSet.java
    commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSetPerformer.java
    commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/changes/ChangeSetTestCase.java

Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/Change.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/Change.java?rev=764045&r1=764044&r2=764045&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/Change.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/Change.java Fri Apr 10 20:45:11 2009
@@ -38,20 +38,21 @@
 	static final int TYPE_DELETE = 1;
 	static final int TYPE_ADD = 2;
 	static final int TYPE_MOVE = 3; // NOT USED
+	static final int TYPE_DELETE_DIR = 4;
 	
 	/**
 	 * Constructor. Takes the filename of the file to be deleted
 	 * from the stream as argument.
 	 * @param pFilename the filename of the file to delete
 	 */
-	Change(final String pFilename) {
+	Change(final String pFilename, int type) {
 		if(pFilename == null) {
 			throw new NullPointerException();
 		}
-		targetFile = pFilename;
-		type = TYPE_DELETE;
-		input = null;
-		entry = null;
+		this.targetFile = pFilename;
+		this.type = type;
+		this.input = null;
+		this.entry = null;
 	}
 		
 	/**

Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSet.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSet.java?rev=764045&r1=764044&r2=764045&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSet.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSet.java Fri Apr 10 20:45:11 2009
@@ -42,11 +42,21 @@
      * @param pFilename
      *            the filename of the file to delete
      */
-    public void delete(final String pFilename) {
-        addDeletion(new Change(pFilename));
+    public void delete(final String filename) {
+        addDeletion(new Change(filename, Change.TYPE_DELETE));
     }
 
     /**
+     * Deletes the file with the filename from the archive. 
+     * 
+     * @param pFilename
+     *            the filename of the file to delete
+     */
+    public void deleteDir(final String dirName) {
+        addDeletion(new Change(dirName, Change.TYPE_DELETE_DIR));
+    }
+    
+    /**
      * Adds a new archive entry to the archive.
      * 
      * @param pEntry
@@ -65,8 +75,9 @@
      *            the change which should result in a deletion
      */
     private void addDeletion(Change pChange) {
-        if (Change.TYPE_DELETE != pChange.type()
-                || pChange.targetFile() == null) {
+        if ((Change.TYPE_DELETE != pChange.type() &&
+            Change.TYPE_DELETE_DIR != pChange.type()) ||    
+            pChange.targetFile() == null) {
             return;
         }
         String source = pChange.targetFile();
@@ -78,9 +89,10 @@
                         && change.getEntry() != null) {
                     String target = change.getEntry().getName();
 
-                    if (source.equals(target)) {
+                    if (Change.TYPE_DELETE == pChange.type() && source.equals(target)) {
                         it.remove();
-                    } else if (target.matches(source + "/.*")) {
+                    } else if (Change.TYPE_DELETE_DIR == pChange.type() && 
+                               target.matches(source + "/.*")) {
                         it.remove();
                     }
                 }

Modified: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSetPerformer.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSetPerformer.java?rev=764045&r1=764044&r2=764045&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSetPerformer.java (original)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSetPerformer.java Fri Apr 10 20:45:11 2009
@@ -80,13 +80,16 @@
             for (Iterator it = workingSet.iterator(); it.hasNext();) {
                 Change change = (Change) it.next();
 
-                if (change.type() == Change.TYPE_DELETE
-                        && entry.getName() != null) {
+                if (change.type() == Change.TYPE_DELETE && 
+                    entry.getName() != null) {
                     if (entry.getName().equals(change.targetFile())) {
                         copy = false;
                         it.remove();
                         break;
-                    } else if (entry.getName().matches(
+                    }
+                } else if(change.type() == Change.TYPE_DELETE_DIR && 
+                          entry.getName() != null) {
+                    if (entry.getName().matches(
                             change.targetFile() + "/.*")) {
                         copy = false;
                         break;
@@ -117,7 +120,7 @@
         if (!workingSet.isEmpty()) {
             for (Iterator it = workingSet.iterator(); it.hasNext();) {
                 Change change = (Change) it.next();
-                if (change.type() == Change.TYPE_DELETE) {
+                if (change.type() == Change.TYPE_DELETE || change.type() == Change.TYPE_DELETE_DIR) {
                     String target = change.targetFile();
 
                     if (source.equals(target)) {

Modified: commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/changes/ChangeSetTestCase.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/changes/ChangeSetTestCase.java?rev=764045&r1=764044&r2=764045&view=diff
==============================================================================
--- commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/changes/ChangeSetTestCase.java (original)
+++ commons/proper/compress/trunk/src/test/java/org/apache/commons/compress/changes/ChangeSetTestCase.java Fri Apr 10 20:45:11 2009
@@ -31,6 +31,7 @@
 import org.apache.commons.compress.archivers.ArchiveInputStream;
 import org.apache.commons.compress.archivers.ArchiveOutputStream;
 import org.apache.commons.compress.archivers.ar.ArArchiveEntry;
+import org.apache.commons.compress.archivers.cpio.CpioArchiveEntry;
 import org.apache.commons.compress.archivers.jar.JarArchiveEntry;
 import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
 import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
@@ -245,11 +246,11 @@
             ChangeSet changes = new ChangeSet();
 
             final File file1 = getFile("test.txt");
-            ArchiveEntry entry = new ZipArchiveEntry("blub/test.txt");
+            ArchiveEntry entry = new CpioArchiveEntry("blub/test.txt");
             changes.add(entry, new FileInputStream(file1));
             archiveList.add("blub/test.txt");
 
-            changes.delete("blub");
+            changes.deleteDir("blub");
             archiveListDelete("blub");
 
             ChangeSetPerformer performer = new ChangeSetPerformer(changes);
@@ -290,14 +291,14 @@
 
             ChangeSet changes = new ChangeSet();
 
-            changes.delete("bla");
+            changes.deleteDir("bla");
 
             final File file1 = getFile("test.txt");
-            ArchiveEntry entry = new ZipArchiveEntry("bla/test.txt");
+            ArchiveEntry entry = new CpioArchiveEntry("bla/test.txt");
             changes.add(entry, new FileInputStream(file1));
             archiveList.add("bla/test.txt");
 
-            changes.delete("bla");
+            changes.deleteDir("bla");
             archiveListDelete("bla");
 
             ChangeSetPerformer performer = new ChangeSetPerformer(changes);
@@ -400,7 +401,7 @@
         try {
             ChangeSet changes = new ChangeSet();
             changes.delete("test2.xml");
-            changes.delete("META-INF");
+            changes.deleteDir("META-INF");
             changes.delete(".classpath");
             changes.delete(".project");
 
@@ -484,7 +485,7 @@
         try {
             ChangeSet changes = new ChangeSet();
             changes.delete("test2.xml");
-            changes.delete("META-INF");
+            changes.deleteDir("META-INF");
             changes.delete(".classpath");
             changes.delete(".project");