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)
{