mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-06-08 10:16:03 +02:00
Bug 483923 - Opening ssh connection should not depend on sftp
- move aborting logic from opening connection to retrieval of file service Change-Id: Ided36954880e535243783ed704d2fac161d42b59 Signed-off-by: Alena Laskavaia <elaskavaia.cdt@gmail.com>
This commit is contained in:
parent
edb1a9bd2b
commit
08fc8e1b4d
2 changed files with 47 additions and 36 deletions
|
@ -79,7 +79,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.jcraft.jsch.UserInfo#getPassphrase()
|
* @see com.jcraft.jsch.UserInfo#getPassphrase()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -92,7 +92,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.jcraft.jsch.UserInfo#getPassword()
|
* @see com.jcraft.jsch.UserInfo#getPassword()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -105,7 +105,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.jcraft.jsch.UIKeyboardInteractive#promptKeyboardInteractive(java.lang.String, java.lang.String,
|
* @see com.jcraft.jsch.UIKeyboardInteractive#promptKeyboardInteractive(java.lang.String, java.lang.String,
|
||||||
* java.lang.String, java.lang.String[], boolean[])
|
* java.lang.String, java.lang.String[], boolean[])
|
||||||
*/
|
*/
|
||||||
|
@ -140,7 +140,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.jcraft.jsch.UserInfo#promptPassphrase(java.lang.String)
|
* @see com.jcraft.jsch.UserInfo#promptPassphrase(java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -173,7 +173,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.jcraft.jsch.UserInfo#promptPassword(java.lang.String)
|
* @see com.jcraft.jsch.UserInfo#promptPassword(java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -202,7 +202,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.jcraft.jsch.UserInfo#promptYesNo(java.lang.String)
|
* @see com.jcraft.jsch.UserInfo#promptYesNo(java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -222,7 +222,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see com.jcraft.jsch.UserInfo#showMessage(java.lang.String)
|
* @see com.jcraft.jsch.UserInfo#showMessage(java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -278,7 +278,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteConnection.Service#getRemoteConnection()
|
* @see org.eclipse.remote.core.IRemoteConnection.Service#getRemoteConnection()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -289,7 +289,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
public static class Factory implements IRemoteConnection.Service.Factory {
|
public static class Factory implements IRemoteConnection.Service.Factory {
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteConnection.Service.Factory#getService(org.eclipse.remote.core.IRemoteConnection,
|
* @see org.eclipse.remote.core.IRemoteConnection.Service.Factory#getService(org.eclipse.remote.core.IRemoteConnection,
|
||||||
* java.lang.Class)
|
* java.lang.Class)
|
||||||
*/
|
*/
|
||||||
|
@ -378,7 +378,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteConnectionControlService#close()
|
* @see org.eclipse.remote.core.IRemoteConnectionControlService#close()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -405,7 +405,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemotePortForwardingService#forwardLocalPort(int, java.lang.String, int)
|
* @see org.eclipse.remote.core.IRemotePortForwardingService#forwardLocalPort(int, java.lang.String, int)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -422,7 +422,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemotePortForwardingService#forwardLocalPort(java.lang.String, int,
|
* @see org.eclipse.remote.core.IRemotePortForwardingService#forwardLocalPort(java.lang.String, int,
|
||||||
* org.eclipse.core.runtime.IProgressMonitor)
|
* org.eclipse.core.runtime.IProgressMonitor)
|
||||||
*/
|
*/
|
||||||
|
@ -458,7 +458,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemotePortForwardingService#forwardRemotePort(int, java.lang.String, int)
|
* @see org.eclipse.remote.core.IRemotePortForwardingService#forwardRemotePort(int, java.lang.String, int)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -475,7 +475,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemotePortForwardingService#forwardRemotePort(java.lang.String, int,
|
* @see org.eclipse.remote.core.IRemotePortForwardingService#forwardRemotePort(java.lang.String, int,
|
||||||
* org.eclipse.core.runtime.IProgressMonitor)
|
* org.eclipse.core.runtime.IProgressMonitor)
|
||||||
*/
|
*/
|
||||||
|
@ -510,7 +510,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteConnectionHostService#getHostname()
|
* @see org.eclipse.remote.core.IRemoteConnectionHostService#getHostname()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -535,7 +535,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteProcessService#getEnv()
|
* @see org.eclipse.remote.core.IRemoteProcessService#getEnv()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -545,7 +545,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteProcessService#getEnv(java.lang.String)
|
* @see org.eclipse.remote.core.IRemoteProcessService#getEnv(java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -595,7 +595,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteConnectionHostService#getPort()
|
* @see org.eclipse.remote.core.IRemoteConnectionHostService#getPort()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -606,7 +606,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteProcessService#getProcessBuilder(java.util.List)
|
* @see org.eclipse.remote.core.IRemoteProcessService#getProcessBuilder(java.util.List)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -616,7 +616,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteProcessService#getProcessBuilder(java.lang.String[])
|
* @see org.eclipse.remote.core.IRemoteProcessService#getProcessBuilder(java.lang.String[])
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -626,7 +626,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteConnectionPropertyService#getProperty(java.lang.String)
|
* @see org.eclipse.remote.core.IRemoteConnectionPropertyService#getProperty(java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -636,7 +636,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get the login shell command if useLoginShell is true
|
* Get the login shell command if useLoginShell is true
|
||||||
*
|
*
|
||||||
* @return login shell command
|
* @return login shell command
|
||||||
*/
|
*/
|
||||||
public String getLoginShellCommand() {
|
public String getLoginShellCommand() {
|
||||||
|
@ -714,7 +714,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteConnectionHostService#getUsername()
|
* @see org.eclipse.remote.core.IRemoteConnectionHostService#getUsername()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -724,7 +724,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteProcessService#getWorkingDirectory()
|
* @see org.eclipse.remote.core.IRemoteProcessService#getWorkingDirectory()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -758,7 +758,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteConnectionControlService#isOpen()
|
* @see org.eclipse.remote.core.IRemoteConnectionControlService#isOpen()
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -931,7 +931,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteConnectionControlService#open(org.eclipse.core.runtime.IProgressMonitor)
|
* @see org.eclipse.remote.core.IRemoteConnectionControlService#open(org.eclipse.core.runtime.IProgressMonitor)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -941,7 +941,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Open ssh connection without full setup (environment, sftp)
|
* Open ssh connection without full setup (environment, sftp)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteConnection#open()
|
* @see org.eclipse.remote.core.IRemoteConnection#open()
|
||||||
*
|
*
|
||||||
* @param monitor
|
* @param monitor
|
||||||
|
@ -973,9 +973,13 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
isFullySetup = true;
|
isFullySetup = true;
|
||||||
// getCwd checks the exec channel before checkConfiguration checks the sftp channel
|
// getCwd checks the exec channel before checkConfiguration checks the sftp channel
|
||||||
fWorkingDir = getCwd(subMon.newChild(10));
|
fWorkingDir = getCwd(subMon.newChild(10));
|
||||||
if (!checkConfiguration(fSessions.get(0), subMon.newChild(20))) {
|
try {
|
||||||
newSession(subMon.newChild(10));
|
if (!checkConfiguration(fSessions.get(0), subMon.newChild(20))) {
|
||||||
loadEnv(subMon.newChild(10));
|
newSession(subMon.newChild(10));
|
||||||
|
loadEnv(subMon.newChild(10));
|
||||||
|
}
|
||||||
|
} catch (RemoteConnectionException e) {
|
||||||
|
// Do not throw exception now, it will be thrown if FileService is accessed.
|
||||||
}
|
}
|
||||||
loadProperties(subMon.newChild(10));
|
loadProperties(subMon.newChild(10));
|
||||||
fRemoteConnection.fireConnectionChangeEvent(RemoteConnectionChangeEvent.CONNECTION_OPENED);
|
fRemoteConnection.fireConnectionChangeEvent(RemoteConnectionChangeEvent.CONNECTION_OPENED);
|
||||||
|
@ -994,7 +998,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemotePortForwardingService#removeLocalPortForwarding(int)
|
* @see org.eclipse.remote.core.IRemotePortForwardingService#removeLocalPortForwarding(int)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -1011,7 +1015,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemotePortForwardingService#removeRemotePortForwarding(int)
|
* @see org.eclipse.remote.core.IRemotePortForwardingService#removeRemotePortForwarding(int)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
@ -1028,7 +1032,7 @@ public class JSchConnection implements IRemoteConnectionControlService, IRemoteC
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* (non-Javadoc)
|
* (non-Javadoc)
|
||||||
*
|
*
|
||||||
* @see org.eclipse.remote.core.IRemoteProcessService#setWorkingDirectory(java.lang.String)
|
* @see org.eclipse.remote.core.IRemoteProcessService#setWorkingDirectory(java.lang.String)
|
||||||
*/
|
*/
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -20,12 +20,13 @@ import org.eclipse.remote.core.IRemoteConnection.Service;
|
||||||
import org.eclipse.remote.core.IRemoteFileService;
|
import org.eclipse.remote.core.IRemoteFileService;
|
||||||
import org.eclipse.remote.core.IRemoteProcessService;
|
import org.eclipse.remote.core.IRemoteProcessService;
|
||||||
import org.eclipse.remote.core.RemoteServicesUtils;
|
import org.eclipse.remote.core.RemoteServicesUtils;
|
||||||
|
import org.eclipse.remote.core.exception.RemoteConnectionException;
|
||||||
|
import org.eclipse.remote.internal.jsch.core.messages.Messages;
|
||||||
|
|
||||||
public class JSchFileManager implements IRemoteFileService {
|
public class JSchFileManager implements IRemoteFileService {
|
||||||
|
|
||||||
private final IRemoteConnection fConnection;
|
private final IRemoteConnection fConnection;
|
||||||
|
|
||||||
public JSchFileManager(IRemoteConnection connection) {
|
private JSchFileManager(IRemoteConnection connection) {
|
||||||
fConnection = connection;
|
fConnection = connection;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,6 +35,13 @@ public class JSchFileManager implements IRemoteFileService {
|
||||||
@Override
|
@Override
|
||||||
public <T extends Service> T getService(IRemoteConnection remoteConnection, Class<T> service) {
|
public <T extends Service> T getService(IRemoteConnection remoteConnection, Class<T> service) {
|
||||||
if (IRemoteFileService.class.equals(service)) {
|
if (IRemoteFileService.class.equals(service)) {
|
||||||
|
if (remoteConnection instanceof JSchConnection)
|
||||||
|
try {
|
||||||
|
((JSchConnection) remoteConnection).getSftpChannel();
|
||||||
|
} catch (RemoteConnectionException e) {
|
||||||
|
throw new UnsupportedOperationException(
|
||||||
|
Messages.JSchConnection_Remote_host_does_not_support_sftp);
|
||||||
|
}
|
||||||
return (T) new JSchFileManager(remoteConnection);
|
return (T) new JSchFileManager(remoteConnection);
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
|
@ -87,5 +95,4 @@ public class JSchFileManager implements IRemoteFileService {
|
||||||
public URI toURI(String path) {
|
public URI toURI(String path) {
|
||||||
return toURI(RemoteServicesUtils.posixPath(path));
|
return toURI(RemoteServicesUtils.posixPath(path));
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue