You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ranger.apache.org by sn...@apache.org on 2015/04/08 08:33:02 UTC

incubator-ranger git commit: RANGER-352 : Add policy_type attribute and other changes to add id to objects

Repository: incubator-ranger
Updated Branches:
  refs/heads/master 63c7893ae -> c50acc448


RANGER-352 : Add policy_type attribute and other changes to add id to objects

Signed-off-by: sneethiraj <sn...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/incubator-ranger/repo
Commit: http://git-wip-us.apache.org/repos/asf/incubator-ranger/commit/c50acc44
Tree: http://git-wip-us.apache.org/repos/asf/incubator-ranger/tree/c50acc44
Diff: http://git-wip-us.apache.org/repos/asf/incubator-ranger/diff/c50acc44

Branch: refs/heads/master
Commit: c50acc4482f9dd7ac42f9350e1fc3899df5334a8
Parents: 63c7893
Author: Gautam Borad <gb...@gmail.com>
Authored: Wed Apr 8 11:41:58 2015 +0530
Committer: sneethiraj <sn...@apache.org>
Committed: Wed Apr 8 02:32:07 2015 -0400

----------------------------------------------------------------------
 .../db/mysql/patches/009-updated_schema.sql     |  1 +
 .../db/oracle/patches/009-updated_schema.sql    |  1 +
 .../db/postgres/xa_core_db_postgres.sql         |  1 +
 .../db/sqlserver/xa_core_db_sqlserver.sql       |  1 +
 .../org/apache/ranger/biz/ServiceDBStore.java   | 17 +++---
 .../org/apache/ranger/entity/XXPolicyBase.java  | 28 ++++++++-
 .../ranger/service/RangerPolicyServiceBase.java |  2 +
 .../service/RangerServiceDefServiceBase.java    | 62 +++++++++++++++++---
 8 files changed, 97 insertions(+), 16 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c50acc44/security-admin/db/mysql/patches/009-updated_schema.sql
----------------------------------------------------------------------
diff --git a/security-admin/db/mysql/patches/009-updated_schema.sql b/security-admin/db/mysql/patches/009-updated_schema.sql
index 5054d5d..a0d27e2 100644
--- a/security-admin/db/mysql/patches/009-updated_schema.sql
+++ b/security-admin/db/mysql/patches/009-updated_schema.sql
@@ -80,6 +80,7 @@ CREATE TABLE  `x_policy` (
 `version` bigint(20) DEFAULT NULL,
 `service` bigint(20) DEFAULT NULL,
 `name` varchar(512) DEFAULT NULL, 
+`policy_type` int(11) DEFAULT 0,
 `description` varchar(1024) DEFAULT NULL,
 `is_enabled` tinyint(1) NOT NULL DEFAULT '0',
 `is_audit_enabled` tinyint(1) NOT NULL DEFAULT '0',

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c50acc44/security-admin/db/oracle/patches/009-updated_schema.sql
----------------------------------------------------------------------
diff --git a/security-admin/db/oracle/patches/009-updated_schema.sql b/security-admin/db/oracle/patches/009-updated_schema.sql
index 5152570..c7c8493 100644
--- a/security-admin/db/oracle/patches/009-updated_schema.sql
+++ b/security-admin/db/oracle/patches/009-updated_schema.sql
@@ -85,6 +85,7 @@ upd_by_id NUMBER(20) DEFAULT NULL NULL,
 version NUMBER(20) DEFAULT NULL NULL,
 service NUMBER(20) DEFAULT NULL NULL,
 name VARCHAR(512) DEFAULT NULL NULL,
+policy_type NUMBER(11) DEFAULT '0' NULL,
 description VARCHAR(1024) DEFAULT NULL NULL,
 is_enabled NUMBER(1) DEFAULT '0' NOT NULL,
 is_audit_enabled NUMBER(1) DEFAULT '0' NOT NULL,

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c50acc44/security-admin/db/postgres/xa_core_db_postgres.sql
----------------------------------------------------------------------
diff --git a/security-admin/db/postgres/xa_core_db_postgres.sql b/security-admin/db/postgres/xa_core_db_postgres.sql
index 802ca4e..0e1f731 100644
--- a/security-admin/db/postgres/xa_core_db_postgres.sql
+++ b/security-admin/db/postgres/xa_core_db_postgres.sql
@@ -516,6 +516,7 @@ upd_by_id BIGINT DEFAULT NULL NULL,
 version BIGINT DEFAULT NULL NULL,
 service BIGINT DEFAULT NULL NULL,
 name VARCHAR(512) DEFAULT NULL NULL,
+policy_type int(11) DEFAULT 0 NULL,
 description VARCHAR(1024) DEFAULT NULL NULL,
 is_enabled BOOLEAN DEFAULT '0' NOT NULL,
 is_audit_enabled BOOLEAN DEFAULT '0' NOT NULL,

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c50acc44/security-admin/db/sqlserver/xa_core_db_sqlserver.sql
----------------------------------------------------------------------
diff --git a/security-admin/db/sqlserver/xa_core_db_sqlserver.sql b/security-admin/db/sqlserver/xa_core_db_sqlserver.sql
index 9486982..9bfe39f 100644
--- a/security-admin/db/sqlserver/xa_core_db_sqlserver.sql
+++ b/security-admin/db/sqlserver/xa_core_db_sqlserver.sql
@@ -1809,6 +1809,7 @@ CREATE TABLE [dbo].[x_policy] (
 	[version] [bigint] DEFAULT NULL NULL,
 	[service] [bigint] DEFAULT NULL NULL,
 	[name] [varchar](512) DEFAULT NULL NULL, 
+	[policy_type] [int] DEFAULT 0 NULL,
 	[description] [varchar](1024) DEFAULT NULL NULL,
 	[is_enabled] [tinyint] DEFAULT 0 NOT NULL,
 	[is_audit_enabled] [tinyint] DEFAULT 0 NOT NULL,

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c50acc44/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
index 2506d66..fd9c95b 100644
--- a/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
+++ b/security-admin/src/main/java/org/apache/ranger/biz/ServiceDBStore.java
@@ -250,7 +250,8 @@ public class ServiceDBStore extends AbstractServiceStore {
 		XXServiceConfigDefDao xxServiceConfigDao = daoMgr.getXXServiceConfigDef();
 		for(RangerServiceConfigDef config : configs) {
 			XXServiceConfigDef xConfig = new XXServiceConfigDef();
-			xConfig = serviceDefService.populateRangerServiceConfigDefToXX(config, xConfig, createdSvcDef);
+			xConfig = serviceDefService.populateRangerServiceConfigDefToXX(config, xConfig, createdSvcDef,
+					RangerServiceDefService.OPERATION_CREATE_CONTEXT);
 			xConfig = xxServiceConfigDao.create(xConfig);
 		}
 		
@@ -260,7 +261,8 @@ public class ServiceDBStore extends AbstractServiceStore {
 			Long parentId = (parent != null) ? parent.getId() : null;
 			
 			XXResourceDef xResource = new XXResourceDef();
-			xResource = serviceDefService.populateRangerResourceDefToXX(resource, xResource, createdSvcDef);
+			xResource = serviceDefService.populateRangerResourceDefToXX(resource, xResource, createdSvcDef,
+					RangerServiceDefService.OPERATION_CREATE_CONTEXT);
 			xResource.setParent(parentId);
 			xResource = xxResDefDao.create(xResource);
 		}
@@ -268,7 +270,8 @@ public class ServiceDBStore extends AbstractServiceStore {
 		XXAccessTypeDefDao xxATDDao = daoMgr.getXXAccessTypeDef();
 		for(RangerAccessTypeDef accessType : accessTypes) {
 			XXAccessTypeDef xAccessType = new XXAccessTypeDef();
-			xAccessType = serviceDefService.populateRangerAccessTypeDefToXX(accessType, xAccessType, createdSvcDef);
+			xAccessType = serviceDefService.populateRangerAccessTypeDefToXX(accessType, xAccessType, createdSvcDef,
+					RangerServiceDefService.OPERATION_CREATE_CONTEXT);
 			xAccessType = xxATDDao.create(xAccessType);
 			
 			Collection<String> impliedGrants = accessType.getImpliedGrants();
@@ -286,7 +289,7 @@ public class ServiceDBStore extends AbstractServiceStore {
 			XXPolicyConditionDef xPolicyCondition = new XXPolicyConditionDef();
 			xPolicyCondition = serviceDefService
 					.populateRangerPolicyConditionDefToXX(policyCondition,
-							xPolicyCondition, createdSvcDef);
+							xPolicyCondition, createdSvcDef, RangerServiceDefService.OPERATION_CREATE_CONTEXT);
 			xPolicyCondition = xxPolCondDao.create(xPolicyCondition);
 		}
 		
@@ -295,21 +298,21 @@ public class ServiceDBStore extends AbstractServiceStore {
 			XXContextEnricherDef xContextEnricher = new XXContextEnricherDef();
 			xContextEnricher = serviceDefService
 					.populateRangerContextEnricherDefToXX(contextEnricher,
-							xContextEnricher, createdSvcDef);
+							xContextEnricher, createdSvcDef, RangerServiceDefService.OPERATION_CREATE_CONTEXT);
 			xContextEnricher = xxContextEnricherDao.create(xContextEnricher);
 		}
 		
 		XXEnumDefDao xxEnumDefDao = daoMgr.getXXEnumDef();
 		for(RangerEnumDef vEnum : enums) {
 			XXEnumDef xEnum = new XXEnumDef();
-			xEnum = serviceDefService.populateRangerEnumDefToXX(vEnum, xEnum, createdSvcDef);
+			xEnum = serviceDefService.populateRangerEnumDefToXX(vEnum, xEnum, createdSvcDef, RangerServiceDefService.OPERATION_CREATE_CONTEXT);
 			xEnum = xxEnumDefDao.create(xEnum);
 			
 			List<RangerEnumElementDef> elements = vEnum.getElements();
 			XXEnumElementDefDao xxEnumEleDefDao = daoMgr.getXXEnumElementDef();
 			for(RangerEnumElementDef element : elements) {
 				XXEnumElementDef xElement = new XXEnumElementDef();
-				xElement = serviceDefService.populateRangerEnumElementDefToXX(element, xElement, xEnum);
+				xElement = serviceDefService.populateRangerEnumElementDefToXX(element, xElement, xEnum, RangerServiceDefService.OPERATION_CREATE_CONTEXT);
 				xElement = xxEnumEleDefDao.create(xElement);
 			}
 		}

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c50acc44/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyBase.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyBase.java b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyBase.java
index 7ee05c8..43d61ef 100644
--- a/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/entity/XXPolicyBase.java
@@ -47,6 +47,15 @@ public abstract class XXPolicyBase extends XXDBBase {
 	protected String name;
 
 	/**
+	 * policyType of the XXPolicy
+	 * <ul>
+	 * </ul>
+	 *
+	 */
+	@Column(name = "policy_type")
+	protected Integer policyType;
+
+	/**
 	 * description of the XXPolicy
 	 * <ul>
 	 * </ul>
@@ -208,6 +217,14 @@ public abstract class XXPolicyBase extends XXDBBase {
 		return this.isAuditEnabled;
 	}
 
+	public Integer getPolicyType() {
+		return policyType;
+	}
+
+	public void setPolicyType(Integer policyType) {
+		this.policyType = policyType;
+	}
+
 	/*
 	 * (non-Javadoc)
 	 * 
@@ -269,6 +286,13 @@ public abstract class XXPolicyBase extends XXDBBase {
 		} else if (!version.equals(other.version)) {
 			return false;
 		}
+		if (policyType == null) {
+			if (other.policyType != null) {
+				return false;
+			}
+		} else if (!policyType.equals(other.policyType)) {
+			return false;
+		}
 		return true;
 	}
 
@@ -280,8 +304,8 @@ public abstract class XXPolicyBase extends XXDBBase {
 	@Override
 	public String toString() {
 		return "XXPolicyBase [" + super.toString() + " guid=" + guid + ", version=" + version + ", service=" + service
-				+ ", name=" + name + ", description=" + description + ", isEnabled=" + isEnabled + ", isAuditEnabled="
-				+ isAuditEnabled + "]";
+				+ ", name=" + name + ", policyType=" + policyType + ", description=" + description + ", isEnabled="
+				+ isEnabled + ", isAuditEnabled=" + isAuditEnabled + "]";
 	}
 
 }

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c50acc44/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java
index 290d85c..a89a988 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyServiceBase.java
@@ -83,6 +83,7 @@ public abstract class RangerPolicyServiceBase<T extends XXPolicyBase, V extends
 		}
 		xObj.setService(xService.getId());
 		xObj.setName(vObj.getName());
+		xObj.setPolicyType(vObj.getPolicyType());
 		xObj.setDescription(vObj.getDescription());
 		xObj.setIsAuditEnabled(vObj.getIsAuditEnabled());
 		xObj.setIsEnabled(vObj.getIsEnabled());
@@ -98,6 +99,7 @@ public abstract class RangerPolicyServiceBase<T extends XXPolicyBase, V extends
 		vObj.setVersion(xObj.getVersion());
 		vObj.setService(xService.getName());
 		vObj.setName(xObj.getName());
+		vObj.setPolicyType(xObj.getPolicyType());
 		vObj.setDescription(xObj.getDescription());
 		vObj.setIsEnabled(xObj.getIsEnabled());
 		vObj.setIsAuditEnabled(xObj.getIsAuditEnabled());

http://git-wip-us.apache.org/repos/asf/incubator-ranger/blob/c50acc44/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java
----------------------------------------------------------------------
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java
index 044cf56..0c4f635 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefServiceBase.java
@@ -76,12 +76,17 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 		return vObj;
 	}
 	
-	public XXServiceConfigDef populateRangerServiceConfigDefToXX(RangerServiceConfigDef vObj, XXServiceConfigDef xObj, XXServiceDef serviceDef) {
+	public XXServiceConfigDef populateRangerServiceConfigDefToXX(RangerServiceConfigDef vObj, XXServiceConfigDef xObj,
+			XXServiceDef serviceDef, int operationContext) {
 		if(serviceDef == null) {
 			LOG.error("RangerServiceDefServiceBase.populateRangerServiceConfigDefToXX, serviceDef can not be null");
 			throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND);
 		}
 		
+		if(operationContext == OPERATION_UPDATE_CONTEXT) {
+			xObj.setId(vObj.getId());
+		}
+		
 		xObj = (XXServiceConfigDef) rangerAuditFields.populateAuditFields(xObj, serviceDef);
 		xObj.setDefid(serviceDef.getId());
 		xObj.setName(vObj.getName());
@@ -103,6 +108,7 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 
 	public RangerServiceConfigDef populateXXToRangerServiceConfigDef(XXServiceConfigDef xObj) {
 		RangerServiceConfigDef vObj = new RangerServiceConfigDef();
+		vObj.setId(xObj.getId());
 		vObj.setName(xObj.getName());
 		vObj.setType(xObj.getType());
 		vObj.setSubType(xObj.getSubtype());
@@ -119,11 +125,17 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 		return vObj;
 	}
 	
-	public XXResourceDef populateRangerResourceDefToXX(RangerResourceDef vObj, XXResourceDef xObj, XXServiceDef serviceDef) {
+	public XXResourceDef populateRangerResourceDefToXX(RangerResourceDef vObj, XXResourceDef xObj,
+			XXServiceDef serviceDef, int operationContext) {
 		if(serviceDef == null) {
 			LOG.error("RangerServiceDefServiceBase.populateRangerResourceDefToXX, serviceDef can not be null");
 			throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND);
 		}
+		
+		if(operationContext == OPERATION_UPDATE_CONTEXT) {
+			xObj.setId(vObj.getId());
+		}
+		
 		xObj = (XXResourceDef) rangerAuditFields.populateAuditFields(xObj, serviceDef);
 		xObj.setDefid(serviceDef.getId());
 		xObj.setName(vObj.getName());
@@ -149,6 +161,7 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 	
 	public RangerResourceDef populateXXToRangerResourceDef(XXResourceDef xObj) {
 		RangerResourceDef vObj = new RangerResourceDef();
+		vObj.setId(xObj.getId());
 		vObj.setName(xObj.getName());
 		vObj.setType(xObj.getType());
 		vObj.setLevel(xObj.getLevel());		
@@ -174,11 +187,17 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 		return vObj;
 	}
 	
-	public XXAccessTypeDef populateRangerAccessTypeDefToXX(RangerAccessTypeDef vObj, XXAccessTypeDef xObj, XXServiceDef serviceDef) {
+	public XXAccessTypeDef populateRangerAccessTypeDefToXX(RangerAccessTypeDef vObj, XXAccessTypeDef xObj,
+			XXServiceDef serviceDef, int operationContext) {
 		if(serviceDef == null) {
 			LOG.error("RangerServiceDefServiceBase.populateRangerAccessTypeDefToXX, serviceDef can not be null");
 			throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND);
 		}
+		
+		if(operationContext == OPERATION_UPDATE_CONTEXT) {
+			xObj.setId(vObj.getId());
+		}
+		
 		xObj = (XXAccessTypeDef) rangerAuditFields.populateAuditFields(xObj, serviceDef);
 		xObj.setDefid(serviceDef.getId());
 		xObj.setName(vObj.getName());
@@ -190,6 +209,7 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 	
 	public RangerAccessTypeDef populateXXToRangerAccessTypeDef(XXAccessTypeDef xObj) {
 		RangerAccessTypeDef vObj = new RangerAccessTypeDef();
+		vObj.setId(xObj.getId());
 		vObj.setName(xObj.getName());
 		vObj.setLabel(xObj.getLabel());
 		vObj.setRbKeyLabel(xObj.getRbkeylabel());
@@ -199,11 +219,17 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 		return vObj;
 	}
 	
-	public XXPolicyConditionDef populateRangerPolicyConditionDefToXX(RangerPolicyConditionDef vObj, XXPolicyConditionDef xObj, XXServiceDef serviceDef) {
+	public XXPolicyConditionDef populateRangerPolicyConditionDefToXX(RangerPolicyConditionDef vObj,
+			XXPolicyConditionDef xObj, XXServiceDef serviceDef, int operationContext) {
 		if(serviceDef == null) {
 			LOG.error("RangerServiceDefServiceBase.populateRangerPolicyConditionDefToXX, serviceDef can not be null");
 			throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND);
 		}
+		
+		if(operationContext == OPERATION_UPDATE_CONTEXT) {
+			xObj.setId(vObj.getId());
+		}
+		
 		xObj = (XXPolicyConditionDef) rangerAuditFields.populateAuditFields(xObj, serviceDef);
 		xObj.setDefid(serviceDef.getId());
 		xObj.setName(vObj.getName());
@@ -223,6 +249,7 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 	
 	public RangerPolicyConditionDef populateXXToRangerPolicyConditionDef(XXPolicyConditionDef xObj) {
 		RangerPolicyConditionDef vObj = new RangerPolicyConditionDef();
+		vObj.setId(xObj.getId());
 		vObj.setName(xObj.getName());
 		vObj.setEvaluator(xObj.getEvaluator());
 		vObj.setEvaluatorOptions(jsonStringToMap(xObj.getEvaluatoroptions()));
@@ -237,11 +264,17 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 		return vObj;
 	}
 	
-	public XXContextEnricherDef populateRangerContextEnricherDefToXX(RangerContextEnricherDef vObj, XXContextEnricherDef xObj, XXServiceDef serviceDef) {
+	public XXContextEnricherDef populateRangerContextEnricherDefToXX(RangerContextEnricherDef vObj,
+			XXContextEnricherDef xObj, XXServiceDef serviceDef, int operationContext) {
 		if(serviceDef == null) {
 			LOG.error("RangerServiceDefServiceBase.populateRangerContextEnricherDefToXX, serviceDef can not be null");
 			throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND);
 		}
+		
+		if(operationContext == OPERATION_UPDATE_CONTEXT) {
+			xObj.setId(vObj.getId());
+		}
+		
 		xObj = (XXContextEnricherDef) rangerAuditFields.populateAuditFields(xObj, serviceDef);
 		xObj.setDefid(serviceDef.getId());
 		xObj.setName(vObj.getName());
@@ -253,17 +286,24 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 	
 	public RangerContextEnricherDef populateXXToRangerContextEnricherDef(XXContextEnricherDef xObj) {
 		RangerContextEnricherDef vObj = new RangerContextEnricherDef();
+		vObj.setId(xObj.getId());
 		vObj.setName(xObj.getName());
 		vObj.setEnricher(xObj.getEnricher());
 		vObj.setEnricherOptions(jsonStringToMap(xObj.getEnricherOptions()));
 		return vObj;
 	}
 	
-	public XXEnumDef populateRangerEnumDefToXX(RangerEnumDef vObj, XXEnumDef xObj, XXServiceDef serviceDef) {
+	public XXEnumDef populateRangerEnumDefToXX(RangerEnumDef vObj, XXEnumDef xObj, XXServiceDef serviceDef,
+			int operationContext) {
 		if(serviceDef == null) {
 			LOG.error("RangerServiceDefServiceBase.populateRangerEnumDefToXX, serviceDef can not be null");
 			throw restErrorUtil.createRESTException("RangerServiceDef cannot be null.", MessageEnums.DATA_NOT_FOUND);
 		}
+		
+		if(operationContext == OPERATION_UPDATE_CONTEXT) {
+			xObj.setId(vObj.getId());
+		}
+		
 		xObj = (XXEnumDef) rangerAuditFields.populateAuditFields(xObj, serviceDef);
 		xObj.setDefid(serviceDef.getId());
 		xObj.setName(vObj.getName());
@@ -273,6 +313,7 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 	
 	public RangerEnumDef populateXXToRangerEnumDef(XXEnumDef xObj) {
 		RangerEnumDef vObj = new RangerEnumDef();
+		vObj.setId(xObj.getId());
 		vObj.setName(xObj.getName());
 		vObj.setDefaultIndex(xObj.getDefaultindex());
 		
@@ -288,11 +329,17 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 		return vObj;
 	}
 	
-	public XXEnumElementDef populateRangerEnumElementDefToXX(RangerEnumElementDef vObj, XXEnumElementDef xObj, XXEnumDef enumDef) {
+	public XXEnumElementDef populateRangerEnumElementDefToXX(RangerEnumElementDef vObj, XXEnumElementDef xObj,
+			XXEnumDef enumDef, int operationContext) {
 		if(enumDef == null) {
 			LOG.error("RangerServiceDefServiceBase.populateRangerEnumElementDefToXX, enumDef can not be null");
 			throw restErrorUtil.createRESTException("enumDef cannot be null.", MessageEnums.DATA_NOT_FOUND);
 		}
+		
+		if(operationContext == OPERATION_UPDATE_CONTEXT) {
+			xObj.setId(vObj.getId());
+		}
+		
 		xObj = (XXEnumElementDef) rangerAuditFields.populateAuditFields(xObj, enumDef);
 		xObj.setEnumdefid(enumDef.getId());
 		xObj.setName(vObj.getName());
@@ -304,6 +351,7 @@ public abstract class RangerServiceDefServiceBase<T extends XXServiceDef, V exte
 	
 	public RangerEnumElementDef populateXXToRangerEnumElementDef(XXEnumElementDef xObj) {
 		RangerEnumElementDef vObj = new RangerEnumElementDef();
+		vObj.setId(xObj.getId());
 		vObj.setName(xObj.getName());
 		vObj.setLabel(xObj.getLabel());
 		vObj.setRbKeyLabel(xObj.getRbkeylabel());