Fix generic types, removing a lot of SuppressWarning annotations

Change-Id: I047ce9c8032398ac12819c490b7f83cb09f6303e

Signed-off-by: Colm O hEigeartaigh <coheigea@apache.org>
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java
index 5616406..8d9776a 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyService.java
@@ -30,7 +30,6 @@
 import org.apache.ranger.common.MessageEnums;
 import org.apache.ranger.common.view.VTrxLogAttr;
 import org.apache.ranger.entity.XXPolicy;
-import org.apache.ranger.entity.XXPolicyBase;
 import org.apache.ranger.entity.XXService;
 import org.apache.ranger.entity.XXTrxLog;
 import org.apache.ranger.plugin.model.RangerPolicy;
@@ -93,12 +92,12 @@
 
 	@Override
 	protected XXPolicy mapViewToEntityBean(RangerPolicy vObj, XXPolicy xObj, int OPERATION_CONTEXT) {
-		return (XXPolicy)super.mapViewToEntityBean(vObj, (XXPolicyBase)xObj, OPERATION_CONTEXT);
+		return super.mapViewToEntityBean(vObj, xObj, OPERATION_CONTEXT);
 	}
 
 	@Override
 	protected RangerPolicy mapEntityToViewBean(RangerPolicy vObj, XXPolicy xObj) {
-		return super.mapEntityToViewBean(vObj, (XXPolicyBase)xObj);
+		return super.mapEntityToViewBean(vObj, xObj);
 	}
 	
 	@Override
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 2649ff3..0195c72 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
@@ -74,8 +74,7 @@
 	}
 
 	@Override
-	@SuppressWarnings("unchecked")
-	protected XXPolicyBase mapViewToEntityBean(RangerPolicy vObj, XXPolicyBase xObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T xObj, int OPERATION_CONTEXT) {
 		String guid = (StringUtils.isEmpty(vObj.getGuid())) ? guidUtil.genGUID() : vObj.getGuid();
 
 		xObj.setGuid(guid);
@@ -98,8 +97,7 @@
 	}
 
 	@Override
-	@SuppressWarnings("unchecked")
-	protected RangerPolicy mapEntityToViewBean(RangerPolicy vObj, XXPolicyBase xObj) {
+	protected V mapEntityToViewBean(V vObj, T xObj) {
 		XXService xService = daoMgr.getXXService().getById(xObj.getService());
 		vObj.setGuid(xObj.getGuid());
 		vObj.setVersion(xObj.getVersion());
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyWithAssignedIdService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyWithAssignedIdService.java
index cf59c91..540a29e 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyWithAssignedIdService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerPolicyWithAssignedIdService.java
@@ -20,7 +20,6 @@
 
 import org.apache.ranger.biz.RangerPolicyRetriever;
 import org.apache.ranger.common.JSONUtil;
-import org.apache.ranger.entity.XXPolicyBase;
 import org.apache.ranger.entity.XXPolicyWithAssignedId;
 import org.apache.ranger.plugin.model.RangerPolicy;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -35,12 +34,12 @@
 	@Override
 	protected XXPolicyWithAssignedId mapViewToEntityBean(RangerPolicy vObj, XXPolicyWithAssignedId xObj,
 			int OPERATION_CONTEXT) {
-		return (XXPolicyWithAssignedId) super.mapViewToEntityBean(vObj, (XXPolicyBase) xObj, OPERATION_CONTEXT);
+		return super.mapViewToEntityBean(vObj, xObj, OPERATION_CONTEXT);
 	}
 
 	@Override
 	protected RangerPolicy mapEntityToViewBean(RangerPolicy vObj, XXPolicyWithAssignedId xObj) {
-		return super.mapEntityToViewBean(vObj, (XXPolicyBase) xObj);
+		return super.mapEntityToViewBean(vObj, xObj);
 	}
 
 	@Override
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
index 9f9761c..53b12d8 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefService.java
@@ -21,7 +21,6 @@
 import java.util.List;
 
 import org.apache.ranger.entity.XXServiceDef;
-import org.apache.ranger.entity.XXServiceDefBase;
 import org.apache.ranger.plugin.model.RangerServiceDef;
 import org.springframework.context.annotation.Scope;
 import org.springframework.stereotype.Service;
@@ -46,12 +45,12 @@
 
 	@Override
 	protected XXServiceDef mapViewToEntityBean(RangerServiceDef vObj, XXServiceDef xObj, int OPERATION_CONTEXT) {
-		return (XXServiceDef) super.mapViewToEntityBean(vObj, (XXServiceDefBase) xObj, OPERATION_CONTEXT);
+		return super.mapViewToEntityBean(vObj, xObj, OPERATION_CONTEXT);
 	}
 
 	@Override
 	protected RangerServiceDef mapEntityToViewBean(RangerServiceDef vObj, XXServiceDef xObj) {
-		return super.mapEntityToViewBean(vObj, (XXServiceDefBase) xObj);
+		return super.mapEntityToViewBean(vObj, xObj);
 	}
 
 	public List<RangerServiceDef> getAllServiceDefs() {
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 7fd4f0c..aacf398 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
@@ -78,9 +78,8 @@
 	}
 	
 	@Override
-	@SuppressWarnings("unchecked")
-	protected RangerServiceDef populateViewBean(XXServiceDefBase xServiceDef) {
-		RangerServiceDef serviceDef = super.populateViewBean((T) xServiceDef);
+	protected V populateViewBean(T xServiceDef) {
+		V serviceDef = super.populateViewBean((T) xServiceDef);
 		Long serviceDefId = xServiceDef.getId();
 
 		List<XXServiceConfigDef> xConfigs = daoMgr.getXXServiceConfigDef().findByServiceDefId(serviceDefId);
@@ -198,9 +197,8 @@
 		return serviceDef;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXServiceDefBase mapViewToEntityBean(RangerServiceDef vObj, XXServiceDefBase xObj, int operationContext) {
+	protected T mapViewToEntityBean(V vObj, T xObj, int operationContext) {
 		
 		String guid = (StringUtils.isEmpty(vObj.getGuid())) ? guidUtil.genGUID() : vObj.getGuid();
 		
@@ -216,9 +214,8 @@
 		return xObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected RangerServiceDef mapEntityToViewBean(RangerServiceDef vObj, XXServiceDefBase xObj) {
+	protected V mapEntityToViewBean(V vObj, T xObj) {
 		vObj.setGuid(xObj.getGuid());
 		vObj.setVersion(xObj.getVersion());
 		vObj.setName(xObj.getName());
@@ -528,7 +525,6 @@
 		return vObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	public RangerServiceDefList searchRangerServiceDefs(SearchFilter searchFilter) {
 		RangerServiceDefList retList = new RangerServiceDefList();
 		int startIndex = searchFilter.getStartIndex();
@@ -540,10 +536,10 @@
 		if(searchFilter.getParam("pageSource")!=null){
 			isAuditPage=true;
 		}
-		List<XXServiceDef> xSvcDefList = (List<XXServiceDef>) searchResources(searchFilter, searchFields, sortFields,
+		List<T> xSvcDefList = searchResources(searchFilter, searchFields, sortFields,
 				retList);
-		List<XXServiceDef> permittedServiceDefs = new ArrayList<XXServiceDef>();
-		for (XXServiceDef xSvcDef : xSvcDefList) {
+		List<T> permittedServiceDefs = new ArrayList<T>();
+		for (T xSvcDef : xSvcDefList) {
 			if (bizUtil.hasAccess(xSvcDef, null) || (bizUtil.isAdmin() && isAuditPage) ) {
 				permittedServiceDefs.add(xSvcDef);
 			}
@@ -556,7 +552,7 @@
 	}
 	
 
-	private void populatePageList(List<XXServiceDef> xxObjList, int startIndex, int pageSize,
+	private void populatePageList(List<T> xxObjList, int startIndex, int pageSize,
 			RangerServiceDefList retList) {
 		List<RangerServiceDef> onePageList = new ArrayList<RangerServiceDef>();
 
@@ -632,8 +628,8 @@
 		return ret;
 	}
 
-	public <T> T jsonToObject(String jsonStr, Class<T> clz) {
-		T ret = null;
+	public <DST> DST jsonToObject(String jsonStr, Class<DST> clz) {
+		DST ret = null;
 
 		if(StringUtils.isNotEmpty(jsonStr)) {
 			try {
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefWithAssignedIdService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefWithAssignedIdService.java
index 4180a70..ef4984d 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefWithAssignedIdService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceDefWithAssignedIdService.java
@@ -17,7 +17,6 @@
 
 package org.apache.ranger.service;
 
-import org.apache.ranger.entity.XXServiceDefBase;
 import org.apache.ranger.entity.XXServiceDefWithAssignedId;
 import org.apache.ranger.plugin.model.RangerServiceDef;
 import org.springframework.stereotype.Service;
@@ -28,12 +27,12 @@
 	@Override
 	protected XXServiceDefWithAssignedId mapViewToEntityBean(RangerServiceDef vObj, XXServiceDefWithAssignedId xObj,
 			int OPERATION_CONTEXT) {
-		return (XXServiceDefWithAssignedId) super.mapViewToEntityBean(vObj, (XXServiceDefBase) xObj, OPERATION_CONTEXT);
+		return super.mapViewToEntityBean(vObj, xObj, OPERATION_CONTEXT);
 	}
 
 	@Override
 	protected RangerServiceDef mapEntityToViewBean(RangerServiceDef vObj, XXServiceDefWithAssignedId xObj) {
-		return super.mapEntityToViewBean(vObj, (XXServiceDefBase) xObj);
+		return super.mapEntityToViewBean(vObj, xObj);
 	}
 
 	@Override
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java
index 8b3d645..6af682a 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceResourceServiceBase.java
@@ -44,8 +44,7 @@
 	GUIDUtil guidUtil;
 
 	@Override
-	@SuppressWarnings("unchecked")
-	protected XXServiceResource mapViewToEntityBean(RangerServiceResource vObj, XXServiceResource xObj, int operationContext) {
+	protected T mapViewToEntityBean(V vObj, T xObj, int operationContext) {
 		String guid = (StringUtils.isEmpty(vObj.getGuid())) ? guidUtil.genGUID() : vObj.getGuid();
 
 		xObj.setGuid(guid);
@@ -64,8 +63,7 @@
 	}
 
 	@Override
-	@SuppressWarnings("unchecked")
-	protected RangerServiceResource mapEntityToViewBean(RangerServiceResource vObj, XXServiceResource xObj) {
+	protected V mapEntityToViewBean(V vObj, T xObj) {
 		vObj.setGuid(xObj.getGuid());
 		vObj.setVersion(xObj.getVersion());
 		vObj.setIsEnabled(xObj.getIsEnabled());
@@ -96,15 +94,14 @@
 		return vObj;
 	}
 
-	@SuppressWarnings("unchecked")
-	public PList<RangerServiceResource> searchServiceResources(SearchFilter searchFilter) {
-		PList<RangerServiceResource> retList = new PList<RangerServiceResource>();
-		List<RangerServiceResource> resourceList = new ArrayList<RangerServiceResource>();
+	public PList<V> searchServiceResources(SearchFilter searchFilter) {
+		PList<V> retList = new PList<V>();
+		List<V> resourceList = new ArrayList<V>();
 
-		List<XXServiceResource> xResourceList = (List<XXServiceResource>) searchRangerObjects(searchFilter, searchFields, sortFields, (PList<V>) retList);
+		List<T> xResourceList = searchRangerObjects(searchFilter, searchFields, sortFields, retList);
 
-		for (XXServiceResource xResource : xResourceList) {
-			RangerServiceResource taggedRes = populateViewBean((T) xResource);
+		for (T xResource : xResourceList) {
+			V taggedRes = populateViewBean(xResource);
 			resourceList.add(taggedRes);
 		}
 		retList.setList(resourceList);
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java
index ca1f64e..004524b 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceService.java
@@ -75,12 +75,12 @@
 
 	@Override
 	protected XXService mapViewToEntityBean(RangerService vObj, XXService xObj, int OPERATION_CONTEXT) {
-		return (XXService)super.mapViewToEntityBean(vObj, (XXServiceBase)xObj, OPERATION_CONTEXT);
+		return super.mapViewToEntityBean(vObj, xObj, OPERATION_CONTEXT);
 	}
 
 	@Override
 	protected RangerService mapEntityToViewBean(RangerService vObj, XXService xObj) {
-		return super.mapEntityToViewBean(vObj, (XXServiceBase)xObj);
+		return super.mapEntityToViewBean(vObj, xObj);
 	}
 	
 	@Override
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java
index 822c614..75237de 100755
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceServiceBase.java
@@ -64,8 +64,7 @@
 	}
 	
 	@Override
-	@SuppressWarnings("unchecked")
-	protected XXServiceBase mapViewToEntityBean(RangerService vObj, XXServiceBase xObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T xObj, int OPERATION_CONTEXT) {
 		String guid = (StringUtils.isEmpty(vObj.getGuid())) ? guidUtil.genGUID() : vObj.getGuid();
 		
 		xObj.setGuid(guid);
@@ -103,8 +102,7 @@
 	}
 
 	@Override
-	@SuppressWarnings("unchecked")
-	protected RangerService mapEntityToViewBean(RangerService vObj, XXServiceBase xObj) {
+	protected V mapEntityToViewBean(V vObj, T xObj) {
 		XXServiceDef xServiceDef = daoMgr.getXXServiceDef().getById(xObj.getType());
 		XXService    xTagService = xObj.getTagService() != null ? daoMgr.getXXService().getById(xObj.getTagService()) : null;
 		vObj.setType(xServiceDef.getName());
@@ -129,7 +127,6 @@
 		return vObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	public RangerServiceList searchRangerServices(SearchFilter searchFilter) {
 		RangerServiceList retList = new RangerServiceList();
 
@@ -138,10 +135,10 @@
 		searchFilter.setStartIndex(0);
 		searchFilter.setMaxRows(Integer.MAX_VALUE);
 
-		List<XXService> xSvcList = (List<XXService>) searchResources(searchFilter, searchFields, sortFields, retList);
-		List<XXService> permittedServices = new ArrayList<XXService>();
+		List<T> xSvcList = searchResources(searchFilter, searchFields, sortFields, retList);
+		List<T> permittedServices = new ArrayList<T>();
 
-		for (XXService xSvc : xSvcList) {
+		for (T xSvc : xSvcList) {
 			if(bizUtil.hasAccess(xSvc, null)){
 				permittedServices.add(xSvc);
 			}
@@ -154,13 +151,12 @@
 		return retList;
 	}
 
-	@SuppressWarnings("unchecked")
-	private void populatePageList(List<XXService> xxObjList, int startIndex, int pageSize,
+	private void populatePageList(List<T> xxObjList, int startIndex, int pageSize,
 			RangerServiceList retList) {
 		List<RangerService> onePageList = new ArrayList<RangerService>();
 
 		for (int i = startIndex; i < pageSize + startIndex && i < xxObjList.size(); i++) {
-			onePageList.add(populateViewBean((T)xxObjList.get(i)));
+			onePageList.add(populateViewBean(xxObjList.get(i)));
 		}
 		retList.setServices(onePageList);
 		retList.setStartIndex(startIndex);
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceWithAssignedIdService.java b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceWithAssignedIdService.java
index 71dda71..83892ba 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerServiceWithAssignedIdService.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerServiceWithAssignedIdService.java
@@ -21,9 +21,8 @@
 import java.util.List;
 
 import org.apache.ranger.common.JSONUtil;
-import org.apache.ranger.entity.XXServiceBase;
-import org.apache.ranger.entity.XXServiceWithAssignedId;
 import org.apache.ranger.entity.XXServiceConfigMap;
+import org.apache.ranger.entity.XXServiceWithAssignedId;
 import org.apache.ranger.plugin.model.RangerService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -36,12 +35,12 @@
 
 	@Override
 	protected XXServiceWithAssignedId mapViewToEntityBean(RangerService vObj, XXServiceWithAssignedId xObj, int OPERATION_CONTEXT) {
-		return (XXServiceWithAssignedId)super.mapViewToEntityBean(vObj, (XXServiceBase)xObj, OPERATION_CONTEXT);
+		return super.mapViewToEntityBean(vObj, xObj, OPERATION_CONTEXT);
 	}
 
 	@Override
 	protected RangerService mapEntityToViewBean(RangerService vObj, XXServiceWithAssignedId xObj) {
-		return super.mapEntityToViewBean(vObj, (XXServiceBase)xObj);
+		return super.mapEntityToViewBean(vObj, xObj);
 	}
 	
 	@Override
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefServiceBase.java
index 9482238..b85197c 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTagDefServiceBase.java
@@ -47,8 +47,7 @@
 	RangerConfigUtil configUtil;
 
 	@Override
-	@SuppressWarnings("unchecked")
-	protected XXTagDef mapViewToEntityBean(RangerTagDef vObj, XXTagDef xObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T xObj, int OPERATION_CONTEXT) {
 		String guid = (StringUtils.isEmpty(vObj.getGuid())) ? guidUtil.genGUID() : vObj.getGuid();
 
 		xObj.setGuid(guid);
@@ -60,8 +59,7 @@
 	}
 
 	@Override
-	@SuppressWarnings("unchecked")
-	protected RangerTagDef mapEntityToViewBean(RangerTagDef vObj, XXTagDef xObj) {
+	protected V mapEntityToViewBean(V vObj, T xObj) {
 
 		vObj.setGuid(xObj.getGuid());
 		vObj.setVersion(xObj.getVersion());
@@ -118,15 +116,14 @@
 		return xTagAttrDef;
 	}
 
-	@SuppressWarnings("unchecked")
-	public PList<RangerTagDef> searchRangerTagDefs(SearchFilter searchFilter) {
-		PList<RangerTagDef> retList = new PList<RangerTagDef>();
-		List<RangerTagDef> tagDefList = new ArrayList<RangerTagDef>();
+	public PList<V> searchRangerTagDefs(SearchFilter searchFilter) {
+		PList<V> retList = new PList<V>();
+		List<V> tagDefList = new ArrayList<V>();
 
-		List<XXTagDef> xTagDefList = (List<XXTagDef>) searchRangerObjects(searchFilter, searchFields, sortFields, (PList<V>) retList);
+		List<T> xTagDefList = searchRangerObjects(searchFilter, searchFields, sortFields, retList);
 
-		for (XXTagDef xTagDef : xTagDefList) {
-			RangerTagDef tagDef = populateViewBean((T) xTagDef);
+		for (T xTagDef : xTagDefList) {
+			V tagDef = populateViewBean(xTagDef);
 			tagDefList.add(tagDef);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapServiceBase.java
index 2b5c130..97b8150 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTagResourceMapServiceBase.java
@@ -36,8 +36,7 @@
 	GUIDUtil guidUtil;
 
 	@Override
-	@SuppressWarnings("unchecked")
-	protected XXTagResourceMap mapViewToEntityBean(RangerTagResourceMap vObj, XXTagResourceMap xObj, int operationContext) {
+	protected T mapViewToEntityBean(V vObj, T xObj, int operationContext) {
 		String guid = (StringUtils.isEmpty(vObj.getGuid())) ? guidUtil.genGUID() : vObj.getGuid();
 
 		xObj.setGuid(guid);
@@ -48,8 +47,7 @@
 	}
 
 	@Override
-	@SuppressWarnings("unchecked")
-	protected RangerTagResourceMap mapEntityToViewBean(RangerTagResourceMap vObj, XXTagResourceMap xObj) {
+	protected V mapEntityToViewBean(V vObj, T xObj) {
 		vObj.setGuid(xObj.getGuid());
 		vObj.setTagId(xObj.getTagId());
 		vObj.setResourceId(xObj.getResourceId());
@@ -57,15 +55,14 @@
 		return vObj;
 	}
 
-	@SuppressWarnings("unchecked")
-	public PList<RangerTagResourceMap> searchRangerTaggedResources(SearchFilter searchFilter) {
-		PList<RangerTagResourceMap> retList = new PList<RangerTagResourceMap>();
-		List<RangerTagResourceMap> taggedResList = new ArrayList<RangerTagResourceMap>();
+	public PList<V> searchRangerTaggedResources(SearchFilter searchFilter) {
+		PList<V> retList = new PList<V>();
+		List<V> taggedResList = new ArrayList<V>();
 
-		List<XXTagResourceMap> xTaggedResList = (List<XXTagResourceMap>) searchRangerObjects(searchFilter, searchFields, sortFields, (PList<V>) retList);
+		List<T> xTaggedResList = searchRangerObjects(searchFilter, searchFields, sortFields, retList);
 
-		for (XXTagResourceMap xTaggedRes : xTaggedResList) {
-			RangerTagResourceMap taggedRes = populateViewBean((T) xTaggedRes);
+		for (T xTaggedRes : xTaggedResList) {
+			V taggedRes = populateViewBean(xTaggedRes);
 			taggedResList.add(taggedRes);
 		}
 		retList.setList(taggedResList);
diff --git a/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java
index 1a6c8f8..6305099 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/RangerTagServiceBase.java
@@ -51,8 +51,7 @@
 	RangerConfigUtil configUtil;
 
 	@Override
-	@SuppressWarnings("unchecked")
-	protected XXTag mapViewToEntityBean(RangerTag vObj, XXTag xObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T xObj, int OPERATION_CONTEXT) {
 		String guid = (StringUtils.isEmpty(vObj.getGuid())) ? guidUtil.genGUID() : vObj.getGuid();
 
 		XXTagDef xTagDef = daoMgr.getXXTagDef().findByName(vObj.getType());
@@ -69,8 +68,7 @@
 	}
 
 	@Override
-	@SuppressWarnings("unchecked")
-	protected RangerTag mapEntityToViewBean(RangerTag vObj, XXTag xObj) {
+	protected V mapEntityToViewBean(V vObj, T xObj) {
 		XXTagDef xTagDef = daoMgr.getXXTagDef().getById(xObj.getType());
 		if(xTagDef == null) {
 			throw restErrorUtil.createRESTException(
@@ -101,15 +99,14 @@
 		return ret;
 	}
 
-	@SuppressWarnings("unchecked")
-	public PList<RangerTag> searchRangerTags(SearchFilter searchFilter) {
-		PList<RangerTag> retList = new PList<RangerTag>();
-		List<RangerTag> tagList = new ArrayList<RangerTag>();
+	public PList<V> searchRangerTags(SearchFilter searchFilter) {
+		PList<V> retList = new PList<V>();
+		List<V> tagList = new ArrayList<V>();
 
-		List<XXTag> xTagList = (List<XXTag>) searchRangerObjects(searchFilter, searchFields, sortFields, (PList<V>) retList);
+		List<T> xTagList = searchRangerObjects(searchFilter, searchFields, sortFields, retList);
 
-		for (XXTag xTag : xTagList) {
-			RangerTag tag = populateViewBean((T) xTag);
+		for (T xTag : xTagList) {
+			V tag = populateViewBean(xTag);
 			tagList.add(tag);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/UserServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/UserServiceBase.java
index 5ae948e..597b5c2 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/UserServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/UserServiceBase.java
@@ -35,15 +35,13 @@
 
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXPortalUser mapViewToEntityBean(VXPortalUser vObj, XXPortalUser mObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T mObj, int OPERATION_CONTEXT) {
 		return mObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected VXPortalUser mapEntityToViewBean(VXPortalUser vObj, XXPortalUser mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 		return vObj;
 	}
 
@@ -55,14 +53,12 @@
 		VXPortalUserList returnList = new VXPortalUserList();
 		List<VXPortalUser> userList = new ArrayList<VXPortalUser>();
 
-		@SuppressWarnings("unchecked")
-		List<XXPortalUser> resultList = (List<XXPortalUser>)searchResources(searchCriteria,
+		List<T> resultList = searchResources(searchCriteria,
 				searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXPortalUser gjUser : resultList) {
-			@SuppressWarnings("unchecked")
-			VXPortalUser vUser = populateViewBean((T)gjUser);
+		for (T gjUser : resultList) {
+			VXPortalUser vUser = populateViewBean(gjUser);
 			userList.add(vUser);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XAccessAuditServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XAccessAuditServiceBase.java
index 133cf32..6dfa8c3 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XAccessAuditServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XAccessAuditServiceBase.java
@@ -39,9 +39,8 @@
 
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXAccessAudit mapViewToEntityBean(VXAccessAudit vObj, XXAccessAudit mObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T mObj, int OPERATION_CONTEXT) {
 		mObj.setAuditType( vObj.getAuditType());
 		mObj.setAccessResult( vObj.getAccessResult());
 		mObj.setAccessType( vObj.getAccessType());
@@ -66,9 +65,8 @@
 		return mObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected VXAccessAudit mapEntityToViewBean(VXAccessAudit vObj, XXAccessAudit mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 		vObj.setAuditType( mObj.getAuditType());
 		vObj.setAccessResult( mObj.getAccessResult());
 		vObj.setAccessType( mObj.getAccessType());
@@ -101,14 +99,12 @@
 		VXAccessAuditList returnList = new VXAccessAuditList();
 		List<VXAccessAudit> xAccessAuditList = new ArrayList<VXAccessAudit>();
 
-		@SuppressWarnings("unchecked")
-		List<XXAccessAudit> resultList = (List<XXAccessAudit>)searchResources(searchCriteria,
+		List<T> resultList = searchResources(searchCriteria,
 				searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXAccessAudit gjXAccessAudit : resultList) {
-			@SuppressWarnings("unchecked")
-			VXAccessAudit vXAccessAudit = populateViewBean((T)gjXAccessAudit);
+		for (T gjXAccessAudit : resultList) {
+			VXAccessAudit vXAccessAudit = populateViewBean(gjXAccessAudit);
 			xAccessAuditList.add(vXAccessAudit);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XAssetServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XAssetServiceBase.java
index 4766689..6855a0b 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XAssetServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XAssetServiceBase.java
@@ -39,9 +39,8 @@
 
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXAsset mapViewToEntityBean(VXAsset vObj, XXAsset mObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T mObj, int OPERATION_CONTEXT) {
 		mObj.setName( vObj.getName());
 		mObj.setDescription( vObj.getDescription());
 		mObj.setActiveStatus( vObj.getActiveStatus());
@@ -51,9 +50,8 @@
 		return mObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected VXAsset mapEntityToViewBean(VXAsset vObj, XXAsset mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 		vObj.setName( mObj.getName());
 		vObj.setDescription( mObj.getDescription());
 		vObj.setActiveStatus( mObj.getActiveStatus());
@@ -71,14 +69,12 @@
 		VXAssetList returnList = new VXAssetList();
 		List<VXAsset> xAssetList = new ArrayList<VXAsset>();
 
-		@SuppressWarnings("unchecked")
-		List<XXAsset> resultList = (List<XXAsset>)searchResources(searchCriteria,
+		List<T> resultList = searchResources(searchCriteria,
 				searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXAsset gjXAsset : resultList) {
-			@SuppressWarnings("unchecked")
-			VXAsset vXAsset = populateViewBean((T)gjXAsset);
+		for (T gjXAsset : resultList) {
+			VXAsset vXAsset = populateViewBean(gjXAsset);
 			xAssetList.add(vXAsset);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XAuditMapServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XAuditMapServiceBase.java
index 72e8c6c..0eb7d9b 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XAuditMapServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XAuditMapServiceBase.java
@@ -39,9 +39,8 @@
 
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXAuditMap mapViewToEntityBean(VXAuditMap vObj, XXAuditMap mObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T mObj, int OPERATION_CONTEXT) {
 		mObj.setResourceId( vObj.getResourceId());
 		mObj.setGroupId( vObj.getGroupId());
 		mObj.setUserId( vObj.getUserId());
@@ -49,9 +48,8 @@
 		return mObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected VXAuditMap mapEntityToViewBean(VXAuditMap vObj, XXAuditMap mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 		vObj.setResourceId( mObj.getResourceId());
 		vObj.setGroupId( mObj.getGroupId());
 		vObj.setUserId( mObj.getUserId());
@@ -67,14 +65,12 @@
 		VXAuditMapList returnList = new VXAuditMapList();
 		List<VXAuditMap> xAuditMapList = new ArrayList<VXAuditMap>();
 
-		@SuppressWarnings("unchecked")
-		List<XXAuditMap> resultList = (List<XXAuditMap>)searchResources(searchCriteria,
+		List<T> resultList = searchResources(searchCriteria,
 				searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXAuditMap gjXAuditMap : resultList) {
-			@SuppressWarnings("unchecked")
-			VXAuditMap vXAuditMap = populateViewBean((T)gjXAuditMap);
+		for (T gjXAuditMap : resultList) {
+			VXAuditMap vXAuditMap = populateViewBean(gjXAuditMap);
 			xAuditMapList.add(vXAuditMap);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XCredentialStoreServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XCredentialStoreServiceBase.java
index 51beaac..2027452 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XCredentialStoreServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XCredentialStoreServiceBase.java
@@ -39,17 +39,15 @@
 
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXCredentialStore mapViewToEntityBean(VXCredentialStore vObj, XXCredentialStore mObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T mObj, int OPERATION_CONTEXT) {
 		mObj.setName( vObj.getName());
 		mObj.setDescription( vObj.getDescription());
 		return mObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected VXCredentialStore mapEntityToViewBean(VXCredentialStore vObj, XXCredentialStore mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 		vObj.setName( mObj.getName());
 		vObj.setDescription( mObj.getDescription());
 		return vObj;
@@ -63,14 +61,12 @@
 		VXCredentialStoreList returnList = new VXCredentialStoreList();
 		List<VXCredentialStore> xCredentialStoreList = new ArrayList<VXCredentialStore>();
 
-		@SuppressWarnings("unchecked")
-		List<XXCredentialStore> resultList = (List<XXCredentialStore>)searchResources(searchCriteria,
+		List<T> resultList = searchResources(searchCriteria,
 				searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXCredentialStore gjXCredentialStore : resultList) {
-			@SuppressWarnings("unchecked")
-			VXCredentialStore vXCredentialStore = populateViewBean((T)gjXCredentialStore);
+		for (T gjXCredentialStore : resultList) {
+			VXCredentialStore vXCredentialStore = populateViewBean(gjXCredentialStore);
 			xCredentialStoreList.add(vXCredentialStore);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XGroupGroupServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XGroupGroupServiceBase.java
index 725f528..643157f 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XGroupGroupServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XGroupGroupServiceBase.java
@@ -39,18 +39,16 @@
 
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXGroupGroup mapViewToEntityBean(VXGroupGroup vObj, XXGroupGroup mObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T mObj, int OPERATION_CONTEXT) {
 		mObj.setName( vObj.getName());
 		mObj.setParentGroupId( vObj.getParentGroupId());
 		mObj.setGroupId( vObj.getGroupId());
 		return mObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected VXGroupGroup mapEntityToViewBean(VXGroupGroup vObj, XXGroupGroup mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 		vObj.setName( mObj.getName());
 		vObj.setParentGroupId( mObj.getParentGroupId());
 		vObj.setGroupId( mObj.getGroupId());
@@ -65,14 +63,12 @@
 		VXGroupGroupList returnList = new VXGroupGroupList();
 		List<VXGroupGroup> xGroupGroupList = new ArrayList<VXGroupGroup>();
 
-		@SuppressWarnings("unchecked")
-		List<XXGroupGroup> resultList = (List<XXGroupGroup>)searchResources(searchCriteria,
+		List<T> resultList = searchResources(searchCriteria,
 				searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXGroupGroup gjXGroupGroup : resultList) {
-			@SuppressWarnings("unchecked")
-			VXGroupGroup vXGroupGroup = populateViewBean((T)gjXGroupGroup);
+		for (T gjXGroupGroup : resultList) {
+			V vXGroupGroup = populateViewBean(gjXGroupGroup);
 			xGroupGroupList.add(vXGroupGroup);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XGroupPermissionServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XGroupPermissionServiceBase.java
index 43323a3..0eeb0c0 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XGroupPermissionServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XGroupPermissionServiceBase.java
@@ -33,19 +33,17 @@
 
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXGroupPermission mapViewToEntityBean(VXGroupPermission vObj,
-			XXGroupPermission mObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj,
+			T mObj, int OPERATION_CONTEXT) {
 		mObj.setGroupId(vObj.getGroupId());
 		mObj.setModuleId(vObj.getModuleId());
 		mObj.setIsAllowed(vObj.getIsAllowed());
 		return mObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected VXGroupPermission mapEntityToViewBean(VXGroupPermission vObj, XXGroupPermission mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 		vObj.setGroupId(mObj.getGroupId());
 		vObj.setModuleId(mObj.getModuleId());
 		vObj.setIsAllowed(mObj.getIsAllowed());
@@ -60,14 +58,12 @@
 		VXGroupPermissionList returnList = new VXGroupPermissionList();
 		List<VXGroupPermission> vXGroupPermissions = new ArrayList<VXGroupPermission>();
 
-		@SuppressWarnings("unchecked")
-		List<XXGroupPermission> resultList = (List<XXGroupPermission>) searchResources(
+		List<T> resultList = searchResources(
 				searchCriteria, searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXGroupPermission gjXUser : resultList) {
-			@SuppressWarnings("unchecked")
-			VXGroupPermission vXGroupPermission = populateViewBean((T) gjXUser);
+		for (T gjXUser : resultList) {
+			VXGroupPermission vXGroupPermission = populateViewBean(gjXUser);
 			vXGroupPermissions.add(vXGroupPermission);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XGroupServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XGroupServiceBase.java
index c6ec618..378e393 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XGroupServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XGroupServiceBase.java
@@ -39,9 +39,8 @@
 
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXGroup mapViewToEntityBean(VXGroup vObj, XXGroup mObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T mObj, int OPERATION_CONTEXT) {
 		mObj.setName( vObj.getName());
 		mObj.setIsVisible(vObj.getIsVisible());
 		mObj.setDescription( vObj.getDescription());
@@ -51,9 +50,8 @@
 		return mObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected VXGroup mapEntityToViewBean(VXGroup vObj, XXGroup mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 		vObj.setName( mObj.getName());
 		vObj.setIsVisible( mObj.getIsVisible());
 		vObj.setDescription( mObj.getDescription());
@@ -71,14 +69,12 @@
 		VXGroupList returnList = new VXGroupList();
 		List<VXGroup> xGroupList = new ArrayList<VXGroup>();
 
-		@SuppressWarnings("unchecked")
-		List<XXGroup> resultList = (List<XXGroup>)searchResources(searchCriteria,
+		List<T> resultList = searchResources(searchCriteria,
 				searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXGroup gjXGroup : resultList) {
-			@SuppressWarnings("unchecked")
-			VXGroup vXGroup = populateViewBean((T)gjXGroup);
+		for (T gjXGroup : resultList) {
+			VXGroup vXGroup = populateViewBean(gjXGroup);
 			xGroupList.add(vXGroup);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XGroupUserServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XGroupUserServiceBase.java
index a91f365..feaaa20 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XGroupUserServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XGroupUserServiceBase.java
@@ -39,18 +39,16 @@
 
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXGroupUser mapViewToEntityBean(VXGroupUser vObj, XXGroupUser mObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T mObj, int OPERATION_CONTEXT) {
 		mObj.setName( vObj.getName());
 		mObj.setParentGroupId( vObj.getParentGroupId());
 		mObj.setUserId( vObj.getUserId());
 		return mObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected VXGroupUser mapEntityToViewBean(VXGroupUser vObj, XXGroupUser mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 		vObj.setName( mObj.getName());
 		vObj.setParentGroupId( mObj.getParentGroupId());
 		vObj.setUserId( mObj.getUserId());
@@ -65,14 +63,12 @@
 		VXGroupUserList returnList = new VXGroupUserList();
 		List<VXGroupUser> xGroupUserList = new ArrayList<VXGroupUser>();
 
-		@SuppressWarnings("unchecked")
-		List<XXGroupUser> resultList = (List<XXGroupUser>)searchResources(searchCriteria,
+		List<T> resultList = searchResources(searchCriteria,
 				searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXGroupUser gjXGroupUser : resultList) {
-			@SuppressWarnings("unchecked")
-			VXGroupUser vXGroupUser = populateViewBean((T)gjXGroupUser);
+		for (T gjXGroupUser : resultList) {
+			VXGroupUser vXGroupUser = populateViewBean(gjXGroupUser);
 			xGroupUserList.add(vXGroupUser);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XModuleDefServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XModuleDefServiceBase.java
index 6d07c07..57cc694 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XModuleDefServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XModuleDefServiceBase.java
@@ -36,18 +36,16 @@
 
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXModuleDef mapViewToEntityBean(VXModuleDef vObj, XXModuleDef mObj,
+	protected T mapViewToEntityBean(V vObj, T mObj,
 			int OPERATION_CONTEXT) {
 		mObj.setModule(vObj.getModule());
 		mObj.setUrl(vObj.getUrl());
 		return mObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected VXModuleDef mapEntityToViewBean(VXModuleDef vObj, XXModuleDef mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 		vObj.setModule(mObj.getModule());
 		vObj.setUrl(mObj.getUrl());
 		return vObj;
@@ -61,14 +59,12 @@
 		VXModuleDefList returnList = new VXModuleDefList();
 		List<VXModuleDef> vXModuleDefList = new ArrayList<VXModuleDef>();
 
-		@SuppressWarnings("unchecked")
-		List<XXModuleDef> resultList = (List<XXModuleDef>)searchResources(searchCriteria,
+		List<T> resultList = searchResources(searchCriteria,
 				searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXModuleDef gjXModuleDef : resultList) {
-			@SuppressWarnings("unchecked")
-			VXModuleDef vXModuleDef = populateViewBean((T)gjXModuleDef);
+		for (T gjXModuleDef : resultList) {
+			VXModuleDef vXModuleDef = populateViewBean(gjXModuleDef);
 			vXModuleDefList.add(vXModuleDef);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XPermMapServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XPermMapServiceBase.java
index 93f4e8d..d3d2e9a 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XPermMapServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XPermMapServiceBase.java
@@ -39,9 +39,8 @@
 
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXPermMap mapViewToEntityBean(VXPermMap vObj, XXPermMap mObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T mObj, int OPERATION_CONTEXT) {
 		mObj.setPermGroup( vObj.getPermGroup());
 		mObj.setResourceId( vObj.getResourceId());
 		mObj.setGroupId( vObj.getGroupId());
@@ -55,9 +54,8 @@
 		return mObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected VXPermMap mapEntityToViewBean(VXPermMap vObj, XXPermMap mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 		vObj.setPermGroup( mObj.getPermGroup());
 		vObj.setResourceId( mObj.getResourceId());
 		vObj.setGroupId( mObj.getGroupId());
@@ -79,14 +77,12 @@
 		VXPermMapList returnList = new VXPermMapList();
 		List<VXPermMap> xPermMapList = new ArrayList<VXPermMap>();
 
-		@SuppressWarnings("unchecked")
-		List<XXPermMap> resultList = (List<XXPermMap>)searchResources(searchCriteria,
+		List<T> resultList = searchResources(searchCriteria,
 				searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXPermMap gjXPermMap : resultList) {
-			@SuppressWarnings("unchecked")
-			VXPermMap vXPermMap = populateViewBean((T)gjXPermMap);
+		for (T gjXPermMap : resultList) {
+			VXPermMap vXPermMap = populateViewBean(gjXPermMap);
 			xPermMapList.add(vXPermMap);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XPolicyExportAuditServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XPolicyExportAuditServiceBase.java
index a07a524..e83d70a 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XPolicyExportAuditServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XPolicyExportAuditServiceBase.java
@@ -40,9 +40,8 @@
 
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXPolicyExportAudit mapViewToEntityBean(VXPolicyExportAudit vObj, XXPolicyExportAudit mObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T mObj, int OPERATION_CONTEXT) {
 		mObj.setClientIP( vObj.getClientIP());
 		mObj.setAgentId( vObj.getAgentId());
 		mObj.setRequestedEpoch( vObj.getRequestedEpoch());
@@ -53,9 +52,8 @@
 		return mObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected VXPolicyExportAudit mapEntityToViewBean(VXPolicyExportAudit vObj, XXPolicyExportAudit mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 		vObj.setClientIP( mObj.getClientIP());
 		vObj.setAgentId( mObj.getAgentId());
 		vObj.setRequestedEpoch( mObj.getRequestedEpoch());
@@ -75,14 +73,12 @@
 		VXPolicyExportAuditList returnList = new VXPolicyExportAuditList();
 		List<VXPolicyExportAudit> xPolicyExportAuditList = new ArrayList<VXPolicyExportAudit>();
 
-		@SuppressWarnings("unchecked")
-		List<XXPolicyExportAudit> resultList = (List<XXPolicyExportAudit>)searchResources(searchCriteria,
+		List<T> resultList = searchResources(searchCriteria,
 				searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXPolicyExportAudit gjXPolicyExportAudit : resultList) {
-			@SuppressWarnings("unchecked")
-			VXPolicyExportAudit vXPolicyExportAudit = populateViewBean((T)gjXPolicyExportAudit);
+		for (T gjXPolicyExportAudit : resultList) {
+			VXPolicyExportAudit vXPolicyExportAudit = populateViewBean(gjXPolicyExportAudit);
 			xPolicyExportAuditList.add(vXPolicyExportAudit);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XPortalUserServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XPortalUserServiceBase.java
index ed4e18b..1c0b7c8 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XPortalUserServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XPortalUserServiceBase.java
@@ -39,9 +39,8 @@
 
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXPortalUser mapViewToEntityBean(VXPortalUser vObj, XXPortalUser mObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T mObj, int OPERATION_CONTEXT) {
 		mObj.setFirstName( vObj.getFirstName());
 		mObj.setLastName( vObj.getLastName());
 		mObj.setPublicScreenName( vObj.getPublicScreenName());
@@ -54,9 +53,8 @@
 		return mObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected VXPortalUser mapEntityToViewBean(VXPortalUser vObj, XXPortalUser mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 		vObj.setFirstName( mObj.getFirstName());
 		vObj.setLastName( mObj.getLastName());
 		vObj.setPublicScreenName( mObj.getPublicScreenName());
@@ -77,14 +75,12 @@
 		VXPortalUserList returnList = new VXPortalUserList();
 		List<VXPortalUser> xPortalUserList = new ArrayList<VXPortalUser>();
 
-		@SuppressWarnings("unchecked")
-		List<XXPortalUser> resultList = (List<XXPortalUser>)searchResources(searchCriteria,
+		List<T> resultList = searchResources(searchCriteria,
 				searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXPortalUser gjXPortalUser : resultList) {
-			@SuppressWarnings("unchecked")
-			VXPortalUser vXPortalUser = populateViewBean((T)gjXPortalUser);
+		for (T gjXPortalUser : resultList) {
+			VXPortalUser vXPortalUser = populateViewBean(gjXPortalUser);
 			xPortalUserList.add(vXPortalUser);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XResourceServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XResourceServiceBase.java
index 1fb3750..c82fda0 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XResourceServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XResourceServiceBase.java
@@ -39,9 +39,8 @@
 
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXResource mapViewToEntityBean(VXResource vObj, XXResource mObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T mObj, int OPERATION_CONTEXT) {
 		mObj.setName( vObj.getName());
 		mObj.setDescription( vObj.getDescription());
 		mObj.setResourceType( vObj.getResourceType());
@@ -65,9 +64,8 @@
 		return mObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected VXResource mapEntityToViewBean(VXResource vObj, XXResource mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 		vObj.setName( mObj.getName());
 		vObj.setDescription( mObj.getDescription());
 		vObj.setResourceType( mObj.getResourceType());
@@ -99,14 +97,12 @@
 		VXResourceList returnList = new VXResourceList();
 		List<VXResource> xResourceList = new ArrayList<VXResource>();
 
-		@SuppressWarnings("unchecked")
-		List<XXResource> resultList = (List<XXResource>)searchResources(searchCriteria,
+		List<T> resultList = searchResources(searchCriteria,
 				searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXResource gjXResource : resultList) {
-			@SuppressWarnings("unchecked")
-			VXResource vXResource = populateViewBean((T)gjXResource);
+		for (T gjXResource : resultList) {
+			VXResource vXResource = populateViewBean(gjXResource);
 			xResourceList.add(vXResource);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XTrxLogServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XTrxLogServiceBase.java
index f778e14..d6f23db 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XTrxLogServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XTrxLogServiceBase.java
@@ -39,9 +39,8 @@
 
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected XXTrxLog mapViewToEntityBean(VXTrxLog vObj, XXTrxLog mObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T mObj, int OPERATION_CONTEXT) {
 		mObj.setObjectClassType( vObj.getObjectClassType());
 		mObj.setObjectId( vObj.getObjectId());
 		mObj.setParentObjectId( vObj.getParentObjectId());
@@ -59,9 +58,8 @@
 		return mObj;
 	}
 
-	@SuppressWarnings("unchecked")
 	@Override
-	protected VXTrxLog mapEntityToViewBean(VXTrxLog vObj, XXTrxLog mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 		vObj.setObjectClassType( mObj.getObjectClassType());
 		vObj.setObjectId( mObj.getObjectId());
 		vObj.setParentObjectId( mObj.getParentObjectId());
@@ -87,14 +85,12 @@
 		VXTrxLogList returnList = new VXTrxLogList();
 		List<VXTrxLog> xTrxLogList = new ArrayList<VXTrxLog>();
 
-		@SuppressWarnings("unchecked")
-		List<XXTrxLog> resultList = (List<XXTrxLog>)searchResources(searchCriteria,
+		List<T> resultList = searchResources(searchCriteria,
 				searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXTrxLog gjXTrxLog : resultList) {
-			@SuppressWarnings("unchecked")
-			VXTrxLog vXTrxLog = populateViewBean((T)gjXTrxLog);
+		for (T gjXTrxLog : resultList) {
+			VXTrxLog vXTrxLog = populateViewBean(gjXTrxLog);
 			xTrxLogList.add(vXTrxLog);
 		}
 
diff --git a/security-admin/src/main/java/org/apache/ranger/service/XUserPermissionServiceBase.java b/security-admin/src/main/java/org/apache/ranger/service/XUserPermissionServiceBase.java
index a5a1213..bc6c21e 100644
--- a/security-admin/src/main/java/org/apache/ranger/service/XUserPermissionServiceBase.java
+++ b/security-admin/src/main/java/org/apache/ranger/service/XUserPermissionServiceBase.java
@@ -33,13 +33,8 @@
 
 	public static final String NAME = "XUserPermission";
 
-	public XUserPermissionServiceBase() {
-
-	}
-
 	@Override
-	@SuppressWarnings("unchecked")
-	protected XXUserPermission mapViewToEntityBean(VXUserPermission vObj, XXUserPermission mObj, int OPERATION_CONTEXT) {
+	protected T mapViewToEntityBean(V vObj, T mObj, int OPERATION_CONTEXT) {
 
 		// Assuming that vObj.userId coming from UI/Client would be of XXUser, but in DB it should be of XXPortalUser so
 		// have to map XXUser.ID to XXPortalUser.ID and if portalUser does not exist then not allowing to create/update
@@ -65,8 +60,7 @@
 	}
 
 	@Override
-	@SuppressWarnings("unchecked")
-	protected VXUserPermission mapEntityToViewBean(VXUserPermission vObj, XXUserPermission mObj) {
+	protected V mapEntityToViewBean(V vObj, T mObj) {
 
 		// As XXUserPermission.userID refers to XXPortalUser.ID, But UI/Client expects XXUser.ID so have to map
 		// XXUserPermission.userID from XXPortalUser.ID to XXUser.ID
@@ -92,14 +86,12 @@
 		VXUserPermissionList returnList = new VXUserPermissionList();
 		List<VXUserPermission> vXUserPermissions = new ArrayList<VXUserPermission>();
 
-		@SuppressWarnings("unchecked")
-		List<XXUserPermission> resultList = (List<XXUserPermission>) searchResources(
+		List<T> resultList = searchResources(
 				searchCriteria, searchFields, sortFields, returnList);
 
 		// Iterate over the result list and create the return list
-		for (XXUserPermission gjXUser : resultList) {
-			@SuppressWarnings("unchecked")
-			VXUserPermission vXUserPermission = populateViewBean((T) gjXUser);
+		for (T gjXUser : resultList) {
+			VXUserPermission vXUserPermission = populateViewBean(gjXUser);
 			vXUserPermissions.add(vXUserPermission);
 		}