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
Signed-off-by: Vojtech Szocs <[email protected]>
---
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/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
6 files changed, 30 insertions(+), 22 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/84/41284/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 790983a..1f5ac69 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;
@@ -28,7 +29,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;
 
@@ -333,4 +333,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/SearchableListModel.java
 
b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/models/SearchableListModel.java
index 392a8ae..a47233f 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,7 +14,6 @@
 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;
@@ -26,7 +25,6 @@
 import org.ovirt.engine.core.compat.StringHelper;
 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;
@@ -64,11 +62,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;
@@ -305,15 +298,6 @@
         // should have paging will set it explicitly in their constructors.
         getSearchNextPageCommand().setIsAvailable(false);
         getSearchPreviousPageCommand().setIsAvailable(false);
-
-        if (syntaxChecker == null) {
-            syntaxChecker = SyntaxCheckerFactory.createUISyntaxChecker(
-                    (String) 
AsyncDataProvider.getConfigValuePreConverted(ConfigurationValues.AuthenticationMethod));
-        }
-    }
-
-    protected ISyntaxChecker getSyntaxChecker() {
-        return syntaxChecker;
     }
 
     /**
@@ -808,8 +792,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 9a6da84..5b4464e 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
@@ -88,7 +88,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 b785bfc..ca15d5f 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
@@ -3,6 +3,7 @@
 import java.util.List;
 
 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 cc09ca9..219edad 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
@@ -2,10 +2,14 @@
 
 import java.util.ArrayList;
 
+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.uicommonweb.models.vms.WANDisableEffects;
 import org.ovirt.engine.ui.uicompat.Event;
@@ -97,4 +101,10 @@
         return clientAgentType.version;
     }
 
+    @Override
+    public ISyntaxChecker getSyntaxChecker() {
+        return SyntaxCheckerFactory.createUISyntaxChecker(
+                (String) 
AsyncDataProvider.getConfigValuePreConverted(ConfigurationValues.AuthenticationMethod));
+    }
+
 }


-- 
To view, visit https://gerrit.ovirt.org/41284
To unsubscribe, visit https://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Iab7f369fa26452fe49c57f99dc53919a2bad0412
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: ovirt-engine-3.5
Gerrit-Owner: Vojtech Szocs <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to