diff --git a/rse/plugins/org.eclipse.rse.core/persistence/org/eclipse/rse/internal/persistence/PropertyFileProvider.java b/rse/plugins/org.eclipse.rse.core/persistence/org/eclipse/rse/internal/persistence/PropertyFileProvider.java index d56fe5bd076..7ad96f98aa0 100644 --- a/rse/plugins/org.eclipse.rse.core/persistence/org/eclipse/rse/internal/persistence/PropertyFileProvider.java +++ b/rse/plugins/org.eclipse.rse.core/persistence/org/eclipse/rse/internal/persistence/PropertyFileProvider.java @@ -121,8 +121,6 @@ public class PropertyFileProvider implements IRSEPersistenceProvider { */ public boolean saveRSEDOM(RSEDOM dom, IProgressMonitor monitor) { IFolder providerFolder = getProviderFolder(); -// String profileName = dom.getName(); -// System.out.println("saving profile " + profileName + " to " + providerFolder.getFullPath().toString() + "..."); try { int n = countNodes(dom); if (monitor != null) monitor.beginTask("Saving DOM", n); diff --git a/rse/plugins/org.eclipse.rse.core/persistence/org/eclipse/rse/internal/persistence/SaveRSEDOMJob.java b/rse/plugins/org.eclipse.rse.core/persistence/org/eclipse/rse/internal/persistence/SaveRSEDOMJob.java index 1dadad5e11e..e1891706988 100644 --- a/rse/plugins/org.eclipse.rse.core/persistence/org/eclipse/rse/internal/persistence/SaveRSEDOMJob.java +++ b/rse/plugins/org.eclipse.rse.core/persistence/org/eclipse/rse/internal/persistence/SaveRSEDOMJob.java @@ -16,14 +16,14 @@ package org.eclipse.rse.internal.persistence; +import org.eclipse.core.resources.WorkspaceJob; import org.eclipse.core.runtime.IProgressMonitor; import org.eclipse.core.runtime.IStatus; import org.eclipse.core.runtime.Status; -import org.eclipse.core.runtime.jobs.Job; import org.eclipse.rse.persistence.IRSEPersistenceProvider; import org.eclipse.rse.persistence.dom.RSEDOM; -public class SaveRSEDOMJob extends Job { +public class SaveRSEDOMJob extends WorkspaceJob { private RSEDOM _dom; private IRSEPersistenceProvider _provider; @@ -34,7 +34,7 @@ public class SaveRSEDOMJob extends Job { _provider = provider; } - protected IStatus run(IProgressMonitor monitor) { + public IStatus runInWorkspace(IProgressMonitor monitor) { IStatus result = Status.OK_STATUS; synchronized (_dom) { // synchronize on the DOM to prevent its update while writing if (_dom.needsSave()) { diff --git a/rse/plugins/org.eclipse.rse.core/persistence/org/eclipse/rse/internal/persistence/dom/RSEDOMExporter.java b/rse/plugins/org.eclipse.rse.core/persistence/org/eclipse/rse/internal/persistence/dom/RSEDOMExporter.java index 00c8a454e01..d6aa18949ee 100644 --- a/rse/plugins/org.eclipse.rse.core/persistence/org/eclipse/rse/internal/persistence/dom/RSEDOMExporter.java +++ b/rse/plugins/org.eclipse.rse.core/persistence/org/eclipse/rse/internal/persistence/dom/RSEDOMExporter.java @@ -404,7 +404,8 @@ public class RSEDOMExporter implements IRSEDOMExporter { if (clean || node.isDirty()) { ISystemFilterPool filterPool = filterPoolReference.getReferencedFilterPool(); - node.addAttribute(IRSEDOMConstants.ATTRIBUTE_REF_ID, filterPool.getId()); + String refId = (filterPool != null) ? filterPool.getId() : "unknown"; + node.addAttribute(IRSEDOMConstants.ATTRIBUTE_REF_ID, refId); } createPropertySetNodes(node, filterPoolReference, clean); diff --git a/rse/plugins/org.eclipse.rse.ui/filters/org/eclipse/rse/internal/filters/SystemFilterContainerReferenceCommonMethods.java b/rse/plugins/org.eclipse.rse.ui/filters/org/eclipse/rse/internal/filters/SystemFilterContainerReferenceCommonMethods.java index ddf29aaae42..d630d92a81f 100644 --- a/rse/plugins/org.eclipse.rse.ui/filters/org/eclipse/rse/internal/filters/SystemFilterContainerReferenceCommonMethods.java +++ b/rse/plugins/org.eclipse.rse.ui/filters/org/eclipse/rse/internal/filters/SystemFilterContainerReferenceCommonMethods.java @@ -15,7 +15,9 @@ ********************************************************************************/ package org.eclipse.rse.internal.filters; +import java.util.ArrayList; import java.util.Iterator; +import java.util.List; import org.eclipse.rse.core.filters.ISystemFilter; import org.eclipse.rse.core.filters.ISystemFilterContainer; @@ -107,11 +109,12 @@ public class SystemFilterContainerReferenceCommonMethods // return a complete list. However, to save memory we try to only // re-gen the list if something has changed. ISystemFilterContainer parent = parentRef.getReferencedSystemFilterContainer(); - java.util.List mofList = null; + List mofList = null; if (parent instanceof ISystemFilterPool) mofList = ((ISystemFilterPool)parent).getFilters(); - else + else if (parent instanceof ISystemFilter) { mofList = ((ISystemFilter)parent).getNestedFilters(); + } boolean needToReGen = compareFilters(mofList); //System.out.println("In getSFRefs for " + getName() + ": regen? " + needToReGen); @@ -122,6 +125,9 @@ public class SystemFilterContainerReferenceCommonMethods // second, build new references... referencedFilters = generateFilterReferences(subSystem, mofList); } + if (referencedFilters == null) { + referencedFilters = new ISystemFilterReference[0]; + } return referencedFilters; } 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 bb37fa4cf88..3540688415b 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 @@ -1617,12 +1617,6 @@ public abstract class SubSystem extends RSEModelObject implements IAdaptable, IS public void performOperation(IProgressMonitor mon) throws InterruptedException, Exception { - String msg = null; - int totalWorkUnits = IProgressMonitor.UNKNOWN; - - msg = SubSystemConfiguration.getDisconnectingMessage(getHostName(), getConnectorService().getPort()); - - if (!implicitConnect(false, mon, msg, totalWorkUnits)) throw new Exception(RSEUIPlugin.getPluginMessage(ISystemMessages.MSG_CONNECT_FAILED).makeSubstitution(getHostName()).getLevelOneText()); internalDisconnect(mon); _disconnecting = false; _connectionError = false; 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 2bbb93bf0b5..e998fb59c2a 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 @@ -1293,28 +1293,30 @@ public abstract class SubSystemConfiguration implements ISubSystemConfiguration { ISystemFilterPoolReference poolRef = oldReferences[idx]; ISystemFilterPool pool = poolRef.getReferencedFilterPool(); - // if just copying a connnection, then copy references to pools as-is - if (!copyProfileOperation) - { - newRefMgr.addReferenceToSystemFilterPool(pool); - } - // if copying a profile, update references to pools in old profile to become references to pools in new profile... - else - { - ISystemFilterPoolManager poolMgr = pool.getSystemFilterPoolManager(); - String poolProfileName = getSystemProfileName(poolMgr); - if (poolProfileName.equals(oldSubSystemProfileName)) + if (pool != null) { + // if just copying a connnection, then copy references to pools as-is + if (!copyProfileOperation) { - //RSEUIPlugin.logDebugMessage(this.getClass().getName(),"found reference to copied filter pool " + pool.getName() + ", so changing to reference to new copy"); - ISystemFilterPoolManager newPoolMgr = getFilterPoolManager(newConnection.getSystemProfile()); - ISystemFilterPool newPool = newPoolMgr.getSystemFilterPool(pool.getName()); - //RSEUIPlugin.logDebugMessage(this.getClass().getName(),"...new pool = " + newPoolMgr.getName()+"."+newPool.getName()); - newRefMgr.addReferenceToSystemFilterPool(newPool); + newRefMgr.addReferenceToSystemFilterPool(pool); } + // if copying a profile, update references to pools in old profile to become references to pools in new profile... else { - //RSEUIPlugin.logDebugMessage(this.getClass().getName(),"found reference to filter pool from another profile " + poolProfileName+"."+pool.getName() + ", so not changing to reference to new copy"); - newRefMgr.addReferenceToSystemFilterPool(pool); + ISystemFilterPoolManager poolMgr = pool.getSystemFilterPoolManager(); + String poolProfileName = getSystemProfileName(poolMgr); + if (poolProfileName.equals(oldSubSystemProfileName)) + { + //RSEUIPlugin.logDebugMessage(this.getClass().getName(),"found reference to copied filter pool " + pool.getName() + ", so changing to reference to new copy"); + ISystemFilterPoolManager newPoolMgr = getFilterPoolManager(newConnection.getSystemProfile()); + ISystemFilterPool newPool = newPoolMgr.getSystemFilterPool(pool.getName()); + //RSEUIPlugin.logDebugMessage(this.getClass().getName(),"...new pool = " + newPoolMgr.getName()+"."+newPool.getName()); + newRefMgr.addReferenceToSystemFilterPool(newPool); + } + else + { + //RSEUIPlugin.logDebugMessage(this.getClass().getName(),"found reference to filter pool from another profile " + poolProfileName+"."+pool.getName() + ", so not changing to reference to new copy"); + newRefMgr.addReferenceToSystemFilterPool(pool); + } } } } @@ -2215,12 +2217,11 @@ public abstract class SubSystemConfiguration implements ISubSystemConfiguration boolean nested = !(parent instanceof ISystemFilterPool); ISystemFilter nestedParentFilter = nested ? (ISystemFilter) parent : null; for (int idx = 0; idx < subsystems.length; idx++) - { + { Object parentObj = null; // CASE 1: FILTER IS NOT NESTED, SO SIMPLY GET ITS FILTER POOL REFERENCE AND USE AS A PARENT... if (!nested) { - // SPECIAL CASE 1A: it makes a difference if we are showing filter pools or not... if (showFilterPools()) { @@ -2229,7 +2230,7 @@ public abstract class SubSystemConfiguration implements ISubSystemConfiguration else { parentObj = subsystems[idx]; - } + } } // CASE 2: FILTER IS NESTED, THIS IS MORE DIFFICULT, AS EVERY FILTER CONTAINS A RANDOMLY // GENERATED REFERENCE THAT ONLY THE GUI KNOWS ABOUT. @@ -2240,17 +2241,17 @@ public abstract class SubSystemConfiguration implements ISubSystemConfiguration } event = cloneEvent(event, parentObj); event.setParent(parentObj); - fireSubSystemEvent(event, subsystems[idx]); + fireSubSystemEvent(event, subsystems[idx]); + } } } - } protected SystemResourceChangeEvent cloneEvent(SystemResourceChangeEvent event, Object parent) { SystemResourceChangeEvent result = new SystemResourceChangeEvent(event.getSource(), event.getType(), parent); return result; } - + /* * Fire an event of a given id to subsystems that hold a reference to the given filter string */