From 33c837d99f4550bd9e4a63892e81dc06ac3b68cb Mon Sep 17 00:00:00 2001 From: David McKnight Date: Tue, 3 Apr 2007 15:07:54 +0000 Subject: [PATCH] [180575] applying patch + imples --- .../DaytimeSubSystemConfiguration.java | 8 +++++++ .../DeveloperSubSystemConfiguration.java | 8 +++++++ .../subsystems/ISubSystemConfiguration.java | 22 +++++++++++++++++++ .../RemoteFileSubSystemConfiguration.java | 9 ++++++++ .../RemoteProcessSubSystemConfiguration.java | 10 ++++++++- .../RemoteCmdSubSystemConfiguration.java | 15 +++++++------ .../ui/view/SystemTableTreeViewProvider.java | 4 ++-- .../SystemViewFilterReferenceAdapter.java | 7 +++--- .../SystemViewLabelAndContentProvider.java | 4 ++-- .../ui/view/AbstractSystemViewAdapter.java | 2 +- .../ui/view/ISystemViewElementAdapter.java | 3 ++- .../TestSubSystemConfiguration.java | 8 +++++++ 12 files changed, 83 insertions(+), 17 deletions(-) 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; + } }