diff --git a/rse/plugins/org.eclipse.rse.connectorservice.dstore/src/org/eclipse/rse/connectorservice/dstore/DStoreConnectorService.java b/rse/plugins/org.eclipse.rse.connectorservice.dstore/src/org/eclipse/rse/connectorservice/dstore/DStoreConnectorService.java index b792634194a..6cb8a1700de 100644 --- a/rse/plugins/org.eclipse.rse.connectorservice.dstore/src/org/eclipse/rse/connectorservice/dstore/DStoreConnectorService.java +++ b/rse/plugins/org.eclipse.rse.connectorservice.dstore/src/org/eclipse/rse/connectorservice/dstore/DStoreConnectorService.java @@ -291,7 +291,7 @@ public class DStoreConnectorService extends AbstractConnectorService implements /** * @see org.eclipse.rse.core.subsystems.IConnectorService#disconnect() */ - public void disconnect() throws Exception + public void internalDisconnect(IProgressMonitor monitor) throws Exception { try { @@ -716,7 +716,7 @@ public class DStoreConnectorService extends AbstractConnectorService implements Display.getDefault().syncExec(msgAction); if (msgAction.getReturnCode() != IDialogConstants.YES_ID) { - disconnect(); + internalDisconnect(monitor); throw new InterruptedException(); } } @@ -728,7 +728,7 @@ public class DStoreConnectorService extends AbstractConnectorService implements Display.getDefault().syncExec(msgAction); if (msgAction.getReturnCode() != IDialogConstants.YES_ID) { - disconnect(); + internalDisconnect(monitor); throw new InterruptedException(); } } diff --git a/rse/plugins/org.eclipse.rse.connectorservice.dstore/src/org/eclipse/rse/connectorservice/dstore/util/ConnectionStatusListener.java b/rse/plugins/org.eclipse.rse.connectorservice.dstore/src/org/eclipse/rse/connectorservice/dstore/util/ConnectionStatusListener.java index 9c55349c774..4c7f7a5b70f 100644 --- a/rse/plugins/org.eclipse.rse.connectorservice.dstore/src/org/eclipse/rse/connectorservice/dstore/util/ConnectionStatusListener.java +++ b/rse/plugins/org.eclipse.rse.connectorservice.dstore/src/org/eclipse/rse/connectorservice/dstore/util/ConnectionStatusListener.java @@ -189,7 +189,7 @@ public class ConnectionStatusListener implements IDomainListener, IRunnableWithP monitor.beginTask(message, IProgressMonitor.UNKNOWN); try { - _connection.disconnect(); + _connection.disconnect(monitor); } catch(Exception exc) { diff --git a/rse/plugins/org.eclipse.rse.connectorservice.local/src/org/eclipse/rse/connectorservice/local/LocalConnectorService.java b/rse/plugins/org.eclipse.rse.connectorservice.local/src/org/eclipse/rse/connectorservice/local/LocalConnectorService.java index 6a6e57af05e..e033fea85c6 100644 --- a/rse/plugins/org.eclipse.rse.connectorservice.local/src/org/eclipse/rse/connectorservice/local/LocalConnectorService.java +++ b/rse/plugins/org.eclipse.rse.connectorservice.local/src/org/eclipse/rse/connectorservice/local/LocalConnectorService.java @@ -43,7 +43,7 @@ public class LocalConnectorService extends AbstractConnectorService /** * @see org.eclipse.rse.core.subsystems.AbstractConnectorService#disconnect() */ - public void disconnect() throws Exception + public void internalDisconnect(IProgressMonitor monitor) throws Exception { fireCommunicationsEvent(CommunicationsEvent.BEFORE_DISCONNECT); diff --git a/rse/plugins/org.eclipse.rse.services.dstore/export.jardesc b/rse/plugins/org.eclipse.rse.services.dstore/export.jardesc new file mode 100644 index 00000000000..5ca861055f1 --- /dev/null +++ b/rse/plugins/org.eclipse.rse.services.dstore/export.jardesc @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + diff --git a/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/command/CommandMinerThread.java b/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/command/CommandMinerThread.java index 9350136cf6e..2a2acdd1ca3 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/command/CommandMinerThread.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/miners/org/eclipse/rse/dstore/universal/miners/command/CommandMinerThread.java @@ -264,7 +264,7 @@ public class CommandMinerThread extends MinerThread } } } - else + else // windows { if ((theOS.indexOf("95") >= 0) || (theOS.indexOf("98") >= 0) || (theOS.indexOf("ME") >= 0)) { @@ -293,6 +293,7 @@ public class CommandMinerThread extends MinerThread } args[2] = _invocation; _theProcess = Runtime.getRuntime().exec(args, getEnvironment(_subject), theDirectory); + System.out.println("started shell:"+args[0] + " " + args[1] + " " + args[2]); } diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/AbstractDStoreService.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/AbstractDStoreService.java index 543aacc37ae..d39fd8a59a5 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/AbstractDStoreService.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/AbstractDStoreService.java @@ -253,6 +253,13 @@ public abstract class AbstractDStoreService implements IDStoreService { initMiner(monitor); } + + public void uninitService(IProgressMonitor monitor) + { + _initializeStatus = null; + _cmdDescriptorMap.clear(); + _minerElement = null; + } protected void initMiner(IProgressMonitor monitor) { diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/processes/DStoreProcessService.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/processes/DStoreProcessService.java index 02b046dece0..ef43190b04a 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/processes/DStoreProcessService.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/processes/DStoreProcessService.java @@ -265,6 +265,12 @@ public class DStoreProcessService extends AbstractProcessService implements IPro initMiner(monitor); } + public void uninitService(IProgressMonitor monitor) + { + _minerElement = null; + _procMinerStatus = null; + } + public boolean isInitialized() { if (_procMinerStatus != null) diff --git a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/shells/DStoreShellService.java b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/shells/DStoreShellService.java index 6724b4e8000..b3da2ed068c 100644 --- a/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/shells/DStoreShellService.java +++ b/rse/plugins/org.eclipse.rse.services.dstore/src/org/eclipse/rse/services/dstore/shells/DStoreShellService.java @@ -162,6 +162,12 @@ public class DStoreShellService extends AbstractDStoreService implements IShellS super.waitForInitialize(monitor); } + public void uninitService(IProgressMonitor monitor) + { + super.uninitService(monitor); + + } + protected void initMiner(IProgressMonitor monitor) { // init env miner first diff --git a/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/services/files/ftp/FTPService.java b/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/services/files/ftp/FTPService.java index 6fa5eecae65..0ba9bdd416d 100644 --- a/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/services/files/ftp/FTPService.java +++ b/rse/plugins/org.eclipse.rse.services.files.ftp/src/org/eclipse/rse/services/files/ftp/FTPService.java @@ -383,7 +383,10 @@ public class FTPService extends AbstractFileService implements IFileService, IFT public void initService(IProgressMonitor monitor) { - + } + + public void uninitService(IProgressMonitor monitor) + { } public boolean isCaseSensitive() diff --git a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalFileService.java b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalFileService.java index ea54e1056f7..c1d4492f456 100644 --- a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalFileService.java +++ b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/files/LocalFileService.java @@ -1148,6 +1148,10 @@ public class LocalFileService extends AbstractFileService implements IFileServic } + public void uninitService(IProgressMonitor monitor) + { + } + public boolean isCaseSensitive() { return true; diff --git a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/processes/LocalProcessService.java b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/processes/LocalProcessService.java index bf8bb224426..76d4ab00ee0 100644 --- a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/processes/LocalProcessService.java +++ b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/processes/LocalProcessService.java @@ -148,4 +148,8 @@ public class LocalProcessService extends AbstractProcessService implements ILoca { } + + public void uninitService(IProgressMonitor monitor) + { + } } \ No newline at end of file diff --git a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/shells/LocalShellService.java b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/shells/LocalShellService.java index 3e7a68a66fc..afe9ac05772 100644 --- a/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/shells/LocalShellService.java +++ b/rse/plugins/org.eclipse.rse.services.local/src/org/eclipse/rse/services/local/shells/LocalShellService.java @@ -137,6 +137,10 @@ public class LocalShellService implements IShellService, ILocalService } + public void uninitService(IProgressMonitor monitor) + { + + } public SystemMessage getMessage(String messageID) { return null; diff --git a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/IService.java b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/IService.java index 342bfeea2c6..70e3c5a91d3 100644 --- a/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/IService.java +++ b/rse/plugins/org.eclipse.rse.services/src/org/eclipse/rse/services/IService.java @@ -24,5 +24,6 @@ public interface IService public String getName(); public String getDescription(); public void initService(IProgressMonitor monitor); + public void uninitService(IProgressMonitor monitor); public SystemMessage getMessage(String messageID); } \ No newline at end of file diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java index 2778d8383be..3b7e32e6b5b 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/servicesubsystem/FileServiceSubSystem.java @@ -782,5 +782,10 @@ public final class FileServiceSubSystem extends RemoteFileSubSystem implements I getFileService().initService(monitor); } + public void uninitializeSubSystem(IProgressMonitor monitor) + { + super.uninitializeSubSystem(monitor); + getFileService().uninitService(monitor); + } } \ No newline at end of file diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/IRemoteFile.java b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/IRemoteFile.java index b7102d693d0..1d0699e8d8f 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/IRemoteFile.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/IRemoteFile.java @@ -181,6 +181,7 @@ public interface IRemoteFile extends IRemoteContainer, IRemotePropertyHolder */ public boolean isArchive(); + /** * Returns true if this is a binary file */ diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFile.java b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFile.java index f23a3bef03c..bb2170a4568 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFile.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFile.java @@ -168,6 +168,11 @@ public abstract class RemoteFile implements IRemoteFile, IAdaptable, Comparable { if (this._parentFile == null) { + if (isRoot()) + { + return null; + } + IRemoteFile parentFile = null; // _context.getParentRemoteFile(); diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystem.java b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystem.java index 83b02c229fd..50d56027890 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystem.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystem.java @@ -1497,6 +1497,11 @@ public abstract class RemoteFileSubSystem extends SubSystem implements IRemoteFi getConnectorService().addCommunicationsListener(this); } + public void uninitializeSubSystem(IProgressMonitor monitor) + { + getConnectorService().removeCommunicationsListener(this); + } + /** * Store the IRemoteFile in a hashmap to quick subsequent retrieval * @param file the file diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.ftp/src/org/eclipse/rse/subsystems/files/ftp/connectorservice/FTPConnectorService.java b/rse/plugins/org.eclipse.rse.subsystems.files.ftp/src/org/eclipse/rse/subsystems/files/ftp/connectorservice/FTPConnectorService.java index 11eab325a0d..9c7f1e04179 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.files.ftp/src/org/eclipse/rse/subsystems/files/ftp/connectorservice/FTPConnectorService.java +++ b/rse/plugins/org.eclipse.rse.subsystems.files.ftp/src/org/eclipse/rse/subsystems/files/ftp/connectorservice/FTPConnectorService.java @@ -55,7 +55,7 @@ public class FTPConnectorService extends AbstractConnectorService return _ftpService; } - public void disconnect() + public void internalDisconnect(IProgressMonitor monitor) { _ftpService.disconnect(); } diff --git a/rse/plugins/org.eclipse.rse.subsystems.processes.core/src/org/eclipse/rse/subsystems/processes/core/subsystem/impl/RemoteProcessSubSystemImpl.java b/rse/plugins/org.eclipse.rse.subsystems.processes.core/src/org/eclipse/rse/subsystems/processes/core/subsystem/impl/RemoteProcessSubSystemImpl.java index b31a81318fe..ed9b49aba6f 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.processes.core/src/org/eclipse/rse/subsystems/processes/core/subsystem/impl/RemoteProcessSubSystemImpl.java +++ b/rse/plugins/org.eclipse.rse.subsystems.processes.core/src/org/eclipse/rse/subsystems/processes/core/subsystem/impl/RemoteProcessSubSystemImpl.java @@ -100,6 +100,14 @@ public abstract class RemoteProcessSubSystemImpl extends SubSystem implements getConnectorService().addCommunicationsListener(this); } + /* (non-Javadoc) + * @see org.eclipse.rse.core.subsystems.SubSystem#uninitializeSubSystem(org.eclipse.core.runtime.IProgressMonitor) + */ + public void uninitializeSubSystem(IProgressMonitor monitor) + { + getConnectorService().removeCommunicationsListener(this); + } + /* (non-Javadoc) * @see org.eclipse.rse.subsystems.processes.core.subsystem.RemoteProcessSubSystem#getParentProcess(org.eclipse.rse.subsystems.processes.core.subsystem.IRemoteProcess) */ diff --git a/rse/plugins/org.eclipse.rse.subsystems.processes.core/src/org/eclipse/rse/subsystems/processes/servicesubsystem/ProcessServiceSubSystem.java b/rse/plugins/org.eclipse.rse.subsystems.processes.core/src/org/eclipse/rse/subsystems/processes/servicesubsystem/ProcessServiceSubSystem.java index 4c3a001fa48..8aff1050943 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.processes.core/src/org/eclipse/rse/subsystems/processes/servicesubsystem/ProcessServiceSubSystem.java +++ b/rse/plugins/org.eclipse.rse.subsystems.processes.core/src/org/eclipse/rse/subsystems/processes/servicesubsystem/ProcessServiceSubSystem.java @@ -197,5 +197,13 @@ public class ProcessServiceSubSystem extends RemoteProcessSubSystemImpl implemen getProcessService().initService(monitor); } + /* (non-Javadoc) + * @see org.eclipse.rse.subsystems.processes.core.subsystem.impl.RemoteProcessSubSystemImpl#initializeSubSystem(org.eclipse.core.runtime.IProgressMonitor) + */ + public void uninitializeSubSystem(IProgressMonitor monitor) + { + super.uninitializeSubSystem(monitor); + getProcessService().uninitService(monitor); + } } \ No newline at end of file diff --git a/rse/plugins/org.eclipse.rse.subsystems.shells.core/src/org/eclipse/rse/internal/subsystems/shells/subsystems/RemoteCmdSubSystem.java b/rse/plugins/org.eclipse.rse.subsystems.shells.core/src/org/eclipse/rse/internal/subsystems/shells/subsystems/RemoteCmdSubSystem.java index 8877c587c04..51340d9b816 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.shells.core/src/org/eclipse/rse/internal/subsystems/shells/subsystems/RemoteCmdSubSystem.java +++ b/rse/plugins/org.eclipse.rse.subsystems.shells.core/src/org/eclipse/rse/internal/subsystems/shells/subsystems/RemoteCmdSubSystem.java @@ -658,15 +658,16 @@ public abstract class RemoteCmdSubSystem extends SubSystem implements IRemoteCmd } } - ISystemRegistry registry = RSEUIPlugin.getTheSystemRegistry(); - registry.fireEvent(new SystemResourceChangeEvent(this, ISystemResourceChangeEvents.EVENT_REFRESH, this)); + //ISystemRegistry registry = RSEUIPlugin.getTheSystemRegistry(); +// registry.fireEvent(new SystemResourceChangeEvent(this, ISystemResourceChangeEvents.EVENT_REFRESH, this)); + Display.getDefault().asyncExec(new Refresh(this)); return results; } public void cancelAllShells() { - ISystemRegistry registry = RSEUIPlugin.getTheSystemRegistry(); + for (int i = _cmdShells.size() - 1; i >= 0; i--) { IRemoteCommandShell cmdShell = (IRemoteCommandShell) _cmdShells.get(i); @@ -687,9 +688,24 @@ public abstract class RemoteCmdSubSystem extends SubSystem implements IRemoteCmd // registry.fireEvent(new // org.eclipse.rse.model.SystemResourceChangeEvent(this, // ISystemResourceChangeEvent.EVENT_COMMAND_SHELL_FINISHED, null)); - registry.fireEvent(new SystemResourceChangeEvent(this, ISystemResourceChangeEvents.EVENT_REFRESH, this)); + Display.getDefault().asyncExec(new Refresh(this)); } + + public class Refresh implements Runnable + { + private RemoteCmdSubSystem _ss; + public Refresh(RemoteCmdSubSystem ss) + { + _ss = ss; + } + + public void run() + { + ISystemRegistry registry = RSEUIPlugin.getTheSystemRegistry(); + registry.fireEvent(new SystemResourceChangeEvent(_ss, ISystemResourceChangeEvents.EVENT_REFRESH, _ss)); + } + } /** * @see ICommunicationsListener#isPassiveCommunicationsListener() diff --git a/rse/plugins/org.eclipse.rse.subsystems.shells.core/src/org/eclipse/rse/subsystems/shells/core/subsystems/servicesubsystem/ShellServiceSubSystem.java b/rse/plugins/org.eclipse.rse.subsystems.shells.core/src/org/eclipse/rse/subsystems/shells/core/subsystems/servicesubsystem/ShellServiceSubSystem.java index 6a1bbe64bc8..e86dda78d58 100644 --- a/rse/plugins/org.eclipse.rse.subsystems.shells.core/src/org/eclipse/rse/subsystems/shells/core/subsystems/servicesubsystem/ShellServiceSubSystem.java +++ b/rse/plugins/org.eclipse.rse.subsystems.shells.core/src/org/eclipse/rse/subsystems/shells/core/subsystems/servicesubsystem/ShellServiceSubSystem.java @@ -239,9 +239,14 @@ public final class ShellServiceSubSystem extends RemoteCmdSubSystem implements I } public void initializeSubSystem(IProgressMonitor monitor) - { + { getShellService().initService(monitor); } + public void uninitializeSubSystem(IProgressMonitor monitor) + { + cancelAllShells(); + getShellService().uninitService(monitor); + } } \ No newline at end of file diff --git a/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/AbstractConnectorService.java b/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/AbstractConnectorService.java index 1c77402b0d2..b6eac3df592 100644 --- a/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/AbstractConnectorService.java +++ b/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/AbstractConnectorService.java @@ -786,6 +786,15 @@ public abstract class AbstractConnectorService extends RSEModelObject implements ss.initializeSubSystem(monitor); } } + + protected void unintializeSubSystems(IProgressMonitor monitor) + { + for (int i = 0; i < _registeredSubSystems.size(); i++) + { + ISubSystem ss = (ISubSystem)_registeredSubSystems.get(i); + ss.uninitializeSubSystem(monitor); + } + } /** * Abstract - you must override, unless subsystem.getParentSubSystemFactory().supportsServerLaunchProperties @@ -850,10 +859,15 @@ public abstract class AbstractConnectorService extends RSEModelObject implements * method of the subsystem. * @see IServerLauncher#disconnect() */ - public void disconnect() throws Exception + public final void disconnect(IProgressMonitor monitor) throws Exception { - if (supportsServerLaunchProperties() && - (starter != null)) + internalDisconnect(monitor); + unintializeSubSystems(monitor); + } + + public void internalDisconnect(IProgressMonitor monitor) throws Exception + { + if (supportsServerLaunchProperties() &&(starter != null)) { try { starter.disconnect(); diff --git a/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/IConnectorService.java b/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/IConnectorService.java index 603d42d7d11..aa1a596185d 100644 --- a/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/IConnectorService.java +++ b/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/IConnectorService.java @@ -78,7 +78,7 @@ public interface IConnectorService extends IRSEModelObject /** * Disconnect from the remote system */ - public void disconnect() throws Exception; + public void disconnect(IProgressMonitor monitor) throws Exception; /** * Notifies all listeners of a disconnection through a communications event */ diff --git a/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/ISubSystem.java b/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/ISubSystem.java index d3102ea3aa4..710ecc6bcdb 100644 --- a/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/ISubSystem.java +++ b/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/ISubSystem.java @@ -81,6 +81,11 @@ public interface ISubSystem extends ISystemFilterPoolReferenceManagerProvider, I */ public void initializeSubSystem(IProgressMonitor monitor); + /** + * Called on each subsystem associated with a particular ISystem after it disconnects + */ + public void uninitializeSubSystem(IProgressMonitor monitor); + /** * @return true if this subsystem's properties should take precedence over other subsystems that share the same ISystem */ diff --git a/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/SubSystem.java b/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/SubSystem.java index b850138447c..abe7a286373 100644 --- a/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/SubSystem.java +++ b/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/SubSystem.java @@ -2823,7 +2823,7 @@ public abstract class SubSystem extends RSEModelObject implements IAdaptable, IS { try { - getConnectorService().disconnect(); + getConnectorService().disconnect(monitor); } catch(Exception exc) { diff --git a/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/SubSystemConfiguration.java b/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/SubSystemConfiguration.java index 4dd942be8b8..e84af93cbda 100644 --- a/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/SubSystemConfiguration.java +++ b/rse/plugins/org.eclipse.rse.ui/subsystems/org/eclipse/rse/core/subsystems/SubSystemConfiguration.java @@ -24,6 +24,7 @@ import java.util.Vector; import org.eclipse.core.runtime.IConfigurationElement; import org.eclipse.core.runtime.IExtensionRegistry; +import org.eclipse.core.runtime.NullProgressMonitor; import org.eclipse.core.runtime.Platform; import org.eclipse.jface.resource.ImageDescriptor; import org.eclipse.jface.viewers.ISelection; @@ -1764,7 +1765,7 @@ public abstract class SubSystemConfiguration implements ISubSystemConfiguration { try { - ss.getConnectorService().disconnect(); + ss.getConnectorService().disconnect(new NullProgressMonitor()); } catch (Exception exc) {