Title: [1350] trunk/web/web-io/src/test/java/org/jbehave/web/io: JBEHAVE-194: Added file monitoring.

Diff

Modified: trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/runner/TraderRegistrar.java (1349 => 1350)

--- trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/runner/TraderRegistrar.java	2009-10-17 15:56:09 UTC (rev 1349)
+++ trunk/web/examples/trader-web/src/main/java/org/jbehave/web/examples/trader/runner/TraderRegistrar.java	2009-10-17 17:18:06 UTC (rev 1350)
@@ -5,6 +5,7 @@
 import org.codehaus.waffle.registrar.Registrar;
 import org.jbehave.web.examples.trader.scenarios.StockExchangeSteps;
 import org.jbehave.web.examples.trader.scenarios.TraderSteps;
+import org.jbehave.web.io.PrintStreamFileMonitor;
 import org.jbehave.web.runner.waffle.JBehaveRegistrar;
 
 public class TraderRegistrar extends JBehaveRegistrar {
@@ -19,6 +20,12 @@
 		registerInstance(new StockExchangeSteps());
 	}
 	
+	@Override
+	protected void registerFileMonitor() {
+		register(PrintStreamFileMonitor.class);
+	}
+	
+	@Override
 	protected File uploadDirectory() {
 		// Can be overridden to return, e.g. new File("/tmp/upload");
 		return super.uploadDirectory();

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

--- trunk/web/web-io/src/main/java/org/jbehave/web/io/ArchivingFileManager.java	2009-10-17 15:56:09 UTC (rev 1349)
+++ trunk/web/web-io/src/main/java/org/jbehave/web/io/ArchivingFileManager.java	2009-10-17 17:18:06 UTC (rev 1350)
@@ -17,19 +17,24 @@
 public class ArchivingFileManager implements FileManager {
 
 	private final FileArchiver archiver;
+	private final FileMonitor monitor;
 	private final File uploadDirectory;
 
-	public ArchivingFileManager(FileArchiver archiver, File uploadDirectory) {
+	public ArchivingFileManager(FileArchiver archiver, FileMonitor monitor, File uploadDirectory) {
 		this.archiver = archiver;
+		this.monitor = monitor;
 		this.uploadDirectory = uploadDirectory;
 	}
 
 	public List<File> list() {
-		return asList(uploadDirectory().listFiles(new FileFilter() {
+		File directory = uploadDirectory();
+		List<File> files = asList(directory.listFiles(new FileFilter() {
 			public boolean accept(File file) {
 				return !file.isDirectory();
 			}
 		}));
+		monitor.filesListed(directory, files);
+		return files;
 	}
 
 	private File uploadDirectory() {
@@ -45,6 +50,7 @@
 					directory) : file);
 			content.add(contentFile);
 		}
+		monitor.contentListed(path, directory, relativePaths, content);
 		return content;
 	}
 
@@ -63,9 +69,12 @@
 		}
 		if (archiver.isArchive(file)) {
 			// delete the unarchived directory too
-			deleteFile(archiver.directoryOf(file));
+			File directory = archiver.directoryOf(file);
+			deleteFile(directory);
+			monitor.fileDeleted(directory);
 		}
 		file.delete();
+		monitor.fileDeleted(file);
 	}
 
 	public List<File> upload(List<FileItem> fileItems, List<String> errors) {
@@ -78,6 +87,7 @@
 				if (archiver.isArchive(file)) {
 					try {
 						archiver.unarchive(file, directory);
+						monitor.fileUnarchived(file, directory);
 					} catch (FileUnarchiveFailedException e) {
 						errors.add(e.getMessage());
 						if (e.getCause() != null) {

Added: trunk/web/web-io/src/main/java/org/jbehave/web/io/FileMonitor.java (0 => 1350)

--- trunk/web/web-io/src/main/java/org/jbehave/web/io/FileMonitor.java	                        (rev 0)
+++ trunk/web/web-io/src/main/java/org/jbehave/web/io/FileMonitor.java	2009-10-17 17:18:06 UTC (rev 1350)
@@ -0,0 +1,17 @@
+package org.jbehave.web.io;
+
+import java.io.File;
+import java.util.List;
+
+public interface FileMonitor {
+	
+	void contentListed(String path, File directory,
+			boolean relativePaths, List<File> content);
+
+	void filesListed(File uploadDirectory, List<File> files);
+
+	void fileUnarchived(File file, File directory);
+
+	void fileDeleted(File file);
+
+}

Added: trunk/web/web-io/src/main/java/org/jbehave/web/io/PrintStreamFileMonitor.java (0 => 1350)

--- trunk/web/web-io/src/main/java/org/jbehave/web/io/PrintStreamFileMonitor.java	                        (rev 0)
+++ trunk/web/web-io/src/main/java/org/jbehave/web/io/PrintStreamFileMonitor.java	2009-10-17 17:18:06 UTC (rev 1350)
@@ -0,0 +1,43 @@
+package org.jbehave.web.io;
+
+import java.io.File;
+import java.io.PrintStream;
+import java.util.List;
+
+public class PrintStreamFileMonitor implements FileMonitor {
+
+	private final PrintStream output;
+
+	public PrintStreamFileMonitor() {
+		this(System.out);
+	}
+
+	public PrintStreamFileMonitor(PrintStream output) {
+		this.output = output;
+	}
+
+	protected void print(PrintStream output, String message) {
+		output.println(message);
+	}
+
+	public void contentListed(String path, File directory,
+			boolean relativePaths, List<File> content) {
+		print(output, "Listed content of path " + path + " from directory "
+				+ directory + " using " + (relativePaths ? "relative" : "full")
+				+ " paths: " + content);
+	}
+
+	public void fileDeleted(File file) {
+		print(output, "Deleted file " + file);
+	}
+
+	public void fileUnarchived(File file, File directory) {
+		print(output, "Unarchived file " + file + " to directory " + directory);
+	}
+
+	public void filesListed(File uploadDirectory, List<File> files) {
+		print(output, "Listed files from upload directory " + uploadDirectory
+				+ ": " + files);
+	}
+
+}

Added: trunk/web/web-io/src/main/java/org/jbehave/web/io/SilentFileMonitor.java (0 => 1350)

--- trunk/web/web-io/src/main/java/org/jbehave/web/io/SilentFileMonitor.java	                        (rev 0)
+++ trunk/web/web-io/src/main/java/org/jbehave/web/io/SilentFileMonitor.java	2009-10-17 17:18:06 UTC (rev 1350)
@@ -0,0 +1,11 @@
+package org.jbehave.web.io;
+
+import java.io.PrintStream;
+
+public class SilentFileMonitor extends PrintStreamFileMonitor {
+
+	protected void print(PrintStream output, String message) {
+		// print nothing
+	}
+
+}

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

--- trunk/web/web-io/src/test/java/org/jbehave/web/io/ArchivingFileManagerTest.java	2009-10-17 15:56:09 UTC (rev 1349)
+++ trunk/web/web-io/src/test/java/org/jbehave/web/io/ArchivingFileManagerTest.java	2009-10-17 17:18:06 UTC (rev 1350)
@@ -44,7 +44,7 @@
 		file2 = create("file2");
 		zip = create("dir1.zip");
 		archiveFiles(zip, asList(file1, file2));
-		manager = new ArchivingFileManager(new ZipFileArchiver(), upload);
+		manager = new ArchivingFileManager(new ZipFileArchiver(), new SilentFileMonitor(), upload);
 	}
 
 	@After

Modified: trunk/web/web-runner/src/main/java/org/jbehave/web/runner/waffle/JBehaveRegistrar.java (1349 => 1350)

--- trunk/web/web-runner/src/main/java/org/jbehave/web/runner/waffle/JBehaveRegistrar.java	2009-10-17 15:56:09 UTC (rev 1349)
+++ trunk/web/web-runner/src/main/java/org/jbehave/web/runner/waffle/JBehaveRegistrar.java	2009-10-17 17:18:06 UTC (rev 1350)
@@ -20,6 +20,7 @@
 import org.jbehave.scenario.steps.DefaultStepdocGenerator;
 import org.jbehave.scenario.steps.Steps;
 import org.jbehave.web.io.ArchivingFileManager;
+import org.jbehave.web.io.SilentFileMonitor;
 import org.jbehave.web.io.ZipFileArchiver;
 import org.jbehave.web.runner.waffle.controllers.FileController;
 import org.jbehave.web.runner.waffle.controllers.FileUploadController;
@@ -41,6 +42,7 @@
 		registerScenarioRunner();
 		registerSteps();
 		registerStepdocGenerator();
+		registerFileMonitor();
 		registerFileManager();
 		register("data/file", FileController.class);
 		register("data/files", FilesController.class);
@@ -101,6 +103,10 @@
 		register(DefaultStepdocGenerator.class);
 	}
 
+	protected void registerFileMonitor() {
+		register(SilentFileMonitor.class);
+	}
+
 	protected void registerFileManager() {
 		register(ZipFileArchiver.class);
 		register(ArchivingFileManager.class);


To unsubscribe from this list please visit:

http://xircles.codehaus.org/manage_email

Reply via email to