diff --git a/rse/examples/org.eclipse.rse.examples.daytime/src/org/eclipse/rse/examples/daytime/subsystems/DaytimeSubSystemConfiguration.java b/rse/examples/org.eclipse.rse.examples.daytime/src/org/eclipse/rse/examples/daytime/subsystems/DaytimeSubSystemConfiguration.java
index 4bf5b4e915c..1503b649141 100644
--- a/rse/examples/org.eclipse.rse.examples.daytime/src/org/eclipse/rse/examples/daytime/subsystems/DaytimeSubSystemConfiguration.java
+++ b/rse/examples/org.eclipse.rse.examples.daytime/src/org/eclipse/rse/examples/daytime/subsystems/DaytimeSubSystemConfiguration.java
@@ -103,4 +103,12 @@ public class DaytimeSubSystemConfiguration extends ServiceSubSystemConfiguration
return IDaytimeService.class;
}
+ /**
+ * By default, this type of subsystem supports deferred queries.
+ * Override this method if your implementation does not.
+ */
+ public boolean supportsDeferredQueries()
+ {
+ return true;
+ }
}
diff --git a/rse/examples/org.eclipse.rse.examples.tutorial/src/samples/subsystems/DeveloperSubSystemConfiguration.java b/rse/examples/org.eclipse.rse.examples.tutorial/src/samples/subsystems/DeveloperSubSystemConfiguration.java
index 9e1865d5ab7..f9038c9ef09 100644
--- a/rse/examples/org.eclipse.rse.examples.tutorial/src/samples/subsystems/DeveloperSubSystemConfiguration.java
+++ b/rse/examples/org.eclipse.rse.examples.tutorial/src/samples/subsystems/DeveloperSubSystemConfiguration.java
@@ -108,4 +108,12 @@ public class DeveloperSubSystemConfiguration extends SubSystemConfiguration {
return false;
}
+ /**
+ * By default, this type of subsystem supports deferred queries.
+ * Override this method if your implementation does not.
+ */
+ public boolean supportsDeferredQueries()
+ {
+ return true;
+ }
}
diff --git a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/subsystems/ISubSystemConfiguration.java b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/subsystems/ISubSystemConfiguration.java
index 6ef99e96dec..9fc20bd246c 100644
--- a/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/subsystems/ISubSystemConfiguration.java
+++ b/rse/plugins/org.eclipse.rse.core/src/org/eclipse/rse/core/subsystems/ISubSystemConfiguration.java
@@ -134,6 +134,28 @@ public interface ISubSystemConfiguration extends ISystemFilterPoolManagerProvide
*/
public boolean supportsDropInFilters();
+ /**
+ * Return true if deferred queries are supported.
+ *
+ * Deferred queries work such that when a filter or element
+ * children query is made, a WorkbenchJob is started to
+ * perform the query in a background thread. The query can
+ * take time to complete, but a negative side-effect of this
+ * is that it will always take time to complete.
+ *
+ * Alternative models can use asynchronous calls to populate
+ * their model with data from the remote side, and refresh
+ * the views when new data is in the model. Such subsystem
+ * configurations should return false
here.
+ *
+ * The default implementation returns true
, indicating
+ * that deferred queries are supported for filters, and delegates
+ * the check for model elements to the ISystemViewElementAdapter.
+ *
+ * @return true
if deferred queries are supported.
+ */
+ public boolean supportsDeferredQueries();
+
/**
* Return true if filters of this subsystem factory provide a custom implementation of drop support.
* By default, the filter reference adapter treats a drop on a filter as an update to the list of filter
diff --git a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystemConfiguration.java b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystemConfiguration.java
index 223013d06ba..7569277ae02 100644
--- a/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystemConfiguration.java
+++ b/rse/plugins/org.eclipse.rse.subsystems.files.core/src/org/eclipse/rse/subsystems/files/core/subsystems/RemoteFileSubSystemConfiguration.java
@@ -495,4 +495,13 @@ public abstract class RemoteFileSubSystemConfiguration extends SubSystemConfigur
return isFor;
}
+ /**
+ * By default file subsystems support deferred queries
+ * Override this method if not.
+ */
+ public boolean supportsDeferredQueries()
+ {
+ return true;
+ }
+
}
diff --git a/rse/plugins/org.eclipse.rse.subsystems.processes.core/src/org/eclipse/rse/subsystems/processes/core/subsystem/impl/RemoteProcessSubSystemConfiguration.java b/rse/plugins/org.eclipse.rse.subsystems.processes.core/src/org/eclipse/rse/subsystems/processes/core/subsystem/impl/RemoteProcessSubSystemConfiguration.java
index e7cf472196b..29a8b2fef0b 100644
--- a/rse/plugins/org.eclipse.rse.subsystems.processes.core/src/org/eclipse/rse/subsystems/processes/core/subsystem/impl/RemoteProcessSubSystemConfiguration.java
+++ b/rse/plugins/org.eclipse.rse.subsystems.processes.core/src/org/eclipse/rse/subsystems/processes/core/subsystem/impl/RemoteProcessSubSystemConfiguration.java
@@ -213,5 +213,13 @@ public abstract class RemoteProcessSubSystemConfiguration extends
ISystemValidator portValidator = new ValidatorServerPortInput();
return portValidator;
}
-
+
+ /**
+ * By default, this type of subsystem supports deferred queries.
+ * Override this method if your implementation does not.
+ */
+ public boolean supportsDeferredQueries()
+ {
+ return true;
+ }
}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.subsystems.shells.core/src/org/eclipse/rse/subsystems/shells/core/subsystems/RemoteCmdSubSystemConfiguration.java b/rse/plugins/org.eclipse.rse.subsystems.shells.core/src/org/eclipse/rse/subsystems/shells/core/subsystems/RemoteCmdSubSystemConfiguration.java
index 23f665bf82d..d0aa18ef142 100644
--- a/rse/plugins/org.eclipse.rse.subsystems.shells.core/src/org/eclipse/rse/subsystems/shells/core/subsystems/RemoteCmdSubSystemConfiguration.java
+++ b/rse/plugins/org.eclipse.rse.subsystems.shells.core/src/org/eclipse/rse/subsystems/shells/core/subsystems/RemoteCmdSubSystemConfiguration.java
@@ -184,11 +184,12 @@ public abstract class RemoteCmdSubSystemConfiguration extends SubSystemConfigura
return ";"; //$NON-NLS-1$
}
-
-
-
-
-
-
-
+ /**
+ * By default, deferred queries are not applicable to this type
+ * of subsystem.
+ */
+ public boolean supportsDeferredQueries()
+ {
+ return false;
+ }
}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemTableTreeViewProvider.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemTableTreeViewProvider.java
index 82c37f1e121..6683a9acd60 100644
--- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemTableTreeViewProvider.java
+++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemTableTreeViewProvider.java
@@ -209,10 +209,10 @@ public class SystemTableTreeViewProvider implements ILabelProvider, ITableLabelP
{
if (supportsDeferredQueries())
{
- if (manager != null && adapter.supportsDeferredQueries())
+ if (manager != null)
{
ISubSystem ss = adapter.getSubSystem(object);
- if (ss != null)
+ if (ss != null && adapter.supportsDeferredQueries(ss))
{
// if (ss.isConnected())
{
diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterReferenceAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterReferenceAdapter.java
index 2415ed97a90..24427fb6283 100644
--- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterReferenceAdapter.java
+++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewFilterReferenceAdapter.java
@@ -957,10 +957,11 @@ public class SystemViewFilterReferenceAdapter
/*
- * Return whether deferred queries are supported.
+ * Return whether deferred queries are supported.
+ * Defer to the subsystem configuration.
*/
- public boolean supportsDeferredQueries()
+ public boolean supportsDeferredQueries(ISubSystem subSys)
{
- return true;
+ return subSys.getSubSystemConfiguration().supportsDeferredQueries();
}
}
\ No newline at end of file
diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewLabelAndContentProvider.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewLabelAndContentProvider.java
index 494a888e026..83b15dc9553 100644
--- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewLabelAndContentProvider.java
+++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/internal/ui/view/SystemViewLabelAndContentProvider.java
@@ -270,7 +270,7 @@ public class SystemViewLabelAndContentProvider extends LabelProvider
{
// The adapter needs to be checked to be not null, otherwise
// we run into an NPE here.
- if (manager != null && adapter != null && adapter.supportsDeferredQueries())
+ if (manager != null && adapter != null)
{
ISubSystem ss = null;
if (object instanceof IContextObject)
@@ -281,7 +281,7 @@ public class SystemViewLabelAndContentProvider extends LabelProvider
{
ss = adapter.getSubSystem(object);
}
- if (ss != null)
+ if (ss != null && adapter.supportsDeferredQueries(ss))
{
// if (ss.isConnected())
{
diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/AbstractSystemViewAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/AbstractSystemViewAdapter.java
index 097c42ca9f5..1cb541fae0b 100644
--- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/AbstractSystemViewAdapter.java
+++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/AbstractSystemViewAdapter.java
@@ -1870,7 +1870,7 @@ public abstract class AbstractSystemViewAdapter implements ISystemViewElementAda
* they are not supported. Subclasses must override this to
* return true if they are to support this.
*/
- public boolean supportsDeferredQueries()
+ public boolean supportsDeferredQueries(ISubSystem subSys)
{
return false;
}
diff --git a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/ISystemViewElementAdapter.java b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/ISystemViewElementAdapter.java
index 790515ad2fd..659370c1a4a 100644
--- a/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/ISystemViewElementAdapter.java
+++ b/rse/plugins/org.eclipse.rse.ui/UI/org/eclipse/rse/ui/view/ISystemViewElementAdapter.java
@@ -376,7 +376,8 @@ public interface ISystemViewElementAdapter extends IPropertySource, ISystemDragD
* Return whether deferred queries are supported. By default
* they are not supported. Subclasses must override this to
* return true if they are to support this.
+ * @param subSys subsystem to use for deferred queries.
* @return true
if it supports deferred queries, false
otherwise.
*/
- public boolean supportsDeferredQueries();
+ public boolean supportsDeferredQueries(ISubSystem subSys);
}
\ No newline at end of file
diff --git a/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/internal/testsubsystem/TestSubSystemConfiguration.java b/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/internal/testsubsystem/TestSubSystemConfiguration.java
index 30e42651021..3c8e1fc225a 100644
--- a/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/internal/testsubsystem/TestSubSystemConfiguration.java
+++ b/rse/tests/org.eclipse.rse.tests/src/org/eclipse/rse/tests/internal/testsubsystem/TestSubSystemConfiguration.java
@@ -81,4 +81,12 @@ public class TestSubSystemConfiguration extends SubSystemConfiguration implement
public boolean supportsServerLaunchProperties(IHost host) {
return false;
}
+
+ /**
+ * By default, this type of subsystem supports deferred queries.
+ */
+ public boolean supportsDeferredQueries()
+ {
+ return true;
+ }
}