Title: [1333] trunk/web/web-io/src/test/resources: JBEHAVE-189: Fixed regression.

Diff

Modified: trunk/web/web-io/src/main/java/org/jbehave/web/io/ResourceFinder.java (1332 => 1333)

--- trunk/web/web-io/src/main/java/org/jbehave/web/io/ResourceFinder.java	2009-10-14 08:33:11 UTC (rev 1332)
+++ trunk/web/web-io/src/main/java/org/jbehave/web/io/ResourceFinder.java	2009-10-14 11:56:37 UTC (rev 1333)
@@ -6,6 +6,7 @@
 
 import org.apache.commons.io.FileUtils;
 import org.apache.commons.io.IOUtils;
+import org.apache.commons.lang.StringUtils;
 
 /**
  * A utility class to retrieve resource, either from classpath or from
@@ -86,6 +87,9 @@
 	}
 
 	private String resourcePath(String rootDirectory, String relativePath) {
+		if ( StringUtils.isBlank(rootDirectory) ){
+			return relativePath;
+		}
 		return rootDirectory + "/" + relativePath;
 	}
 

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

--- trunk/web/web-io/src/main/java/org/jbehave/web/io/ZipFileArchiver.java	2009-10-14 08:33:11 UTC (rev 1332)
+++ trunk/web/web-io/src/main/java/org/jbehave/web/io/ZipFileArchiver.java	2009-10-14 11:56:37 UTC (rev 1333)
@@ -11,14 +11,12 @@
 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.ArchiveOutputStream;
 import org.apache.commons.compress.archivers.ArchiveStreamFactory;
 import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
-import org.apache.commons.compress.archivers.zip.ZipFile;
 import org.apache.commons.io.IOUtils;
 
 /**
@@ -40,9 +38,10 @@
 					new FileOutputStream(archive));
 			List<File> files = listContent(directory);
 			for (File file : files) {
-				if ( !file.isDirectory() ){
-					ZipArchiveEntry entry = new ZipArchiveEntry(relativeTo(file, directory).getPath());
-					zipEntry(entry, out, file);					
+				if (!file.isDirectory()) {
+					ZipArchiveEntry entry = new ZipArchiveEntry(relativeTo(
+							file, directory).getPath());
+					zipEntry(entry, out, file);
 				}
 			}
 			out.close();
@@ -52,11 +51,11 @@
 	}
 
 	public File relativeTo(File file, File directory) {
-		return new File(removeStart(file.getPath(), directory.getPath()+"/"));
+		return new File(removeStart(file.getPath(), directory.getPath() + "/"));
 	}
 
-	private void zipEntry(ZipArchiveEntry entry, ArchiveOutputStream out, File file)
-			throws IOException, FileNotFoundException {
+	private void zipEntry(ZipArchiveEntry entry, ArchiveOutputStream out,
+			File file) throws IOException, FileNotFoundException {
 		out.putArchiveEntry(entry);
 		IOUtils.copy(new FileInputStream(file), out);
 		out.closeArchiveEntry();
@@ -67,31 +66,51 @@
 	}
 
 	public void unarchive(File archive, File directory) {
+		InputStream is = null;
+		ArchiveInputStream in = null;
 		try {
-			ArchiveInputStream in = factory.createArchiveInputStream(ZIP,
-					new FileInputStream(archive));
-			ZipFile zipfile = new ZipFile(archive);
-			for (Enumeration<?> e = zipfile.getEntries(); e.hasMoreElements();) {
-				ZipArchiveEntry entry = (ZipArchiveEntry) e.nextElement();
+			is = new FileInputStream(archive);
+			in = factory.createArchiveInputStream(ZIP, is);
+			ZipArchiveEntry entry = null;
+			while ((entry = (ZipArchiveEntry) in.getNextEntry()) != null) {
 				unzipEntry(entry, in, directory);
 			}
-			in.close();
 		} catch (Exception e) {
 			throw new FileUnarchiveFailedException(archive, directory, e);
+		} finally {
+			close(is);
+			close(in);
 		}
 	}
 
-	public List<File> listContent(File directory) {
-		List<File> content = new ArrayList<File>();
+	private void close(InputStream is) {
 		try {
-			content.add(directory);
-			if (directory.isDirectory()) {
-				for (File file : directory.listFiles()) {
-					content.addAll(listContent(file));
-				}
+			if (is != null) {
+				is.close();
 			}
 		} catch (Exception e) {
+			e.printStackTrace();
 		}
+	}
+
+	private void close(ArchiveInputStream in) {
+		try {
+			if (in != null) {
+				in.close();
+			}
+		} catch (Exception e) {
+			e.printStackTrace();
+		}
+	}
+
+	public List<File> listContent(File directory) {
+		List<File> content = new ArrayList<File>();
+		content.add(directory);
+		if (directory.isDirectory()) {
+			for (File file : directory.listFiles()) {
+				content.addAll(listContent(file));
+			}
+		}
 		return content;
 	}
 
@@ -104,12 +123,9 @@
 		}
 
 		File outputFile = new File(directory, entry.getName());
-		if (!outputFile.getParentFile().exists()) {
-			createDir(outputFile.getParentFile());
-		}
+		createDir(outputFile.getParentFile());
+		copy(entry, in, outputFile);
 
-		copy(entry, in, directory);
-
 	}
 
 	private void createDir(File dir) throws IOException {
@@ -121,33 +137,36 @@
 		}
 	}
 
-	private void copy(ZipArchiveEntry entry, InputStream in, File directory)
+	private void copy(ZipArchiveEntry entry, InputStream in, File outputFile)
 			throws FileNotFoundException, IOException {
-		File entryFile = new File(directory, entry.getName());
-		OutputStream out = new FileOutputStream(entryFile);
-		IOUtils.copy(in, out);
-		out.close();
+		OutputStream out = new FileOutputStream(outputFile);
+		try {
+			IOUtils.copy(in, out);
+		} finally {
+			out.close();
+		}
 	}
-	
+
 	@SuppressWarnings("serial")
 	public static final class FileArchiveFailedException extends
 			RuntimeException {
 
 		public FileArchiveFailedException(File archive, File directory,
 				Exception cause) {
-			super("Failed to archive dir " + directory + " to " + archive, cause);
+			super("Failed to archive dir " + directory + " to " + archive,
+					cause);
 		}
 
 	}
 
-
 	@SuppressWarnings("serial")
 	public static final class FileUnarchiveFailedException extends
 			RuntimeException {
 
 		public FileUnarchiveFailedException(File archive, File directory,
 				Exception cause) {
-			super("Failed to unarchive " + archive + " to dir " + directory, cause);
+			super("Failed to unarchive " + archive + " to dir " + directory,
+					cause);
 		}
 
 	}

Modified: trunk/web/web-io/src/test/java/org/jbehave/web/io/ArchivingFileManagerTest.java (1332 => 1333)

--- trunk/web/web-io/src/test/java/org/jbehave/web/io/ArchivingFileManagerTest.java	2009-10-14 08:33:11 UTC (rev 1332)
+++ trunk/web/web-io/src/test/java/org/jbehave/web/io/ArchivingFileManagerTest.java	2009-10-14 11:56:37 UTC (rev 1333)
@@ -169,7 +169,7 @@
 	}
 
 	private File createUploadDir() throws IOException {
-		File dir = new File(System.getProperty("java.io.tmpdir"), "upload");
+		File dir = new File("target", "upload");
 		dir.mkdirs();
 		return dir;
 	}

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

--- trunk/web/web-io/src/test/java/org/jbehave/web/io/ZipFileArchiverTest.java	2009-10-14 08:33:11 UTC (rev 1332)
+++ trunk/web/web-io/src/test/java/org/jbehave/web/io/ZipFileArchiverTest.java	2009-10-14 11:56:37 UTC (rev 1333)
@@ -18,13 +18,13 @@
 
 	@Before
 	public void setup() throws IOException {
-		dir = new File("/tmp", "dir");
+		dir = new File("target", "dir");
 		dir.createNewFile();
 	}
 
 	@Test
 	public void canArchiveZip() throws IOException {
-		File zip = createFile("dir1.zip");
+		File zip = createFile("archive.zip");
 		archiver.archive(zip, dir);
 	}
 
@@ -38,12 +38,12 @@
 
 	@Test
 	public void canUnarchiveZip() throws IOException {
-		File zip = resourceFile("dir1.zip");
+		File zip = resourceFile("archive.zip");
 		assertTrue(archiver.isArchive(zip));
 		clearDir(dir);
 		archiver.unarchive(zip, dir);
-		assertFilesUnarchived(asList("dir1", "dir1/file1.txt", "dir1/subdir1",
-				"dir1/subdir1/subfile1.txt"));
+		assertFilesUnarchived(asList("archive", "archive/file1.txt", "archive/subdir1",
+				"archive/subdir1/subfile1.txt"));
 	}
 
 	private void clearDir(File dir) {
@@ -53,12 +53,12 @@
 
 	@Test
 	public void canListFileContentOfUnarchiveZip() throws IOException {
-		File zip = resourceFile("dir1.zip");
+		File zip = resourceFile("archive.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"));
+		List<File> content = archiver.listContent(new File(dir, "archive"));
+		assertFilesEquals(content, asList("archive", "archive/file1.txt",
+				"archive/subdir1", "archive/subdir1/subfile1.txt"));
 	}
 
 	private void assertFilesEquals(List<File> content,
@@ -70,15 +70,16 @@
 	}
 
 	private void assertFilesUnarchived(List<String> paths) {
+		ResourceFinder finder = new ResourceFinder("");
 		for (String path : paths) {
-			assertFileExists(path);
+			File file = new File(dir, path);
+			assertTrue(file.exists());
+			if ( !file.isDirectory() ){
+				assertTrue(finder.resourceAsString(file.getPath()).length() > 0);
+			}
 		}
 	}
 
-	private void assertFileExists(String path) {
-		assertTrue(new File(dir, path).exists());
-	}
-
 	private File resourceFile(String path) {
 		return new File(getClass().getClassLoader().getResource(path).getFile());
 	}

Added: trunk/web/web-io/src/test/resources/archive.zip

(Binary files differ)
Property changes on: trunk/web/web-io/src/test/resources/archive.zip ___________________________________________________________________ Name: svn:mime-type + application/octet-stream

Deleted: trunk/web/web-io/src/test/resources/dir1.zip

(Binary files differ)

To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to