You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by ma...@apache.org on 2016/03/02 23:00:36 UTC

incubator-ranger git commit: RANGER-866: refactor the logic to update XXService.tagVersion

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 <ma...@apache.org>
Authored: Tue Mar 1 18:34:36 2016 -0800
Committer: Madhan Neethiraj <ma...@apache.org>
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>