Liran Zelkha has uploaded a new change for review.

Change subject: core: Make DAOs injectable
......................................................................

core: Make DAOs injectable

Make Db DAOs injectible objects

Change-Id: Ia408a878fa0fa8dd8b414a60683c36d0db6d6641
Bug-Url: https://bugzilla.redhat.com/1159621
Signed-off-by: lzel...@redhat.com <lzel...@redhat.com>
---
M 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
D 
backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DaoFactory.java
D backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties
3 files changed, 13 insertions(+), 129 deletions(-)


  git pull ssh://gerrit.ovirt.org:29418/ovirt-engine refs/changes/93/35793/1

diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
index 54ff1ad..f20f1ac 100644
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
+++ 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dal/dbbroker/DbFacade.java
@@ -1,13 +1,16 @@
 package org.ovirt.engine.core.dal.dbbroker;
 
+import java.lang.annotation.Annotation;
 import java.sql.ResultSet;
 import java.sql.SQLException;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import javax.annotation.PostConstruct;
+import javax.enterprise.inject.spi.BeanManager;
 import javax.inject.Inject;
 import javax.inject.Named;
 import javax.inject.Singleton;
@@ -70,7 +73,6 @@
 import org.ovirt.engine.core.dao.BusinessEntitySnapshotDAO;
 import org.ovirt.engine.core.dao.CommandEntityDao;
 import org.ovirt.engine.core.dao.DAO;
-import org.ovirt.engine.core.dao.DaoFactory;
 import org.ovirt.engine.core.dao.DbGroupDAO;
 import org.ovirt.engine.core.dao.DbUserDAO;
 import org.ovirt.engine.core.dao.DiskDao;
@@ -233,6 +235,9 @@
 
     private int connectionCheckInterval;
 
+    @Inject
+    private BeanManager beanManager;
+
     public void setDbEngineDialect(DbEngineDialect dbEngineDialect) {
         this.dbEngineDialect = dbEngineDialect;
         callsHandler.setDbEngineDialect(dbEngineDialect);
@@ -262,7 +267,13 @@
     }
 
     protected <T extends DAO> T getDao(Class<T> daoType) {
-        T dao = DaoFactory.get(daoType);
+        @SuppressWarnings("unchecked")
+        Set<T> daos = (Set<T>) beanManager.getBeans(daoType, (Annotation[]) 
null);
+        if (daos.size() == 0) {
+            log.error("Can't find dao for " + daoType);
+            return null;
+        }
+        T dao = daos.iterator().next();
         if (dao instanceof BaseDAODbFacade && !(dao instanceof 
HibernateFacade)) {
             BaseDAODbFacade dbFacadeDAO = (BaseDAODbFacade) dao;
             dbFacadeDAO.setTemplate(jdbcTemplate);
diff --git 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DaoFactory.java
 
b/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DaoFactory.java
deleted file mode 100644
index 3f4a5fe..0000000
--- 
a/backend/manager/modules/dal/src/main/java/org/ovirt/engine/core/dao/DaoFactory.java
+++ /dev/null
@@ -1,35 +0,0 @@
-package org.ovirt.engine.core.dao;
-
-import java.util.Properties;
-import java.util.concurrent.ConcurrentHashMap;
-import java.util.concurrent.ConcurrentMap;
-
-import org.ovirt.engine.core.utils.ResourceUtils;
-
-public class DaoFactory {
-
-    private static final String ENGINE_DAOS_CONFIGURATION_FILE = 
"engine-daos.properties";
-
-    private static ConcurrentMap<Class<? extends DAO>, DAO> daos = new 
ConcurrentHashMap<Class<? extends DAO>, DAO>();
-
-    public static <T extends DAO> T get(Class<T> daoType) {
-        if (!daos.containsKey(daoType)) {
-            daos.putIfAbsent(daoType, createDAO(daoType));
-        }
-        return daoType.cast(daos.get(daoType));
-    }
-
-    private static <T extends DAO> T createDAO(Class<T> daoType) {
-        try {
-            return newInstance(daoType,
-                    ResourceUtils.loadProperties(DaoFactory.class, 
ENGINE_DAOS_CONFIGURATION_FILE));
-        } catch (Exception e) {
-            throw new DaoFactoryException(daoType, 
ENGINE_DAOS_CONFIGURATION_FILE, e);
-        }
-    }
-
-    private static <T extends DAO> T newInstance(Class<T> daoType, Properties 
props) throws Exception {
-        String className = props.getProperty(daoType.getSimpleName());
-        return daoType.cast(Class.forName(className).newInstance());
-    }
-}
diff --git 
a/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties 
b/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties
deleted file mode 100644
index 670f1a3..0000000
--- a/backend/manager/modules/dal/src/main/jdbc-resources/engine-daos.properties
+++ /dev/null
@@ -1,92 +0,0 @@
-BookmarkDAO=org.ovirt.engine.core.dao.BookmarkDAODbFacadeImpl
-CommandEntityDao=org.ovirt.engine.core.dao.CommandEntityDaoDbFacadeImpl
-DbUserDAO=org.ovirt.engine.core.dao.DbUserDAODbFacadeImpl
-VdsDAO=org.ovirt.engine.core.dao.VdsDAODbFacadeImpl
-VdsStaticDAO=org.ovirt.engine.core.dao.VdsStaticDAODbFacadeImpl
-VdsDynamicDAO=org.ovirt.engine.core.dao.VdsDynamicDAODbFacadeImpl
-VdsStatisticsDAO=org.ovirt.engine.core.dao.VdsStatisticsDAODbFacadeImpl
-VdsSpmIdMapDAO=org.ovirt.engine.core.dao.VdsSpmIdMapDAODbFacadeImpl
-AuditLogDAO=org.ovirt.engine.core.dao.AuditLogDAODbFacadeImpl
-InterfaceDao=org.ovirt.engine.core.dao.network.InterfaceDaoDbFacadeImpl
-VmNetworkInterfaceDao=org.ovirt.engine.core.dao.network.VmNetworkInterfaceDaoDbFacadeImpl
-VnicProfileDao=org.ovirt.engine.core.dao.network.VnicProfileDaoDbFacadeImpl
-VmNicDao=org.ovirt.engine.core.dao.network.VmNicDaoDbFacadeImpl
-VnicProfileViewDao=org.ovirt.engine.core.dao.network.VnicProfileViewDaoDbFacadeImpl
-VmNetworkStatisticsDao=org.ovirt.engine.core.dao.network.VmNetworkStatisticsDaoDbFacadeImpl
-LunDAO=org.ovirt.engine.core.dao.LunDAODbFacadeImpl
-RoleGroupMapDAO=org.ovirt.engine.core.dao.RoleGroupMapDAODbFacadeImpl
-VmTemplateDAO=org.ovirt.engine.core.dao.VmTemplateDAODbFacadeImpl
-VmDAO=org.ovirt.engine.core.dao.VmDAODbFacadeImpl
-VmStaticDAO=org.ovirt.engine.core.dao.VmStaticDAODbFacadeImpl
-VmStatisticsDAO=org.ovirt.engine.core.dao.VmStatisticsDaoDbFacadeImpl
-VmDynamicDAO=org.ovirt.engine.core.dao.VmDynamicDAODbFacadeImpl
-VmJobDao=org.ovirt.engine.core.dao.VmJobDaoDbFacadeImpl
-TagDAO=org.ovirt.engine.core.dao.TagDAODbFacadeImpl
-BaseDiskDao=org.ovirt.engine.core.dao.BaseDiskDaoDbFacadeImpl
-DiskDao=org.ovirt.engine.core.dao.DiskDaoDbFacadeImpl
-DiskLunMapDao=org.ovirt.engine.core.dao.DiskLunMapDaoDbFacadeImpl
-ImageDao=org.ovirt.engine.core.dao.ImageDaoDbFacadeImpl
-DiskImageDAO=org.ovirt.engine.core.dao.DiskImageDAODbFacadeImpl
-DiskImageDynamicDAO=org.ovirt.engine.core.dao.DiskImageDynamicDAODbFacadeImpl
-ImageVmMapDAO=org.ovirt.engine.core.dao.ImageVmMapDAODbFacadeImpl
-EventDAO=org.ovirt.engine.core.dao.EventDAODbFacadeImpl
-ActionGroupDAO=org.ovirt.engine.core.dao.ActionGroupDAODbFacadeImpl
-RoleDAO=org.ovirt.engine.core.dao.RoleDAODbFacadeImpl
-AsyncTaskDAO=org.ovirt.engine.core.dao.AsyncTaskDAODbFacadeImpl
-DbGroupDAO=org.ovirt.engine.core.dao.DbGroupDAODbFacadeImpl
-NetworkDao=org.ovirt.engine.core.dao.network.NetworkDaoDbFacadeImpl
-PermissionDAO=org.ovirt.engine.core.dao.PermissionDAODbFacadeImpl
-StoragePoolDAO=org.ovirt.engine.core.dao.StoragePoolDAODbFacadeImpl
-MacPoolDao=org.ovirt.engine.core.dao.MacPoolDaoDbFacadeImpl
-StoragePoolIsoMapDAO=org.ovirt.engine.core.dao.StoragePoolIsoMapDAODbFacadeImpl
-VdcOptionDAO=org.ovirt.engine.core.dao.VdcOptionDAODbFacadeImpl
-NetworkClusterDao=org.ovirt.engine.core.dao.network.NetworkClusterDaoDbFacadeImpl
-SnapshotDao=org.ovirt.engine.core.dao.SnapshotDaoDbFacadeImpl
-StorageDomainDAO=org.ovirt.engine.core.dao.StorageDomainDAODbFacadeImpl
-StorageDomainStaticDAO=org.ovirt.engine.core.dao.StorageDomainStaticDAODbFacadeImpl
-StorageDomainDynamicDAO=org.ovirt.engine.core.dao.StorageDomainDynamicDAODbFacadeImpl
-StorageServerConnectionDAO=org.ovirt.engine.core.dao.StorageServerConnectionDAODbFacadeImpl
-StorageServerConnectionLunMapDAO=org.ovirt.engine.core.dao.StorageServerConnectionLunMapDAODbFacadeImpl
-RepoFileMetaDataDAO=org.ovirt.engine.core.dao.RepoFileMetaDataDAODbFacadeImpl
-VdsGroupDAO=org.ovirt.engine.core.dao.VdsGroupDAODbFacadeImpl
-VmPoolDAO=org.ovirt.engine.core.dao.VmPoolDAODbFacadeImpl
-BusinessEntitySnapshotDAO=org.ovirt.engine.core.dao.BusinessEntitySnapshotDAODbFacadeImpl
-QuotaDAO=org.ovirt.engine.core.dao.QuotaDAODbFacadeImpl
-VmDeviceDAO=org.ovirt.engine.core.dao.VmDeviceDAODbFacadeImpl
-JobDao=org.ovirt.engine.core.dao.JobDaoDbFacadeImpl
-JobSubjectEntityDao=org.ovirt.engine.core.dao.JobSubjectEntityDaoFacadeImpl
-StepDao=org.ovirt.engine.core.dao.StepDaoDbFacadeImpl
-GlusterVolumeDao=org.ovirt.engine.core.dao.gluster.GlusterVolumeDaoDbFacadeImpl
-GlusterBrickDao=org.ovirt.engine.core.dao.gluster.GlusterBrickDaoDbFacadeImpl
-GlusterOptionDao=org.ovirt.engine.core.dao.gluster.GlusterOptionDaoDbFacadeImpl
-ImageStorageDomainMapDao=org.ovirt.engine.core.dao.ImageStorageDomainMapDaoDbFacadeImpl
-VmAndTemplatesGenerationsDAO=org.ovirt.engine.core.dao.VmAndTemplatesGenerationsDbFacadeImpl
-NetworkViewDao=org.ovirt.engine.core.dao.network.NetworkViewDaoDbFacadeImpl
-VmGuestAgentInterfaceDao=org.ovirt.engine.core.dao.VmGuestAgentInterfaceDaoDbFacadeImpl
-ProviderDao=org.ovirt.engine.core.dao.provider.ProviderDaoDbFacadeImpl
-GlusterHooksDao=org.ovirt.engine.core.dao.gluster.GlusterHooksDaoDbFacadeImpl
-GlusterServiceDao=org.ovirt.engine.core.dao.gluster.GlusterServiceDaoDbFacadeImpl
-GlusterServerServiceDao=org.ovirt.engine.core.dao.gluster.GlusterServerServiceDaoDbFacadeImpl
-GlusterClusterServiceDao=org.ovirt.engine.core.dao.gluster.GlusterClusterServiceDaoDbFacadeImpl
-GlusterServerDao=org.ovirt.engine.core.dao.gluster.GlusterServerDaoDbFacadeImpl
-GlusterGeoRepDao=org.ovirt.engine.core.dao.gluster.GlusterGeoRepDaoDbFacadeImpl
-NetworkQoSDao=org.ovirt.engine.core.dao.network.NetworkQoSDaoFacadeImpl
-HostNetworkQosDao=org.ovirt.engine.core.dao.network.HostNetworkQosDaoDbFacadeImpl
-StorageQosDao=org.ovirt.engine.core.dao.qos.StorageQosDaoDbFacadeImpl
-CpuQosDao=org.ovirt.engine.core.dao.qos.CpuQosDaoDbFacadeImpl
-QosBaseDao=org.ovirt.engine.core.dao.qos.AllQosBaseDaoFacadeImpl
-PolicyUnitDao=org.ovirt.engine.core.dao.scheduling.PolicyUnitDaoImpl
-ClusterPolicyDao=org.ovirt.engine.core.dao.scheduling.ClusterPolicyDaoImpl
-DwhHistoryTimekeepingDao=org.ovirt.engine.core.dao.dwh.DwhHistoryTimekeepingDaoDbFacadeImpl
-AffinityGroupDao=org.ovirt.engine.core.dao.scheduling.AffinityGroupDaoImpl
-IscsiBondDao=org.ovirt.engine.core.dao.IscsiBondDaoDbFacadeImpl
-VmInitDAO=org.ovirt.engine.core.dao.VmInitDAODbFacadeImpl
-StorageDomainOvfInfoDao=org.ovirt.engine.core.dao.StorageDomainOvfInfoDbFacadeImpl
-VdsCpuStatisticsDAO=org.ovirt.engine.core.dao.VdsCpuStatisticsDAODbFacadeImpl
-VdsNumaNodeDAO=org.ovirt.engine.core.dao.VdsNumaNodeDAODbFacadeImpl
-VmNumaNodeDAO=org.ovirt.engine.core.dao.VmNumaNodeDAODbFacadeImpl
-UnregisteredOVFDataDAO=org.ovirt.engine.core.dao.UnregisteredOVFDataDAODbFacadeImpl
-ExternalVariableDao=org.ovirt.engine.core.dao.ExternalVariableDaoDbFacadeImpl
-VdsKdumpStatusDao=org.ovirt.engine.core.dao.VdsKdumpStatusDaoDbFacadeImpl
-DiskProfileDao=org.ovirt.engine.core.dao.profiles.DiskProfileDaoDbFacadeImpl
-CpuProfileDao=org.ovirt.engine.core.dao.profiles.CpuProfileDaoDbFacadeImpl


-- 
To view, visit http://gerrit.ovirt.org/35793
To unsubscribe, visit http://gerrit.ovirt.org/settings

Gerrit-MessageType: newchange
Gerrit-Change-Id: Ia408a878fa0fa8dd8b414a60683c36d0db6d6641
Gerrit-PatchSet: 1
Gerrit-Project: ovirt-engine
Gerrit-Branch: master
Gerrit-Owner: Liran Zelkha <lzel...@redhat.com>
_______________________________________________
Engine-patches mailing list
Engine-patches@ovirt.org
http://lists.ovirt.org/mailman/listinfo/engine-patches

Reply via email to