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]