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/17 08:27:14 UTC
svn commit: r765861 - 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 17 06:27:14 2009
New Revision: 765861
URL: http://svn.apache.org/viewvc?rev=765861&view=rev
Log:
Added ChangeSetResults which reports what actually has happened while performing the changeset. Added Test.
Added:
commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSetResults.java
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=765861&r1=765860&r2=765861&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 17 06:27:14 2009
@@ -59,9 +59,12 @@
* the resulting OutputStream with all modifications
* @throws IOException
* if an read/write error occurs
+ * @return the results of this operation
*/
- public void perform(ArchiveInputStream in, ArchiveOutputStream out)
+ public ChangeSetResults perform(ArchiveInputStream in, ArchiveOutputStream out)
throws IOException {
+ ChangeSetResults results = new ChangeSetResults();
+
Set workingSet = new LinkedHashSet(changes);
for (Iterator it = workingSet.iterator(); it.hasNext();) {
@@ -70,6 +73,7 @@
if (change.type() == Change.TYPE_ADD) {
copyStream(change.getInput(), out, change.getEntry());
it.remove();
+ results.addedFromChangeSet(change.getEntry().getName());
}
}
@@ -86,11 +90,13 @@
if (name.equals(change.targetFile())) {
copy = false;
it.remove();
+ results.deleted(name);
break;
}
} else if(type == Change.TYPE_DELETE_DIR && name != null) {
if (name.startsWith(change.targetFile() + "/")) {
copy = false;
+ results.deleted(name);
break;
}
}
@@ -99,9 +105,12 @@
if (copy) {
if (!isDeletedLater(workingSet, entry)) {
copyStream(in, out, entry);
+ results.addedFromStream(entry.getName());
}
}
}
+
+ return results;
}
/**
Added: commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSetResults.java
URL: http://svn.apache.org/viewvc/commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSetResults.java?rev=765861&view=auto
==============================================================================
--- commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSetResults.java (added)
+++ commons/proper/compress/trunk/src/main/java/org/apache/commons/compress/changes/ChangeSetResults.java Fri Apr 17 06:27:14 2009
@@ -0,0 +1,43 @@
+package org.apache.commons.compress.changes;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class ChangeSetResults {
+ private List addedFromChangeSet = new ArrayList();
+ private List addedFromStream = new ArrayList();
+ private List deleted = new ArrayList();
+
+ void deleted(String fileName) {
+ deleted.add(fileName);
+ }
+
+ void addedFromStream(String fileName) {
+ addedFromStream.add(fileName);
+ }
+
+ void addedFromChangeSet(String fileName) {
+ addedFromChangeSet.add(fileName);
+ }
+
+ /**
+ * @return the addedFromChangeSet
+ */
+ public List getAddedFromChangeSet() {
+ return addedFromChangeSet;
+ }
+
+ /**
+ * @return the addedFromStream
+ */
+ public List getAddedFromStream() {
+ return addedFromStream;
+ }
+
+ /**
+ * @return the deleted
+ */
+ public List getDeleted() {
+ return deleted;
+ }
+}
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=765861&r1=765860&r2=765861&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 17 06:27:14 2009
@@ -366,6 +366,65 @@
}
/**
+ * Checks for the correct ChangeSetResults
+ *
+ * @throws Exception
+ */
+ public void testChangeSetResults() throws Exception {
+ final String archivename = "cpio";
+ File input = this.createArchive(archivename);
+
+ ArchiveOutputStream out = null;
+ ArchiveInputStream ais = null;
+ File result = File.createTempFile("test", "."+archivename);
+ result.deleteOnExit();
+ try {
+
+ final InputStream is = new FileInputStream(input);
+ ais = factory.createArchiveInputStream(archivename, is);
+ out = factory.createArchiveOutputStream(archivename,
+ new FileOutputStream(result));
+
+ ChangeSet changes = new ChangeSet();
+ changes.deleteDir("bla");
+ archiveListDeleteDir("bla");
+
+ // Add a file
+ final File file1 = getFile("test.txt");
+ ArchiveEntry entry = out.createArchiveEntry(file1, "bla/test.txt");
+ changes.add(entry, new FileInputStream(file1));
+ archiveList.add("bla/test.txt");
+
+ ChangeSetPerformer performer = new ChangeSetPerformer(changes);
+ ChangeSetResults results = performer.perform(ais, out);
+ is.close();
+
+ // Checks
+ assertEquals(1,results.getAddedFromChangeSet().size());
+ assertEquals("bla/test.txt",(String)results.getAddedFromChangeSet().iterator().next());
+ assertEquals(3,results.getDeleted().size());
+ assertTrue(results.getDeleted().contains("bla/test4.xml"));
+ assertTrue(results.getDeleted().contains("bla/test5.xml"));
+ assertTrue(results.getDeleted().contains("bla/blubber/test6.xml"));
+
+ assertTrue(results.getAddedFromStream().contains("testdata/test1.xml"));
+ assertTrue(results.getAddedFromStream().contains("testdata/test2.xml"));
+ assertTrue(results.getAddedFromStream().contains("test/test3.xml"));
+ assertTrue(results.getAddedFromStream().contains("test.txt"));
+ assertTrue(results.getAddedFromStream().contains("something/bla"));
+ assertTrue(results.getAddedFromStream().contains("test with spaces.txt"));
+ assertEquals(6,results.getAddedFromStream().size());
+ } finally {
+ if (out != null)
+ out.close();
+ if (ais != null)
+ ais.close();
+ }
+
+ this.checkArchiveContent(result, archiveList);
+ }
+
+ /**
* Tries to delete a directory with a file and adds a new directory with a
* new file and with the same name. Should delete dir1/* and add
* dir1/test.txt at the end