mirror of
https://github.com/eclipse-cdt/cdt
synced 2025-07-14 12:35:22 +02:00
[262930] Remote System Details view not restoring filter memento input
This commit is contained in:
parent
9dee00533d
commit
b22279e09b
2 changed files with 46 additions and 9 deletions
|
@ -15,6 +15,7 @@
|
||||||
* Martin Oberhuber (Wind River) - [182454] improve getAbsoluteName() documentation
|
* Martin Oberhuber (Wind River) - [182454] improve getAbsoluteName() documentation
|
||||||
* Martin Oberhuber (Wind River) - [186128][refactoring] Move IProgressMonitor last in public base classes
|
* Martin Oberhuber (Wind River) - [186128][refactoring] Move IProgressMonitor last in public base classes
|
||||||
* Martin Oberhuber (Wind River) - [218304] Improve deferred adapter loading
|
* Martin Oberhuber (Wind River) - [218304] Improve deferred adapter loading
|
||||||
|
* David McKnight (IBM) - [262930] Remote System Details view not restoring filter memento input
|
||||||
*******************************************************************************/
|
*******************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.subsystems.processes.core.subsystem.impl;
|
package org.eclipse.rse.subsystems.processes.core.subsystem.impl;
|
||||||
|
@ -175,6 +176,12 @@ public abstract class RemoteProcessSubSystemImpl extends SubSystem implements
|
||||||
*/
|
*/
|
||||||
public Object getObjectWithAbsoluteName(String key, IProgressMonitor monitor) throws Exception
|
public Object getObjectWithAbsoluteName(String key, IProgressMonitor monitor) throws Exception
|
||||||
{
|
{
|
||||||
|
// first attempt getting filter
|
||||||
|
Object filterRef = super.getObjectWithAbsoluteName(key, monitor);
|
||||||
|
if (filterRef != null) {
|
||||||
|
return filterRef;
|
||||||
|
}
|
||||||
|
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
long pid = Long.parseLong(key);
|
long pid = Long.parseLong(key);
|
||||||
|
|
|
@ -45,6 +45,7 @@
|
||||||
* David McKnight (IBM) - [244270] Explicit check for isOffline and just returning block implementing a cache for Work Offline
|
* David McKnight (IBM) - [244270] Explicit check for isOffline and just returning block implementing a cache for Work Offline
|
||||||
* Don Yantzi (IBM) - [244807] Delay connecting if resolving filters while restoring from cache
|
* Don Yantzi (IBM) - [244807] Delay connecting if resolving filters while restoring from cache
|
||||||
* David McKnight (IBM) - [226787] [services] Dstore processes subsystem is empty after switching from shell processes
|
* David McKnight (IBM) - [226787] [services] Dstore processes subsystem is empty after switching from shell processes
|
||||||
|
* David McKnight (IBM) - [262930] Remote System Details view not restoring filter memento input
|
||||||
********************************************************************************/
|
********************************************************************************/
|
||||||
|
|
||||||
package org.eclipse.rse.core.subsystems;
|
package org.eclipse.rse.core.subsystems;
|
||||||
|
@ -923,22 +924,51 @@ implements IAdaptable, ISubSystem, ISystemFilterPoolReferenceManagerProvider
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
ISystemFilterPoolReferenceManager filterMgr = getFilterPoolReferenceManager();
|
ISystemFilterPoolReferenceManager filterMgr = getFilterPoolReferenceManager();
|
||||||
|
String modString = filterID.replace('.', ',');
|
||||||
|
|
||||||
int indexOfDot = filterID.indexOf('.');
|
String[] segments = modString.split(",");
|
||||||
if (indexOfDot > 0)
|
|
||||||
|
if (segments.length > 0)
|
||||||
{
|
{
|
||||||
String mgrName = filterID.substring(0, indexOfDot);
|
// this is the profile
|
||||||
|
String mgrName = segments[0];
|
||||||
|
|
||||||
|
// this is the filter pool manager for the profile
|
||||||
ISystemFilterPoolManager mgr = parentSubSystemConfiguration.getSystemFilterPoolManager(mgrName);
|
ISystemFilterPoolManager mgr = parentSubSystemConfiguration.getSystemFilterPoolManager(mgrName);
|
||||||
|
|
||||||
int indexOfDot2 = filterID.indexOf('.', indexOfDot + 1);
|
if (mgr != null && segments.length > 1){
|
||||||
if (mgr != null && indexOfDot2 > 0)
|
// name of the filter is the last segment
|
||||||
{
|
String filterName = segments[segments.length - 1];
|
||||||
String filterPoolName = filterID.substring(indexOfDot + 1, indexOfDot2);
|
|
||||||
|
// filter pool name is the 3rd and 2nd to last segment
|
||||||
|
//String filterPoolName =
|
||||||
|
// segments[segments.length - 3] + '.' +
|
||||||
|
// segments[segments.length - 2];
|
||||||
|
|
||||||
|
|
||||||
|
ISystemFilterPool filterPool = null;
|
||||||
|
ISystemFilterPool[] filterPools = mgr.getSystemFilterPools();
|
||||||
|
for (int p = 0; p < filterPools.length && filterPool == null; p++){
|
||||||
|
ISystemFilterPool pool = filterPools[p];
|
||||||
|
String realPoolName = pool.getName();
|
||||||
|
|
||||||
|
// check for match
|
||||||
|
String filterPoolName = segments[segments.length - 2];
|
||||||
|
for (int s = 3; s < segments.length && filterPool == null; s++){
|
||||||
|
if (filterPoolName.equals(realPoolName)){
|
||||||
|
filterPool = pool;
|
||||||
|
}
|
||||||
|
else if (realPoolName.endsWith(filterPoolName)){
|
||||||
|
filterPoolName = segments[segments.length - s] + '.' + filterPoolName;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// no match
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
ISystemFilterPool filterPool = mgr.getSystemFilterPool(filterPoolName);
|
|
||||||
|
|
||||||
String filterName = filterID.substring(indexOfDot2 + 1, filterID.length());
|
|
||||||
if (filterPool != null)
|
if (filterPool != null)
|
||||||
{
|
{
|
||||||
ISystemFilter filter = filterPool.getSystemFilter(filterName);
|
ISystemFilter filter = filterPool.getSystemFilter(filterName);
|
||||||
|
|
Loading…
Add table
Reference in a new issue