- Revision
- 1305
- Author
- mauro
- Date
- 2009-10-10 16:05:41 -0500 (Sat, 10 Oct 2009)
Log Message
JBEHAVE-183: Added method to list content of unarchived dir.
Modified Paths
- trunk/web/web-io/src/main/java/org/jbehave/web/io/ArchivingFileManager.java
- trunk/web/web-io/src/main/java/org/jbehave/web/io/FileArchiver.java
- trunk/web/web-io/src/main/java/org/jbehave/web/io/FileManager.java
- trunk/web/web-io/src/main/java/org/jbehave/web/io/ZipFileArchiver.java
- trunk/web/web-io/src/test/java/org/jbehave/web/io/ZipFileArchiverTest.java
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:
