Repository: incubator-ranger Updated Branches: refs/heads/master 3df4ae5ea -> e7541c9da
RANGER-866: refactor the logic to update XXService.tagVersion Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/e7541c9d Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/e7541c9d Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/e7541c9d Branch: refs/heads/master Commit: e7541c9da82add57dd64d2f2cac6f94fa16b49fe Parents: 3df4ae5 Author: Madhan Neethiraj <[email protected]> Authored: Tue Mar 1 18:34:36 2016 -0800 Committer: Madhan Neethiraj <[email protected]> Committed: Wed Mar 2 11:11:10 2016 -0800 ---------------------------------------------------------------------- .../java/org/apache/ranger/db/XXServiceDao.java | 65 ++++++++++++++++++++ .../apache/ranger/db/XXServiceResourceDao.java | 19 ------ .../java/org/apache/ranger/db/XXTagDao.java | 19 ------ .../java/org/apache/ranger/db/XXTagDefDao.java | 19 ------ .../service/RangerServiceResourceService.java | 2 +- .../ranger/service/RangerTagDefService.java | 2 +- .../service/RangerTagResourceMapService.java | 6 +- .../apache/ranger/service/RangerTagService.java | 2 +- .../resources/META-INF/jpa_named_queries.xml | 42 +++++++------ 9 files changed, 95 insertions(+), 81 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e7541c9d/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java index 240345f..4afff31 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceDao.java @@ -18,10 +18,12 @@ package org.apache.ranger.db; import java.util.ArrayList; +import java.util.Date; import java.util.List; import javax.persistence.NoResultException; +import org.apache.commons.collections.CollectionUtils; import org.apache.ranger.common.db.BaseDao; import org.apache.ranger.entity.XXService; @@ -81,6 +83,48 @@ public class XXServiceDao extends BaseDao<XXService> { } } + public void updateServiceForServiceResourceUpdate(Long resourceId, Date updateTime) { + if (resourceId == null) { + return; + } + + try { + List<XXService> services = getEntityManager().createNamedQuery("XXService.findByServiceResourceId", tClass).setParameter("resourceId", resourceId).getResultList(); + + updateTagVersionAndTagUpdateTime(services, updateTime); + } catch (NoResultException e) { + return; + } + } + + public void updateServiceForTagUpdate(Long tagId, Date updateTime) { + if (tagId == null) { + return; + } + + try { + List<XXService> services = getEntityManager().createNamedQuery("XXService.findByTagId", tClass).setParameter("tagId", tagId).getResultList(); + + updateTagVersionAndTagUpdateTime(services, updateTime); + } catch (NoResultException e) { + return; + } + } + + public void updateServiceForTagDefUpdate(Long tagDefId, Date updateTime) { + if (tagDefId == null) { + return; + } + + try { + List<XXService> services = getEntityManager().createNamedQuery("XXService.findByTagDefId", tClass).setParameter("tagDefId", tagDefId).getResultList(); + + updateTagVersionAndTagUpdateTime(services, updateTime); + } catch (NoResultException e) { + return; + } + } + public void updateSequence() { Long maxId = getMaxIdOfXXService(); @@ -90,4 +134,25 @@ public class XXServiceDao extends BaseDao<XXService> { updateSequence("X_SERVICE_SEQ", maxId + 1); } + + private void updateTagVersionAndTagUpdateTime(List<XXService> services, Date updateTime) { + if(CollectionUtils.isEmpty(services)) { + return; + } + + if(updateTime == null) { + updateTime = new Date(); + } + + for(XXService service : services) { + Long currentTagVersion = service.getTagVersion(); + + if(currentTagVersion == null) { + currentTagVersion = new Long(0); + } + + service.setTagVersion(currentTagVersion + 1); + service.setTagUpdateTime(updateTime); + } + } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e7541c9d/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java index 8e6bb02..8e2cca6 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXServiceResourceDao.java @@ -83,23 +83,4 @@ public class XXServiceResourceDao extends BaseDao<XXServiceResource> { return new ArrayList<XXServiceResource>(); } } - - public void updateServiceForServiceResourceUpdate(Long resourceId, Date updateTime) { - if (resourceId == null) { - return; - } - - if(updateTime == null) { - updateTime = new Date(); - } - - try { - getEntityManager().createNamedQuery("XXServiceResource.updateTagVersionInService", tClass) - .setParameter("resourceId", resourceId) - .setParameter("tagUpdateTime", updateTime) - .executeUpdate(); - } catch (NoResultException e) { - return; - } - } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e7541c9d/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java index 38cfc94..48cd1b9 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXTagDao.java @@ -124,23 +124,4 @@ public class XXTagDao extends BaseDao<XXTag> { return new ArrayList<XXTag>(); } } - - public void updateServiceForTagUpdate(Long tagId, Date updateTime) { - if (tagId == null) { - return; - } - - if(updateTime == null) { - updateTime = new Date(); - } - - try { - getEntityManager().createNamedQuery("XXTag.updateTagVersionInService", tClass) - .setParameter("tagId", tagId) - .setParameter("tagUpdateTime", updateTime) - .executeUpdate(); - } catch (NoResultException e) { - return; - } - } } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e7541c9d/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java b/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java index 9a3ed59..06dd2c4 100644 --- a/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java +++ b/security-admin/src/main/java/org/apache/ranger/db/XXTagDefDao.java @@ -82,25 +82,6 @@ public class XXTagDefDao extends BaseDao<XXTagDef> { } } - public void updateServiceForTagDefUpdate(Long tagDefId, Date updateTime) { - if (tagDefId == null) { - return; - } - - if(updateTime == null) { - updateTime = new Date(); - } - - try { - getEntityManager().createNamedQuery("XXTagDef.updateTagVersionInService", tClass) - .setParameter("tagDefId", tagDefId) - .setParameter("tagUpdateTime", updateTime) - .executeUpdate(); - } catch (NoResultException e) { - return; - } - } - public List<XXTagDef> findByResourceId(Long resourceId) { if (resourceId == null) { return new ArrayList<XXTagDef>(); http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e7541c9d/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java index ffbae18..5cf26c9 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceService.java @@ -54,7 +54,7 @@ public class RangerServiceResourceService extends RangerServiceResourceServiceBa public RangerServiceResource postUpdate(XXServiceResource resource) { RangerServiceResource ret = super.postUpdate(resource); - daoMgr.getXXServiceResource().updateServiceForServiceResourceUpdate(resource.getId(), resource.getUpdateTime()); + daoMgr.getXXService().updateServiceForServiceResourceUpdate(resource.getId(), resource.getUpdateTime()); return ret; } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e7541c9d/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java index b049f71..beb6295 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefService.java @@ -54,7 +54,7 @@ public class RangerTagDefService extends RangerTagDefServiceBase<XXTagDef, Range public RangerTagDef postUpdate(XXTagDef tagDef) { RangerTagDef ret = super.postUpdate(tagDef); - daoMgr.getXXTagDef().updateServiceForTagDefUpdate(tagDef.getId(), tagDef.getUpdateTime()); + daoMgr.getXXService().updateServiceForTagDefUpdate(tagDef.getId(), tagDef.getUpdateTime()); return ret; } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e7541c9d/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java index 40d9d64..257821d 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapService.java @@ -54,7 +54,7 @@ public class RangerTagResourceMapService extends RangerTagResourceMapServiceBase public RangerTagResourceMap postCreate(XXTagResourceMap tagResMap) { RangerTagResourceMap ret = super.postCreate(tagResMap); - daoMgr.getXXTag().updateServiceForTagUpdate(tagResMap.getTagId(), tagResMap.getUpdateTime()); + daoMgr.getXXService().updateServiceForTagUpdate(tagResMap.getTagId(), tagResMap.getUpdateTime()); return ret; } @@ -63,7 +63,7 @@ public class RangerTagResourceMapService extends RangerTagResourceMapServiceBase public RangerTagResourceMap postUpdate(XXTagResourceMap tagResMap) { RangerTagResourceMap ret = super.postUpdate(tagResMap); - daoMgr.getXXTag().updateServiceForTagUpdate(tagResMap.getTagId(), tagResMap.getUpdateTime()); + daoMgr.getXXService().updateServiceForTagUpdate(tagResMap.getTagId(), tagResMap.getUpdateTime()); return ret; } @@ -73,7 +73,7 @@ public class RangerTagResourceMapService extends RangerTagResourceMapServiceBase XXTagResourceMap tagResMap = super.preDelete(id); if (tagResMap != null) { - daoMgr.getXXTag().updateServiceForTagUpdate(tagResMap.getTagId(), tagResMap.getUpdateTime()); + daoMgr.getXXService().updateServiceForServiceResourceUpdate(tagResMap.getResourceId(), null); } return tagResMap; http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e7541c9d/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java ---------------------------------------------------------------------- diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java index 24e081e..34ed0ad 100644 --- a/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java +++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTagService.java @@ -55,7 +55,7 @@ public class RangerTagService extends RangerTagServiceBase<XXTag, RangerTag> { public RangerTag postUpdate(XXTag tag) { RangerTag ret = super.postUpdate(tag); - daoMgr.getXXTag().updateServiceForTagUpdate(tag.getId(), tag.getUpdateTime()); + daoMgr.getXXService().updateServiceForTagUpdate(tag.getId(), tag.getUpdateTime()); return ret; } http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/e7541c9d/security-admin/src/main/resources/META-INF/jpa_named_queries.xml ---------------------------------------------------------------------- diff --git a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml index 89764f5..8737460 100644 --- a/security-admin/src/main/resources/META-INF/jpa_named_queries.xml +++ b/security-admin/src/main/resources/META-INF/jpa_named_queries.xml @@ -392,6 +392,30 @@ <query>select obj from XXService obj where obj.tagService = :tagServiceId</query> </named-query> + <named-query name="XXService.findByServiceResourceId"> + <query> + select obj from XXService obj where obj.id in + (select res.serviceId from XXServiceResource res, XXTagResourceMap tagRes + where res.id = :resourceId and res.id = tagRes.resourceId) + </query> + </named-query> + + <named-query name="XXService.findByTagId"> + <query> + select obj from XXService obj where obj.id in + (select res.serviceId from XXServiceResource res, XXTagResourceMap tagRes, XXTag tag + where res.id = tagRes.resourceId and tagRes.tagId = tag.id and tag.id = :tagId) + </query> + </named-query> + + <named-query name="XXService.findByTagDefId"> + <query> + select obj from XXService obj where obj.id in + (select res.serviceId from XXServiceResource res, XXTagResourceMap tagRes, XXTag tag + where res.id = tagRes.resourceId and tagRes.tagId = tag.id and tag.type = :tagDefId) + </query> + </named-query> + <!-- XXPolicyResource --> <named-query name="XXPolicyResource.findByResDefIdAndPolicyId"> <query>select obj from XXPolicyResource obj where @@ -772,12 +796,6 @@ <query>select obj.name from XXTagDef obj</query> </named-query> - <named-query name="XXTagDef.updateTagVersionInService"> - <query>update XXService obj set obj.tagVersion = obj.tagVersion + 1, obj.tagUpdateTime = :tagUpdateTime - where obj.id in (select res.serviceId from XXServiceResource res, XXTagResourceMap tagRes, XXTag tag - where res.id = tagRes.resourceId and tagRes.tagId = tag.id and tag.type = :tagDefId)</query> - </named-query> - <named-query name="XXTagAttributeDef.findByTagDefId"> <query>select obj from XXTagAttributeDef obj where obj.tagDefId = :tagDefId</query> </named-query> @@ -824,12 +842,6 @@ </query> </named-query> - <named-query name="XXTag.updateTagVersionInService"> - <query>update XXService obj set obj.tagVersion = obj.tagVersion + 1, obj.tagUpdateTime = :tagUpdateTime - where obj.id in (select res.serviceId from XXServiceResource res, XXTagResourceMap tagRes, XXTag tag - where res.id = tagRes.resourceId and tagRes.tagId = tag.id and tag.id = :tagId)</query> - </named-query> - <named-query name="XXTagAttribute.findByTagId"> <query>select obj from XXTagAttribute obj where obj.tagId = :tagId</query> </named-query> @@ -869,12 +881,6 @@ <query>select obj from XXServiceResource obj where obj.resourceSignature = :resourceSignature</query> </named-query> - <named-query name="XXServiceResource.updateTagVersionInService"> - <query>update XXService obj set obj.tagVersion = obj.tagVersion + 1, obj.tagUpdateTime = :tagUpdateTime - where obj.id in (select res.serviceId from XXServiceResource res, XXTagResourceMap tagRes - where res.id = :resourceId and res.id = tagRes.resourceId)</query> - </named-query> - <!-- End <== JPA Queries for Tag Based Policies --> <named-query name="XXTrxLog.getMaxIdOfXXTrxLog"> <query>select max(obj.id) from XXTrxLog obj</query>
