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:37:20 UTC
svn commit: r662349 -
/maven/wagon/trunk/wagon-providers/wagon-ssh/src/main/java/org/apache/maven/wagon/providers/ssh/jsch/SftpWagon.java
Author: brett
Date: Mon Jun 2 00:37:20 2008
New Revision: 662349
URL: http://svn.apache.org/viewvc?rev=662349&view=rev
Log:
[WAGON-215] change sftp to only connect once per wagon connection to improve performace
Modified:
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/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=662349&r1=662348&r2=662349&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:37:20 2008
@@ -28,6 +28,7 @@
import org.apache.maven.wagon.PathUtils;
import org.apache.maven.wagon.ResourceDoesNotExistException;
import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.authentication.AuthenticationException;
import org.apache.maven.wagon.authorization.AuthorizationException;
import org.apache.maven.wagon.events.TransferEvent;
import org.apache.maven.wagon.repository.RepositoryPermissions;
@@ -59,43 +60,43 @@
private static final long MILLIS_PER_SEC = 1000L;
- private void returnToParentDirectory( Resource resource, ChannelSftp channel )
- throws SftpException
+ private ChannelSftp channel;
+
+ public void closeConnection()
{
- String dir = getResourceDirectory( resource.getName() );
- String[] dirs = PathUtils.dirnames( dir );
- for ( int i = 0; i < dirs.length; i++ )
+ if ( channel != null )
{
- channel.cd( ".." );
+ channel.disconnect();
}
+ super.closeConnection();
}
- private ChannelSftp preparePut( Resource resource, RepositoryPermissions permissions )
- throws JSchException, SftpException, TransferFailedException
+ public void openConnectionInternal()
+ throws AuthenticationException
{
- ChannelSftp channel;
- channel = (ChannelSftp) session.openChannel( SFTP_CHANNEL );
-
- channel.connect();
+ super.openConnectionInternal();
- int directoryMode = getDirectoryMode( permissions );
-
- channel.cd( "/" );
-
try
{
- String basedir = getRepository().getBasedir();
- mkdirs( channel, basedir + "/", directoryMode );
-
- mkdirs( channel, resource.getName(), directoryMode );
+ channel = (ChannelSftp) session.openChannel( SFTP_CHANNEL );
+
+ channel.connect();
}
- catch ( TransferFailedException e )
+ catch ( JSchException e )
{
- fireTransferError( resource, e, TransferEvent.REQUEST_PUT );
+ throw new AuthenticationException( "Error connecting to remote repository: " + getRepository().getUrl(), e );
+ }
+ }
- throw e;
+ private void returnToParentDirectory( Resource resource, ChannelSftp channel )
+ throws SftpException
+ {
+ String dir = getResourceDirectory( resource.getName() );
+ String[] dirs = PathUtils.dirnames( dir );
+ for ( int i = 0; i < dirs.length; i++ )
+ {
+ channel.cd( ".." );
}
- return channel;
}
private void putFile( ChannelSftp channel, File source, Resource resource, RepositoryPermissions permissions )
@@ -109,8 +110,6 @@
firePutStarted( resource, source );
-
-
channel.put( source.getAbsolutePath(), filename );
postProcessListeners( resource, source, TransferEvent.REQUEST_PUT );
@@ -240,13 +239,11 @@
firePutInitiated( resource, source );
- ChannelSftp channel = null;
-
try
{
RepositoryPermissions permissions = getRepository().getPermissions();
- channel = preparePut( resource, permissions );
+ preparePut( resource, permissions );
putFile( channel, source, resource, permissions );
@@ -261,21 +258,27 @@
throw new TransferFailedException( msg, e );
}
- catch ( JSchException e )
- {
- fireTransferError( resource, e, TransferEvent.REQUEST_PUT );
-
- String msg = "Error occured while deploying '" + resource.getName() + "' " + "to remote repository: " +
- getRepository().getUrl();
+ }
+
+ private void preparePut( Resource resource, RepositoryPermissions permissions )
+ throws SftpException, TransferFailedException
+ {
+ int directoryMode = getDirectoryMode( getRepository().getPermissions() );
+
+ channel.cd( "/" );
- throw new TransferFailedException( msg, e );
+ try
+ {
+ String basedir = getRepository().getBasedir();
+ mkdirs( channel, basedir + "/", directoryMode );
+
+ mkdirs( channel, resource.getName(), directoryMode );
}
- finally
+ catch ( TransferFailedException e )
{
- if ( channel != null )
- {
- channel.disconnect();
- }
+ fireTransferError( resource, e, TransferEvent.REQUEST_PUT );
+
+ throw e;
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: wagon-commits-unsubscribe@maven.apache.org
For additional commands, e-mail: wagon-commits-help@maven.apache.org