Author: imario Date: Mon Mar 19 12:41:43 2007 New Revision: 520065 URL: http://svn.apache.org/viewvc?view=rev&rev=520065 Log: VFS-111: fail fast when trying to write to a closed file
Modified: jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/Resources.properties jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util/MonitorOutputStream.java Modified: jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/Resources.properties URL: http://svn.apache.org/viewvc/jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/Resources.properties?view=diff&rev=520065&r1=520064&r2=520065 ============================================================================== --- jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/Resources.properties (original) +++ jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/Resources.properties Mon Mar 19 12:41:43 2007 @@ -62,6 +62,7 @@ vfs.provider/random-access.error=Could not read/write file "{0}". vfs.provider/read-not-readable.error=File "{0}" is not readable. vfs.provider/read-not-file.error=Could not read from "{0}" because it is a not a file. +vfs.provider/closed.error=File closed. # DefaultFileContent vfs.provider/get-size-not-file.error=Could not determine the size of "{0}" because it is not a file. Modified: jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util/MonitorOutputStream.java URL: http://svn.apache.org/viewvc/jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util/MonitorOutputStream.java?view=diff&rev=520065&r1=520064&r2=520065 ============================================================================== --- jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util/MonitorOutputStream.java (original) +++ jakarta/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/util/MonitorOutputStream.java Mon Mar 19 12:41:43 2007 @@ -16,6 +16,8 @@ */ package org.apache.commons.vfs.util; +import org.apache.commons.vfs.FileSystemException; + import java.io.BufferedOutputStream; import java.io.IOException; import java.io.OutputStream; @@ -75,7 +77,45 @@ } } - /** + + public synchronized void write(int b) throws IOException + { + assertOpen(); + super.write(b); + } + + public synchronized void write(byte b[], int off, int len) throws IOException + { + assertOpen(); + super.write(b, off, len); + } + + public synchronized void flush() throws IOException + { + assertOpen(); + super.flush(); + } + + public void write(byte b[]) throws IOException + { + assertOpen(); + super.write(b); + } + + /** + * check if file is still open. <br /> + * This is a workaround for an oddidy with javas BufferedOutputStream where you can write to + * even if the stream has been closed + */ + protected void assertOpen() throws FileSystemException + { + if (finished) + { + throw new FileSystemException("vfs.provider/closed.error"); + } + } + + /** * Called after this stream is closed. This implementation does nothing. */ protected void onClose() throws IOException --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]