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

Reply via email to