api: Implement findByXId in GenericDaoBase and EntityManagerImpl Declare and define findByXId() in GenericDao and EntityManager. This method would return a VO by UUID and EntityManager's interface would take in the VO Interface.
Signed-off-by: Rohit Yadav <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/837d21bb Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/837d21bb Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/837d21bb Branch: refs/heads/api_refactoring Commit: 837d21bb2daf5b719c985a88e24585634c2df35f Parents: d54d8cb Author: Rohit Yadav <[email protected]> Authored: Tue Dec 18 04:10:36 2012 -0800 Committer: Rohit Yadav <[email protected]> Committed: Tue Dec 18 04:10:36 2012 -0800 ---------------------------------------------------------------------- api/src/com/cloud/dao/EntityManager.java | 2 +- server/src/com/cloud/dao/EntityManagerImpl.java | 5 +++-- utils/src/com/cloud/utils/db/GenericDao.java | 3 +++ utils/src/com/cloud/utils/db/GenericDaoBase.java | 8 ++++++++ 4 files changed, 15 insertions(+), 3 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/837d21bb/api/src/com/cloud/dao/EntityManager.java ---------------------------------------------------------------------- diff --git a/api/src/com/cloud/dao/EntityManager.java b/api/src/com/cloud/dao/EntityManager.java index 552e69d..4ddfcec 100644 --- a/api/src/com/cloud/dao/EntityManager.java +++ b/api/src/com/cloud/dao/EntityManager.java @@ -45,7 +45,7 @@ public interface EntityManager { * @param xid external id * @return T if found, null if not. */ - public <T> T findByXid(Class<T> entityType, String xid); + public <T> T findByXId(Class<T> entityType, String xid); /** * Lists all entities. Use this method at your own risk. http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/837d21bb/server/src/com/cloud/dao/EntityManagerImpl.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/dao/EntityManagerImpl.java b/server/src/com/cloud/dao/EntityManagerImpl.java index 1430c08..4d7f7fb 100644 --- a/server/src/com/cloud/dao/EntityManagerImpl.java +++ b/server/src/com/cloud/dao/EntityManagerImpl.java @@ -45,8 +45,9 @@ public class EntityManagerImpl implements EntityManager, Manager { } @Override - public <T> T findByXid(Class<T> entityType, String xid) { - return null; + public <T> T findByXId(Class<T> entityType, String xid) { + GenericDao<? extends T, String> dao = (GenericDao<? extends T, String>)GenericDaoBase.getDao(entityType); + return dao.findByXId(xid); } @Override http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/837d21bb/utils/src/com/cloud/utils/db/GenericDao.java ---------------------------------------------------------------------- diff --git a/utils/src/com/cloud/utils/db/GenericDao.java b/utils/src/com/cloud/utils/db/GenericDao.java index f36c4d8..082748a 100755 --- a/utils/src/com/cloud/utils/db/GenericDao.java +++ b/utils/src/com/cloud/utils/db/GenericDao.java @@ -54,6 +54,9 @@ public interface GenericDao<T, ID extends Serializable> { T findByIdIncludingRemoved(ID id); T findById(ID id, boolean fresh); + + // Finds a VO object using uuid + T findByXId(ID uuid); /** * @return VO object ready to be used for update. It won't have any fields filled in. http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/837d21bb/utils/src/com/cloud/utils/db/GenericDaoBase.java ---------------------------------------------------------------------- diff --git a/utils/src/com/cloud/utils/db/GenericDaoBase.java b/utils/src/com/cloud/utils/db/GenericDaoBase.java index be0fe89..6bc49bf 100755 --- a/utils/src/com/cloud/utils/db/GenericDaoBase.java +++ b/utils/src/com/cloud/utils/db/GenericDaoBase.java @@ -914,6 +914,14 @@ public abstract class GenericDaoBase<T, ID extends Serializable> implements Gene } @Override @DB(txn=false) + @SuppressWarnings("unchecked") + public T findByXId(final ID uuid) { + SearchCriteria<T> sc = createSearchCriteria(); + sc.addAnd("uuid", SearchCriteria.Op.EQ, uuid); + return findOneBy(sc); + } + + @Override @DB(txn=false) public T findByIdIncludingRemoved(ID id) { return findById(id, true, null); }
