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>

Reply via email to