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 <[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/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 <[email protected]>
_______________________________________________
Engine-patches mailing list
[email protected]
http://lists.ovirt.org/mailman/listinfo/engine-patches