commons-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From rgo...@apache.org
Subject svn commit: r832481 - in /commons/proper/vfs/trunk: core/src/main/java/org/apache/commons/vfs/provider/ftp/FtpFileObject.java xdocs/changes.xml
Date Tue, 03 Nov 2009 17:36:08 GMT
Author: rgoers
Date: Tue Nov  3 17:36:07 2009
New Revision: 832481

URL: http://svn.apache.org/viewvc?rev=832481&view=rev
Log:
Apply patch for VFS-289 provided by Kirill Safonov

Modified:
    commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/ftp/FtpFileObject.java
    commons/proper/vfs/trunk/xdocs/changes.xml

Modified: commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/ftp/FtpFileObject.java
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/ftp/FtpFileObject.java?rev=832481&r1=832480&r2=832481&view=diff
==============================================================================
--- commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/ftp/FtpFileObject.java
(original)
+++ commons/proper/vfs/trunk/core/src/main/java/org/apache/commons/vfs/provider/ftp/FtpFileObject.java
Tue Nov  3 17:36:07 2009
@@ -585,13 +585,19 @@
     protected InputStream doGetInputStream() throws Exception
     {
         final FtpClient client = ftpFs.getClient();
-        final InputStream instr = client.retrieveFileStream(relPath);
-        // VFS-210
-        if (instr == null)
-        {
-            throw new FileNotFoundException(getName().toString());
+        try {
+            final InputStream instr = client.retrieveFileStream(relPath);
+            // VFS-210
+            if (instr == null)
+            {
+                throw new FileNotFoundException(getName().toString());
+            }
+            return new FtpInputStream(client, instr);
+        }
+        catch (Exception e) {
+            ftpFs.putClient(client);
+            throw e;
         }
-        return new FtpInputStream(client, instr);
     }
 
     protected RandomAccessContent doGetRandomAccessContent(final RandomAccessMode mode) throws
Exception
@@ -606,26 +612,32 @@
         throws Exception
     {
         final FtpClient client = ftpFs.getClient();
-        OutputStream out = null;
-        if (bAppend)
-        {
-            out = client.appendFileStream(relPath);
-        }
-        else
-        {
-            out = client.storeFileStream(relPath);
-        }
+        try {
+            OutputStream out = null;
+            if (bAppend)
+            {
+                out = client.appendFileStream(relPath);
+            }
+            else
+            {
+                out = client.storeFileStream(relPath);
+            }
 
-        if (out == null)
-        {
-            throw new FileSystemException("vfs.provider.ftp/output-error.debug", new Object[]
-                {
-                    this.getName(),
-                    client.getReplyString()
-                });
-        }
+            if (out == null)
+            {
+                throw new FileSystemException("vfs.provider.ftp/output-error.debug", new
Object[]
+                    {
+                        this.getName(),
+                        client.getReplyString()
+                    });
+            }
 
-        return new FtpOutputStream(client, out);
+            return new FtpOutputStream(client, out);
+        }
+        catch (Exception e) {
+            ftpFs.putClient(client);
+            throw e;
+        }
     }
 
     String getRelPath()
@@ -636,16 +648,22 @@
     FtpInputStream getInputStream(long filePointer) throws IOException
     {
         final FtpClient client = ftpFs.getClient();
-        final InputStream instr = client.retrieveFileStream(relPath, filePointer);
-        if (instr == null)
-        {
-            throw new FileSystemException("vfs.provider.ftp/input-error.debug", new Object[]
-                {
-                    this.getName(),
-                    client.getReplyString()
-                });
+        try {
+            final InputStream instr = client.retrieveFileStream(relPath, filePointer);
+            if (instr == null)
+            {
+                throw new FileSystemException("vfs.provider.ftp/input-error.debug", new Object[]
+                    {
+                        this.getName(),
+                        client.getReplyString()
+                    });
+            }
+            return new FtpInputStream(client, instr);
+        }
+        catch (IOException e) {
+            ftpFs.putClient(client);
+            throw e;
         }
-        return new FtpInputStream(client, instr);
     }
 
     /**

Modified: commons/proper/vfs/trunk/xdocs/changes.xml
URL: http://svn.apache.org/viewvc/commons/proper/vfs/trunk/xdocs/changes.xml?rev=832481&r1=832480&r2=832481&view=diff
==============================================================================
--- commons/proper/vfs/trunk/xdocs/changes.xml (original)
+++ commons/proper/vfs/trunk/xdocs/changes.xml Tue Nov  3 17:36:07 2009
@@ -23,6 +23,9 @@
 
   <body>
     <release version="2.0" date="in SVN" description="">
+      <action dev="rgoers" type="fix" issue="VFS-289" due-to="Kirill Safonov">
+        FTP connection is not released If exception is thrown out of FtpFileObject.doGetOutputStream().
+      </action>
       <action dev="rgoers" type="fix" issue="VFS-286" due-to="Kirill Safonov">
         SftpFileObject.doListChildrenResolved() changes the working dir before doing ChannelSftp.ls()
call.
         If ls() throws an exception, the current directory is not reset. All the subsequent
operations that rely on the



Mime
View raw message