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>
---
A 
backend/manager/modules/common/src/main/java/org/ovirt/engine/core/common/config/Configuration.java
M 
frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseUiCommonModule.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
5 files changed, 95 insertions(+), 12 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/41/11141/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/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseUiCommonModule.java
 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseUiCommonModule.java
index 7686800..455f4e7 100644
--- 
a/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseUiCommonModule.java
+++ 
b/frontend/webadmin/modules/gwt-common/src/main/java/org/ovirt/engine/ui/common/gin/BaseUiCommonModule.java
@@ -1,5 +1,7 @@
 package org.ovirt.engine.ui.common.gin;
 
+import org.ovirt.engine.core.common.config.Configuration;
+import org.ovirt.engine.core.common.queries.ConfigurationValues;
 import org.ovirt.engine.ui.common.uicommon.FrontendEventsHandlerImpl;
 import org.ovirt.engine.ui.common.uicommon.FrontendFailureEventListener;
 import org.ovirt.engine.ui.common.uicommon.LoggerImpl;
@@ -7,8 +9,10 @@
 import org.ovirt.engine.ui.uicommonweb.Configurator;
 import org.ovirt.engine.ui.uicommonweb.ILogger;
 import org.ovirt.engine.ui.uicommonweb.ITypeResolver;
+import org.ovirt.engine.ui.uicommonweb.dataprovider.AppConfig;
 
 import com.google.gwt.inject.client.AbstractGinModule;
+import com.google.inject.Provides;
 import com.google.inject.Singleton;
 
 /**
@@ -27,4 +31,9 @@
         bind(Configurator.class).to(configurator).in(Singleton.class);
     }
 
+    @Provides
+    @Singleton
+    public Configuration<ConfigurationValues> getConfiguration() {
+        return AppConfig.INSTANCE;
+    }
 }
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/11141
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: I2712ed87474577b8d0ff5d57bca9e120dc075981
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

Reply via email to