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