Title: [1305] trunk/web/web-io/src/test/java/org/jbehave/web/io: JBEHAVE-183: Added method to list content of unarchived dir.

Diff

Modified: trunk/web/web-io/src/main/java/org/jbehave/web/io/ArchivingFileManager.java (1304 => 1305)

--- trunk/web/web-io/src/main/java/org/jbehave/web/io/ArchivingFileManager.java	2009-10-10 09:29:02 UTC (rev 1304)
+++ trunk/web/web-io/src/main/java/org/jbehave/web/io/ArchivingFileManager.java	2009-10-10 21:05:41 UTC (rev 1305)
@@ -34,6 +34,10 @@
 		return uploadDirectory;
 	}
 
+	public List<File> listContent(String path){
+		return archiver.listContent(archiver.unarchivedDir(new File(path)));
+	}
+	
 	public void delete(List<String> paths) {
 		for (String path : paths) {
 			deleteFile(new File(path));

Modified: trunk/web/web-io/src/main/java/org/jbehave/web/io/FileArchiver.java (1304 => 1305)

--- trunk/web/web-io/src/main/java/org/jbehave/web/io/FileArchiver.java	2009-10-10 09:29:02 UTC (rev 1304)
+++ trunk/web/web-io/src/main/java/org/jbehave/web/io/FileArchiver.java	2009-10-10 21:05:41 UTC (rev 1305)
@@ -1,6 +1,7 @@
 package org.jbehave.web.io;
 
 import java.io.File;
+import java.util.List;
 
 public interface FileArchiver {
 
@@ -8,6 +9,8 @@
 
 	void unarchive(File archive, File outputDir);
 
-	File unarchivedDir(File file);	
+	File unarchivedDir(File archive);	
 
+	List<File> listContent(File directory);
+	
 }
\ No newline at end of file

Modified: trunk/web/web-io/src/main/java/org/jbehave/web/io/FileManager.java (1304 => 1305)

--- trunk/web/web-io/src/main/java/org/jbehave/web/io/FileManager.java	2009-10-10 09:29:02 UTC (rev 1304)
+++ trunk/web/web-io/src/main/java/org/jbehave/web/io/FileManager.java	2009-10-10 21:05:41 UTC (rev 1305)
@@ -11,6 +11,8 @@
 public interface FileManager {
 
 	List<File> list();
+	
+	List<File> listContent(String path);
 
 	void delete(List<String> paths);
 

Modified: trunk/web/web-io/src/main/java/org/jbehave/web/io/ZipFileArchiver.java (1304 => 1305)

--- trunk/web/web-io/src/main/java/org/jbehave/web/io/ZipFileArchiver.java	2009-10-10 09:29:02 UTC (rev 1304)
+++ trunk/web/web-io/src/main/java/org/jbehave/web/io/ZipFileArchiver.java	2009-10-10 21:05:41 UTC (rev 1305)
@@ -9,7 +9,9 @@
 import java.io.IOException;
 import java.io.InputStream;
 import java.io.OutputStream;
+import java.util.ArrayList;
 import java.util.Enumeration;
+import java.util.List;
 
 import org.apache.commons.compress.archivers.ArchiveInputStream;
 import org.apache.commons.compress.archivers.ArchiveStreamFactory;
@@ -19,20 +21,21 @@
 
 public class ZipFileArchiver implements FileArchiver {
 
-	private static final String ZIP = ".zip";
+	private static final String ZIP = "zip";
+	private static final String ZIP_EXT = ".zip";
 	private ArchiveStreamFactory factory = new ArchiveStreamFactory();
 
 	public boolean isArchive(File file) {
-		return file.getName().endsWith(ZIP);
+		return file.getName().endsWith(ZIP_EXT);
 	}
 
-	public File unarchivedDir(File file) {
-		return new File(removeEnd(file.getPath(), ZIP));
+	public File unarchivedDir(File archive) {
+		return new File(removeEnd(archive.getPath(), ZIP_EXT));
 	}
 
 	public void unarchive(File archive, File outputDir) {
 		try {
-			ArchiveInputStream in = factory.createArchiveInputStream("zip",
+			ArchiveInputStream in = factory.createArchiveInputStream(ZIP,
 					new FileInputStream(archive));
 			ZipFile zipfile = new ZipFile(archive);
 			for (Enumeration<?> e = zipfile.getEntries(); e.hasMoreElements();) {
@@ -45,6 +48,21 @@
 		}
 	}
 
+	public List<File> listContent(File directory) {
+		List<File> content = new ArrayList<File>();
+		try {
+			content.add(directory);
+			if ( directory.isDirectory() ){
+				for (File file : directory.listFiles() ) {
+					content.addAll(listContent(file));					
+				}
+			}
+		} catch (Exception e) {
+		}
+		return content;
+	}
+
+
 	private void unzipEntry(ZipArchiveEntry entry, InputStream in,
 			File outputDir) throws IOException {
 

Modified: trunk/web/web-io/src/test/java/org/jbehave/web/io/ZipFileArchiverTest.java (1304 => 1305)

--- trunk/web/web-io/src/test/java/org/jbehave/web/io/ZipFileArchiverTest.java	2009-10-10 09:29:02 UTC (rev 1304)
+++ trunk/web/web-io/src/test/java/org/jbehave/web/io/ZipFileArchiverTest.java	2009-10-10 21:05:41 UTC (rev 1305)
@@ -1,6 +1,7 @@
 package org.jbehave.web.io;
 
 import static java.util.Arrays.asList;
+import static org.junit.Assert.assertEquals;
 import static org.junit.Assert.assertTrue;
 
 import java.io.File;
@@ -31,6 +32,24 @@
 				"dir1/subdir1/subfile1.txt"));
 	}
 
+	@Test
+	public void canListFileContentOfUnarchiveZip() throws IOException {
+		FileArchiver archiver = new ZipFileArchiver();
+		File zip = resourceFile("dir1.zip");
+		assertTrue(archiver.isArchive(zip));
+		archiver.unarchive(zip, dir);		
+		List<File> content = archiver.listContent(new File(dir, "dir1"));
+		assertFilesEquals(content, asList("dir1", "dir1/file1.txt", "dir1/subdir1",
+						"dir1/subdir1/subfile1.txt"));
+	}
+
+	private void assertFilesEquals(List<File> content, List<String> expectedPaths) {
+		for (int i = 0; i < content.size(); i++) {
+			File file = content.get(i);
+			assertEquals(file, new File(dir, expectedPaths.get(i)));
+		}
+	}
+
 	private void assertFilesUnarchived(List<String> paths) {
 		for (String path : paths) {
 			assertFileExists(path);


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to