Vojtech Szocs has uploaded a new change for review. Change subject: webadmin,userportal: Optimize syntax checker handling ......................................................................
webadmin,userportal: Optimize syntax checker handling 1. access to (search) syntax checker instance is now provided through Configurator#getSyntaxChecker * UserPortalConfigurator#getSyntaxChecker returns null (not available in UserPortal context) * WebAdminConfigurator#getSyntaxChecker returns instance obtained via SyntaxCheckerFactory 2. removed SearchableListModel#syntaxChecker field along with related code (instance initialization, getter) 3. modified SearchableListModel#isSearchValidForServerSideSorting to access syntax checker through Configurator * in UserPortal context, syntax checker will be null and above method will simply return true * in WebAdmin context, syntax checker will be non-null and existing behavior will be retained 4. modified SearchSuggestModel to access syntax checker through Configurator 5. removed unused SyntaxCheckerFactory#getUISyntaxChecker This patch improves performance of UserPortal while keeping existing behavior of WebAdmin (where syntax checker is used in SearchableListModel#isSearchValidForServerSideSorting). Change-Id: Iab7f369fa26452fe49c57f99dc53919a2bad0412 Bug-Url: https://bugzilla.redhat.com/1221236 Signed-off-by: Vojtech Szocs <vsz...@redhat.com> --- M backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxCheckerFactory.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Configurator.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/autocomplete/SearchSuggestModel.java M frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/uicommon/UserPortalConfigurator.java M frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/WebAdminConfigurator.java 7 files changed, 31 insertions(+), 23 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/37/41237/1 diff --git a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxCheckerFactory.java b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxCheckerFactory.java index 4220b4b..2ac3ac3 100644 --- a/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxCheckerFactory.java +++ b/backend/manager/modules/searchbackend/src/main/java/org/ovirt/engine/core/searchbackend/SyntaxCheckerFactory.java @@ -35,7 +35,4 @@ return ConfigAuthenticationMethod; } - public static ISyntaxChecker getUISyntaxChecker() { - return uiSyntaxChecker; - } } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Configurator.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Configurator.java index 6c86d4b..789800f 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Configurator.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/Configurator.java @@ -2,6 +2,7 @@ import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.core.compat.Version; +import org.ovirt.engine.core.searchbackend.ISyntaxChecker; import org.ovirt.engine.ui.frontend.AsyncQuery; import org.ovirt.engine.ui.frontend.INewAsyncCallback; import org.ovirt.engine.ui.frontend.utils.BaseContextPathData; @@ -29,7 +30,6 @@ private static final String DOCS_ROOT = BaseContextPathData.getInstance().getRelativePath() + "docs/manual"; //$NON-NLS-1$ private static final String CSH_ROOT = BaseContextPathData.getInstance().getRelativePath() + "docs/csh"; //$NON-NLS-1$ private static final String JSON = ".json"; //$NON-NLS-1$ - private static String localeDir; @@ -286,4 +286,9 @@ public abstract Float clientBrowserVersion(); + /** + * Returns the UI syntax checker instance or {@code null} if not available. + */ + public abstract ISyntaxChecker getSyntaxChecker(); + } diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java index 1ddc3d9..6dfd592 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/CommonModel.java @@ -1149,7 +1149,7 @@ if (tokens == null) { return false; } - ISyntaxChecker syntaxChecker = getAutoCompleteModel().getSyntaxChecker(); + ISyntaxChecker syntaxChecker = getAutoCompleteModel().getConfigurator().getSyntaxChecker(); SyntaxContainer syntaxCont = syntaxChecker.analyzeSyntaxState(searchString, true); Set<SyntaxObjectType> searchTokenSet = new HashSet<SyntaxObjectType>(); Iterator<SyntaxObject> iterator = syntaxCont.iterator(); diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java index 5bef9cc..8a4bfc7 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java @@ -14,14 +14,12 @@ import org.ovirt.engine.core.common.businessentities.BusinessEntity; import org.ovirt.engine.core.common.businessentities.HasStoragePool; import org.ovirt.engine.core.common.businessentities.IVdcQueryable; -import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.core.common.queries.VdcQueryParametersBase; import org.ovirt.engine.core.common.queries.VdcQueryReturnValue; import org.ovirt.engine.core.common.queries.VdcQueryType; import org.ovirt.engine.core.common.utils.ObjectUtils; import org.ovirt.engine.core.searchbackend.ISyntaxChecker; import org.ovirt.engine.core.searchbackend.SyntaxChecker; -import org.ovirt.engine.core.searchbackend.SyntaxCheckerFactory; import org.ovirt.engine.core.searchbackend.SyntaxContainer; import org.ovirt.engine.core.searchbackend.SyntaxError; import org.ovirt.engine.core.searchbackend.SyntaxObject; @@ -67,11 +65,6 @@ private static final Logger logger = Logger.getLogger(SearchableListModel.class.getName()); private static final String PAGE_STRING_REGEX = "[\\s]+page[\\s]+[1-9]+[0-9]*[\\s]*$"; //$NON-NLS-1$ private static final String PAGE_NUMBER_REGEX = "[1-9]+[0-9]*$"; //$NON-NLS-1$ - - // Syntax checker singleton instance. - // Note: must be static since SyntaxCheckerFactory.createUISyntaxChecker method - // works with single syntax checker instance (uiSyntaxChecker) for the entire UI. - private static ISyntaxChecker syntaxChecker; private UICommand privateSearchCommand; private HandlerRegistration timerChangeHandler; @@ -281,11 +274,6 @@ getSearchNextPageCommand().setIsAvailable(false); getSearchPreviousPageCommand().setIsAvailable(false); - if (syntaxChecker == null) { - syntaxChecker = SyntaxCheckerFactory.createUISyntaxChecker( - (String) AsyncDataProvider.getInstance().getConfigValuePreConverted(ConfigurationValues.AuthenticationMethod)); - } - entityModel = new EntityModel<E>() { @Override protected void onEntityChanged() { @@ -350,10 +338,6 @@ } protected void entityChanging(E oldValue, E newValue) { - } - - protected ISyntaxChecker getSyntaxChecker() { - return syntaxChecker; } /** @@ -838,8 +822,13 @@ * Otherwise, this method returns {@code true}. */ public boolean isSearchValidForServerSideSorting() { + ISyntaxChecker syntaxChecker = getConfigurator().getSyntaxChecker(); + if (syntaxChecker == null) { + return true; + } + String search = getSearchString(); - SyntaxContainer syntaxResult = getSyntaxChecker().analyzeSyntaxState(search, true); + SyntaxContainer syntaxResult = syntaxChecker.analyzeSyntaxState(search, true); if (syntaxResult.getError() != SyntaxError.NO_ERROR) { return false; diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/autocomplete/SearchSuggestModel.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/autocomplete/SearchSuggestModel.java index ffde54b..01d2ff7 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/autocomplete/SearchSuggestModel.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/autocomplete/SearchSuggestModel.java @@ -96,7 +96,7 @@ { getItems().clear(); - SyntaxContainer syntax = getSyntaxChecker().getCompletion(search); + SyntaxContainer syntax = getConfigurator().getSyntaxChecker().getCompletion(search); int lastHandledIndex = syntax.getLastHandledIndex(); String pf = search.substring(0, lastHandledIndex); diff --git a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/uicommon/UserPortalConfigurator.java b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/uicommon/UserPortalConfigurator.java index 468d09e..3d69ace 100644 --- a/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/uicommon/UserPortalConfigurator.java +++ b/frontend/webadmin/modules/userportal-gwtp/src/main/java/org/ovirt/engine/ui/userportal/uicommon/UserPortalConfigurator.java @@ -5,6 +5,7 @@ import org.ovirt.engine.core.common.console.ConsoleOptions.WanColorDepth; import org.ovirt.engine.core.common.console.ConsoleOptions.WanDisableEffects; import org.ovirt.engine.core.compat.Version; +import org.ovirt.engine.core.searchbackend.ISyntaxChecker; import org.ovirt.engine.ui.common.uicommon.ClientAgentType; import org.ovirt.engine.ui.common.uicommon.ContextSensitiveHelpManager; import org.ovirt.engine.ui.frontend.AsyncQuery; @@ -149,4 +150,10 @@ public Float clientBrowserVersion() { return clientAgentType.version; } + + @Override + public ISyntaxChecker getSyntaxChecker() { + return null; + } + } diff --git a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/WebAdminConfigurator.java b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/WebAdminConfigurator.java index e019586..265679d 100644 --- a/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/WebAdminConfigurator.java +++ b/frontend/webadmin/modules/webadmin/src/main/java/org/ovirt/engine/ui/webadmin/uicommon/WebAdminConfigurator.java @@ -3,10 +3,14 @@ import java.util.ArrayList; import org.ovirt.engine.core.common.console.ConsoleOptions.WanDisableEffects; +import org.ovirt.engine.core.common.queries.ConfigurationValues; import org.ovirt.engine.core.compat.Version; +import org.ovirt.engine.core.searchbackend.ISyntaxChecker; +import org.ovirt.engine.core.searchbackend.SyntaxCheckerFactory; import org.ovirt.engine.ui.common.uicommon.ClientAgentType; import org.ovirt.engine.ui.common.uicommon.ContextSensitiveHelpManager; import org.ovirt.engine.ui.uicommonweb.Configurator; +import org.ovirt.engine.ui.uicommonweb.dataprovider.AsyncDataProvider; import org.ovirt.engine.ui.uicommonweb.models.vms.ISpice; import org.ovirt.engine.ui.uicompat.Event; import org.ovirt.engine.ui.uicompat.EventDefinition; @@ -96,4 +100,10 @@ return clientAgentType.version; } + @Override + public ISyntaxChecker getSyntaxChecker() { + return SyntaxCheckerFactory.createUISyntaxChecker( + (String) AsyncDataProvider.getInstance().getConfigValuePreConverted(ConfigurationValues.AuthenticationMethod)); + } + } -- To view, visit https://gerrit.ovirt.org/41237 To unsubscribe, visit https://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: Iab7f369fa26452fe49c57f99dc53919a2bad0412 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Vojtech Szocs <vsz...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches