Author: sebb Date: Wed Apr 15 12:49:09 2009 New Revision: 765168 URL: http://svn.apache.org/viewvc?rev=765168&view=rev Log: Should only delete directories if type = DELETE_DIRECTORY Fix corresponding errors in test cases
Modified: 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/ChangeSetPerformer.java URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSetPerformer.java?rev=765168&r1=765167&r2=765168&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 Wed Apr 15 12:49:09 2009 @@ -39,7 +39,7 @@ * @Immutable */ public class ChangeSetPerformer { - private Set changes = null; + private final Set changes; /** * Constructs a ChangeSetPerformer with the changes from this ChangeSet @@ -80,16 +80,16 @@ for (Iterator it = workingSet.iterator(); it.hasNext();) { Change change = (Change) it.next(); - if (change.type() == Change.TYPE_DELETE && - entry.getName() != null) { - if (entry.getName().equals(change.targetFile())) { + final int type = change.type(); + final String name = entry.getName(); + if (type == Change.TYPE_DELETE && name != null) { + if (name.equals(change.targetFile())) { copy = false; it.remove(); break; } - } else if(change.type() == Change.TYPE_DELETE_DIR && - entry.getName() != null) { - if (entry.getName().matches( + } else if(type == Change.TYPE_DELETE_DIR && name != null) { + if (name.matches( change.targetFile() + "/.*")) { copy = false; break; @@ -120,14 +120,15 @@ if (!workingSet.isEmpty()) { for (Iterator it = workingSet.iterator(); it.hasNext();) { Change change = (Change) it.next(); - if (change.type() == Change.TYPE_DELETE || change.type() == Change.TYPE_DELETE_DIR) { + final int type = change.type(); + if (type == Change.TYPE_DELETE || type == Change.TYPE_DELETE_DIR) { String target = change.targetFile(); if (source.equals(target)) { return true; } - return source.matches(target + "/.*"); + return (type == Change.TYPE_DELETE_DIR) && source.matches(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=765168&r1=765167&r2=765168&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 Wed Apr 15 12:49:09 2009 @@ -41,7 +41,8 @@ */ public final class ChangeSetTestCase extends AbstractTestCase { - private void archiveListDelete(String prefix){ + // Delete a directory tree + private void archiveListDeleteDir(String prefix){ Iterator it = archiveList.iterator(); while(it.hasNext()){ String entry = (String) it.next(); @@ -51,6 +52,17 @@ } } + // Delete a single file + private void archiveListDelete(String prefix){ + Iterator it = archiveList.iterator(); + while(it.hasNext()){ + String entry = (String) it.next(); + if (entry.equals(prefix)){ + it.remove(); + } + } + } + /** * Tries to delete the folder "bla" from an archive file. This should result in * the deletion of bla/*, which actually means bla/test4.xml should be @@ -76,8 +88,8 @@ new FileOutputStream(result)); ChangeSet changes = new ChangeSet(); - changes.delete("bla"); - archiveListDelete("bla"); + changes.deleteDir("bla"); + archiveListDeleteDir("bla"); ChangeSetPerformer performer = new ChangeSetPerformer(changes); performer.perform(ais, out); is.close(); @@ -155,8 +167,8 @@ new FileOutputStream(result)); ChangeSet changes = new ChangeSet(); - changes.delete("bla"); - archiveListDelete("bla"); + changes.deleteDir("bla"); + archiveListDeleteDir("bla"); // Add a file final File file1 = getFile("test.txt"); @@ -251,7 +263,7 @@ archiveList.add("blub/test.txt"); changes.deleteDir("blub"); - archiveListDelete("blub"); + archiveListDeleteDir("blub"); ChangeSetPerformer performer = new ChangeSetPerformer(changes); performer.perform(ais, out); @@ -299,7 +311,7 @@ archiveList.add("bla/test.txt"); changes.deleteDir("bla"); - archiveListDelete("bla"); + archiveListDeleteDir("bla"); ChangeSetPerformer performer = new ChangeSetPerformer(changes); performer.perform(ais, out);