Roy Golan has uploaded a new change for review. Change subject: webadmin: [WIP,improvment] expose simple config values access ......................................................................
webadmin: [WIP,improvment] expose simple config values access added an interface to fetch config values directly without a callback to simplify usability. The interface, which could be shared with backend is generic and more strict with type safety in means of values conversion. Another downside of using AsyncQueries is the repetition of converting values which is no longer needed. Change-Id: I2712ed87474577b8d0ff5d57bca9e120dc075981 Signed-off-by: Roy Golan <rgo...@redhat.com> contivue refactor Change-Id: I6d10d45b0909fa1d7851aa0da3f4355e1a06ae49 Signed-off-by: Roy Golan <rgo...@redhat.com> --- A backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/Configuration.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ConfigurationProvider.java A frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AppConfig.java M frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java 4 files changed, 86 insertions(+), 12 deletions(-) git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/34/11134/1 diff --git a/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/Configuration.java b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/Configuration.java new file mode 100644 index 0000000..6bb73c7 --- /dev/null +++ b/backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/Configuration.java @@ -0,0 +1,12 @@ +package org.ovirt.engine.core.common.config; + +import org.ovirt.engine.core.common.queries.ConfigurationValues; + +public interface Configuration<K> { + + public boolean getBoolean(K key); + + public boolean getBoolean(K key, boolean defaultValue); + + public boolean getBoolean(ConfigurationValues key, String version, boolean defaultValue); +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ConfigurationProvider.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ConfigurationProvider.java new file mode 100644 index 0000000..2953c56 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/ConfigurationProvider.java @@ -0,0 +1,13 @@ +package org.ovirt.engine.ui.uicommonweb; + +import org.ovirt.engine.core.common.queries.ConfigurationValues; +import org.ovirt.engine.core.compat.KeyValuePairCompat; + +public interface ConfigurationProvider { + + Object getRawConfigValue(ConfigurationValues value, String version); + + Object getRawConfigValue(KeyValuePairCompat<ConfigurationValues, String> pair); + + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AppConfig.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AppConfig.java new file mode 100644 index 0000000..3d05d25 --- /dev/null +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AppConfig.java @@ -0,0 +1,34 @@ +package org.ovirt.engine.ui.uicommonweb.dataprovider; + +import org.ovirt.engine.core.common.config.Configuration; +import org.ovirt.engine.core.common.queries.ConfigurationValues; +import org.ovirt.engine.ui.uicommonweb.ConfigurationProvider; + +public enum AppConfig implements Configuration<ConfigurationValues> { + + INSTANCE; + + ConfigurationProvider provider = AsyncDataProvider.INSTANCE; + + @Override + public boolean getBoolean(ConfigurationValues key) { + return getBoolean(key, "", false); + } + + @Override + public boolean getBoolean(ConfigurationValues key, boolean defaultValue) { + Boolean booleanValue = getBoolean(key); + return booleanValue != null ? booleanValue : defaultValue; + } + + @Override + public boolean getBoolean(ConfigurationValues key, String version, boolean defaultValue) { + Object rawConfigValue = provider.getRawConfigValue(key, version); + try { + return (Boolean) rawConfigValue; + } catch (ClassCastException e) { + return Boolean.valueOf(String.valueOf(rawConfigValue)); + } + }; + +} diff --git a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java index 1b0e739..857ed53 100644 --- a/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java +++ b/frontend/webadmin/modules/uicommonweb/src/main/java/org/ovirt/engine/ui/uicommonweb/dataprovider/AsyncDataProvider.java @@ -116,6 +116,7 @@ import org.ovirt.engine.ui.frontend.Frontend; import org.ovirt.engine.ui.frontend.IAsyncConverter; import org.ovirt.engine.ui.frontend.INewAsyncCallback; +import org.ovirt.engine.ui.uicommonweb.ConfigurationProvider; import org.ovirt.engine.ui.uicommonweb.Linq; import org.ovirt.engine.ui.uicommonweb.models.ApplicationModeHelper; import org.ovirt.engine.ui.uicommonweb.models.EntityModel; @@ -127,7 +128,9 @@ import org.ovirt.engine.ui.uicompat.IFrontendMultipleQueryAsyncCallback; import org.ovirt.engine.ui.uicompat.SpiceConstantsManager; -public final class AsyncDataProvider { +public enum AsyncDataProvider implements ConfigurationProvider { + + INSTANCE; private static final String GENERAL = "general"; //$NON-NLS-1$ @@ -2272,24 +2275,36 @@ Object returnValue = null; + returnValue = INSTANCE.getRawConfigValue(config_key); + // run converter + if (aQuery.converterCallback != null) { + returnValue = aQuery.converterCallback.Convert(returnValue, aQuery); + } + if (returnValue != null) { + cachedConfigValues.put(config_key, returnValue); + } + aQuery.asyncCallback.OnSuccess(aQuery.getModel(), returnValue); + } + + @Override + public Object getRawConfigValue(ConfigurationValues configValue, String version) { + final KeyValuePairCompat<ConfigurationValues, String> config_key = + new KeyValuePairCompat<ConfigurationValues, String>(configValue,version); + return getRawConfigValue(config_key); + } + + @Override + public Object getRawConfigValue(final KeyValuePairCompat<ConfigurationValues, String> config_key) { if (cachedConfigValues.containsKey(config_key)) { // cache hit - returnValue = cachedConfigValues.get(config_key); + return cachedConfigValues.get(config_key); } // cache miss: convert configuration value using query's converter // and call asyncCallback's OnSuccess else if (cachedConfigValuesPreConvert.containsKey(config_key)) { - returnValue = cachedConfigValuesPreConvert.get(config_key); - - // run converter - if (aQuery.converterCallback != null) { - returnValue = aQuery.converterCallback.Convert(returnValue, aQuery); - } - if (returnValue != null) { - cachedConfigValues.put(config_key, returnValue); - } + return cachedConfigValuesPreConvert.get(config_key); } - aQuery.asyncCallback.OnSuccess(aQuery.getModel(), returnValue); + return null; } /** -- To view, visit http://gerrit.ovirt.org/11134 To unsubscribe, visit http://gerrit.ovirt.org/settings Gerrit-MessageType: newchange Gerrit-Change-Id: I6d10d45b0909fa1d7851aa0da3f4355e1a06ae49 Gerrit-PatchSet: 1 Gerrit-Project: ovirt-engine Gerrit-Branch: master Gerrit-Owner: Roy Golan <rgo...@redhat.com> _______________________________________________ Engine-patches mailing list Engine-patches@ovirt.org http://lists.ovirt.org/mailman/listinfo/engine-patches