You are viewing a plain text version of this content. The canonical link for it is here.
Posted to wagon-commits@maven.apache.org by br...@apache.org on 2008/06/02 09:48:23 UTC

svn commit: r662352 - in /maven/wagon/trunk/wagon-providers: wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/AbstractSshWagon.java wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/SftpWagon.java

Author: brett
Date: Mon Jun  2 00:48:23 2008
New Revision: 662352

URL: http://svn.apache.org/viewvc?rev=662352&view=rev
Log:
[WAGON-215] reuse the sftp connection completely

Modified:
    maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/AbstractSshWagon.java
    maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/SftpWagon.java

Modified: maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/AbstractSshWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/AbstractSshWagon.java?rev=662352&r1=662351&r2=662352&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/AbstractSshWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh-common/src/main/java/org/apache/maven/wagon/providers/ssh/AbstractSshWagon.java Mon Jun  2 00:48:23 2008
@@ -30,7 +30,6 @@
 import org.apache.maven.wagon.PathUtils;
 import org.apache.maven.wagon.PermissionModeUtils;
 import org.apache.maven.wagon.ResourceDoesNotExistException;
-import org.apache.maven.wagon.StreamWagon;
 import org.apache.maven.wagon.Streams;
 import org.apache.maven.wagon.TransferFailedException;
 import org.apache.maven.wagon.WagonConstants;

Modified: maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/SftpWagon.java
URL: http://svn.apache.org/viewvc/maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/SftpWagon.java?rev=662352&r1=662351&r2=662352&view=diff
==============================================================================
--- maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/SftpWagon.java (original)
+++ maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/SftpWagon.java Mon Jun  2 00:48:23 2008
@@ -25,6 +25,8 @@
 import java.util.List;
 import java.util.Vector;
 
+import org.apache.maven.wagon.InputData;
+import org.apache.maven.wagon.OutputData;
 import org.apache.maven.wagon.PathUtils;
 import org.apache.maven.wagon.ResourceDoesNotExistException;
 import org.apache.maven.wagon.TransferFailedException;
@@ -88,7 +90,7 @@
         }
     }
 
-    private void returnToParentDirectory( Resource resource, ChannelSftp channel )
+    private void returnToParentDirectory( Resource resource )
         throws SftpException
     {
         String dir = getResourceDirectory( resource.getName() );
@@ -99,7 +101,7 @@
         }
     }
 
-    private void putFile( ChannelSftp channel, File source, Resource resource, RepositoryPermissions permissions )
+    private void putFile( File source, Resource resource, RepositoryPermissions permissions )
         throws SftpException, TransferFailedException
     {
         resource.setContentLength( source.length() );
@@ -116,18 +118,18 @@
 
         if ( permissions != null && permissions.getGroup() != null )
         {
-            setGroup( channel, filename, permissions );
+            setGroup( filename, permissions );
         }
 
         if ( permissions != null && permissions.getFileMode() != null )
         {
-            setFileMode( channel, filename, permissions );
+            setFileMode( filename, permissions );
         }
 
         firePutCompleted( resource, source );
     }
 
-    private void setGroup( ChannelSftp channel, String filename, RepositoryPermissions permissions )
+    private void setGroup( String filename, RepositoryPermissions permissions )
         throws SftpException
     {
         try
@@ -142,7 +144,7 @@
         }
     }
 
-    private void setFileMode( ChannelSftp channel, String filename, RepositoryPermissions permissions )
+    private void setFileMode( String filename, RepositoryPermissions permissions )
     {
         try
         {
@@ -160,19 +162,19 @@
         }
     }
 
-    private void mkdirs( ChannelSftp channel, String resourceName, int mode )
+    private void mkdirs( String resourceName, int mode )
         throws SftpException, TransferFailedException
     {
         String[] dirs = PathUtils.dirnames( resourceName );
         for ( int i = 0; i < dirs.length; i++ )
         {
-            mkdir( channel, dirs[i], mode );
+            mkdir( dirs[i], mode );
 
             channel.cd( dirs[i] );
         }
     }
 
-    private void mkdir( ChannelSftp channel, String dir, int mode )
+    private void mkdir( String dir, int mode )
         throws TransferFailedException, SftpException
     {
         try
@@ -202,7 +204,7 @@
         }
     }
 
-    private SftpATTRS changeToRepositoryDirectory( ChannelSftp channel, String dir, String filename )
+    private SftpATTRS changeToRepositoryDirectory( String dir, String filename )
         throws ResourceDoesNotExistException, SftpException
     {
         // This must be called first to ensure that if the file doesn't exist it throws an exception
@@ -245,9 +247,9 @@
         
             preparePut( resource, permissions );
         
-            putFile( channel, source, resource, permissions );
+            putFile( source, resource, permissions );
         
-            returnToParentDirectory( resource, channel );
+            returnToParentDirectory( resource );
         }
         catch ( SftpException e )
         {
@@ -270,9 +272,9 @@
         try
         {
             String basedir = getRepository().getBasedir();
-            mkdirs( channel, basedir + "/", directoryMode );
+            mkdirs( basedir + "/", directoryMode );
             
-            mkdirs( channel, resource.getName(), directoryMode );
+            mkdirs( resource.getName(), directoryMode );
         }
         catch ( TransferFailedException e )
         {
@@ -287,26 +289,20 @@
     {
         final RepositoryPermissions permissions = repository.getPermissions();
 
-        ChannelSftp channel = null;
-
         try
         {
-            channel = (ChannelSftp) session.openChannel( SFTP_CHANNEL );
-
-            channel.connect();
-
             channel.cd( "/" );
             
             String basedir = getRepository().getBasedir();
             int directoryMode = getDirectoryMode( permissions );
             
-            mkdirs( channel, basedir + "/", directoryMode );
+            mkdirs( basedir + "/", directoryMode );
             
             fireTransferDebug( "Recursively uploading directory " + sourceDirectory.getAbsolutePath() + " as "
                 + destinationDirectory );
             
-            mkdirs( channel, destinationDirectory, directoryMode );
-            ftpRecursivePut( channel, sourceDirectory, null, getResourceFilename( destinationDirectory ), directoryMode );
+            mkdirs( destinationDirectory, directoryMode );
+            ftpRecursivePut( sourceDirectory, null, getResourceFilename( destinationDirectory ), directoryMode );
         }
         catch ( SftpException e )
         {
@@ -316,24 +312,9 @@
 
             throw new TransferFailedException( msg, e );
         }
-        catch ( JSchException e )
-        {
-            String msg =
-                "Error occured while deploying '" + sourceDirectory.getAbsolutePath() + "' " + "to remote repository: "
-                    + getRepository().getUrl();
-
-            throw new TransferFailedException( msg, e );
-        }
-        finally
-        {
-            if ( channel != null )
-            {
-                channel.disconnect();
-            }
-        }
     }
 
-    private void ftpRecursivePut( ChannelSftp channel, File sourceFile, String prefix, String fileName, int directoryMode )
+    private void ftpRecursivePut( File sourceFile, String prefix, String fileName, int directoryMode )
         throws TransferFailedException, SftpException
     {
         final RepositoryPermissions permissions = repository.getPermissions();
@@ -343,7 +324,7 @@
             if ( !fileName.equals( "." ) )
             {
                 prefix = getFileName( prefix, fileName );
-                mkdir( channel, fileName, directoryMode );
+                mkdir( fileName, directoryMode );
                 channel.cd( fileName );
             }
 
@@ -355,14 +336,14 @@
                 {
                     if ( files[i].isDirectory() )
                     {
-                        ftpRecursivePut( channel, files[i], prefix, files[i].getName(), directoryMode );
+                        ftpRecursivePut( files[i], prefix, files[i].getName(), directoryMode );
                     }
                 }
                 for ( int i = 0; i < files.length; i++ )
                 {
                     if ( !files[i].isDirectory() )
                     {
-                        ftpRecursivePut( channel, files[i], prefix, files[i].getName(), directoryMode );
+                        ftpRecursivePut( files[i], prefix, files[i].getName(), directoryMode );
                     }
                 }
             }
@@ -375,7 +356,7 @@
 
             firePutInitiated( resource, sourceFile );
 
-            putFile( channel, sourceFile, resource, permissions );
+            putFile( sourceFile, resource, permissions );
         }
     }
 
@@ -405,14 +386,9 @@
             dir = dir.substring( 1 );
         }
 
-        ChannelSftp channel = null;
         try
         {
-            channel = (ChannelSftp) session.openChannel( SFTP_CHANNEL );
-
-            channel.connect();
-
-            SftpATTRS attrs = changeToRepositoryDirectory( channel, dir, filename );
+            SftpATTRS attrs = changeToRepositoryDirectory( dir, filename );
             if ( ( attrs.getPermissions() & S_IFDIR ) == 0 )
             {
                 throw new TransferFailedException( "Remote path is not a directory:" + dir );
@@ -436,21 +412,6 @@
 
             throw new TransferFailedException( msg, e );
         }
-        catch ( JSchException e )
-        {
-            String msg =
-                "Error occured while listing '" + destinationDirectory + "' " + "on remote repository: "
-                    + getRepository().getUrl();
-
-            throw new TransferFailedException( msg, e );
-        }
-        finally
-        {
-            if ( channel != null )
-            {
-                channel.disconnect();
-            }
-        }
     }
     
     public boolean resourceExists( String resourceName )
@@ -466,14 +427,9 @@
             dir = dir.substring( 1 );
         }
 
-        ChannelSftp channel = null;
         try
         {
-            channel = (ChannelSftp) session.openChannel( SFTP_CHANNEL );
-
-            channel.connect();
-
-            changeToRepositoryDirectory( channel, dir, filename );
+            changeToRepositoryDirectory( dir, filename );
             
             return true;
         }
@@ -489,21 +445,6 @@
 
             throw new TransferFailedException( msg, e );
         }
-        catch ( JSchException e )
-        {
-            String msg =
-                "Error occured while looking for '" + resourceName + "' " + "on remote repository: "
-                    + getRepository().getUrl();
-
-            throw new TransferFailedException( msg, e );
-        }
-        finally
-        {
-            if ( channel != null )
-            {
-                channel.disconnect();
-            }
-        }
     }
 
     public boolean getIfNewer( String resourceName, File destination, long timestamp )
@@ -525,16 +466,10 @@
             dir = dir.substring( 1 );
         }
 
-        ChannelSftp channel = null;
-
         boolean bDownloaded = true;
         try
         {
-            channel = (ChannelSftp) session.openChannel( SFTP_CHANNEL );
-
-            channel.connect();
-
-            SftpATTRS attrs = changeToRepositoryDirectory( channel, dir, filename );
+            SftpATTRS attrs = changeToRepositoryDirectory( dir, filename );
 
             long lastModified = attrs.getMTime() * MILLIS_PER_SEC;
             if ( timestamp <= 0 || lastModified > timestamp )
@@ -569,17 +504,6 @@
         {
             handleGetException( resource, e, destination );
         }
-        catch ( JSchException e )
-        {
-            handleGetException( resource, e, destination );
-        }
-        finally
-        {
-            if ( channel != null )
-            {
-                channel.disconnect();
-            }
-        }
 
         return bDownloaded;
     }
@@ -589,4 +513,18 @@
     {
         getIfNewer( resourceName, destination, 0 );        
     }
+
+    public void fillInputData( InputData inputData )
+        throws TransferFailedException, ResourceDoesNotExistException
+    {
+        // TODO Auto-generated method stub
+        
+    }
+
+    public void fillOutputData( OutputData outputData )
+        throws TransferFailedException
+    {
+        // TODO Auto-generated method stub
+        
+    }
 }



---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-commits-unsubscribe@maven.apache.org
For additional commands, e-mail: wagon-commits-help@maven.apache.org